From e03414b2dd0c76db3505d1ea6abb99183ec4f939 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 8 Jul 2016 19:54:45 -0700 Subject: [PATCH] Simpler/extensible thermistor test in thermistortables.h --- Marlin/thermistortables.h | 54 ++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/Marlin/thermistortables.h b/Marlin/thermistortables.h index 2e6decdd98..a0268e4358 100644 --- a/Marlin/thermistortables.h +++ b/Marlin/thermistortables.h @@ -28,7 +28,9 @@ #define OVERSAMPLENR 16 -#if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1) || (THERMISTORHEATER_2 == 1) || (THERMISTORHEATER_3 == 1) || (THERMISTORBED == 1) //100k bed thermistor +#define ANY_THERMISTOR_IS(n) (THERMISTORHEATER_0 == n || THERMISTORHEATER_1 == n || THERMISTORHEATER_2 == n || THERMISTORHEATER_3 == n || THERMISTORBED == n) + +#if ANY_THERMISTOR_IS(1) // 100k bed thermistor const short temptable_1[][2] PROGMEM = { { 23 * OVERSAMPLENR, 300 }, { 25 * OVERSAMPLENR, 295 }, @@ -94,7 +96,7 @@ const short temptable_1[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORHEATER_3 == 2) || (THERMISTORBED == 2) //200k bed thermistor +#if ANY_THERMISTOR_IS(2) // 200k bed thermistor // 200k ATC Semitec 204GT-2 // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance @@ -134,7 +136,7 @@ const short temptable_2[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORHEATER_3 == 3) || (THERMISTORBED == 3) //mendel-parts +#if ANY_THERMISTOR_IS(3) // mendel-parts const short temptable_3[][2] PROGMEM = { { 1 * OVERSAMPLENR, 864 }, { 21 * OVERSAMPLENR, 300 }, @@ -167,7 +169,7 @@ const short temptable_3[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORHEATER_3 == 4) || (THERMISTORBED == 4) //10k thermistor +#if ANY_THERMISTOR_IS(4) // 10k thermistor const short temptable_4[][2] PROGMEM = { { 1 * OVERSAMPLENR, 430 }, { 54 * OVERSAMPLENR, 137 }, @@ -192,7 +194,7 @@ const short temptable_4[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 5) || (THERMISTORHEATER_1 == 5) || (THERMISTORHEATER_2 == 5) || (THERMISTORHEATER_3 == 5) || (THERMISTORBED == 5) //100k ParCan thermistor (104GT-2) +#if ANY_THERMISTOR_IS(5) // 100k ParCan thermistor (104GT-2) // ATC Semitec 104GT-2 (Used in ParCan) // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance @@ -232,7 +234,7 @@ const short temptable_5[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORHEATER_3 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor +#if ANY_THERMISTOR_IS(6) // 100k Epcos thermistor const short temptable_6[][2] PROGMEM = { { 1 * OVERSAMPLENR, 350 }, { 28 * OVERSAMPLENR, 250 }, // top rating 250C @@ -275,7 +277,7 @@ const short temptable_6[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORHEATER_3 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01 +#if ANY_THERMISTOR_IS(7) // 100k Honeywell 135-104LAG-J01 const short temptable_7[][2] PROGMEM = { { 1 * OVERSAMPLENR, 941 }, { 19 * OVERSAMPLENR, 362 }, @@ -338,7 +340,7 @@ const short temptable_7[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 71) || (THERMISTORHEATER_1 == 71) || (THERMISTORHEATER_2 == 71) || (THERMISTORHEATER_3 == 71) || (THERMISTORBED == 71) // 100k Honeywell 135-104LAF-J01 +#if ANY_THERMISTOR_IS(71) // 100k Honeywell 135-104LAF-J01 // R0 = 100000 Ohm // T0 = 25 °C // Beta = 3974 @@ -489,7 +491,7 @@ const short temptable_71[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 8) || (THERMISTORHEATER_1 == 8) || (THERMISTORHEATER_2 == 8) || (THERMISTORHEATER_3 == 8) || (THERMISTORBED == 8) +#if ANY_THERMISTOR_IS(8) // 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) const short temptable_8[][2] PROGMEM = { { 1 * OVERSAMPLENR, 704 }, @@ -515,7 +517,7 @@ const short temptable_8[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 9) || (THERMISTORHEATER_1 == 9) || (THERMISTORHEATER_2 == 9) || (THERMISTORHEATER_3 == 9) || (THERMISTORBED == 9) +#if ANY_THERMISTOR_IS(9) // 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) const short temptable_9[][2] PROGMEM = { { 1 * OVERSAMPLENR, 936 }, @@ -552,7 +554,7 @@ const short temptable_9[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 10) || (THERMISTORHEATER_1 == 10) || (THERMISTORHEATER_2 == 10) || (THERMISTORHEATER_3 == 10) || (THERMISTORBED == 10) +#if ANY_THERMISTOR_IS(10) // 100k RS thermistor 198-961 (4.7k pullup) const short temptable_10[][2] PROGMEM = { { 1 * OVERSAMPLENR, 929 }, @@ -589,7 +591,7 @@ const short temptable_10[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 11) || (THERMISTORHEATER_1 == 11) || (THERMISTORHEATER_2 == 11) || (THERMISTORHEATER_3 == 11) || (THERMISTORBED == 11) +#if ANY_THERMISTOR_IS(11) // QU-BD silicone bed QWG-104F-3950 thermistor const short temptable_11[][2] PROGMEM = { { 1 * OVERSAMPLENR, 938 }, @@ -645,7 +647,7 @@ const short temptable_11[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 13) || (THERMISTORHEATER_1 == 13) || (THERMISTORHEATER_2 == 13) || (THERMISTORHEATER_3 == 13) || (THERMISTORBED == 13) +#if ANY_THERMISTOR_IS(13) // Hisens thermistor B25/50 =3950 +/-1% const short temptable_13[][2] PROGMEM = { { 20.04 * OVERSAMPLENR, 300 }, @@ -675,7 +677,7 @@ const short temptable_13[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 20) || (THERMISTORHEATER_1 == 20) || (THERMISTORHEATER_2 == 20) || (THERMISTORBED == 20) // PT100 with INA826 amp on Ultimaker v2.0 electronics +#if ANY_THERMISTOR_IS(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) @@ -751,7 +753,7 @@ const short temptable_20[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 51) || (THERMISTORHEATER_1 == 51) || (THERMISTORHEATER_2 == 51) || (THERMISTORHEATER_3 == 51) || (THERMISTORBED == 51) +#if ANY_THERMISTOR_IS(51) // 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) // Verified by linagee. // Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance @@ -813,7 +815,7 @@ const short temptable_51[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 52) || (THERMISTORHEATER_1 == 52) || (THERMISTORHEATER_2 == 52) || (THERMISTORHEATER_3 == 52) || (THERMISTORBED == 52) +#if ANY_THERMISTOR_IS(52) // 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance @@ -854,7 +856,7 @@ const short temptable_52[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 55) || (THERMISTORHEATER_1 == 55) || (THERMISTORHEATER_2 == 55) || (THERMISTORHEATER_3 == 55) || (THERMISTORBED == 55) +#if ANY_THERMISTOR_IS(55) // 100k ATC Semitec 104GT-2 (Used on ParCan) (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf // Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance @@ -895,7 +897,7 @@ const short temptable_55[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 60) || (THERMISTORHEATER_1 == 60) || (THERMISTORHEATER_2 == 60) || (THERMISTORHEATER_3 == 60) || (THERMISTORBED == 60) // Maker's Tool Works Kapton Bed Thermistor +#if ANY_THERMISTOR_IS(60) // Maker's Tool Works Kapton Bed Thermistor // ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=3950 // r0: 100000 // t0: 25 @@ -980,7 +982,7 @@ const short temptable_60[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 12) || (THERMISTORHEATER_1 == 12) || (THERMISTORHEATER_2 == 12) || (THERMISTORHEATER_3 == 12) || (THERMISTORBED == 12) +#if ANY_THERMISTOR_IS(12) // 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) const short temptable_12[][2] PROGMEM = { { 35 * OVERSAMPLENR, 180 }, // top rating 180C @@ -1016,7 +1018,7 @@ const short temptable_12[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 70) || (THERMISTORHEATER_1 == 70) || (THERMISTORHEATER_2 == 70) || (THERMISTORHEATER_3 == 70) || (THERMISTORBED == 70) // bqh2 stock thermistor +#if ANY_THERMISTOR_IS(70) // bqh2 stock thermistor const short temptable_70[][2] PROGMEM = { { 22 * OVERSAMPLENR, 300 }, { 24 * OVERSAMPLENR, 295 }, @@ -1093,7 +1095,7 @@ const short temptable_70[][2] PROGMEM = { #define PtAdVal(T,R0,Rup) (short)(1024/(Rup/PtRt(T,R0)+1)) #define PtLine(T,R0,Rup) { PtAdVal(T,R0,Rup)*OVERSAMPLENR, T }, -#if (THERMISTORHEATER_0 == 110) || (THERMISTORHEATER_1 == 110) || (THERMISTORHEATER_2 == 110) || (THERMISTORHEATER_3 == 110) || (THERMISTORBED == 110) // Pt100 with 1k0 pullup +#if ANY_THERMISTOR_IS(110) // Pt100 with 1k0 pullup const short temptable_110[][2] PROGMEM = { // only few values are needed as the curve is very flat PtLine( 0, 100, 1000) @@ -1105,7 +1107,7 @@ const short temptable_110[][2] PROGMEM = { PtLine(300, 100, 1000) }; #endif -#if (THERMISTORHEATER_0 == 147) || (THERMISTORHEATER_1 == 147) || (THERMISTORHEATER_2 == 147) || (THERMISTORHEATER_3 == 147) || (THERMISTORBED == 147) // Pt100 with 4k7 pullup +#if ANY_THERMISTOR_IS(147) // Pt100 with 4k7 pullup const short temptable_147[][2] PROGMEM = { // only few values are needed as the curve is very flat PtLine( 0, 100, 4700) @@ -1117,7 +1119,7 @@ const short temptable_147[][2] PROGMEM = { PtLine(300, 100, 4700) }; #endif -#if (THERMISTORHEATER_0 == 1010) || (THERMISTORHEATER_1 == 1010) || (THERMISTORHEATER_2 == 1010) || (THERMISTORHEATER_3 == 1010) || (THERMISTORBED == 1010) // Pt1000 with 1k0 pullup +#if ANY_THERMISTOR_IS(1010) // Pt1000 with 1k0 pullup const short temptable_1010[][2] PROGMEM = { PtLine( 0, 1000, 1000) PtLine( 25, 1000, 1000) @@ -1134,7 +1136,7 @@ const short temptable_1010[][2] PROGMEM = { PtLine(300, 1000, 1000) }; #endif -#if (THERMISTORHEATER_0 == 1047) || (THERMISTORHEATER_1 == 1047) || (THERMISTORHEATER_2 == 1047) || (THERMISTORHEATER_3 == 1047) || (THERMISTORBED == 1047) // Pt1000 with 4k7 pullup +#if ANY_THERMISTOR_IS(1047) // Pt1000 with 4k7 pullup const short temptable_1047[][2] PROGMEM = { // only few values are needed as the curve is very flat PtLine( 0, 1000, 4700) @@ -1147,7 +1149,7 @@ const short temptable_1047[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 999) || (THERMISTORHEATER_1 == 999) || (THERMISTORHEATER_2 == 999) || (THERMISTORHEATER_3 == 999) || (THERMISTORBED == 999) //User defined table +#if ANY_THERMISTOR_IS(999) // User-defined table // Dummy Thermistor table.. It will ALWAYS read a fixed value. #ifndef DUMMY_THERMISTOR_999_VALUE #define DUMMY_THERMISTOR_999_VALUE 25 @@ -1158,7 +1160,7 @@ const short temptable_1047[][2] PROGMEM = { }; #endif -#if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User defined table +#if ANY_THERMISTOR_IS(998) // User-defined table // Dummy Thermistor table.. It will ALWAYS read a fixed value. #ifndef DUMMY_THERMISTOR_998_VALUE #define DUMMY_THERMISTOR_998_VALUE 25