Replaced Kill by Stop. If the printer is stopped. Fix the error and use M999 to restart.
Moved the PID_dT in the Ki and Kd calculation from the configuration.h to temperature.cpp
This commit is contained in:
parent
8b785f75a6
commit
63aec3c56e
@ -29,6 +29,7 @@
|
|||||||
// Ultimaker = 7
|
// Ultimaker = 7
|
||||||
// Teensylu = 8
|
// Teensylu = 8
|
||||||
// Gen3+ =9
|
// Gen3+ =9
|
||||||
|
|
||||||
#ifndef MOTHERBOARD
|
#ifndef MOTHERBOARD
|
||||||
#define MOTHERBOARD 7
|
#define MOTHERBOARD 7
|
||||||
#endif
|
#endif
|
||||||
@ -89,8 +90,8 @@
|
|||||||
// If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it
|
// If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it
|
||||||
// Ultimaker
|
// Ultimaker
|
||||||
#define DEFAULT_Kp 22.2
|
#define DEFAULT_Kp 22.2
|
||||||
#define DEFAULT_Ki (1.08*PID_dT)
|
#define DEFAULT_Ki 1.08
|
||||||
#define DEFAULT_Kd (114/PID_dT)
|
#define DEFAULT_Kd 114
|
||||||
|
|
||||||
// Makergear
|
// Makergear
|
||||||
// #define DEFAULT_Kp 7.0
|
// #define DEFAULT_Kp 7.0
|
||||||
@ -99,8 +100,8 @@
|
|||||||
|
|
||||||
// Mendel Parts V9 on 12V
|
// Mendel Parts V9 on 12V
|
||||||
// #define DEFAULT_Kp 63.0
|
// #define DEFAULT_Kp 63.0
|
||||||
// #define DEFAULT_Ki (2.25*PID_dT)
|
// #define DEFAULT_Ki 2.25
|
||||||
// #define DEFAULT_Kd (440/PID_dT)
|
// #define DEFAULT_Kd 440
|
||||||
#endif // PIDTEMP
|
#endif // PIDTEMP
|
||||||
|
|
||||||
//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
|
//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
|
||||||
|
@ -162,6 +162,9 @@ void ClearToSend();
|
|||||||
void get_coordinates();
|
void get_coordinates();
|
||||||
void prepare_move();
|
void prepare_move();
|
||||||
void kill();
|
void kill();
|
||||||
|
void Stop();
|
||||||
|
|
||||||
|
bool IsStopped();
|
||||||
|
|
||||||
void enquecommand(const char *cmd); //put an ascii command at the end of the current buffer.
|
void enquecommand(const char *cmd); //put an ascii command at the end of the current buffer.
|
||||||
void prepare_arc_move(char isclockwise);
|
void prepare_arc_move(char isclockwise);
|
||||||
|
@ -110,6 +110,7 @@
|
|||||||
// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
|
// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
|
||||||
// M503 - print the current settings (from memory not from eeprom)
|
// M503 - print the current settings (from memory not from eeprom)
|
||||||
// M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
|
// M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
|
||||||
|
// M999 - Restart after being stopped by error
|
||||||
|
|
||||||
//Stepper Movement Variables
|
//Stepper Movement Variables
|
||||||
|
|
||||||
@ -135,6 +136,7 @@ float add_homeing[3]={0,0,0};
|
|||||||
uint8_t active_extruder = 0;
|
uint8_t active_extruder = 0;
|
||||||
unsigned char FanSpeed=0;
|
unsigned char FanSpeed=0;
|
||||||
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================private variables=============================
|
//=============================private variables=============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
@ -143,7 +145,7 @@ static float destination[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
|||||||
static float offset[3] = {0.0, 0.0, 0.0};
|
static float offset[3] = {0.0, 0.0, 0.0};
|
||||||
static bool home_all_axis = true;
|
static bool home_all_axis = true;
|
||||||
static float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
static float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
||||||
static long gcode_N, gcode_LastN;
|
static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0;
|
||||||
|
|
||||||
static bool relative_mode = false; //Determines Absolute or Relative Coordinates
|
static bool relative_mode = false; //Determines Absolute or Relative Coordinates
|
||||||
static bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode.
|
static bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode.
|
||||||
@ -174,6 +176,7 @@ static unsigned long stoptime=0;
|
|||||||
|
|
||||||
static uint8_t tmp_extruder;
|
static uint8_t tmp_extruder;
|
||||||
|
|
||||||
|
bool Stopped=false;
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================ROUTINES=============================
|
//=============================ROUTINES=============================
|
||||||
@ -415,11 +418,17 @@ void get_command()
|
|||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
|
if(Stopped == false) { // If printer is stopped by an error the G[0-3] codes are ignored.
|
||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
if(card.saving)
|
if(card.saving)
|
||||||
break;
|
break;
|
||||||
#endif //SDSUPPORT
|
#endif //SDSUPPORT
|
||||||
SERIAL_PROTOCOLLNPGM(MSG_OK);
|
SERIAL_PROTOCOLLNPGM(MSG_OK);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SERIAL_ERRORLNPGM(MSG_ERR_STOPPED);
|
||||||
|
LCD_MESSAGEPGM(MSG_STOPPED);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -547,19 +556,25 @@ void process_commands()
|
|||||||
{
|
{
|
||||||
case 0: // G0 -> G1
|
case 0: // G0 -> G1
|
||||||
case 1: // G1
|
case 1: // G1
|
||||||
|
if(Stopped == false) {
|
||||||
get_coordinates(); // For X Y Z E F
|
get_coordinates(); // For X Y Z E F
|
||||||
prepare_move();
|
prepare_move();
|
||||||
//ClearToSend();
|
//ClearToSend();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
//break;
|
//break;
|
||||||
case 2: // G2 - CW ARC
|
case 2: // G2 - CW ARC
|
||||||
|
if(Stopped == false) {
|
||||||
get_arc_coordinates();
|
get_arc_coordinates();
|
||||||
prepare_arc_move(true);
|
prepare_arc_move(true);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
case 3: // G3 - CCW ARC
|
case 3: // G3 - CCW ARC
|
||||||
|
if(Stopped == false) {
|
||||||
get_arc_coordinates();
|
get_arc_coordinates();
|
||||||
prepare_arc_move(false);
|
prepare_arc_move(false);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
case 4: // G4 dwell
|
case 4: // G4 dwell
|
||||||
LCD_MESSAGEPGM(MSG_DWELL);
|
LCD_MESSAGEPGM(MSG_DWELL);
|
||||||
codenum = 0;
|
codenum = 0;
|
||||||
@ -972,6 +987,7 @@ void process_commands()
|
|||||||
#if (PS_ON_PIN > -1)
|
#if (PS_ON_PIN > -1)
|
||||||
case 80: // M80 - ATX Power On
|
case 80: // M80 - ATX Power On
|
||||||
SET_OUTPUT(PS_ON_PIN); //GND
|
SET_OUTPUT(PS_ON_PIN); //GND
|
||||||
|
WRITE(PS_ON_PIN, LOW);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1236,7 +1252,11 @@ void process_commands()
|
|||||||
EEPROM_printSettings();
|
EEPROM_printSettings();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 999: // Restart after being stopped
|
||||||
|
Stopped = false;
|
||||||
|
gcode_LastN = Stopped_gcode_LastN;
|
||||||
|
FlushSerialRequestResend();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1438,4 +1458,18 @@ void kill()
|
|||||||
while(1); // Wait for reset
|
while(1); // Wait for reset
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Stop()
|
||||||
|
{
|
||||||
|
disable_heater();
|
||||||
|
if(Stopped == false) {
|
||||||
|
Stopped = true;
|
||||||
|
Stopped_gcode_LastN = gcode_LastN; // Save last g_code for restart
|
||||||
|
SERIAL_ERROR_START;
|
||||||
|
SERIAL_ERRORLNPGM(MSG_ERR_STOPPED);
|
||||||
|
LCD_MESSAGEPGM(MSG_STOPPED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsStopped() { return Stopped; };
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@
|
|||||||
#define MSG_NO_MOVE "No move."
|
#define MSG_NO_MOVE "No move."
|
||||||
#define MSG_PART_RELEASE "Partial Release"
|
#define MSG_PART_RELEASE "Partial Release"
|
||||||
#define MSG_KILLED "KILLED. "
|
#define MSG_KILLED "KILLED. "
|
||||||
|
#define MSG_STOPPED "STOPPED. "
|
||||||
#define MSG_PREHEAT_PLA " Preheat PLA"
|
#define MSG_PREHEAT_PLA " Preheat PLA"
|
||||||
#define MSG_PREHEAT_ABS " Preheat ABS"
|
#define MSG_PREHEAT_ABS " Preheat ABS"
|
||||||
#define MSG_STEPPER_RELEASED "Released."
|
#define MSG_STEPPER_RELEASED "Released."
|
||||||
@ -116,6 +117,7 @@
|
|||||||
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1\n"
|
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1\n"
|
||||||
#define MSG_COUNT_X " Count X:"
|
#define MSG_COUNT_X " Count X:"
|
||||||
#define MSG_ERR_KILLED "Printer halted. kill() called !!"
|
#define MSG_ERR_KILLED "Printer halted. kill() called !!"
|
||||||
|
#define MSG_ERR_STOPPED "Printer stopped deu to errors. Fix the error and use M999 to restart!. (Temperature is reset. Set it before restarting)"
|
||||||
#define MSG_RESEND "Resend:"
|
#define MSG_RESEND "Resend:"
|
||||||
#define MSG_UNKNOWN_COMMAND "Unknown command:\""
|
#define MSG_UNKNOWN_COMMAND "Unknown command:\""
|
||||||
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
||||||
@ -221,6 +223,7 @@
|
|||||||
#define MSG_NO_MOVE "No move."
|
#define MSG_NO_MOVE "No move."
|
||||||
#define MSG_PART_RELEASE "Partial Release"
|
#define MSG_PART_RELEASE "Partial Release"
|
||||||
#define MSG_KILLED "KILLED. "
|
#define MSG_KILLED "KILLED. "
|
||||||
|
#define MSG_STOPPED "STOPPED. "
|
||||||
#define MSG_PREHEAT_PLA " Preheat PLA"
|
#define MSG_PREHEAT_PLA " Preheat PLA"
|
||||||
#define MSG_PREHEAT_ABS " Preheat ABS"
|
#define MSG_PREHEAT_ABS " Preheat ABS"
|
||||||
#define MSG_STEPPER_RELEASED "Released."
|
#define MSG_STEPPER_RELEASED "Released."
|
||||||
@ -259,6 +262,7 @@
|
|||||||
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1\n"
|
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1\n"
|
||||||
#define MSG_COUNT_X " Count X:"
|
#define MSG_COUNT_X " Count X:"
|
||||||
#define MSG_ERR_KILLED "Printer halted. kill() called !!"
|
#define MSG_ERR_KILLED "Printer halted. kill() called !!"
|
||||||
|
#define MSG_ERR_STOPPED "Printer stopped deu to errors. Fix the error and use M999 to restart!"
|
||||||
#define MSG_RESEND "Resend:"
|
#define MSG_RESEND "Resend:"
|
||||||
#define MSG_UNKNOWN_COMMAND "Unknown command:\""
|
#define MSG_UNKNOWN_COMMAND "Unknown command:\""
|
||||||
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
||||||
|
@ -51,8 +51,8 @@ int current_raw_bed = 0;
|
|||||||
float pid_setpoint[EXTRUDERS] = { 0.0 };
|
float pid_setpoint[EXTRUDERS] = { 0.0 };
|
||||||
|
|
||||||
float Kp=DEFAULT_Kp;
|
float Kp=DEFAULT_Kp;
|
||||||
float Ki=DEFAULT_Ki;
|
float Ki=(DEFAULT_Ki*PID_dT);
|
||||||
float Kd=DEFAULT_Kd;
|
float Kd=(DEFAULT_Kd/PID_dT);
|
||||||
#ifdef PID_ADD_EXTRUSION_RATE
|
#ifdef PID_ADD_EXTRUSION_RATE
|
||||||
float Kc=DEFAULT_Kc;
|
float Kc=DEFAULT_Kc;
|
||||||
#endif
|
#endif
|
||||||
@ -708,23 +708,29 @@ void disable_heater()
|
|||||||
|
|
||||||
void max_temp_error(uint8_t e) {
|
void max_temp_error(uint8_t e) {
|
||||||
digitalWrite(heater_pin_map[e], 0);
|
digitalWrite(heater_pin_map[e], 0);
|
||||||
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
SERIAL_ERRORLN(e);
|
SERIAL_ERRORLN(e);
|
||||||
SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !");
|
SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void min_temp_error(uint8_t e) {
|
void min_temp_error(uint8_t e) {
|
||||||
digitalWrite(heater_pin_map[e], 0);
|
digitalWrite(heater_pin_map[e], 0);
|
||||||
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
SERIAL_ERRORLN(e);
|
SERIAL_ERRORLN(e);
|
||||||
SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !");
|
SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void bed_max_temp_error(void) {
|
void bed_max_temp_error(void) {
|
||||||
digitalWrite(HEATER_BED_PIN, 0);
|
digitalWrite(HEATER_BED_PIN, 0);
|
||||||
|
if(IsStopped() == false) {
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !!");
|
SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !!");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define HEAT_INTERVAL 250
|
#define HEAT_INTERVAL 250
|
||||||
#ifdef HEATER_0_USES_MAX6675
|
#ifdef HEATER_0_USES_MAX6675
|
||||||
@ -956,7 +962,7 @@ ISR(TIMER0_COMPB_vect)
|
|||||||
max_temp_error(e);
|
max_temp_error(e);
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
{
|
{
|
||||||
kill();;
|
Stop();;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -965,7 +971,7 @@ ISR(TIMER0_COMPB_vect)
|
|||||||
min_temp_error(e);
|
min_temp_error(e);
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
{
|
{
|
||||||
kill();
|
Stop();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -975,7 +981,7 @@ ISR(TIMER0_COMPB_vect)
|
|||||||
if(current_raw_bed >= bed_maxttemp) {
|
if(current_raw_bed >= bed_maxttemp) {
|
||||||
target_raw_bed = 0;
|
target_raw_bed = 0;
|
||||||
bed_max_temp_error();
|
bed_max_temp_error();
|
||||||
kill();
|
Stop();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user