Added redundant temp sensor
This commit is contained in:
		
							parent
							
								
									7231a20dba
								
							
						
					
					
						commit
						9be61cdc02
					
				| @ -88,10 +88,14 @@ | ||||
| // 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan) (1k pullup)
 | ||||
| 
 | ||||
| #define TEMP_SENSOR_0 -1 | ||||
| #define TEMP_SENSOR_1 0 | ||||
| #define TEMP_SENSOR_1 -1 | ||||
| #define TEMP_SENSOR_2 0 | ||||
| #define TEMP_SENSOR_BED 0 | ||||
| 
 | ||||
| // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
 | ||||
| #define TEMP_SENSOR_1_AS_REDUNDANT  | ||||
| #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 5 | ||||
| 
 | ||||
| // Actual temperature must be close to target for this long before M109 returns success
 | ||||
| #define TEMP_RESIDENCY_TIME 10  // (seconds)
 | ||||
| #define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
 | ||||
|  | ||||
| @ -367,5 +367,8 @@ const unsigned int dropsegments=5; //everything with less than this number of st | ||||
|   #undef BED_MAXTEMP | ||||
| #endif | ||||
| 
 | ||||
| #if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT | ||||
|   #error "You cannot use  TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" | ||||
| #endif | ||||
| 
 | ||||
| #endif //__CONFIGURATION_ADV_H
 | ||||
|  | ||||
| @ -40,10 +40,13 @@ | ||||
| int target_temperature[EXTRUDERS] = { 0 }; | ||||
| int target_temperature_bed = 0; | ||||
| int current_temperature_raw[EXTRUDERS] = { 0 }; | ||||
| float current_temperature[EXTRUDERS] = { 0 }; | ||||
| float current_temperature[EXTRUDERS] = { 0.0 }; | ||||
| int current_temperature_bed_raw = 0; | ||||
| float current_temperature_bed = 0; | ||||
| 
 | ||||
| float current_temperature_bed = 0.0; | ||||
| #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||
|   int redundant_temperature_raw = 0; | ||||
|   float redundant_temperature = 0.0; | ||||
| #endif | ||||
| #ifdef PIDTEMP | ||||
|   float Kp=DEFAULT_Kp; | ||||
|   float Ki=(DEFAULT_Ki*PID_dT); | ||||
| @ -471,7 +474,19 @@ void manage_heater() | ||||
|         } | ||||
|     } | ||||
|     #endif | ||||
| 
 | ||||
|     #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||
|       if(fabs(current_temperature[1] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) { | ||||
|         disable_heater(); | ||||
|         if(IsStopped() == false) { | ||||
|           SERIAL_ERROR_START; | ||||
|           SERIAL_ERRORLNPGM("Extruder switched off. Temperature difference between temp sensors is to high !"); | ||||
|           LCD_ALERTMESSAGEPGM("Err: REDUNDANT TEMP ERROR"); | ||||
|         } | ||||
|         #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||
|           Stop(); | ||||
|         #endif | ||||
|       } | ||||
|     #endif | ||||
|   } // End extruder for loop
 | ||||
| 
 | ||||
|   #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \ | ||||
| @ -644,7 +659,9 @@ static void updateTemperaturesFromRawValues() | ||||
|         current_temperature[e] = analog2temp(current_temperature_raw[e], e); | ||||
|     } | ||||
|     current_temperature_bed = analog2tempBed(current_temperature_bed_raw); | ||||
| 
 | ||||
|     #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||
|       redundant_temperature =analog2temp(redundant_temperature_raw, 1); | ||||
|     #endif | ||||
|     //Reset the watchdog after we know we have a temperature measurement.
 | ||||
|     watchdog_reset(); | ||||
| 
 | ||||
| @ -1145,6 +1162,9 @@ ISR(TIMER0_COMPB_vect) | ||||
| #if EXTRUDERS > 1 | ||||
|       current_temperature_raw[1] = raw_temp_1_value; | ||||
| #endif | ||||
| #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||
|       redundant_temperature_raw = raw_temp_1_value; | ||||
| #endif | ||||
| #if EXTRUDERS > 2 | ||||
|       current_temperature_raw[2] = raw_temp_2_value; | ||||
| #endif | ||||
|  | ||||
| @ -37,6 +37,9 @@ extern int target_temperature[EXTRUDERS]; | ||||
| extern float current_temperature[EXTRUDERS]; | ||||
| extern int target_temperature_bed; | ||||
| extern float current_temperature_bed; | ||||
| #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||
|   extern float redundant_temperature; | ||||
| #endif | ||||
| 
 | ||||
| #ifdef PIDTEMP | ||||
|   extern float Kp,Ki,Kd,Kc; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user