Version 1.3.25T / 12.01.2014
- M105 use the wrong convert function for Heatbed Target Temperatur - Correct bug in calculate_trapezoid_for_block(..) - smoother Steps for arc funtion G2/G3 - example for HEATER_DUTY_FOR_SETPOINT for reprap-fab Extruder V4 - more cycles for Autotune (M303) old 5 cycles, new 7 cycles - New Thermistortable for ATC Semitec 104GT-2 (Type 5)
This commit is contained in:
parent
308cce734a
commit
1e879af0a3
4 changed files with 70 additions and 80 deletions
|
|
@ -239,9 +239,9 @@ const int dropsegments=5; //everything with less than this number of steps will
|
|||
|
||||
// Arc interpretation settings:
|
||||
//Step to split a cirrcle in small Lines
|
||||
#define MM_PER_ARC_SEGMENT 1
|
||||
#define MM_PER_ARC_SEGMENT 0.5
|
||||
//After this count of steps a new SIN / COS caluclation is startet to correct the circle interpolation
|
||||
#define N_ARC_CORRECTION 25
|
||||
#define N_ARC_CORRECTION 40
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
//// FANCONTROL WITH SOFT PWM
|
||||
|
|
@ -307,6 +307,10 @@ const int dropsegments=5; //everything with less than this number of steps will
|
|||
// magic formula 1, to get approximate "zero error" PWM duty. Take few measurements with low PWM duty and make linear fit to get the formula
|
||||
// for my makergear hot-end: linear fit {50,10},{60,20},{80,30},{105,50},{176,100},{128,64},{208,128}
|
||||
#define HEATER_DUTY_FOR_SETPOINT(setpoint) ((int)((187L*(long)setpoint)>>8)-27)
|
||||
|
||||
//For reprap-feb Extruder V4 with heaterelement
|
||||
//#define HEATER_DUTY_FOR_SETPOINT(setpoint) ((int)((72L*(long)setpoint)>>8)-14)
|
||||
|
||||
// magic formula 2, to make led brightness approximately linear
|
||||
#define LED_PWM_FOR_BRIGHTNESS(brightness) ((64*brightness-1384)/(300-brightness))
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -151,7 +151,16 @@
|
|||
|
||||
Version 1.3.24T / 21.09.2013
|
||||
- M105 show same format as Marlin work better with new Pronterface
|
||||
- Optimize TEMP_RESIDENCY function
|
||||
|
||||
Version 1.3.25T / 12.01.2014
|
||||
- M105 use the wrong convert function for Heatbed Target Temperatur
|
||||
- Correct bug in calculate_trapezoid_for_block(..)
|
||||
- smoother Steps for arc funtion G2/G3
|
||||
- example for HEATER_DUTY_FOR_SETPOINT for reprap-fab Extruder V4
|
||||
- more cycles for Autotune (M303) old 5 cycles, new 7 cycles
|
||||
- New Thermistortable for ATC Semitec 104GT-2 (Type 5)
|
||||
|
||||
.
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -259,7 +268,7 @@ void __cxa_pure_virtual(){};
|
|||
// M603 - Show Free Ram
|
||||
|
||||
|
||||
#define _VERSION_TEXT "1.3.24T / 21.09.2013"
|
||||
#define _VERSION_TEXT "1.3.25T / 12.01.2014"
|
||||
|
||||
//Stepper Movement Variables
|
||||
char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
|
||||
|
|
@ -1502,7 +1511,7 @@ FORCE_INLINE void process_commands()
|
|||
if (code_seen('S')) target_bed_raw = temp2analogBed(code_value());
|
||||
#endif
|
||||
break;
|
||||
case 105: // M105
|
||||
case 105: // M105 ok T:21.2 /50.0 B:22.2 /50.0 @:127 B@:0
|
||||
#if (TEMP_0_PIN > -1) || defined (HEATER_USES_MAX6675)|| defined HEATER_USES_AD595
|
||||
hotendtC = analog2temp(current_raw);
|
||||
#endif
|
||||
|
|
@ -1519,7 +1528,7 @@ FORCE_INLINE void process_commands()
|
|||
showString(PSTR(" B:"));
|
||||
Serial.print(bedtempC);
|
||||
showString(PSTR(" /"));
|
||||
Serial.print(analog2temp(target_bed_raw));
|
||||
Serial.print(analog2tempBed(target_bed_raw));
|
||||
#else
|
||||
Serial.print(PSTR(" B:0 /0"));
|
||||
#endif
|
||||
|
|
@ -2302,9 +2311,9 @@ void calculate_trapezoid_for_block(block_t *block, float entry_factor, float exi
|
|||
|
||||
long acceleration = block->acceleration_st;
|
||||
int32_t accelerate_steps =
|
||||
ceil(estimate_acceleration_distance(block->initial_rate, block->nominal_rate, acceleration));
|
||||
ceil(estimate_acceleration_distance(initial_rate, block->nominal_rate, acceleration));
|
||||
int32_t decelerate_steps =
|
||||
floor(estimate_acceleration_distance(block->nominal_rate, block->final_rate, -acceleration));
|
||||
floor(estimate_acceleration_distance(block->nominal_rate, final_rate, -acceleration));
|
||||
|
||||
// Calculate the size of Plateau of Nominal Rate.
|
||||
int32_t plateau_steps = block->step_event_count-accelerate_steps-decelerate_steps;
|
||||
|
|
@ -2312,9 +2321,10 @@ void calculate_trapezoid_for_block(block_t *block, float entry_factor, float exi
|
|||
// Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will
|
||||
// have to use intersection_distance() to calculate when to abort acceleration and start breaking
|
||||
// in order to reach the final_rate exactly at the end of this block.
|
||||
if (plateau_steps < 0) {
|
||||
if (plateau_steps < 0)
|
||||
{
|
||||
accelerate_steps = ceil(
|
||||
intersection_distance(block->initial_rate, block->final_rate, acceleration, block->step_event_count));
|
||||
intersection_distance(initial_rate, final_rate, acceleration, block->step_event_count));
|
||||
accelerate_steps = max(accelerate_steps,0); // Check limits due to numerical round-off
|
||||
accelerate_steps = min(accelerate_steps,block->step_event_count);
|
||||
plateau_steps = 0;
|
||||
|
|
|
|||
|
|
@ -420,7 +420,7 @@ void PID_autotune(int PIDAT_test_temp)
|
|||
showString(PSTR(" min: ")); Serial.print(PIDAT_min);
|
||||
showString(PSTR(" max: ")); Serial.println(PIDAT_max);
|
||||
|
||||
if(PIDAT_cycles > 2)
|
||||
if(PIDAT_cycles > 3)
|
||||
{
|
||||
PIDAT_Ku = (4.0*PIDAT_d)/(3.14159*(PIDAT_max-PIDAT_min));
|
||||
PIDAT_Tu = ((float)(PIDAT_t_low + PIDAT_t_high)/1000.0);
|
||||
|
|
@ -432,9 +432,6 @@ void PID_autotune(int PIDAT_test_temp)
|
|||
PIDAT_Ki = 2*PIDAT_Kp/PIDAT_Tu;
|
||||
PIDAT_Kd = PIDAT_Kp*PIDAT_Tu/8;
|
||||
showString(PSTR(" Clasic PID \r\n"));
|
||||
//showString(PSTR(" Kp: ")); Serial.println(PIDAT_Kp);
|
||||
//showString(PSTR(" Ki: ")); Serial.println(PIDAT_Ki);
|
||||
//showString(PSTR(" Kd: ")); Serial.println(PIDAT_Kd);
|
||||
showString(PSTR(" CFG Kp: ")); Serial.println((unsigned int)(PIDAT_Kp*256));
|
||||
showString(PSTR(" CFG Ki: ")); Serial.println((unsigned int)(PIDAT_Ki*PIDAT_TIME_FACTOR));
|
||||
showString(PSTR(" CFG Kd: ")); Serial.println((unsigned int)(PIDAT_Kd*PIDAT_TIME_FACTOR));
|
||||
|
|
@ -495,7 +492,7 @@ void PID_autotune(int PIDAT_test_temp)
|
|||
return;
|
||||
}
|
||||
|
||||
if(PIDAT_cycles > 5)
|
||||
if(PIDAT_cycles > 7)
|
||||
{
|
||||
showString(PSTR("PID Autotune finished ! Place the Kp, Ki and Kd constants in the configuration.h\r\n"));
|
||||
return;
|
||||
|
|
@ -805,7 +802,7 @@ int temp2analog_thermistor(int celsius, const short table[][2], int numtemps)
|
|||
#if defined (HEATER_USES_AD595) || defined (BED_USES_AD595)
|
||||
int temp2analog_ad595(int celsius)
|
||||
{
|
||||
return celsius * 1024 / (500);
|
||||
return (celsius * 1024.0) / (500.0);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -846,7 +843,7 @@ int analog2temp_thermistor(int raw,const short table[][2], int numtemps) {
|
|||
#if defined (HEATER_USES_AD595) || defined (BED_USES_AD595)
|
||||
int analog2temp_ad595(int raw)
|
||||
{
|
||||
return raw * 500 / 1024;
|
||||
return (raw * 500.0) / 1024.0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -200,71 +200,50 @@ const short temptable_4[NUMTEMPS_4][2] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#if (THERMISTORHEATER == 5) || (THERMISTORBED == 5) //100k ParCan thermistor (104GT-2)
|
||||
#if (THERMISTORHEATER == 5) || (THERMISTORBED == 5) //100k ParCan thermistor (ATC Semitec 104GT-2)
|
||||
|
||||
#define NUMTEMPS_5 61
|
||||
#define NUMTEMPS_5 33
|
||||
const short temptable_5[NUMTEMPS_5][2] = {
|
||||
{1, 713},
|
||||
{18, 316},
|
||||
{35, 266},
|
||||
{52, 239},
|
||||
{69, 221},
|
||||
{86, 208},
|
||||
{103, 197},
|
||||
{120, 188},
|
||||
{137, 181},
|
||||
{154, 174},
|
||||
{171, 169},
|
||||
{188, 163},
|
||||
{205, 159},
|
||||
{222, 154},
|
||||
{239, 150},
|
||||
{256, 147},
|
||||
{273, 143},
|
||||
{290, 140},
|
||||
{307, 136},
|
||||
{324, 133},
|
||||
{341, 130},
|
||||
{358, 128},
|
||||
{375, 125},
|
||||
{392, 122},
|
||||
{409, 120},
|
||||
{426, 117},
|
||||
{443, 115},
|
||||
{460, 112},
|
||||
{477, 110},
|
||||
{494, 108},
|
||||
{511, 106},
|
||||
{528, 103},
|
||||
{545, 101},
|
||||
{562, 99},
|
||||
{579, 97},
|
||||
{596, 95},
|
||||
{613, 92},
|
||||
{630, 90},
|
||||
{647, 88},
|
||||
{664, 86},
|
||||
{681, 84},
|
||||
{698, 81},
|
||||
{715, 79},
|
||||
{732, 77},
|
||||
{749, 75},
|
||||
{766, 72},
|
||||
{783, 70},
|
||||
{800, 67},
|
||||
{817, 64},
|
||||
{834, 61},
|
||||
{851, 58},
|
||||
{868, 55},
|
||||
{885, 52},
|
||||
{902, 48},
|
||||
{919, 44},
|
||||
{936, 40},
|
||||
{953, 34},
|
||||
{970, 28},
|
||||
{987, 20},
|
||||
{1004, 8},
|
||||
{1021, 0}
|
||||
|
||||
// ATC Semitec 104GT-2 (Used in ParCan) --> Change to SMD Sensor RS 769-1899
|
||||
// 33 Fields
|
||||
// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
|
||||
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
|
||||
{1, 713},
|
||||
{17, 300}, //top rating 300C
|
||||
{20, 290},
|
||||
{23, 280},
|
||||
{27, 270},
|
||||
{31, 260},
|
||||
{37, 250},
|
||||
{43, 240},
|
||||
{51, 230},
|
||||
{61, 220},
|
||||
{73, 210},
|
||||
{87, 200},
|
||||
{106, 190},
|
||||
{128, 180},
|
||||
{155, 170},
|
||||
{189, 160},
|
||||
{230, 150},
|
||||
{278, 140},
|
||||
{336, 130},
|
||||
{357, 119},
|
||||
{402, 112},
|
||||
{476, 103},
|
||||
{554, 94},
|
||||
{635, 84},
|
||||
{713, 76},
|
||||
{784, 69},
|
||||
{846, 60},
|
||||
{897, 50},
|
||||
{937, 40},
|
||||
{966, 30},
|
||||
{986, 20},
|
||||
{1000, 10},
|
||||
{1021, 0}
|
||||
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue