Merge branch 'reisnyderb' of https://github.com/ErikZalm/Marlin into Marlin_v1
This commit is contained in:
		
						commit
						79374f0b93
					
				| @ -90,10 +90,14 @@ | |||||||
| // 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan) (1k pullup)
 | // 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan) (1k pullup)
 | ||||||
| 
 | 
 | ||||||
| #define TEMP_SENSOR_0 -1 | #define TEMP_SENSOR_0 -1 | ||||||
| #define TEMP_SENSOR_1 0 | #define TEMP_SENSOR_1 -1 | ||||||
| #define TEMP_SENSOR_2 0 | #define TEMP_SENSOR_2 0 | ||||||
| #define TEMP_SENSOR_BED 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 10 | ||||||
|  | 
 | ||||||
| // Actual temperature must be close to target for this long before M109 returns success
 | // Actual temperature must be close to target for this long before M109 returns success
 | ||||||
| #define TEMP_RESIDENCY_TIME 10  // (seconds)
 | #define TEMP_RESIDENCY_TIME 10  // (seconds)
 | ||||||
| #define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
 | #define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
 | ||||||
|  | |||||||
| @ -318,6 +318,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st | |||||||
| //===========================================================================
 | //===========================================================================
 | ||||||
| //=============================  Define Defines  ============================
 | //=============================  Define Defines  ============================
 | ||||||
| //===========================================================================
 | //===========================================================================
 | ||||||
|  | #if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT | ||||||
|  |   #error "You cannot use  TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #if TEMP_SENSOR_0 > 0 | #if TEMP_SENSOR_0 > 0 | ||||||
|   #define THERMISTORHEATER_0 TEMP_SENSOR_0 |   #define THERMISTORHEATER_0 TEMP_SENSOR_0 | ||||||
|  | |||||||
| @ -354,6 +354,7 @@ | |||||||
|   #else |   #else | ||||||
|     #define FAN_PIN            4 // IO pin. Buffer needed
 |     #define FAN_PIN            4 // IO pin. Buffer needed
 | ||||||
|   #endif |   #endif | ||||||
|  | 
 | ||||||
|   #define PS_ON_PIN          12 |   #define PS_ON_PIN          12 | ||||||
| 
 | 
 | ||||||
|   #if defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) |   #if defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) | ||||||
| @ -363,11 +364,13 @@ | |||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|   #define HEATER_0_PIN       10   // EXTRUDER 1
 |   #define HEATER_0_PIN       10   // EXTRUDER 1
 | ||||||
|  | 
 | ||||||
|   #if MOTHERBOARD == 33 |   #if MOTHERBOARD == 33 | ||||||
|     #define HEATER_1_PIN       -1 |     #define HEATER_1_PIN       -1 | ||||||
|   #else |   #else | ||||||
|     #define HEATER_1_PIN       9    // EXTRUDER 2 (FAN On Sprinter)
 |     #define HEATER_1_PIN       9    // EXTRUDER 2 (FAN On Sprinter)
 | ||||||
|   #endif |   #endif | ||||||
|  | 
 | ||||||
|   #define HEATER_2_PIN       -1 |   #define HEATER_2_PIN       -1 | ||||||
|   #define TEMP_0_PIN         13   // ANALOG NUMBERING
 |   #define TEMP_0_PIN         13   // ANALOG NUMBERING
 | ||||||
|   #define TEMP_1_PIN         15   // ANALOG NUMBERING
 |   #define TEMP_1_PIN         15   // ANALOG NUMBERING
 | ||||||
| @ -375,14 +378,19 @@ | |||||||
|   #define HEATER_BED_PIN     8    // BED
 |   #define HEATER_BED_PIN     8    // BED
 | ||||||
|   #define TEMP_BED_PIN       14   // ANALOG NUMBERING
 |   #define TEMP_BED_PIN       14   // ANALOG NUMBERING
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   #ifdef NUM_SERVOS |   #ifdef NUM_SERVOS | ||||||
|     #define SERVO0_PIN         11 |     #define SERVO0_PIN         11 | ||||||
|  | 
 | ||||||
|     #if NUM_SERVOS > 1 |     #if NUM_SERVOS > 1 | ||||||
|       #define SERVO1_PIN         6 |       #define SERVO1_PIN         6 | ||||||
|     #endif |     #endif | ||||||
|  | 
 | ||||||
|     #if NUM_SERVOS > 2 |     #if NUM_SERVOS > 2 | ||||||
|       #define SERVO2_PIN         5 |       #define SERVO2_PIN         5 | ||||||
|     #endif |     #endif | ||||||
|  | 
 | ||||||
|     #if NUM_SERVOS > 2 |     #if NUM_SERVOS > 2 | ||||||
|       #define SERVO3_PIN         4 |       #define SERVO3_PIN         4 | ||||||
|     #endif |     #endif | ||||||
| @ -429,6 +437,7 @@ | |||||||
|         #else |         #else | ||||||
|           #define SDCARDDETECT -1  // Ramps does not use this port
 |           #define SDCARDDETECT -1  // Ramps does not use this port
 | ||||||
|         #endif |         #endif | ||||||
|  |      | ||||||
|       #endif |       #endif | ||||||
| 
 | 
 | ||||||
|     #else //old style panel with shift register
 |     #else //old style panel with shift register
 | ||||||
| @ -490,12 +499,14 @@ | |||||||
|     #define HEATER_BED_PIN    8    // RAMPS 1.1
 |     #define HEATER_BED_PIN    8    // RAMPS 1.1
 | ||||||
|     #define FAN_PIN           9    // RAMPS 1.1
 |     #define FAN_PIN           9    // RAMPS 1.1
 | ||||||
|   #endif |   #endif | ||||||
|  | 
 | ||||||
|   #define HEATER_1_PIN        -1 |   #define HEATER_1_PIN        -1 | ||||||
|   #define HEATER_2_PIN        -1 |   #define HEATER_2_PIN        -1 | ||||||
|   #define TEMP_0_PIN          2    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
 |   #define TEMP_0_PIN          2    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
 | ||||||
|   #define TEMP_1_PIN          -1 |   #define TEMP_1_PIN          -1 | ||||||
|   #define TEMP_2_PIN          -1 |   #define TEMP_2_PIN          -1 | ||||||
|   #define TEMP_BED_PIN        1    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
 |   #define TEMP_BED_PIN        1    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
 | ||||||
|  | 
 | ||||||
| #endif// MOTHERBOARD == 33 || MOTHERBOARD == 34
 | #endif// MOTHERBOARD == 33 || MOTHERBOARD == 34
 | ||||||
| 
 | 
 | ||||||
| // SPI for Max6675 Thermocouple
 | // SPI for Max6675 Thermocouple
 | ||||||
|  | |||||||
| @ -40,10 +40,13 @@ | |||||||
| int target_temperature[EXTRUDERS] = { 0 }; | int target_temperature[EXTRUDERS] = { 0 }; | ||||||
| int target_temperature_bed = 0; | int target_temperature_bed = 0; | ||||||
| int current_temperature_raw[EXTRUDERS] = { 0 }; | int current_temperature_raw[EXTRUDERS] = { 0 }; | ||||||
| float current_temperature[EXTRUDERS] = { 0 }; | float current_temperature[EXTRUDERS] = { 0.0 }; | ||||||
| int current_temperature_bed_raw = 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 | #ifdef PIDTEMP | ||||||
|   float Kp=DEFAULT_Kp; |   float Kp=DEFAULT_Kp; | ||||||
|   float Ki=(DEFAULT_Ki*PID_dT); |   float Ki=(DEFAULT_Ki*PID_dT); | ||||||
| @ -124,8 +127,14 @@ static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS( 16383, 16383, 16383 ); | |||||||
| #ifdef BED_MAXTEMP | #ifdef BED_MAXTEMP | ||||||
| static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP; | static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP; | ||||||
| #endif | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||||
|  |   static void *heater_ttbl_map[2] = {(void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE }; | ||||||
|  |   static uint8_t heater_ttbllen_map[2] = { HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN }; | ||||||
|  | #else | ||||||
|   static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE ); |   static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE ); | ||||||
|   static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN ); |   static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| static float analog2temp(int raw, uint8_t e); | static float analog2temp(int raw, uint8_t e); | ||||||
| static float analog2tempBed(int raw); | static float analog2tempBed(int raw); | ||||||
| @ -471,7 +480,19 @@ void manage_heater() | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     #endif |     #endif | ||||||
| 
 |     #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||||
|  |       if(fabs(current_temperature[0] - 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 too high !"); | ||||||
|  |           LCD_ALERTMESSAGEPGM("Err: REDUNDANT TEMP ERROR"); | ||||||
|  |         } | ||||||
|  |         #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||||
|  |           Stop(); | ||||||
|  |         #endif | ||||||
|  |       } | ||||||
|  |     #endif | ||||||
|   } // End extruder for loop
 |   } // End extruder for loop
 | ||||||
| 
 | 
 | ||||||
|   #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \ |   #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \ | ||||||
| @ -565,7 +586,11 @@ void manage_heater() | |||||||
| // Derived from RepRap FiveD extruder::getTemperature()
 | // Derived from RepRap FiveD extruder::getTemperature()
 | ||||||
| // For hot end temperature measurement.
 | // For hot end temperature measurement.
 | ||||||
| static float analog2temp(int raw, uint8_t e) { | static float analog2temp(int raw, uint8_t e) { | ||||||
|  | #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||||
|  |   if(e > EXTRUDERS) | ||||||
|  | #else | ||||||
|   if(e >= EXTRUDERS) |   if(e >= EXTRUDERS) | ||||||
|  | #endif | ||||||
|   { |   { | ||||||
|       SERIAL_ERROR_START; |       SERIAL_ERROR_START; | ||||||
|       SERIAL_ERROR((int)e); |       SERIAL_ERROR((int)e); | ||||||
| @ -644,7 +669,9 @@ static void updateTemperaturesFromRawValues() | |||||||
|         current_temperature[e] = analog2temp(current_temperature_raw[e], e); |         current_temperature[e] = analog2temp(current_temperature_raw[e], e); | ||||||
|     } |     } | ||||||
|     current_temperature_bed = analog2tempBed(current_temperature_bed_raw); |     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.
 |     //Reset the watchdog after we know we have a temperature measurement.
 | ||||||
|     watchdog_reset(); |     watchdog_reset(); | ||||||
| 
 | 
 | ||||||
| @ -1145,6 +1172,9 @@ ISR(TIMER0_COMPB_vect) | |||||||
| #if EXTRUDERS > 1 | #if EXTRUDERS > 1 | ||||||
|       current_temperature_raw[1] = raw_temp_1_value; |       current_temperature_raw[1] = raw_temp_1_value; | ||||||
| #endif | #endif | ||||||
|  | #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||||
|  |       redundant_temperature_raw = raw_temp_1_value; | ||||||
|  | #endif | ||||||
| #if EXTRUDERS > 2 | #if EXTRUDERS > 2 | ||||||
|       current_temperature_raw[2] = raw_temp_2_value; |       current_temperature_raw[2] = raw_temp_2_value; | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -37,6 +37,9 @@ extern int target_temperature[EXTRUDERS]; | |||||||
| extern float current_temperature[EXTRUDERS]; | extern float current_temperature[EXTRUDERS]; | ||||||
| extern int target_temperature_bed; | extern int target_temperature_bed; | ||||||
| extern float current_temperature_bed; | extern float current_temperature_bed; | ||||||
|  | #ifdef TEMP_SENSOR_1_AS_REDUNDANT | ||||||
|  |   extern float redundant_temperature; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef PIDTEMP | #ifdef PIDTEMP | ||||||
|   extern float Kp,Ki,Kd,Kc; |   extern float Kp,Ki,Kd,Kc; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user