FWRETRACT in mm/s

Firmware retraction now stores the retract and recover speeds in mm/s
instead of mm/min. This makes it match the units of the maximum
feedrate, and fixes problems with modifying the value via LCD control
panel. From gcode, the values are still taken in mm/min to match the
units of G1 and similar, and they are converted to mm/s before they are
stored.

I also lowered the default retract feedrate to make it less likely to
cause problems for geared extruders when the user hasn’t bothered to
set a reasonable maximum feedrate, though users should be setting both
of these values to suit their hardware.
master
whosawhatsis 10 years ago
parent c43838bb1e
commit aab61e63c3

@ -402,10 +402,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
#ifdef FWRETRACT
#define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt
#define RETRACT_LENGTH 3 //default retract length (positive mm)
#define RETRACT_FEEDRATE 80*60 //default feedrate for retracting
#define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s)
#define RETRACT_ZLIFT 0 //default retract Z-lift
#define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering)
#define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
#endif
//adds support for experimental filament exchange support M600; requires display

@ -1093,7 +1093,7 @@ static void homeaxis(int axis) {
current_position[E_AXIS]+=retract_length/volumetric_multiplier[active_extruder];
plan_set_e_position(current_position[E_AXIS]);
float oldFeedrate = feedrate;
feedrate=retract_feedrate;
feedrate=retract_feedrate*60;
retracted=true;
prepare_move();
current_position[Z_AXIS]-=retract_zlift;
@ -1111,7 +1111,7 @@ static void homeaxis(int axis) {
current_position[E_AXIS]-=(retract_length+retract_recover_length)/volumetric_multiplier[active_extruder];
plan_set_e_position(current_position[E_AXIS]);
float oldFeedrate = feedrate;
feedrate=retract_recover_feedrate;
feedrate=retract_recover_feedrate*60;
retracted=false;
prepare_move();
feedrate = oldFeedrate;
@ -2291,7 +2291,7 @@ void process_commands()
break;
#endif
#ifdef FWRETRACT
case 207: //M207 - set retract length S[positive mm] F[feedrate mm/sec] Z[additional zlift/hop]
case 207: //M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop]
{
if(code_seen('S'))
{
@ -2299,14 +2299,14 @@ void process_commands()
}
if(code_seen('F'))
{
retract_feedrate = code_value() ;
retract_feedrate = code_value()/60 ;
}
if(code_seen('Z'))
{
retract_zlift = code_value() ;
}
}break;
case 208: // M208 - set retract recover length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
case 208: // M208 - set retract recover length S[positive mm surplus to the M207 S*] F[feedrate mm/min]
{
if(code_seen('S'))
{
@ -2314,7 +2314,7 @@ void process_commands()
}
if(code_seen('F'))
{
retract_recover_feedrate = code_value() ;
retract_recover_feedrate = code_value()/60 ;
}
}break;
case 209: // M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.

@ -150,10 +150,10 @@
#define MSG_KILLED "KILLED. "
#define MSG_STOPPED "STOPPED. "
#define MSG_CONTROL_RETRACT "Retract mm"
#define MSG_CONTROL_RETRACTF "Retract F"
#define MSG_CONTROL_RETRACTF "Retract V"
#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
#define MSG_AUTORETRACT "AutoRetr."
#define MSG_FILAMENTCHANGE "Change filament"
#define MSG_INIT_SDCARD "Init. SD card"
@ -335,10 +335,10 @@
#define MSG_STOPPED "Zatrzymany. "
#define MSG_STEPPER_RELEASED "Zwolniony."
#define MSG_CONTROL_RETRACT "Wycofaj mm"
#define MSG_CONTROL_RETRACTF "Wycofaj F"
#define MSG_CONTROL_RETRACTF "Wycofaj V"
#define MSG_CONTROL_RETRACT_ZLIFT "Skok Z mm:"
#define MSG_CONTROL_RETRACT_RECOVER "Cof. wycof. +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "Cof. wycof. F"
#define MSG_CONTROL_RETRACT_RECOVERF "Cof. wycof. V"
#define MSG_AUTORETRACT "Auto. wycofanie"
#define MSG_FILAMENTCHANGE "Zmien filament"
#define MSG_INIT_SDCARD "Inicjal. karty SD"
@ -520,10 +520,10 @@
#define MSG_STOPPED "STOPPE."
#define MSG_STEPPER_RELEASED "RELACHE."
#define MSG_CONTROL_RETRACT "Retraction mm"
#define MSG_CONTROL_RETRACTF "Retraction F"
#define MSG_CONTROL_RETRACTF "Retraction V"
#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
#define MSG_AUTORETRACT "Retract. Auto."
#define MSG_FILAMENTCHANGE "Changer filament"
#define MSG_INIT_SDCARD "Init. la carte SD"
@ -706,10 +706,10 @@
#define MSG_STOPPED "GESTOPPT"
#define MSG_STEPPER_RELEASED "Stepper frei"
#define MSG_CONTROL_RETRACT "Retract mm"
#define MSG_CONTROL_RETRACTF "Retract F"
#define MSG_CONTROL_RETRACTF "Retract V"
#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
#define MSG_AUTORETRACT "AutoRetr."
#define MSG_FILAMENTCHANGE "Filament wechseln"
#define MSG_INIT_SDCARD "Init. SD-Card"
@ -888,10 +888,10 @@
#define MSG_KILLED "PARADA DE EMERG."
#define MSG_STOPPED "PARADA"
#define MSG_CONTROL_RETRACT "Retraer mm"
#define MSG_CONTROL_RETRACTF "Retraer F"
#define MSG_CONTROL_RETRACTF "Retraer V"
#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm"
#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "DesRet F"
#define MSG_CONTROL_RETRACT_RECOVERF "DesRet V"
#define MSG_AUTORETRACT "AutoRetr."
#define MSG_FILAMENTCHANGE "Change filament"
#define MSG_INIT_SDCARD "Iniciando tarjeta"
@ -1079,10 +1079,10 @@
#define MSG_KILLED "УБИТО."
#define MSG_STOPPED "ОСТАНОВЛЕНО."
#define MSG_CONTROL_RETRACT "Откат mm:"
#define MSG_CONTROL_RETRACTF "Откат F:"
#define MSG_CONTROL_RETRACTF "Откат V:"
#define MSG_CONTROL_RETRACT_ZLIFT "Прыжок mm:"
#define MSG_CONTROL_RETRACT_RECOVER "Возврат +mm:"
#define MSG_CONTROL_RETRACT_RECOVERF "Возврат F:"
#define MSG_CONTROL_RETRACT_RECOVERF "Возврат V:"
#define MSG_AUTORETRACT "АвтоОткат:"
#define MSG_FILAMENTCHANGE "Change filament"
#define MSG_INIT_SDCARD "Init. SD-Card"
@ -1260,10 +1260,10 @@
#define MSG_KILLED "UCCISO. "
#define MSG_STOPPED "ARRESTATO. "
#define MSG_CONTROL_RETRACT "Ritrai mm"
#define MSG_CONTROL_RETRACTF "Ritrai F"
#define MSG_CONTROL_RETRACTF "Ritrai V"
#define MSG_CONTROL_RETRACT_ZLIFT "Salta mm"
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
#define MSG_AUTORETRACT "AutoArretramento"
#define MSG_FILAMENTCHANGE "Cambia filamento"
#define MSG_INIT_SDCARD "Iniz. SD-Card"
@ -1449,10 +1449,10 @@
#define MSG_STOPPED "PARADA. "
#define MSG_STEPPER_RELEASED "Lancado."
#define MSG_CONTROL_RETRACT " Retrair mm:"
#define MSG_CONTROL_RETRACTF " Retrair F:"
#define MSG_CONTROL_RETRACTF " Retrair V:"
#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm:"
#define MSG_CONTROL_RETRACT_RECOVER " DesRet +mm:"
#define MSG_CONTROL_RETRACT_RECOVERF " DesRet F:"
#define MSG_CONTROL_RETRACT_RECOVERF " DesRet V:"
#define MSG_AUTORETRACT " AutoRetr.:"
#define MSG_FILAMENTCHANGE "Change filament"
#define MSG_INIT_SDCARD "Init. SD-Card"
@ -1633,10 +1633,10 @@
#define MSG_KILLED "KILLED. "
#define MSG_STOPPED "STOPPED. "
#define MSG_CONTROL_RETRACT "Veda mm"
#define MSG_CONTROL_RETRACTF "Veda F"
#define MSG_CONTROL_RETRACTF "Veda V"
#define MSG_CONTROL_RETRACT_ZLIFT "Z mm"
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F"
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
#define MSG_AUTORETRACT "AutoVeto."
#define MSG_FILAMENTCHANGE "Change filament"
#define MSG_INIT_SDCARD "Init. SD-Card"

Loading…
Cancel
Save