Merge pull request #334 from KevinOConnor/FanKick
Add feature to briefly run the cooling fan at full speed when it first starts.
This commit is contained in:
commit
6ec56fa923
3 changed files with 20 additions and 27 deletions
|
@ -66,6 +66,11 @@
|
||||||
//#define CONTROLLERFAN_PIN 23 //Pin used for the fan to cool controller, comment out to disable this function
|
//#define CONTROLLERFAN_PIN 23 //Pin used for the fan to cool controller, comment out to disable this function
|
||||||
#define CONTROLLERFAN_SEC 60 //How many seconds, after all motors were disabled, the fan should run
|
#define CONTROLLERFAN_SEC 60 //How many seconds, after all motors were disabled, the fan should run
|
||||||
|
|
||||||
|
// When first starting the main fan, run it at full speed for the
|
||||||
|
// given number of milliseconds. This gets the fan spinning reliably
|
||||||
|
// before setting a PWM value. Set to zero to disable.
|
||||||
|
#define FAN_KICKSTART_TIME 100
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Mechanical Settings===========================
|
//=============================Mechanical Settings===========================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
|
@ -438,8 +438,7 @@ void check_axes_activity()
|
||||||
unsigned char y_active = 0;
|
unsigned char y_active = 0;
|
||||||
unsigned char z_active = 0;
|
unsigned char z_active = 0;
|
||||||
unsigned char e_active = 0;
|
unsigned char e_active = 0;
|
||||||
unsigned char fan_speed = 0;
|
unsigned char tail_fan_speed = fanSpeed;
|
||||||
unsigned char tail_fan_speed = 0;
|
|
||||||
block_t *block;
|
block_t *block;
|
||||||
|
|
||||||
if(block_buffer_tail != block_buffer_head)
|
if(block_buffer_tail != block_buffer_head)
|
||||||
|
@ -453,20 +452,9 @@ void check_axes_activity()
|
||||||
if(block->steps_y != 0) y_active++;
|
if(block->steps_y != 0) y_active++;
|
||||||
if(block->steps_z != 0) z_active++;
|
if(block->steps_z != 0) z_active++;
|
||||||
if(block->steps_e != 0) e_active++;
|
if(block->steps_e != 0) e_active++;
|
||||||
if(block->fan_speed != 0) fan_speed++;
|
|
||||||
block_index = (block_index+1) & (BLOCK_BUFFER_SIZE - 1);
|
block_index = (block_index+1) & (BLOCK_BUFFER_SIZE - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
#if FAN_PIN > -1
|
|
||||||
#ifndef FAN_SOFT_PWM
|
|
||||||
if (fanSpeed != 0){
|
|
||||||
analogWrite(FAN_PIN,fanSpeed); // If buffer is empty use current fan speed
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if((DISABLE_X) && (x_active == 0)) disable_x();
|
if((DISABLE_X) && (x_active == 0)) disable_x();
|
||||||
if((DISABLE_Y) && (y_active == 0)) disable_y();
|
if((DISABLE_Y) && (y_active == 0)) disable_y();
|
||||||
if((DISABLE_Z) && (z_active == 0)) disable_z();
|
if((DISABLE_Z) && (z_active == 0)) disable_z();
|
||||||
|
@ -478,15 +466,21 @@ void check_axes_activity()
|
||||||
}
|
}
|
||||||
#if FAN_PIN > -1
|
#if FAN_PIN > -1
|
||||||
#ifndef FAN_SOFT_PWM
|
#ifndef FAN_SOFT_PWM
|
||||||
if((fanSpeed == 0) && (fan_speed ==0))
|
if (FAN_KICKSTART_TIME) {
|
||||||
{
|
static unsigned long FanKickEnd;
|
||||||
analogWrite(FAN_PIN, 0);
|
if (tail_fan_speed) {
|
||||||
}
|
if (FanKickEnd == 0) {
|
||||||
|
// Just starting up fan - run at full power.
|
||||||
if (fanSpeed != 0 && tail_fan_speed !=0)
|
FanKickEnd = millis() + FAN_KICKSTART_TIME;
|
||||||
{
|
tail_fan_speed = 255;
|
||||||
analogWrite(FAN_PIN,tail_fan_speed);
|
} else if (FanKickEnd > millis())
|
||||||
|
// Fan still spinning up.
|
||||||
|
tail_fan_speed = 255;
|
||||||
|
} else {
|
||||||
|
FanKickEnd = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
analogWrite(FAN_PIN,tail_fan_speed);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef AUTOTEMP
|
#ifdef AUTOTEMP
|
||||||
|
|
|
@ -221,10 +221,7 @@ void lcd_preheat_pla()
|
||||||
setTargetHotend1(plaPreheatHotendTemp);
|
setTargetHotend1(plaPreheatHotendTemp);
|
||||||
setTargetHotend2(plaPreheatHotendTemp);
|
setTargetHotend2(plaPreheatHotendTemp);
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
setTargetBed(plaPreheatHPBTemp);
|
||||||
#if FAN_PIN > -1
|
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
fanSpeed = plaPreheatFanSpeed;
|
||||||
analogWrite(FAN_PIN, fanSpeed);
|
|
||||||
#endif
|
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,10 +231,7 @@ void lcd_preheat_abs()
|
||||||
setTargetHotend1(absPreheatHotendTemp);
|
setTargetHotend1(absPreheatHotendTemp);
|
||||||
setTargetHotend2(absPreheatHotendTemp);
|
setTargetHotend2(absPreheatHotendTemp);
|
||||||
setTargetBed(absPreheatHPBTemp);
|
setTargetBed(absPreheatHPBTemp);
|
||||||
#if FAN_PIN > -1
|
|
||||||
fanSpeed = absPreheatFanSpeed;
|
fanSpeed = absPreheatFanSpeed;
|
||||||
analogWrite(FAN_PIN, fanSpeed);
|
|
||||||
#endif
|
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue