Merge pull request #1581 from msutas/Development
Filament Runout Sensor Feature
This commit is contained in:
commit
d3259d0dba
4 changed files with 54 additions and 0 deletions
|
@ -362,6 +362,15 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
||||
|
||||
//===========================================================================
|
||||
//============================= Filament Runout Sensor ======================
|
||||
//===========================================================================
|
||||
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||
// It is assumed that when logic high = filament available
|
||||
// when logic low = filament ran out
|
||||
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||
|
||||
//===========================================================================
|
||||
//============================= Bed Auto Leveling ===========================
|
||||
|
|
|
@ -199,6 +199,10 @@ void prepare_move();
|
|||
void kill();
|
||||
void Stop();
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SENSOR
|
||||
void filrunout();
|
||||
#endif
|
||||
|
||||
bool IsStopped();
|
||||
|
||||
bool enquecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
|
||||
|
|
|
@ -370,6 +370,10 @@ bool cancel_heatup = false;
|
|||
int meas_delay_cm = MEASUREMENT_DELAY_CM; //distance delay setting
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SENSOR
|
||||
static bool filrunoutEnqued = false;
|
||||
#endif
|
||||
|
||||
const char errormagic[] PROGMEM = "Error:";
|
||||
const char echomagic[] PROGMEM = "echo:";
|
||||
|
||||
|
@ -529,6 +533,16 @@ void setup_killpin()
|
|||
#endif
|
||||
}
|
||||
|
||||
void setup_filrunoutpin()
|
||||
{
|
||||
#if defined(FILRUNOUT_PIN) && FILRUNOUT_PIN > -1
|
||||
pinMode(FILRUNOUT_PIN,INPUT);
|
||||
#if defined(ENDSTOPPULLUP_FIL_RUNOUT)
|
||||
WRITE(FILLRUNOUT_PIN,HIGH);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
// Set home pin
|
||||
void setup_homepin(void)
|
||||
{
|
||||
|
@ -605,6 +619,7 @@ void servo_init()
|
|||
void setup()
|
||||
{
|
||||
setup_killpin();
|
||||
setup_filrunoutpin();
|
||||
setup_powerhold();
|
||||
MYSERIAL.begin(BAUDRATE);
|
||||
SERIAL_PROTOCOLLNPGM("start");
|
||||
|
@ -4136,6 +4151,11 @@ inline void gcode_M503() {
|
|||
plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move z back
|
||||
plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SENSOR
|
||||
filrunoutEnqued = false;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#endif // FILAMENTCHANGEENABLE
|
||||
|
@ -5275,6 +5295,12 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s
|
|||
const int KILL_DELAY = 10000;
|
||||
#endif
|
||||
|
||||
#if defined(FILRUNOUT_PIN) && FILRUNOUT_PIN > -1
|
||||
if(card.sdprinting) {
|
||||
if(!(READ(FILRUNOUT_PIN))^FIL_RUNOUT_INVERTING)
|
||||
filrunout(); }
|
||||
#endif
|
||||
|
||||
#if defined(HOME_PIN) && HOME_PIN > -1
|
||||
static int homeDebounceCount = 0; // poor man's debouncing count
|
||||
const int HOME_DEBOUNCE_DELAY = 10000;
|
||||
|
@ -5423,6 +5449,16 @@ void kill()
|
|||
while(1) { /* Intentionally left empty */ } // Wait for reset
|
||||
}
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SENSOR
|
||||
void filrunout()
|
||||
{
|
||||
if filrunoutEnqued == false {
|
||||
filrunoutEnqued = true;
|
||||
enquecommand("M600");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void Stop()
|
||||
{
|
||||
disable_heater();
|
||||
|
|
|
@ -61,6 +61,11 @@
|
|||
#define FILWIDTH_PIN 5
|
||||
#endif
|
||||
|
||||
#if defined(FILAMENT_RUNOUT_SENSOR)
|
||||
// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector
|
||||
#define FILRUNOUT_PIN 4
|
||||
#endif
|
||||
|
||||
#if MB(RAMPS_13_EFB) || MB(RAMPS_13_EFF)
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#if MB(RAMPS_13_EFF)
|
||||
|
|
Reference in a new issue