1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288 |
- /**
- * Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
- #ifndef THERMISTORTABLES_H_
- #define THERMISTORTABLES_H_
-
- #include "Marlin.h"
- #include "macros.h"
-
- #define OVERSAMPLENR 16
-
- #if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1) || (THERMISTORHEATER_2 == 1) || (THERMISTORHEATER_3 == 1) || (THERMISTORBED == 1) //100k bed thermistor
- const short temptable_1[][2] PROGMEM = {
- { 23 * OVERSAMPLENR, 300 },
- { 25 * OVERSAMPLENR, 295 },
- { 27 * OVERSAMPLENR, 290 },
- { 28 * OVERSAMPLENR, 285 },
- { 31 * OVERSAMPLENR, 280 },
- { 33 * OVERSAMPLENR, 275 },
- { 35 * OVERSAMPLENR, 270 },
- { 38 * OVERSAMPLENR, 265 },
- { 41 * OVERSAMPLENR, 260 },
- { 44 * OVERSAMPLENR, 255 },
- { 48 * OVERSAMPLENR, 250 },
- { 52 * OVERSAMPLENR, 245 },
- { 56 * OVERSAMPLENR, 240 },
- { 61 * OVERSAMPLENR, 235 },
- { 66 * OVERSAMPLENR, 230 },
- { 71 * OVERSAMPLENR, 225 },
- { 78 * OVERSAMPLENR, 220 },
- { 84 * OVERSAMPLENR, 215 },
- { 92 * OVERSAMPLENR, 210 },
- { 100 * OVERSAMPLENR, 205 },
- { 109 * OVERSAMPLENR, 200 },
- { 120 * OVERSAMPLENR, 195 },
- { 131 * OVERSAMPLENR, 190 },
- { 143 * OVERSAMPLENR, 185 },
- { 156 * OVERSAMPLENR, 180 },
- { 171 * OVERSAMPLENR, 175 },
- { 187 * OVERSAMPLENR, 170 },
- { 205 * OVERSAMPLENR, 165 },
- { 224 * OVERSAMPLENR, 160 },
- { 245 * OVERSAMPLENR, 155 },
- { 268 * OVERSAMPLENR, 150 },
- { 293 * OVERSAMPLENR, 145 },
- { 320 * OVERSAMPLENR, 140 },
- { 348 * OVERSAMPLENR, 135 },
- { 379 * OVERSAMPLENR, 130 },
- { 411 * OVERSAMPLENR, 125 },
- { 445 * OVERSAMPLENR, 120 },
- { 480 * OVERSAMPLENR, 115 },
- { 516 * OVERSAMPLENR, 110 },
- { 553 * OVERSAMPLENR, 105 },
- { 591 * OVERSAMPLENR, 100 },
- { 628 * OVERSAMPLENR, 95 },
- { 665 * OVERSAMPLENR, 90 },
- { 702 * OVERSAMPLENR, 85 },
- { 737 * OVERSAMPLENR, 80 },
- { 770 * OVERSAMPLENR, 75 },
- { 801 * OVERSAMPLENR, 70 },
- { 830 * OVERSAMPLENR, 65 },
- { 857 * OVERSAMPLENR, 60 },
- { 881 * OVERSAMPLENR, 55 },
- { 903 * OVERSAMPLENR, 50 },
- { 922 * OVERSAMPLENR, 45 },
- { 939 * OVERSAMPLENR, 40 },
- { 954 * OVERSAMPLENR, 35 },
- { 966 * OVERSAMPLENR, 30 },
- { 977 * OVERSAMPLENR, 25 },
- { 985 * OVERSAMPLENR, 20 },
- { 993 * OVERSAMPLENR, 15 },
- { 999 * OVERSAMPLENR, 10 },
- { 1004 * OVERSAMPLENR, 5 },
- { 1008 * OVERSAMPLENR, 0 } // safety
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORHEATER_3 == 2) || (THERMISTORBED == 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
- const short temptable_2[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 848 },
- { 30 * OVERSAMPLENR, 300 }, // top rating 300C
- { 34 * OVERSAMPLENR, 290 },
- { 39 * OVERSAMPLENR, 280 },
- { 46 * OVERSAMPLENR, 270 },
- { 53 * OVERSAMPLENR, 260 },
- { 63 * OVERSAMPLENR, 250 },
- { 74 * OVERSAMPLENR, 240 },
- { 87 * OVERSAMPLENR, 230 },
- { 104 * OVERSAMPLENR, 220 },
- { 124 * OVERSAMPLENR, 210 },
- { 148 * OVERSAMPLENR, 200 },
- { 176 * OVERSAMPLENR, 190 },
- { 211 * OVERSAMPLENR, 180 },
- { 252 * OVERSAMPLENR, 170 },
- { 301 * OVERSAMPLENR, 160 },
- { 357 * OVERSAMPLENR, 150 },
- { 420 * OVERSAMPLENR, 140 },
- { 489 * OVERSAMPLENR, 130 },
- { 562 * OVERSAMPLENR, 120 },
- { 636 * OVERSAMPLENR, 110 },
- { 708 * OVERSAMPLENR, 100 },
- { 775 * OVERSAMPLENR, 90 },
- { 835 * OVERSAMPLENR, 80 },
- { 884 * OVERSAMPLENR, 70 },
- { 924 * OVERSAMPLENR, 60 },
- { 955 * OVERSAMPLENR, 50 },
- { 977 * OVERSAMPLENR, 40 },
- { 993 * OVERSAMPLENR, 30 },
- { 1004 * OVERSAMPLENR, 20 },
- { 1012 * OVERSAMPLENR, 10 },
- { 1016 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORHEATER_3 == 3) || (THERMISTORBED == 3) //mendel-parts
- const short temptable_3[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 864 },
- { 21 * OVERSAMPLENR, 300 },
- { 25 * OVERSAMPLENR, 290 },
- { 29 * OVERSAMPLENR, 280 },
- { 33 * OVERSAMPLENR, 270 },
- { 39 * OVERSAMPLENR, 260 },
- { 46 * OVERSAMPLENR, 250 },
- { 54 * OVERSAMPLENR, 240 },
- { 64 * OVERSAMPLENR, 230 },
- { 75 * OVERSAMPLENR, 220 },
- { 90 * OVERSAMPLENR, 210 },
- { 107 * OVERSAMPLENR, 200 },
- { 128 * OVERSAMPLENR, 190 },
- { 154 * OVERSAMPLENR, 180 },
- { 184 * OVERSAMPLENR, 170 },
- { 221 * OVERSAMPLENR, 160 },
- { 265 * OVERSAMPLENR, 150 },
- { 316 * OVERSAMPLENR, 140 },
- { 375 * OVERSAMPLENR, 130 },
- { 441 * OVERSAMPLENR, 120 },
- { 513 * OVERSAMPLENR, 110 },
- { 588 * OVERSAMPLENR, 100 },
- { 734 * OVERSAMPLENR, 80 },
- { 856 * OVERSAMPLENR, 60 },
- { 938 * OVERSAMPLENR, 40 },
- { 986 * OVERSAMPLENR, 20 },
- { 1008 * OVERSAMPLENR, 0 },
- { 1018 * OVERSAMPLENR, -20 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORHEATER_3 == 4) || (THERMISTORBED == 4) //10k thermistor
- const short temptable_4[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 430 },
- { 54 * OVERSAMPLENR, 137 },
- { 107 * OVERSAMPLENR, 107 },
- { 160 * OVERSAMPLENR, 91 },
- { 213 * OVERSAMPLENR, 80 },
- { 266 * OVERSAMPLENR, 71 },
- { 319 * OVERSAMPLENR, 64 },
- { 372 * OVERSAMPLENR, 57 },
- { 425 * OVERSAMPLENR, 51 },
- { 478 * OVERSAMPLENR, 46 },
- { 531 * OVERSAMPLENR, 41 },
- { 584 * OVERSAMPLENR, 35 },
- { 637 * OVERSAMPLENR, 30 },
- { 690 * OVERSAMPLENR, 25 },
- { 743 * OVERSAMPLENR, 20 },
- { 796 * OVERSAMPLENR, 14 },
- { 849 * OVERSAMPLENR, 7 },
- { 902 * OVERSAMPLENR, 0 },
- { 955 * OVERSAMPLENR, -11 },
- { 1008 * OVERSAMPLENR, -35 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 5) || (THERMISTORHEATER_1 == 5) || (THERMISTORHEATER_2 == 5) || (THERMISTORHEATER_3 == 5) || (THERMISTORBED == 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
- const short temptable_5[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 713 },
- { 17 * OVERSAMPLENR, 300 }, // top rating 300C
- { 20 * OVERSAMPLENR, 290 },
- { 23 * OVERSAMPLENR, 280 },
- { 27 * OVERSAMPLENR, 270 },
- { 31 * OVERSAMPLENR, 260 },
- { 37 * OVERSAMPLENR, 250 },
- { 43 * OVERSAMPLENR, 240 },
- { 51 * OVERSAMPLENR, 230 },
- { 61 * OVERSAMPLENR, 220 },
- { 73 * OVERSAMPLENR, 210 },
- { 87 * OVERSAMPLENR, 200 },
- { 106 * OVERSAMPLENR, 190 },
- { 128 * OVERSAMPLENR, 180 },
- { 155 * OVERSAMPLENR, 170 },
- { 189 * OVERSAMPLENR, 160 },
- { 230 * OVERSAMPLENR, 150 },
- { 278 * OVERSAMPLENR, 140 },
- { 336 * OVERSAMPLENR, 130 },
- { 402 * OVERSAMPLENR, 120 },
- { 476 * OVERSAMPLENR, 110 },
- { 554 * OVERSAMPLENR, 100 },
- { 635 * OVERSAMPLENR, 90 },
- { 713 * OVERSAMPLENR, 80 },
- { 784 * OVERSAMPLENR, 70 },
- { 846 * OVERSAMPLENR, 60 },
- { 897 * OVERSAMPLENR, 50 },
- { 937 * OVERSAMPLENR, 40 },
- { 966 * OVERSAMPLENR, 30 },
- { 986 * OVERSAMPLENR, 20 },
- { 1000 * OVERSAMPLENR, 10 },
- { 1010 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORHEATER_3 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor
- const short temptable_6[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 350 },
- { 28 * OVERSAMPLENR, 250 }, // top rating 250C
- { 31 * OVERSAMPLENR, 245 },
- { 35 * OVERSAMPLENR, 240 },
- { 39 * OVERSAMPLENR, 235 },
- { 42 * OVERSAMPLENR, 230 },
- { 44 * OVERSAMPLENR, 225 },
- { 49 * OVERSAMPLENR, 220 },
- { 53 * OVERSAMPLENR, 215 },
- { 62 * OVERSAMPLENR, 210 },
- { 71 * OVERSAMPLENR, 205 }, // fitted graphically
- { 78 * OVERSAMPLENR, 200 }, // fitted graphically
- { 94 * OVERSAMPLENR, 190 },
- { 102 * OVERSAMPLENR, 185 },
- { 116 * OVERSAMPLENR, 170 },
- { 143 * OVERSAMPLENR, 160 },
- { 183 * OVERSAMPLENR, 150 },
- { 223 * OVERSAMPLENR, 140 },
- { 270 * OVERSAMPLENR, 130 },
- { 318 * OVERSAMPLENR, 120 },
- { 383 * OVERSAMPLENR, 110 },
- { 413 * OVERSAMPLENR, 105 },
- { 439 * OVERSAMPLENR, 100 },
- { 484 * OVERSAMPLENR, 95 },
- { 513 * OVERSAMPLENR, 90 },
- { 607 * OVERSAMPLENR, 80 },
- { 664 * OVERSAMPLENR, 70 },
- { 781 * OVERSAMPLENR, 60 },
- { 810 * OVERSAMPLENR, 55 },
- { 849 * OVERSAMPLENR, 50 },
- { 914 * OVERSAMPLENR, 45 },
- { 914 * OVERSAMPLENR, 40 },
- { 935 * OVERSAMPLENR, 35 },
- { 954 * OVERSAMPLENR, 30 },
- { 970 * OVERSAMPLENR, 25 },
- { 978 * OVERSAMPLENR, 22 },
- { 1008 * OVERSAMPLENR, 3 },
- { 1023 * OVERSAMPLENR, 0 } // to allow internal 0 degrees C
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORHEATER_3 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01
- const short temptable_7[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 941 },
- { 19 * OVERSAMPLENR, 362 },
- { 37 * OVERSAMPLENR, 299 }, // top rating 300C
- { 55 * OVERSAMPLENR, 266 },
- { 73 * OVERSAMPLENR, 245 },
- { 91 * OVERSAMPLENR, 229 },
- { 109 * OVERSAMPLENR, 216 },
- { 127 * OVERSAMPLENR, 206 },
- { 145 * OVERSAMPLENR, 197 },
- { 163 * OVERSAMPLENR, 190 },
- { 181 * OVERSAMPLENR, 183 },
- { 199 * OVERSAMPLENR, 177 },
- { 217 * OVERSAMPLENR, 171 },
- { 235 * OVERSAMPLENR, 166 },
- { 253 * OVERSAMPLENR, 162 },
- { 271 * OVERSAMPLENR, 157 },
- { 289 * OVERSAMPLENR, 153 },
- { 307 * OVERSAMPLENR, 149 },
- { 325 * OVERSAMPLENR, 146 },
- { 343 * OVERSAMPLENR, 142 },
- { 361 * OVERSAMPLENR, 139 },
- { 379 * OVERSAMPLENR, 135 },
- { 397 * OVERSAMPLENR, 132 },
- { 415 * OVERSAMPLENR, 129 },
- { 433 * OVERSAMPLENR, 126 },
- { 451 * OVERSAMPLENR, 123 },
- { 469 * OVERSAMPLENR, 121 },
- { 487 * OVERSAMPLENR, 118 },
- { 505 * OVERSAMPLENR, 115 },
- { 523 * OVERSAMPLENR, 112 },
- { 541 * OVERSAMPLENR, 110 },
- { 559 * OVERSAMPLENR, 107 },
- { 577 * OVERSAMPLENR, 105 },
- { 595 * OVERSAMPLENR, 102 },
- { 613 * OVERSAMPLENR, 99 },
- { 631 * OVERSAMPLENR, 97 },
- { 649 * OVERSAMPLENR, 94 },
- { 667 * OVERSAMPLENR, 92 },
- { 685 * OVERSAMPLENR, 89 },
- { 703 * OVERSAMPLENR, 86 },
- { 721 * OVERSAMPLENR, 84 },
- { 739 * OVERSAMPLENR, 81 },
- { 757 * OVERSAMPLENR, 78 },
- { 775 * OVERSAMPLENR, 75 },
- { 793 * OVERSAMPLENR, 72 },
- { 811 * OVERSAMPLENR, 69 },
- { 829 * OVERSAMPLENR, 66 },
- { 847 * OVERSAMPLENR, 62 },
- { 865 * OVERSAMPLENR, 59 },
- { 883 * OVERSAMPLENR, 55 },
- { 901 * OVERSAMPLENR, 51 },
- { 919 * OVERSAMPLENR, 46 },
- { 937 * OVERSAMPLENR, 41 },
- { 955 * OVERSAMPLENR, 35 },
- { 973 * OVERSAMPLENR, 27 },
- { 991 * OVERSAMPLENR, 17 },
- { 1009 * OVERSAMPLENR, 1 },
- { 1023 * OVERSAMPLENR, 0 } // to allow internal 0 degrees C
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 71) || (THERMISTORHEATER_1 == 71) || (THERMISTORHEATER_2 == 71) || (THERMISTORHEATER_3 == 71) || (THERMISTORBED == 71) // 100k Honeywell 135-104LAF-J01
- // R0 = 100000 Ohm
- // T0 = 25 °C
- // Beta = 3974
- // R1 = 0 Ohm
- // R2 = 4700 Ohm
- const short temptable_71[][2] PROGMEM = {
- { 35 * OVERSAMPLENR, 300 },
- { 51 * OVERSAMPLENR, 270 },
- { 54 * OVERSAMPLENR, 265 },
- { 58 * OVERSAMPLENR, 260 },
- { 59 * OVERSAMPLENR, 258 },
- { 61 * OVERSAMPLENR, 256 },
- { 63 * OVERSAMPLENR, 254 },
- { 64 * OVERSAMPLENR, 252 },
- { 66 * OVERSAMPLENR, 250 },
- { 67 * OVERSAMPLENR, 249 },
- { 68 * OVERSAMPLENR, 248 },
- { 69 * OVERSAMPLENR, 247 },
- { 70 * OVERSAMPLENR, 246 },
- { 71 * OVERSAMPLENR, 245 },
- { 72 * OVERSAMPLENR, 244 },
- { 73 * OVERSAMPLENR, 243 },
- { 74 * OVERSAMPLENR, 242 },
- { 75 * OVERSAMPLENR, 241 },
- { 76 * OVERSAMPLENR, 240 },
- { 77 * OVERSAMPLENR, 239 },
- { 78 * OVERSAMPLENR, 238 },
- { 79 * OVERSAMPLENR, 237 },
- { 80 * OVERSAMPLENR, 236 },
- { 81 * OVERSAMPLENR, 235 },
- { 82 * OVERSAMPLENR, 234 },
- { 84 * OVERSAMPLENR, 233 },
- { 85 * OVERSAMPLENR, 232 },
- { 86 * OVERSAMPLENR, 231 },
- { 87 * OVERSAMPLENR, 230 },
- { 89 * OVERSAMPLENR, 229 },
- { 90 * OVERSAMPLENR, 228 },
- { 91 * OVERSAMPLENR, 227 },
- { 92 * OVERSAMPLENR, 226 },
- { 94 * OVERSAMPLENR, 225 },
- { 95 * OVERSAMPLENR, 224 },
- { 97 * OVERSAMPLENR, 223 },
- { 98 * OVERSAMPLENR, 222 },
- { 99 * OVERSAMPLENR, 221 },
- { 101 * OVERSAMPLENR, 220 },
- { 102 * OVERSAMPLENR, 219 },
- { 104 * OVERSAMPLENR, 218 },
- { 106 * OVERSAMPLENR, 217 },
- { 107 * OVERSAMPLENR, 216 },
- { 109 * OVERSAMPLENR, 215 },
- { 110 * OVERSAMPLENR, 214 },
- { 112 * OVERSAMPLENR, 213 },
- { 114 * OVERSAMPLENR, 212 },
- { 115 * OVERSAMPLENR, 211 },
- { 117 * OVERSAMPLENR, 210 },
- { 119 * OVERSAMPLENR, 209 },
- { 121 * OVERSAMPLENR, 208 },
- { 123 * OVERSAMPLENR, 207 },
- { 125 * OVERSAMPLENR, 206 },
- { 126 * OVERSAMPLENR, 205 },
- { 128 * OVERSAMPLENR, 204 },
- { 130 * OVERSAMPLENR, 203 },
- { 132 * OVERSAMPLENR, 202 },
- { 134 * OVERSAMPLENR, 201 },
- { 136 * OVERSAMPLENR, 200 },
- { 139 * OVERSAMPLENR, 199 },
- { 141 * OVERSAMPLENR, 198 },
- { 143 * OVERSAMPLENR, 197 },
- { 145 * OVERSAMPLENR, 196 },
- { 147 * OVERSAMPLENR, 195 },
- { 150 * OVERSAMPLENR, 194 },
- { 152 * OVERSAMPLENR, 193 },
- { 154 * OVERSAMPLENR, 192 },
- { 157 * OVERSAMPLENR, 191 },
- { 159 * OVERSAMPLENR, 190 },
- { 162 * OVERSAMPLENR, 189 },
- { 164 * OVERSAMPLENR, 188 },
- { 167 * OVERSAMPLENR, 187 },
- { 170 * OVERSAMPLENR, 186 },
- { 172 * OVERSAMPLENR, 185 },
- { 175 * OVERSAMPLENR, 184 },
- { 178 * OVERSAMPLENR, 183 },
- { 181 * OVERSAMPLENR, 182 },
- { 184 * OVERSAMPLENR, 181 },
- { 187 * OVERSAMPLENR, 180 },
- { 190 * OVERSAMPLENR, 179 },
- { 193 * OVERSAMPLENR, 178 },
- { 196 * OVERSAMPLENR, 177 },
- { 199 * OVERSAMPLENR, 176 },
- { 202 * OVERSAMPLENR, 175 },
- { 205 * OVERSAMPLENR, 174 },
- { 208 * OVERSAMPLENR, 173 },
- { 212 * OVERSAMPLENR, 172 },
- { 215 * OVERSAMPLENR, 171 },
- { 219 * OVERSAMPLENR, 170 },
- { 237 * OVERSAMPLENR, 165 },
- { 256 * OVERSAMPLENR, 160 },
- { 300 * OVERSAMPLENR, 150 },
- { 351 * OVERSAMPLENR, 140 },
- { 470 * OVERSAMPLENR, 120 },
- { 504 * OVERSAMPLENR, 115 },
- { 538 * OVERSAMPLENR, 110 },
- { 552 * OVERSAMPLENR, 108 },
- { 566 * OVERSAMPLENR, 106 },
- { 580 * OVERSAMPLENR, 104 },
- { 594 * OVERSAMPLENR, 102 },
- { 608 * OVERSAMPLENR, 100 },
- { 622 * OVERSAMPLENR, 98 },
- { 636 * OVERSAMPLENR, 96 },
- { 650 * OVERSAMPLENR, 94 },
- { 664 * OVERSAMPLENR, 92 },
- { 678 * OVERSAMPLENR, 90 },
- { 712 * OVERSAMPLENR, 85 },
- { 745 * OVERSAMPLENR, 80 },
- { 758 * OVERSAMPLENR, 78 },
- { 770 * OVERSAMPLENR, 76 },
- { 783 * OVERSAMPLENR, 74 },
- { 795 * OVERSAMPLENR, 72 },
- { 806 * OVERSAMPLENR, 70 },
- { 818 * OVERSAMPLENR, 68 },
- { 829 * OVERSAMPLENR, 66 },
- { 840 * OVERSAMPLENR, 64 },
- { 850 * OVERSAMPLENR, 62 },
- { 860 * OVERSAMPLENR, 60 },
- { 870 * OVERSAMPLENR, 58 },
- { 879 * OVERSAMPLENR, 56 },
- { 888 * OVERSAMPLENR, 54 },
- { 897 * OVERSAMPLENR, 52 },
- { 905 * OVERSAMPLENR, 50 },
- { 924 * OVERSAMPLENR, 45 },
- { 940 * OVERSAMPLENR, 40 },
- { 955 * OVERSAMPLENR, 35 },
- { 967 * OVERSAMPLENR, 30 },
- { 970 * OVERSAMPLENR, 29 },
- { 972 * OVERSAMPLENR, 28 },
- { 974 * OVERSAMPLENR, 27 },
- { 976 * OVERSAMPLENR, 26 },
- { 978 * OVERSAMPLENR, 25 },
- { 980 * OVERSAMPLENR, 24 },
- { 982 * OVERSAMPLENR, 23 },
- { 984 * OVERSAMPLENR, 22 },
- { 985 * OVERSAMPLENR, 21 },
- { 987 * OVERSAMPLENR, 20 },
- { 995 * OVERSAMPLENR, 15 },
- { 1001 * OVERSAMPLENR, 10 },
- { 1006 * OVERSAMPLENR, 5 },
- { 1010 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 8) || (THERMISTORHEATER_1 == 8) || (THERMISTORHEATER_2 == 8) || (THERMISTORHEATER_3 == 8) || (THERMISTORBED == 8)
- // 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
- const short temptable_8[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 704 },
- { 54 * OVERSAMPLENR, 216 },
- { 107 * OVERSAMPLENR, 175 },
- { 160 * OVERSAMPLENR, 152 },
- { 213 * OVERSAMPLENR, 137 },
- { 266 * OVERSAMPLENR, 125 },
- { 319 * OVERSAMPLENR, 115 },
- { 372 * OVERSAMPLENR, 106 },
- { 425 * OVERSAMPLENR, 99 },
- { 478 * OVERSAMPLENR, 91 },
- { 531 * OVERSAMPLENR, 85 },
- { 584 * OVERSAMPLENR, 78 },
- { 637 * OVERSAMPLENR, 71 },
- { 690 * OVERSAMPLENR, 65 },
- { 743 * OVERSAMPLENR, 58 },
- { 796 * OVERSAMPLENR, 50 },
- { 849 * OVERSAMPLENR, 42 },
- { 902 * OVERSAMPLENR, 31 },
- { 955 * OVERSAMPLENR, 17 },
- { 1008 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 9) || (THERMISTORHEATER_1 == 9) || (THERMISTORHEATER_2 == 9) || (THERMISTORHEATER_3 == 9) || (THERMISTORBED == 9)
- // 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
- const short temptable_9[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 936 },
- { 36 * OVERSAMPLENR, 300 },
- { 71 * OVERSAMPLENR, 246 },
- { 106 * OVERSAMPLENR, 218 },
- { 141 * OVERSAMPLENR, 199 },
- { 176 * OVERSAMPLENR, 185 },
- { 211 * OVERSAMPLENR, 173 },
- { 246 * OVERSAMPLENR, 163 },
- { 281 * OVERSAMPLENR, 155 },
- { 316 * OVERSAMPLENR, 147 },
- { 351 * OVERSAMPLENR, 140 },
- { 386 * OVERSAMPLENR, 134 },
- { 421 * OVERSAMPLENR, 128 },
- { 456 * OVERSAMPLENR, 122 },
- { 491 * OVERSAMPLENR, 117 },
- { 526 * OVERSAMPLENR, 112 },
- { 561 * OVERSAMPLENR, 107 },
- { 596 * OVERSAMPLENR, 102 },
- { 631 * OVERSAMPLENR, 97 },
- { 666 * OVERSAMPLENR, 92 },
- { 701 * OVERSAMPLENR, 87 },
- { 736 * OVERSAMPLENR, 81 },
- { 771 * OVERSAMPLENR, 76 },
- { 806 * OVERSAMPLENR, 70 },
- { 841 * OVERSAMPLENR, 63 },
- { 876 * OVERSAMPLENR, 56 },
- { 911 * OVERSAMPLENR, 48 },
- { 946 * OVERSAMPLENR, 38 },
- { 981 * OVERSAMPLENR, 23 },
- { 1005 * OVERSAMPLENR, 5 },
- { 1016 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 10) || (THERMISTORHEATER_1 == 10) || (THERMISTORHEATER_2 == 10) || (THERMISTORHEATER_3 == 10) || (THERMISTORBED == 10)
- // 100k RS thermistor 198-961 (4.7k pullup)
- const short temptable_10[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 929 },
- { 36 * OVERSAMPLENR, 299 },
- { 71 * OVERSAMPLENR, 246 },
- { 106 * OVERSAMPLENR, 217 },
- { 141 * OVERSAMPLENR, 198 },
- { 176 * OVERSAMPLENR, 184 },
- { 211 * OVERSAMPLENR, 173 },
- { 246 * OVERSAMPLENR, 163 },
- { 281 * OVERSAMPLENR, 154 },
- { 316 * OVERSAMPLENR, 147 },
- { 351 * OVERSAMPLENR, 140 },
- { 386 * OVERSAMPLENR, 134 },
- { 421 * OVERSAMPLENR, 128 },
- { 456 * OVERSAMPLENR, 122 },
- { 491 * OVERSAMPLENR, 117 },
- { 526 * OVERSAMPLENR, 112 },
- { 561 * OVERSAMPLENR, 107 },
- { 596 * OVERSAMPLENR, 102 },
- { 631 * OVERSAMPLENR, 97 },
- { 666 * OVERSAMPLENR, 91 },
- { 701 * OVERSAMPLENR, 86 },
- { 736 * OVERSAMPLENR, 81 },
- { 771 * OVERSAMPLENR, 76 },
- { 806 * OVERSAMPLENR, 70 },
- { 841 * OVERSAMPLENR, 63 },
- { 876 * OVERSAMPLENR, 56 },
- { 911 * OVERSAMPLENR, 48 },
- { 946 * OVERSAMPLENR, 38 },
- { 981 * OVERSAMPLENR, 23 },
- { 1005 * OVERSAMPLENR, 5 },
- { 1016 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 11) || (THERMISTORHEATER_1 == 11) || (THERMISTORHEATER_2 == 11) || (THERMISTORHEATER_3 == 11) || (THERMISTORBED == 11)
- // QU-BD silicone bed QWG-104F-3950 thermistor
- const short temptable_11[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 938 },
- { 31 * OVERSAMPLENR, 314 },
- { 41 * OVERSAMPLENR, 290 },
- { 51 * OVERSAMPLENR, 272 },
- { 61 * OVERSAMPLENR, 258 },
- { 71 * OVERSAMPLENR, 247 },
- { 81 * OVERSAMPLENR, 237 },
- { 91 * OVERSAMPLENR, 229 },
- { 101 * OVERSAMPLENR, 221 },
- { 111 * OVERSAMPLENR, 215 },
- { 121 * OVERSAMPLENR, 209 },
- { 131 * OVERSAMPLENR, 204 },
- { 141 * OVERSAMPLENR, 199 },
- { 151 * OVERSAMPLENR, 195 },
- { 161 * OVERSAMPLENR, 190 },
- { 171 * OVERSAMPLENR, 187 },
- { 181 * OVERSAMPLENR, 183 },
- { 191 * OVERSAMPLENR, 179 },
- { 201 * OVERSAMPLENR, 176 },
- { 221 * OVERSAMPLENR, 170 },
- { 241 * OVERSAMPLENR, 165 },
- { 261 * OVERSAMPLENR, 160 },
- { 281 * OVERSAMPLENR, 155 },
- { 301 * OVERSAMPLENR, 150 },
- { 331 * OVERSAMPLENR, 144 },
- { 361 * OVERSAMPLENR, 139 },
- { 391 * OVERSAMPLENR, 133 },
- { 421 * OVERSAMPLENR, 128 },
- { 451 * OVERSAMPLENR, 123 },
- { 491 * OVERSAMPLENR, 117 },
- { 531 * OVERSAMPLENR, 111 },
- { 571 * OVERSAMPLENR, 105 },
- { 611 * OVERSAMPLENR, 100 },
- { 641 * OVERSAMPLENR, 95 },
- { 681 * OVERSAMPLENR, 90 },
- { 711 * OVERSAMPLENR, 85 },
- { 751 * OVERSAMPLENR, 79 },
- { 791 * OVERSAMPLENR, 72 },
- { 811 * OVERSAMPLENR, 69 },
- { 831 * OVERSAMPLENR, 65 },
- { 871 * OVERSAMPLENR, 57 },
- { 881 * OVERSAMPLENR, 55 },
- { 901 * OVERSAMPLENR, 51 },
- { 921 * OVERSAMPLENR, 45 },
- { 941 * OVERSAMPLENR, 39 },
- { 971 * OVERSAMPLENR, 28 },
- { 981 * OVERSAMPLENR, 23 },
- { 991 * OVERSAMPLENR, 17 },
- { 1001 * OVERSAMPLENR, 9 },
- { 1021 * OVERSAMPLENR, -27 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 13) || (THERMISTORHEATER_1 == 13) || (THERMISTORHEATER_2 == 13) || (THERMISTORHEATER_3 == 13) || (THERMISTORBED == 13)
- // Hisens thermistor B25/50 =3950 +/-1%
- const short temptable_13[][2] PROGMEM = {
- { 20.04 * OVERSAMPLENR, 300 },
- { 23.19 * OVERSAMPLENR, 290 },
- { 26.71 * OVERSAMPLENR, 280 },
- { 31.23 * OVERSAMPLENR, 270 },
- { 36.52 * OVERSAMPLENR, 260 },
- { 42.75 * OVERSAMPLENR, 250 },
- { 50.68 * OVERSAMPLENR, 240 },
- { 60.22 * OVERSAMPLENR, 230 },
- { 72.03 * OVERSAMPLENR, 220 },
- { 86.84 * OVERSAMPLENR, 210 },
- { 102.79 * OVERSAMPLENR, 200 },
- { 124.46 * OVERSAMPLENR, 190 },
- { 151.02 * OVERSAMPLENR, 180 },
- { 182.86 * OVERSAMPLENR, 170 },
- { 220.72 * OVERSAMPLENR, 160 },
- { 316.96 * OVERSAMPLENR, 140 },
- { 447.17 * OVERSAMPLENR, 120 },
- { 590.61 * OVERSAMPLENR, 100 },
- { 737.31 * OVERSAMPLENR, 80 },
- { 857.77 * OVERSAMPLENR, 60 },
- { 939.52 * OVERSAMPLENR, 40 },
- { 986.03 * OVERSAMPLENR, 20 },
- { 1008.7 * 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 (THERMISTORHEATER_3 == 20)
- #define HEATER_3_RAW_HI_TEMP 16383
- #define HEATER_3_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) || (THERMISTORHEATER_3 == 51) || (THERMISTORBED == 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
- // Advantage: Twice the resolution and better linearity from 150C to 200C
- const short temptable_51[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 350 },
- { 190 * OVERSAMPLENR, 250 }, // top rating 250C
- { 203 * OVERSAMPLENR, 245 },
- { 217 * OVERSAMPLENR, 240 },
- { 232 * OVERSAMPLENR, 235 },
- { 248 * OVERSAMPLENR, 230 },
- { 265 * OVERSAMPLENR, 225 },
- { 283 * OVERSAMPLENR, 220 },
- { 302 * OVERSAMPLENR, 215 },
- { 322 * OVERSAMPLENR, 210 },
- { 344 * OVERSAMPLENR, 205 },
- { 366 * OVERSAMPLENR, 200 },
- { 390 * OVERSAMPLENR, 195 },
- { 415 * OVERSAMPLENR, 190 },
- { 440 * OVERSAMPLENR, 185 },
- { 467 * OVERSAMPLENR, 180 },
- { 494 * OVERSAMPLENR, 175 },
- { 522 * OVERSAMPLENR, 170 },
- { 551 * OVERSAMPLENR, 165 },
- { 580 * OVERSAMPLENR, 160 },
- { 609 * OVERSAMPLENR, 155 },
- { 638 * OVERSAMPLENR, 150 },
- { 666 * OVERSAMPLENR, 145 },
- { 695 * OVERSAMPLENR, 140 },
- { 722 * OVERSAMPLENR, 135 },
- { 749 * OVERSAMPLENR, 130 },
- { 775 * OVERSAMPLENR, 125 },
- { 800 * OVERSAMPLENR, 120 },
- { 823 * OVERSAMPLENR, 115 },
- { 845 * OVERSAMPLENR, 110 },
- { 865 * OVERSAMPLENR, 105 },
- { 884 * OVERSAMPLENR, 100 },
- { 901 * OVERSAMPLENR, 95 },
- { 917 * OVERSAMPLENR, 90 },
- { 932 * OVERSAMPLENR, 85 },
- { 944 * OVERSAMPLENR, 80 },
- { 956 * OVERSAMPLENR, 75 },
- { 966 * OVERSAMPLENR, 70 },
- { 975 * OVERSAMPLENR, 65 },
- { 982 * OVERSAMPLENR, 60 },
- { 989 * OVERSAMPLENR, 55 },
- { 995 * OVERSAMPLENR, 50 },
- { 1000 * OVERSAMPLENR, 45 },
- { 1004 * OVERSAMPLENR, 40 },
- { 1007 * OVERSAMPLENR, 35 },
- { 1010 * OVERSAMPLENR, 30 },
- { 1013 * OVERSAMPLENR, 25 },
- { 1015 * OVERSAMPLENR, 20 },
- { 1017 * OVERSAMPLENR, 15 },
- { 1018 * OVERSAMPLENR, 10 },
- { 1019 * OVERSAMPLENR, 5 },
- { 1020 * OVERSAMPLENR, 0 },
- { 1021 * OVERSAMPLENR, -5 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 52) || (THERMISTORHEATER_1 == 52) || (THERMISTORHEATER_2 == 52) || (THERMISTORHEATER_3 == 52) || (THERMISTORBED == 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
- // Advantage: More resolution and better linearity from 150C to 200C
- const short temptable_52[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 500 },
- { 125 * OVERSAMPLENR, 300 }, // top rating 300C
- { 142 * OVERSAMPLENR, 290 },
- { 162 * OVERSAMPLENR, 280 },
- { 185 * OVERSAMPLENR, 270 },
- { 211 * OVERSAMPLENR, 260 },
- { 240 * OVERSAMPLENR, 250 },
- { 274 * OVERSAMPLENR, 240 },
- { 312 * OVERSAMPLENR, 230 },
- { 355 * OVERSAMPLENR, 220 },
- { 401 * OVERSAMPLENR, 210 },
- { 452 * OVERSAMPLENR, 200 },
- { 506 * OVERSAMPLENR, 190 },
- { 563 * OVERSAMPLENR, 180 },
- { 620 * OVERSAMPLENR, 170 },
- { 677 * OVERSAMPLENR, 160 },
- { 732 * OVERSAMPLENR, 150 },
- { 783 * OVERSAMPLENR, 140 },
- { 830 * OVERSAMPLENR, 130 },
- { 871 * OVERSAMPLENR, 120 },
- { 906 * OVERSAMPLENR, 110 },
- { 935 * OVERSAMPLENR, 100 },
- { 958 * OVERSAMPLENR, 90 },
- { 976 * OVERSAMPLENR, 80 },
- { 990 * OVERSAMPLENR, 70 },
- { 1000 * OVERSAMPLENR, 60 },
- { 1008 * OVERSAMPLENR, 50 },
- { 1013 * OVERSAMPLENR, 40 },
- { 1017 * OVERSAMPLENR, 30 },
- { 1019 * OVERSAMPLENR, 20 },
- { 1021 * OVERSAMPLENR, 10 },
- { 1022 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 55) || (THERMISTORHEATER_1 == 55) || (THERMISTORHEATER_2 == 55) || (THERMISTORHEATER_3 == 55) || (THERMISTORBED == 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
- // Advantage: More resolution and better linearity from 150C to 200C
- const short temptable_55[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, 500 },
- { 76 * OVERSAMPLENR, 300 },
- { 87 * OVERSAMPLENR, 290 },
- { 100 * OVERSAMPLENR, 280 },
- { 114 * OVERSAMPLENR, 270 },
- { 131 * OVERSAMPLENR, 260 },
- { 152 * OVERSAMPLENR, 250 },
- { 175 * OVERSAMPLENR, 240 },
- { 202 * OVERSAMPLENR, 230 },
- { 234 * OVERSAMPLENR, 220 },
- { 271 * OVERSAMPLENR, 210 },
- { 312 * OVERSAMPLENR, 200 },
- { 359 * OVERSAMPLENR, 190 },
- { 411 * OVERSAMPLENR, 180 },
- { 467 * OVERSAMPLENR, 170 },
- { 527 * OVERSAMPLENR, 160 },
- { 590 * OVERSAMPLENR, 150 },
- { 652 * OVERSAMPLENR, 140 },
- { 713 * OVERSAMPLENR, 130 },
- { 770 * OVERSAMPLENR, 120 },
- { 822 * OVERSAMPLENR, 110 },
- { 867 * OVERSAMPLENR, 100 },
- { 905 * OVERSAMPLENR, 90 },
- { 936 * OVERSAMPLENR, 80 },
- { 961 * OVERSAMPLENR, 70 },
- { 979 * OVERSAMPLENR, 60 },
- { 993 * OVERSAMPLENR, 50 },
- { 1003 * OVERSAMPLENR, 40 },
- { 1010 * OVERSAMPLENR, 30 },
- { 1015 * OVERSAMPLENR, 20 },
- { 1018 * OVERSAMPLENR, 10 },
- { 1020 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 60) || (THERMISTORHEATER_1 == 60) || (THERMISTORHEATER_2 == 60) || (THERMISTORHEATER_3 == 60) || (THERMISTORBED == 60) // Maker's Tool Works Kapton Bed Thermistor
- // ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=3950
- // r0: 100000
- // t0: 25
- // r1: 0 (parallel with rTherm)
- // r2: 4700 (series with rTherm)
- // beta: 3950
- // min adc: 1 at 0.0048828125 V
- // max adc: 1023 at 4.9951171875 V
- const short temptable_60[][2] PROGMEM = {
- { 51 * OVERSAMPLENR, 272 },
- { 61 * OVERSAMPLENR, 258 },
- { 71 * OVERSAMPLENR, 247 },
- { 81 * OVERSAMPLENR, 237 },
- { 91 * OVERSAMPLENR, 229 },
- { 101 * OVERSAMPLENR, 221 },
- { 131 * OVERSAMPLENR, 204 },
- { 161 * OVERSAMPLENR, 190 },
- { 191 * OVERSAMPLENR, 179 },
- { 231 * OVERSAMPLENR, 167 },
- { 271 * OVERSAMPLENR, 157 },
- { 311 * OVERSAMPLENR, 148 },
- { 351 * OVERSAMPLENR, 140 },
- { 381 * OVERSAMPLENR, 135 },
- { 411 * OVERSAMPLENR, 130 },
- { 441 * OVERSAMPLENR, 125 },
- { 451 * OVERSAMPLENR, 123 },
- { 461 * OVERSAMPLENR, 122 },
- { 471 * OVERSAMPLENR, 120 },
- { 481 * OVERSAMPLENR, 119 },
- { 491 * OVERSAMPLENR, 117 },
- { 501 * OVERSAMPLENR, 116 },
- { 511 * OVERSAMPLENR, 114 },
- { 521 * OVERSAMPLENR, 113 },
- { 531 * OVERSAMPLENR, 111 },
- { 541 * OVERSAMPLENR, 110 },
- { 551 * OVERSAMPLENR, 108 },
- { 561 * OVERSAMPLENR, 107 },
- { 571 * OVERSAMPLENR, 105 },
- { 581 * OVERSAMPLENR, 104 },
- { 591 * OVERSAMPLENR, 102 },
- { 601 * OVERSAMPLENR, 101 },
- { 611 * OVERSAMPLENR, 100 },
- { 621 * OVERSAMPLENR, 98 },
- { 631 * OVERSAMPLENR, 97 },
- { 641 * OVERSAMPLENR, 95 },
- { 651 * OVERSAMPLENR, 94 },
- { 661 * OVERSAMPLENR, 92 },
- { 671 * OVERSAMPLENR, 91 },
- { 681 * OVERSAMPLENR, 90 },
- { 691 * OVERSAMPLENR, 88 },
- { 701 * OVERSAMPLENR, 87 },
- { 711 * OVERSAMPLENR, 85 },
- { 721 * OVERSAMPLENR, 84 },
- { 731 * OVERSAMPLENR, 82 },
- { 741 * OVERSAMPLENR, 81 },
- { 751 * OVERSAMPLENR, 79 },
- { 761 * OVERSAMPLENR, 77 },
- { 771 * OVERSAMPLENR, 76 },
- { 781 * OVERSAMPLENR, 74 },
- { 791 * OVERSAMPLENR, 72 },
- { 801 * OVERSAMPLENR, 71 },
- { 811 * OVERSAMPLENR, 69 },
- { 821 * OVERSAMPLENR, 67 },
- { 831 * OVERSAMPLENR, 65 },
- { 841 * OVERSAMPLENR, 63 },
- { 851 * OVERSAMPLENR, 62 },
- { 861 * OVERSAMPLENR, 60 },
- { 871 * OVERSAMPLENR, 57 },
- { 881 * OVERSAMPLENR, 55 },
- { 891 * OVERSAMPLENR, 53 },
- { 901 * OVERSAMPLENR, 51 },
- { 911 * OVERSAMPLENR, 48 },
- { 921 * OVERSAMPLENR, 45 },
- { 931 * OVERSAMPLENR, 42 },
- { 941 * OVERSAMPLENR, 39 },
- { 951 * OVERSAMPLENR, 36 },
- { 961 * OVERSAMPLENR, 32 },
- { 981 * OVERSAMPLENR, 23 },
- { 991 * OVERSAMPLENR, 17 },
- { 1001 * OVERSAMPLENR, 9 },
- { 1008 * OVERSAMPLENR, 0 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 12) || (THERMISTORHEATER_1 == 12) || (THERMISTORHEATER_2 == 12) || (THERMISTORHEATER_3 == 12) || (THERMISTORBED == 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
- { 211 * OVERSAMPLENR, 140 },
- { 233 * OVERSAMPLENR, 135 },
- { 261 * OVERSAMPLENR, 130 },
- { 290 * OVERSAMPLENR, 125 },
- { 328 * OVERSAMPLENR, 120 },
- { 362 * OVERSAMPLENR, 115 },
- { 406 * OVERSAMPLENR, 110 },
- { 446 * OVERSAMPLENR, 105 },
- { 496 * OVERSAMPLENR, 100 },
- { 539 * OVERSAMPLENR, 95 },
- { 585 * OVERSAMPLENR, 90 },
- { 629 * OVERSAMPLENR, 85 },
- { 675 * OVERSAMPLENR, 80 },
- { 718 * OVERSAMPLENR, 75 },
- { 758 * OVERSAMPLENR, 70 },
- { 793 * OVERSAMPLENR, 65 },
- { 822 * OVERSAMPLENR, 60 },
- { 841 * OVERSAMPLENR, 55 },
- { 875 * OVERSAMPLENR, 50 },
- { 899 * OVERSAMPLENR, 45 },
- { 926 * OVERSAMPLENR, 40 },
- { 946 * OVERSAMPLENR, 35 },
- { 962 * OVERSAMPLENR, 30 },
- { 977 * OVERSAMPLENR, 25 },
- { 987 * OVERSAMPLENR, 20 },
- { 995 * OVERSAMPLENR, 15 },
- { 1001 * OVERSAMPLENR, 10 },
- { 1010 * OVERSAMPLENR, 0 },
- { 1023 * OVERSAMPLENR, -40 }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 70) || (THERMISTORHEATER_1 == 70) || (THERMISTORHEATER_2 == 70) || (THERMISTORHEATER_3 == 70) || (THERMISTORBED == 70) // bqh2 stock thermistor
- const short temptable_70[][2] PROGMEM = {
- { 22 * OVERSAMPLENR, 300 },
- { 24 * OVERSAMPLENR, 295 },
- { 25 * OVERSAMPLENR, 290 },
- { 27 * OVERSAMPLENR, 285 },
- { 29 * OVERSAMPLENR, 280 },
- { 32 * OVERSAMPLENR, 275 },
- { 34 * OVERSAMPLENR, 270 },
- { 37 * OVERSAMPLENR, 265 },
- { 40 * OVERSAMPLENR, 260 },
- { 43 * OVERSAMPLENR, 255 },
- { 46 * OVERSAMPLENR, 250 },
- { 50 * OVERSAMPLENR, 245 },
- { 54 * OVERSAMPLENR, 240 },
- { 59 * OVERSAMPLENR, 235 },
- { 64 * OVERSAMPLENR, 230 },
- { 70 * OVERSAMPLENR, 225 },
- { 76 * OVERSAMPLENR, 220 },
- { 83 * OVERSAMPLENR, 215 },
- { 90 * OVERSAMPLENR, 210 },
- { 99 * OVERSAMPLENR, 205 },
- { 108 * OVERSAMPLENR, 200 },
- { 118 * OVERSAMPLENR, 195 },
- { 129 * OVERSAMPLENR, 190 },
- { 141 * OVERSAMPLENR, 185 },
- { 154 * OVERSAMPLENR, 180 },
- { 169 * OVERSAMPLENR, 175 },
- { 185 * OVERSAMPLENR, 170 },
- { 203 * OVERSAMPLENR, 165 },
- { 222 * OVERSAMPLENR, 160 },
- { 243 * OVERSAMPLENR, 155 },
- { 266 * OVERSAMPLENR, 150 },
- { 290 * OVERSAMPLENR, 145 },
- { 317 * OVERSAMPLENR, 140 },
- { 346 * OVERSAMPLENR, 135 },
- { 376 * OVERSAMPLENR, 130 },
- { 408 * OVERSAMPLENR, 125 },
- { 442 * OVERSAMPLENR, 120 },
- { 477 * OVERSAMPLENR, 115 },
- { 513 * OVERSAMPLENR, 110 },
- { 551 * OVERSAMPLENR, 105 },
- { 588 * OVERSAMPLENR, 100 },
- { 626 * OVERSAMPLENR, 95 },
- { 663 * OVERSAMPLENR, 90 },
- { 699 * OVERSAMPLENR, 85 },
- { 735 * OVERSAMPLENR, 80 },
- { 768 * OVERSAMPLENR, 75 },
- { 800 * OVERSAMPLENR, 70 },
- { 829 * OVERSAMPLENR, 65 },
- { 856 * OVERSAMPLENR, 60 },
- { 881 * OVERSAMPLENR, 55 },
- { 903 * OVERSAMPLENR, 50 },
- { 922 * OVERSAMPLENR, 45 },
- { 939 * OVERSAMPLENR, 40 },
- { 954 * OVERSAMPLENR, 35 },
- { 966 * OVERSAMPLENR, 30 },
- { 977 * OVERSAMPLENR, 25 },
- { 986 * OVERSAMPLENR, 20 },
- { 994 * OVERSAMPLENR, 15 },
- { 1000 * OVERSAMPLENR, 10 },
- { 1005 * OVERSAMPLENR, 5 },
- { 1009 * OVERSAMPLENR, 0 } // safety
- };
- #endif
-
- // Pt1000 and Pt100 handling
- //
- // Rt=R0*(1+a*T+b*T*T) [for T>0]
- // a=3.9083E-3, b=-5.775E-7
-
- #define PtA 3.9083E-3
- #define PtB -5.775E-7
- #define PtRt(T,R0) ((R0)*(1.0+(PtA)*(T)+(PtB)*(T)*(T)))
- #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
- const short temptable_110[][2] PROGMEM = {
- // only few values are needed as the curve is very flat
- PtLine( 0, 100, 1000)
- PtLine( 50, 100, 1000)
- PtLine(100, 100, 1000)
- PtLine(150, 100, 1000)
- PtLine(200, 100, 1000)
- PtLine(250, 100, 1000)
- PtLine(300, 100, 1000)
- };
- #endif
- #if (THERMISTORHEATER_0 == 147) || (THERMISTORHEATER_1 == 147) || (THERMISTORHEATER_2 == 147) || (THERMISTORHEATER_3 == 147) || (THERMISTORBED == 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)
- PtLine( 50, 100, 4700)
- PtLine(100, 100, 4700)
- PtLine(150, 100, 4700)
- PtLine(200, 100, 4700)
- PtLine(250, 100, 4700)
- PtLine(300, 100, 4700)
- };
- #endif
- #if (THERMISTORHEATER_0 == 1010) || (THERMISTORHEATER_1 == 1010) || (THERMISTORHEATER_2 == 1010) || (THERMISTORHEATER_3 == 1010) || (THERMISTORBED == 1010) // Pt1000 with 1k0 pullup
- const short temptable_1010[][2] PROGMEM = {
- PtLine( 0, 1000, 1000)
- PtLine( 25, 1000, 1000)
- PtLine( 50, 1000, 1000)
- PtLine( 75, 1000, 1000)
- PtLine(100, 1000, 1000)
- PtLine(125, 1000, 1000)
- PtLine(150, 1000, 1000)
- PtLine(175, 1000, 1000)
- PtLine(200, 1000, 1000)
- PtLine(225, 1000, 1000)
- PtLine(250, 1000, 1000)
- PtLine(275, 1000, 1000)
- PtLine(300, 1000, 1000)
- };
- #endif
- #if (THERMISTORHEATER_0 == 1047) || (THERMISTORHEATER_1 == 1047) || (THERMISTORHEATER_2 == 1047) || (THERMISTORHEATER_3 == 1047) || (THERMISTORBED == 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)
- PtLine( 50, 1000, 4700)
- PtLine(100, 1000, 4700)
- PtLine(150, 1000, 4700)
- PtLine(200, 1000, 4700)
- PtLine(250, 1000, 4700)
- PtLine(300, 1000, 4700)
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 999) || (THERMISTORHEATER_1 == 999) || (THERMISTORHEATER_2 == 999) || (THERMISTORHEATER_3 == 999) || (THERMISTORBED == 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
- #endif
- const short temptable_999[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE },
- { 1023 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE }
- };
- #endif
-
- #if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 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
- #endif
- const short temptable_998[][2] PROGMEM = {
- { 1 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE },
- { 1023 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE }
- };
- #endif
-
-
- #define _TT_NAME(_N) temptable_ ## _N
- #define TT_NAME(_N) _TT_NAME(_N)
-
- #ifdef THERMISTORHEATER_0
- #define HEATER_0_TEMPTABLE TT_NAME(THERMISTORHEATER_0)
- #define HEATER_0_TEMPTABLE_LEN COUNT(HEATER_0_TEMPTABLE)
- #else
- #ifdef HEATER_0_USES_THERMISTOR
- #error "No heater 0 thermistor table specified"
- #else // HEATER_0_USES_THERMISTOR
- #define HEATER_0_TEMPTABLE NULL
- #define HEATER_0_TEMPTABLE_LEN 0
- #endif // HEATER_0_USES_THERMISTOR
- #endif
-
- // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
- #ifndef HEATER_0_RAW_HI_TEMP
- #ifdef HEATER_0_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
- #define HEATER_0_RAW_HI_TEMP 0
- #define HEATER_0_RAW_LO_TEMP 16383
- #else // In case of an thermocouple the highest temperature results in the highest ADC value
- #define HEATER_0_RAW_HI_TEMP 16383
- #define HEATER_0_RAW_LO_TEMP 0
- #endif
- #endif
-
- #ifdef THERMISTORHEATER_1
- #define HEATER_1_TEMPTABLE TT_NAME(THERMISTORHEATER_1)
- #define HEATER_1_TEMPTABLE_LEN COUNT(HEATER_1_TEMPTABLE)
- #else
- #ifdef HEATER_1_USES_THERMISTOR
- #error "No heater 1 thermistor table specified"
- #else // HEATER_1_USES_THERMISTOR
- #define HEATER_1_TEMPTABLE NULL
- #define HEATER_1_TEMPTABLE_LEN 0
- #endif // HEATER_1_USES_THERMISTOR
- #endif
-
- // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
- #ifndef HEATER_1_RAW_HI_TEMP
- #ifdef HEATER_1_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
- #define HEATER_1_RAW_HI_TEMP 0
- #define HEATER_1_RAW_LO_TEMP 16383
- #else // In case of an thermocouple the highest temperature results in the highest ADC value
- #define HEATER_1_RAW_HI_TEMP 16383
- #define HEATER_1_RAW_LO_TEMP 0
- #endif
- #endif
-
- #ifdef THERMISTORHEATER_2
- #define HEATER_2_TEMPTABLE TT_NAME(THERMISTORHEATER_2)
- #define HEATER_2_TEMPTABLE_LEN COUNT(HEATER_2_TEMPTABLE)
- #else
- #ifdef HEATER_2_USES_THERMISTOR
- #error "No heater 2 thermistor table specified"
- #else // HEATER_2_USES_THERMISTOR
- #define HEATER_2_TEMPTABLE NULL
- #define HEATER_2_TEMPTABLE_LEN 0
- #endif // HEATER_2_USES_THERMISTOR
- #endif
-
- // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
- #ifndef HEATER_2_RAW_HI_TEMP
- #ifdef HEATER_2_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
- #define HEATER_2_RAW_HI_TEMP 0
- #define HEATER_2_RAW_LO_TEMP 16383
- #else // In case of an thermocouple the highest temperature results in the highest ADC value
- #define HEATER_2_RAW_HI_TEMP 16383
- #define HEATER_2_RAW_LO_TEMP 0
- #endif
- #endif
-
- #ifdef THERMISTORHEATER_3
- #define HEATER_3_TEMPTABLE TT_NAME(THERMISTORHEATER_3)
- #define HEATER_3_TEMPTABLE_LEN COUNT(HEATER_3_TEMPTABLE)
- #else
- #ifdef HEATER_3_USES_THERMISTOR
- #error "No heater 3 thermistor table specified"
- #else // HEATER_3_USES_THERMISTOR
- #define HEATER_3_TEMPTABLE NULL
- #define HEATER_3_TEMPTABLE_LEN 0
- #endif // HEATER_3_USES_THERMISTOR
- #endif
-
- // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
- #ifndef HEATER_3_RAW_HI_TEMP
- #ifdef HEATER_3_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
- #define HEATER_3_RAW_HI_TEMP 0
- #define HEATER_3_RAW_LO_TEMP 16383
- #else // In case of an thermocouple the highest temperature results in the highest ADC value
- #define HEATER_3_RAW_HI_TEMP 16383
- #define HEATER_3_RAW_LO_TEMP 0
- #endif
- #endif
-
- #ifdef THERMISTORBED
- #define BEDTEMPTABLE TT_NAME(THERMISTORBED)
- #define BEDTEMPTABLE_LEN COUNT(BEDTEMPTABLE)
- #else
- #ifdef BED_USES_THERMISTOR
- #error "No bed thermistor table specified"
- #endif // BED_USES_THERMISTOR
- #endif
-
- // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
- #ifndef HEATER_BED_RAW_HI_TEMP
- #ifdef BED_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
- #define HEATER_BED_RAW_HI_TEMP 0
- #define HEATER_BED_RAW_LO_TEMP 16383
- #else // In case of an thermocouple the highest temperature results in the highest ADC value
- #define HEATER_BED_RAW_HI_TEMP 16383
- #define HEATER_BED_RAW_LO_TEMP 0
- #endif
- #endif
-
- #endif // THERMISTORTABLES_H_
|