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:
		| @@ -66,6 +66,11 @@ | ||||
| //#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 | ||||
|  | ||||
| // 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=========================== | ||||
| //=========================================================================== | ||||
|   | ||||
| @@ -438,8 +438,7 @@ void check_axes_activity() | ||||
|   unsigned char y_active = 0;   | ||||
|   unsigned char z_active = 0; | ||||
|   unsigned char e_active = 0; | ||||
|   unsigned char fan_speed = 0; | ||||
|   unsigned char tail_fan_speed = 0; | ||||
|   unsigned char tail_fan_speed = fanSpeed; | ||||
|   block_t *block; | ||||
|  | ||||
|   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_z != 0) z_active++; | ||||
|       if(block->steps_e != 0) e_active++; | ||||
|       if(block->fan_speed != 0) fan_speed++; | ||||
|       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_Y) && (y_active == 0)) disable_y(); | ||||
|   if((DISABLE_Z) && (z_active == 0)) disable_z(); | ||||
| @@ -478,15 +466,21 @@ void check_axes_activity() | ||||
|   } | ||||
| #if FAN_PIN > -1 | ||||
|   #ifndef FAN_SOFT_PWM | ||||
|   if((fanSpeed == 0) && (fan_speed ==0)) | ||||
|   { | ||||
|     analogWrite(FAN_PIN, 0); | ||||
|   } | ||||
|  | ||||
|   if (fanSpeed != 0 && tail_fan_speed !=0) | ||||
|   { | ||||
|     analogWrite(FAN_PIN,tail_fan_speed); | ||||
|   if (FAN_KICKSTART_TIME) { | ||||
|     static unsigned long FanKickEnd; | ||||
|     if (tail_fan_speed) { | ||||
|       if (FanKickEnd == 0) { | ||||
|         // Just starting up fan - run at full power. | ||||
|         FanKickEnd = millis() + FAN_KICKSTART_TIME; | ||||
|         tail_fan_speed = 255; | ||||
|       } else if (FanKickEnd > millis()) | ||||
|         // Fan still spinning up. | ||||
|         tail_fan_speed = 255; | ||||
|     } else { | ||||
|       FanKickEnd = 0; | ||||
|     } | ||||
|   } | ||||
|   analogWrite(FAN_PIN,tail_fan_speed); | ||||
|   #endif | ||||
| #endif | ||||
| #ifdef AUTOTEMP | ||||
|   | ||||
| @@ -221,10 +221,7 @@ void lcd_preheat_pla() | ||||
|     setTargetHotend1(plaPreheatHotendTemp); | ||||
|     setTargetHotend2(plaPreheatHotendTemp); | ||||
|     setTargetBed(plaPreheatHPBTemp); | ||||
| #if FAN_PIN > -1 | ||||
|     fanSpeed = plaPreheatFanSpeed; | ||||
|     analogWrite(FAN_PIN,  fanSpeed); | ||||
| #endif | ||||
|     lcd_return_to_status(); | ||||
| } | ||||
|  | ||||
| @@ -234,10 +231,7 @@ void lcd_preheat_abs() | ||||
|     setTargetHotend1(absPreheatHotendTemp); | ||||
|     setTargetHotend2(absPreheatHotendTemp); | ||||
|     setTargetBed(absPreheatHPBTemp); | ||||
| #if FAN_PIN > -1 | ||||
|     fanSpeed = absPreheatFanSpeed; | ||||
|     analogWrite(FAN_PIN,  fanSpeed); | ||||
| #endif | ||||
|     lcd_return_to_status(); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user