Add Duty Cycling to the Heater Bed
This commit is contained in:
parent
538189cc19
commit
6b45e9f167
|
@ -87,6 +87,10 @@
|
|||
#define HEATER_2_MAXTEMP 275
|
||||
#define BED_MAXTEMP 150
|
||||
|
||||
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
|
||||
// average current. The value should be an integer and the heat bed will be turned on for 1 interval of
|
||||
// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.
|
||||
//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4
|
||||
|
||||
// PID settings:
|
||||
// Comment the following line to disable PID and enable bang-bang.
|
||||
|
|
|
@ -254,6 +254,11 @@ int getHeaterPower(int heater) {
|
|||
|
||||
void manage_heater()
|
||||
{
|
||||
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER
|
||||
static int bed_needs_heating=0;
|
||||
static int bed_is_on=0;
|
||||
#endif
|
||||
|
||||
#ifdef USE_WATCHDOG
|
||||
wd_reset();
|
||||
#endif
|
||||
|
@ -333,12 +338,26 @@ void manage_heater()
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER
|
||||
if (bed_needs_heating){
|
||||
if (bed_is_on==0)
|
||||
WRITE(HEATER_BED_PIN,HIGH);
|
||||
if (bed_is_on==1)
|
||||
WRITE(HEATER_BED_PIN,LOW);
|
||||
bed_is_on=(bed_is_on+1) % HEATER_BED_DUTY_CYCLE_DIVIDER;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(millis() - previous_millis_bed_heater < BED_CHECK_INTERVAL)
|
||||
return;
|
||||
previous_millis_bed_heater = millis();
|
||||
|
||||
#if TEMP_BED_PIN > -1
|
||||
|
||||
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER
|
||||
bed_needs_heating=0;
|
||||
#endif
|
||||
|
||||
#ifndef BED_LIMIT_SWITCHING
|
||||
// Check if temperature is within the correct range
|
||||
if((current_raw_bed > bed_minttemp) && (current_raw_bed < bed_maxttemp)) {
|
||||
|
@ -348,6 +367,9 @@ void manage_heater()
|
|||
}
|
||||
else
|
||||
{
|
||||
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER
|
||||
bed_needs_heating=1;
|
||||
#endif
|
||||
WRITE(HEATER_BED_PIN,HIGH);
|
||||
}
|
||||
}
|
||||
|
@ -364,6 +386,9 @@ void manage_heater()
|
|||
else
|
||||
if(current_raw_bed <= target_bed_low_temp)
|
||||
{
|
||||
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER
|
||||
bed_needs_heating=1;
|
||||
#endif
|
||||
WRITE(HEATER_BED_PIN,HIGH);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue