From df194f75e1e4377d047e838edbc2dbfc08853c5e Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 6 Jan 2014 11:20:03 +0100 Subject: [PATCH] Added PT100 support for Ultiboard2 --- Marlin/language.h | 2 +- Marlin/pins.h | 3 +- Marlin/temperature.cpp | 5 ++- Marlin/thermistortables.h | 72 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 3 deletions(-) diff --git a/Marlin/language.h b/Marlin/language.h index 48cd4118a0..d1527d5e9d 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -23,7 +23,7 @@ #define PROTOCOL_VERSION "1.0" -#if MOTHERBOARD == 7 || MOTHERBOARD == 71 +#if MOTHERBOARD == 7 || MOTHERBOARD == 71 || MOTHERBOARD == 72 #define MACHINE_NAME "Ultimaker" #define FIRMWARE_URL "http://firmware.ultimaker.com" #elif MOTHERBOARD == 80 diff --git a/Marlin/pins.h b/Marlin/pins.h index ac76f43471..d896bca2eb 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -1354,7 +1354,8 @@ #define MOTOR_CURRENT_PWM_Z_PIN 45 #define MOTOR_CURRENT_PWM_E_PIN 46 //Motor current PWM conversion, PWM value = MotorCurrentSetting * 255 / range -#define MOTOR_CURRENT_PWM_RANGE 2000 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {1300, 1300, 1250} //arduino pin witch triggers an piezzo beeper #define BEEPER 18 diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 29050b84f5..308ac5efc8 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -1039,7 +1039,7 @@ ISR(TIMER0_COMPB_vect) static unsigned long raw_temp_1_value = 0; static unsigned long raw_temp_2_value = 0; static unsigned long raw_temp_bed_value = 0; - static unsigned char temp_state = 0; + static unsigned char temp_state = 8; static unsigned char pwm_count = (1 << SOFT_PWM_SCALE); static unsigned char soft_pwm_0; #if (EXTRUDERS > 1) || defined(HEATERS_PARALLEL) @@ -1181,6 +1181,9 @@ ISR(TIMER0_COMPB_vect) temp_state = 0; temp_count++; break; + case 8: //Startup, delay initial temp reading a tiny bit so the hardware can settle. + temp_state = 0; + break; // default: // SERIAL_ERROR_START; // SERIAL_ERRORLNPGM("Temp measurement error!"); diff --git a/Marlin/thermistortables.h b/Marlin/thermistortables.h index ecac95fe30..58a2466fee 100644 --- a/Marlin/thermistortables.h +++ b/Marlin/thermistortables.h @@ -563,6 +563,78 @@ const short temptable_10[][2] PROGMEM = { {1016*OVERSAMPLENR, 0} }; #endif + +#if (THERMISTORHEATER_0 == 20) || (THERMISTORHEATER_1 == 20) || (THERMISTORHEATER_2 == 20) || (THERMISTORBED == 20) // PT100 with INA826 amp on Ultimaker v2.0 electronics +/* The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature. +This does not match the normal thermistor behaviour so we need to set the following defines */ +#if (THERMISTORHEATER_0 == 20) +# define HEATER_0_RAW_HI_TEMP 16383 +# define HEATER_0_RAW_LO_TEMP 0 +#endif +#if (THERMISTORHEATER_1 == 20) +# define HEATER_1_RAW_HI_TEMP 16383 +# define HEATER_1_RAW_LO_TEMP 0 +#endif +#if (THERMISTORHEATER_2 == 20) +# define HEATER_2_RAW_HI_TEMP 16383 +# define HEATER_2_RAW_LO_TEMP 0 +#endif +#if (THERMISTORBED == 20) +# define HEATER_BED_RAW_HI_TEMP 16383 +# define HEATER_BED_RAW_LO_TEMP 0 +#endif +const short temptable_20[][2] PROGMEM = { +{ 0*OVERSAMPLENR , 0 }, +{ 227*OVERSAMPLENR , 1 }, +{ 236*OVERSAMPLENR , 10 }, +{ 245*OVERSAMPLENR , 20 }, +{ 253*OVERSAMPLENR , 30 }, +{ 262*OVERSAMPLENR , 40 }, +{ 270*OVERSAMPLENR , 50 }, +{ 279*OVERSAMPLENR , 60 }, +{ 287*OVERSAMPLENR , 70 }, +{ 295*OVERSAMPLENR , 80 }, +{ 304*OVERSAMPLENR , 90 }, +{ 312*OVERSAMPLENR , 100 }, +{ 320*OVERSAMPLENR , 110 }, +{ 329*OVERSAMPLENR , 120 }, +{ 337*OVERSAMPLENR , 130 }, +{ 345*OVERSAMPLENR , 140 }, +{ 353*OVERSAMPLENR , 150 }, +{ 361*OVERSAMPLENR , 160 }, +{ 369*OVERSAMPLENR , 170 }, +{ 377*OVERSAMPLENR , 180 }, +{ 385*OVERSAMPLENR , 190 }, +{ 393*OVERSAMPLENR , 200 }, +{ 401*OVERSAMPLENR , 210 }, +{ 409*OVERSAMPLENR , 220 }, +{ 417*OVERSAMPLENR , 230 }, +{ 424*OVERSAMPLENR , 240 }, +{ 432*OVERSAMPLENR , 250 }, +{ 440*OVERSAMPLENR , 260 }, +{ 447*OVERSAMPLENR , 270 }, +{ 455*OVERSAMPLENR , 280 }, +{ 463*OVERSAMPLENR , 290 }, +{ 470*OVERSAMPLENR , 300 }, +{ 478*OVERSAMPLENR , 310 }, +{ 485*OVERSAMPLENR , 320 }, +{ 493*OVERSAMPLENR , 330 }, +{ 500*OVERSAMPLENR , 340 }, +{ 507*OVERSAMPLENR , 350 }, +{ 515*OVERSAMPLENR , 360 }, +{ 522*OVERSAMPLENR , 370 }, +{ 529*OVERSAMPLENR , 380 }, +{ 537*OVERSAMPLENR , 390 }, +{ 544*OVERSAMPLENR , 400 }, +{ 614*OVERSAMPLENR , 500 }, +{ 681*OVERSAMPLENR , 600 }, +{ 744*OVERSAMPLENR , 700 }, +{ 805*OVERSAMPLENR , 800 }, +{ 862*OVERSAMPLENR , 900 }, +{ 917*OVERSAMPLENR , 1000 }, +{ 968*OVERSAMPLENR , 1100 } +}; +#endif #if (THERMISTORHEATER_0 == 51) || (THERMISTORHEATER_1 == 51) || (THERMISTORHEATER_2 == 51) || (THERMISTORBED == 51) // 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)