My Marlin configs for Fabrikator Mini and CTC i3 Pro B
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

thermistortables.h 41KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290
  1. /**
  2. * Marlin 3D Printer Firmware
  3. * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
  4. *
  5. * Based on Sprinter and grbl.
  6. * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
  7. *
  8. * This program is free software: you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation, either version 3 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. *
  21. */
  22. #ifndef THERMISTORTABLES_H_
  23. #define THERMISTORTABLES_H_
  24. #include "Marlin.h"
  25. #include "macros.h"
  26. #define OVERSAMPLENR 16
  27. #define ANY_THERMISTOR_IS(n) (THERMISTORHEATER_0 == n || THERMISTORHEATER_1 == n || THERMISTORHEATER_2 == n || THERMISTORHEATER_3 == n || THERMISTORBED == n)
  28. #if ANY_THERMISTOR_IS(1) // 100k bed thermistor
  29. const short temptable_1[][2] PROGMEM = {
  30. { 23 * OVERSAMPLENR, 300 },
  31. { 25 * OVERSAMPLENR, 295 },
  32. { 27 * OVERSAMPLENR, 290 },
  33. { 28 * OVERSAMPLENR, 285 },
  34. { 31 * OVERSAMPLENR, 280 },
  35. { 33 * OVERSAMPLENR, 275 },
  36. { 35 * OVERSAMPLENR, 270 },
  37. { 38 * OVERSAMPLENR, 265 },
  38. { 41 * OVERSAMPLENR, 260 },
  39. { 44 * OVERSAMPLENR, 255 },
  40. { 48 * OVERSAMPLENR, 250 },
  41. { 52 * OVERSAMPLENR, 245 },
  42. { 56 * OVERSAMPLENR, 240 },
  43. { 61 * OVERSAMPLENR, 235 },
  44. { 66 * OVERSAMPLENR, 230 },
  45. { 71 * OVERSAMPLENR, 225 },
  46. { 78 * OVERSAMPLENR, 220 },
  47. { 84 * OVERSAMPLENR, 215 },
  48. { 92 * OVERSAMPLENR, 210 },
  49. { 100 * OVERSAMPLENR, 205 },
  50. { 109 * OVERSAMPLENR, 200 },
  51. { 120 * OVERSAMPLENR, 195 },
  52. { 131 * OVERSAMPLENR, 190 },
  53. { 143 * OVERSAMPLENR, 185 },
  54. { 156 * OVERSAMPLENR, 180 },
  55. { 171 * OVERSAMPLENR, 175 },
  56. { 187 * OVERSAMPLENR, 170 },
  57. { 205 * OVERSAMPLENR, 165 },
  58. { 224 * OVERSAMPLENR, 160 },
  59. { 245 * OVERSAMPLENR, 155 },
  60. { 268 * OVERSAMPLENR, 150 },
  61. { 293 * OVERSAMPLENR, 145 },
  62. { 320 * OVERSAMPLENR, 140 },
  63. { 348 * OVERSAMPLENR, 135 },
  64. { 379 * OVERSAMPLENR, 130 },
  65. { 411 * OVERSAMPLENR, 125 },
  66. { 445 * OVERSAMPLENR, 120 },
  67. { 480 * OVERSAMPLENR, 115 },
  68. { 516 * OVERSAMPLENR, 110 },
  69. { 553 * OVERSAMPLENR, 105 },
  70. { 591 * OVERSAMPLENR, 100 },
  71. { 628 * OVERSAMPLENR, 95 },
  72. { 665 * OVERSAMPLENR, 90 },
  73. { 702 * OVERSAMPLENR, 85 },
  74. { 737 * OVERSAMPLENR, 80 },
  75. { 770 * OVERSAMPLENR, 75 },
  76. { 801 * OVERSAMPLENR, 70 },
  77. { 830 * OVERSAMPLENR, 65 },
  78. { 857 * OVERSAMPLENR, 60 },
  79. { 881 * OVERSAMPLENR, 55 },
  80. { 903 * OVERSAMPLENR, 50 },
  81. { 922 * OVERSAMPLENR, 45 },
  82. { 939 * OVERSAMPLENR, 40 },
  83. { 954 * OVERSAMPLENR, 35 },
  84. { 966 * OVERSAMPLENR, 30 },
  85. { 977 * OVERSAMPLENR, 25 },
  86. { 985 * OVERSAMPLENR, 20 },
  87. { 993 * OVERSAMPLENR, 15 },
  88. { 999 * OVERSAMPLENR, 10 },
  89. { 1004 * OVERSAMPLENR, 5 },
  90. { 1008 * OVERSAMPLENR, 0 } // safety
  91. };
  92. #endif
  93. #if ANY_THERMISTOR_IS(2) // 200k bed thermistor
  94. // 200k ATC Semitec 204GT-2
  95. // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
  96. // Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
  97. const short temptable_2[][2] PROGMEM = {
  98. { 1 * OVERSAMPLENR, 848 },
  99. { 30 * OVERSAMPLENR, 300 }, // top rating 300C
  100. { 34 * OVERSAMPLENR, 290 },
  101. { 39 * OVERSAMPLENR, 280 },
  102. { 46 * OVERSAMPLENR, 270 },
  103. { 53 * OVERSAMPLENR, 260 },
  104. { 63 * OVERSAMPLENR, 250 },
  105. { 74 * OVERSAMPLENR, 240 },
  106. { 87 * OVERSAMPLENR, 230 },
  107. { 104 * OVERSAMPLENR, 220 },
  108. { 124 * OVERSAMPLENR, 210 },
  109. { 148 * OVERSAMPLENR, 200 },
  110. { 176 * OVERSAMPLENR, 190 },
  111. { 211 * OVERSAMPLENR, 180 },
  112. { 252 * OVERSAMPLENR, 170 },
  113. { 301 * OVERSAMPLENR, 160 },
  114. { 357 * OVERSAMPLENR, 150 },
  115. { 420 * OVERSAMPLENR, 140 },
  116. { 489 * OVERSAMPLENR, 130 },
  117. { 562 * OVERSAMPLENR, 120 },
  118. { 636 * OVERSAMPLENR, 110 },
  119. { 708 * OVERSAMPLENR, 100 },
  120. { 775 * OVERSAMPLENR, 90 },
  121. { 835 * OVERSAMPLENR, 80 },
  122. { 884 * OVERSAMPLENR, 70 },
  123. { 924 * OVERSAMPLENR, 60 },
  124. { 955 * OVERSAMPLENR, 50 },
  125. { 977 * OVERSAMPLENR, 40 },
  126. { 993 * OVERSAMPLENR, 30 },
  127. { 1004 * OVERSAMPLENR, 20 },
  128. { 1012 * OVERSAMPLENR, 10 },
  129. { 1016 * OVERSAMPLENR, 0 }
  130. };
  131. #endif
  132. #if ANY_THERMISTOR_IS(3) // mendel-parts
  133. const short temptable_3[][2] PROGMEM = {
  134. { 1 * OVERSAMPLENR, 864 },
  135. { 21 * OVERSAMPLENR, 300 },
  136. { 25 * OVERSAMPLENR, 290 },
  137. { 29 * OVERSAMPLENR, 280 },
  138. { 33 * OVERSAMPLENR, 270 },
  139. { 39 * OVERSAMPLENR, 260 },
  140. { 46 * OVERSAMPLENR, 250 },
  141. { 54 * OVERSAMPLENR, 240 },
  142. { 64 * OVERSAMPLENR, 230 },
  143. { 75 * OVERSAMPLENR, 220 },
  144. { 90 * OVERSAMPLENR, 210 },
  145. { 107 * OVERSAMPLENR, 200 },
  146. { 128 * OVERSAMPLENR, 190 },
  147. { 154 * OVERSAMPLENR, 180 },
  148. { 184 * OVERSAMPLENR, 170 },
  149. { 221 * OVERSAMPLENR, 160 },
  150. { 265 * OVERSAMPLENR, 150 },
  151. { 316 * OVERSAMPLENR, 140 },
  152. { 375 * OVERSAMPLENR, 130 },
  153. { 441 * OVERSAMPLENR, 120 },
  154. { 513 * OVERSAMPLENR, 110 },
  155. { 588 * OVERSAMPLENR, 100 },
  156. { 734 * OVERSAMPLENR, 80 },
  157. { 856 * OVERSAMPLENR, 60 },
  158. { 938 * OVERSAMPLENR, 40 },
  159. { 986 * OVERSAMPLENR, 20 },
  160. { 1008 * OVERSAMPLENR, 0 },
  161. { 1018 * OVERSAMPLENR, -20 }
  162. };
  163. #endif
  164. #if ANY_THERMISTOR_IS(4) // 10k thermistor
  165. const short temptable_4[][2] PROGMEM = {
  166. { 1 * OVERSAMPLENR, 430 },
  167. { 54 * OVERSAMPLENR, 137 },
  168. { 107 * OVERSAMPLENR, 107 },
  169. { 160 * OVERSAMPLENR, 91 },
  170. { 213 * OVERSAMPLENR, 80 },
  171. { 266 * OVERSAMPLENR, 71 },
  172. { 319 * OVERSAMPLENR, 64 },
  173. { 372 * OVERSAMPLENR, 57 },
  174. { 425 * OVERSAMPLENR, 51 },
  175. { 478 * OVERSAMPLENR, 46 },
  176. { 531 * OVERSAMPLENR, 41 },
  177. { 584 * OVERSAMPLENR, 35 },
  178. { 637 * OVERSAMPLENR, 30 },
  179. { 690 * OVERSAMPLENR, 25 },
  180. { 743 * OVERSAMPLENR, 20 },
  181. { 796 * OVERSAMPLENR, 14 },
  182. { 849 * OVERSAMPLENR, 7 },
  183. { 902 * OVERSAMPLENR, 0 },
  184. { 955 * OVERSAMPLENR, -11 },
  185. { 1008 * OVERSAMPLENR, -35 }
  186. };
  187. #endif
  188. #if ANY_THERMISTOR_IS(5) // 100k ParCan thermistor (104GT-2)
  189. // ATC Semitec 104GT-2 (Used in ParCan)
  190. // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
  191. // Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
  192. const short temptable_5[][2] PROGMEM = {
  193. { 1 * OVERSAMPLENR, 713 },
  194. { 17 * OVERSAMPLENR, 300 }, // top rating 300C
  195. { 20 * OVERSAMPLENR, 290 },
  196. { 23 * OVERSAMPLENR, 280 },
  197. { 27 * OVERSAMPLENR, 270 },
  198. { 31 * OVERSAMPLENR, 260 },
  199. { 37 * OVERSAMPLENR, 250 },
  200. { 43 * OVERSAMPLENR, 240 },
  201. { 51 * OVERSAMPLENR, 230 },
  202. { 61 * OVERSAMPLENR, 220 },
  203. { 73 * OVERSAMPLENR, 210 },
  204. { 87 * OVERSAMPLENR, 200 },
  205. { 106 * OVERSAMPLENR, 190 },
  206. { 128 * OVERSAMPLENR, 180 },
  207. { 155 * OVERSAMPLENR, 170 },
  208. { 189 * OVERSAMPLENR, 160 },
  209. { 230 * OVERSAMPLENR, 150 },
  210. { 278 * OVERSAMPLENR, 140 },
  211. { 336 * OVERSAMPLENR, 130 },
  212. { 402 * OVERSAMPLENR, 120 },
  213. { 476 * OVERSAMPLENR, 110 },
  214. { 554 * OVERSAMPLENR, 100 },
  215. { 635 * OVERSAMPLENR, 90 },
  216. { 713 * OVERSAMPLENR, 80 },
  217. { 784 * OVERSAMPLENR, 70 },
  218. { 846 * OVERSAMPLENR, 60 },
  219. { 897 * OVERSAMPLENR, 50 },
  220. { 937 * OVERSAMPLENR, 40 },
  221. { 966 * OVERSAMPLENR, 30 },
  222. { 986 * OVERSAMPLENR, 20 },
  223. { 1000 * OVERSAMPLENR, 10 },
  224. { 1010 * OVERSAMPLENR, 0 }
  225. };
  226. #endif
  227. #if ANY_THERMISTOR_IS(6) // 100k Epcos thermistor
  228. const short temptable_6[][2] PROGMEM = {
  229. { 1 * OVERSAMPLENR, 350 },
  230. { 28 * OVERSAMPLENR, 250 }, // top rating 250C
  231. { 31 * OVERSAMPLENR, 245 },
  232. { 35 * OVERSAMPLENR, 240 },
  233. { 39 * OVERSAMPLENR, 235 },
  234. { 42 * OVERSAMPLENR, 230 },
  235. { 44 * OVERSAMPLENR, 225 },
  236. { 49 * OVERSAMPLENR, 220 },
  237. { 53 * OVERSAMPLENR, 215 },
  238. { 62 * OVERSAMPLENR, 210 },
  239. { 71 * OVERSAMPLENR, 205 }, // fitted graphically
  240. { 78 * OVERSAMPLENR, 200 }, // fitted graphically
  241. { 94 * OVERSAMPLENR, 190 },
  242. { 102 * OVERSAMPLENR, 185 },
  243. { 116 * OVERSAMPLENR, 170 },
  244. { 143 * OVERSAMPLENR, 160 },
  245. { 183 * OVERSAMPLENR, 150 },
  246. { 223 * OVERSAMPLENR, 140 },
  247. { 270 * OVERSAMPLENR, 130 },
  248. { 318 * OVERSAMPLENR, 120 },
  249. { 383 * OVERSAMPLENR, 110 },
  250. { 413 * OVERSAMPLENR, 105 },
  251. { 439 * OVERSAMPLENR, 100 },
  252. { 484 * OVERSAMPLENR, 95 },
  253. { 513 * OVERSAMPLENR, 90 },
  254. { 607 * OVERSAMPLENR, 80 },
  255. { 664 * OVERSAMPLENR, 70 },
  256. { 781 * OVERSAMPLENR, 60 },
  257. { 810 * OVERSAMPLENR, 55 },
  258. { 849 * OVERSAMPLENR, 50 },
  259. { 914 * OVERSAMPLENR, 45 },
  260. { 914 * OVERSAMPLENR, 40 },
  261. { 935 * OVERSAMPLENR, 35 },
  262. { 954 * OVERSAMPLENR, 30 },
  263. { 970 * OVERSAMPLENR, 25 },
  264. { 978 * OVERSAMPLENR, 22 },
  265. { 1008 * OVERSAMPLENR, 3 },
  266. { 1023 * OVERSAMPLENR, 0 } // to allow internal 0 degrees C
  267. };
  268. #endif
  269. #if ANY_THERMISTOR_IS(7) // 100k Honeywell 135-104LAG-J01
  270. const short temptable_7[][2] PROGMEM = {
  271. { 1 * OVERSAMPLENR, 941 },
  272. { 19 * OVERSAMPLENR, 362 },
  273. { 37 * OVERSAMPLENR, 299 }, // top rating 300C
  274. { 55 * OVERSAMPLENR, 266 },
  275. { 73 * OVERSAMPLENR, 245 },
  276. { 91 * OVERSAMPLENR, 229 },
  277. { 109 * OVERSAMPLENR, 216 },
  278. { 127 * OVERSAMPLENR, 206 },
  279. { 145 * OVERSAMPLENR, 197 },
  280. { 163 * OVERSAMPLENR, 190 },
  281. { 181 * OVERSAMPLENR, 183 },
  282. { 199 * OVERSAMPLENR, 177 },
  283. { 217 * OVERSAMPLENR, 171 },
  284. { 235 * OVERSAMPLENR, 166 },
  285. { 253 * OVERSAMPLENR, 162 },
  286. { 271 * OVERSAMPLENR, 157 },
  287. { 289 * OVERSAMPLENR, 153 },
  288. { 307 * OVERSAMPLENR, 149 },
  289. { 325 * OVERSAMPLENR, 146 },
  290. { 343 * OVERSAMPLENR, 142 },
  291. { 361 * OVERSAMPLENR, 139 },
  292. { 379 * OVERSAMPLENR, 135 },
  293. { 397 * OVERSAMPLENR, 132 },
  294. { 415 * OVERSAMPLENR, 129 },
  295. { 433 * OVERSAMPLENR, 126 },
  296. { 451 * OVERSAMPLENR, 123 },
  297. { 469 * OVERSAMPLENR, 121 },
  298. { 487 * OVERSAMPLENR, 118 },
  299. { 505 * OVERSAMPLENR, 115 },
  300. { 523 * OVERSAMPLENR, 112 },
  301. { 541 * OVERSAMPLENR, 110 },
  302. { 559 * OVERSAMPLENR, 107 },
  303. { 577 * OVERSAMPLENR, 105 },
  304. { 595 * OVERSAMPLENR, 102 },
  305. { 613 * OVERSAMPLENR, 99 },
  306. { 631 * OVERSAMPLENR, 97 },
  307. { 649 * OVERSAMPLENR, 94 },
  308. { 667 * OVERSAMPLENR, 92 },
  309. { 685 * OVERSAMPLENR, 89 },
  310. { 703 * OVERSAMPLENR, 86 },
  311. { 721 * OVERSAMPLENR, 84 },
  312. { 739 * OVERSAMPLENR, 81 },
  313. { 757 * OVERSAMPLENR, 78 },
  314. { 775 * OVERSAMPLENR, 75 },
  315. { 793 * OVERSAMPLENR, 72 },
  316. { 811 * OVERSAMPLENR, 69 },
  317. { 829 * OVERSAMPLENR, 66 },
  318. { 847 * OVERSAMPLENR, 62 },
  319. { 865 * OVERSAMPLENR, 59 },
  320. { 883 * OVERSAMPLENR, 55 },
  321. { 901 * OVERSAMPLENR, 51 },
  322. { 919 * OVERSAMPLENR, 46 },
  323. { 937 * OVERSAMPLENR, 41 },
  324. { 955 * OVERSAMPLENR, 35 },
  325. { 973 * OVERSAMPLENR, 27 },
  326. { 991 * OVERSAMPLENR, 17 },
  327. { 1009 * OVERSAMPLENR, 1 },
  328. { 1023 * OVERSAMPLENR, 0 } // to allow internal 0 degrees C
  329. };
  330. #endif
  331. #if ANY_THERMISTOR_IS(71) // 100k Honeywell 135-104LAF-J01
  332. // R0 = 100000 Ohm
  333. // T0 = 25 °C
  334. // Beta = 3974
  335. // R1 = 0 Ohm
  336. // R2 = 4700 Ohm
  337. const short temptable_71[][2] PROGMEM = {
  338. { 35 * OVERSAMPLENR, 300 },
  339. { 51 * OVERSAMPLENR, 270 },
  340. { 54 * OVERSAMPLENR, 265 },
  341. { 58 * OVERSAMPLENR, 260 },
  342. { 59 * OVERSAMPLENR, 258 },
  343. { 61 * OVERSAMPLENR, 256 },
  344. { 63 * OVERSAMPLENR, 254 },
  345. { 64 * OVERSAMPLENR, 252 },
  346. { 66 * OVERSAMPLENR, 250 },
  347. { 67 * OVERSAMPLENR, 249 },
  348. { 68 * OVERSAMPLENR, 248 },
  349. { 69 * OVERSAMPLENR, 247 },
  350. { 70 * OVERSAMPLENR, 246 },
  351. { 71 * OVERSAMPLENR, 245 },
  352. { 72 * OVERSAMPLENR, 244 },
  353. { 73 * OVERSAMPLENR, 243 },
  354. { 74 * OVERSAMPLENR, 242 },
  355. { 75 * OVERSAMPLENR, 241 },
  356. { 76 * OVERSAMPLENR, 240 },
  357. { 77 * OVERSAMPLENR, 239 },
  358. { 78 * OVERSAMPLENR, 238 },
  359. { 79 * OVERSAMPLENR, 237 },
  360. { 80 * OVERSAMPLENR, 236 },
  361. { 81 * OVERSAMPLENR, 235 },
  362. { 82 * OVERSAMPLENR, 234 },
  363. { 84 * OVERSAMPLENR, 233 },
  364. { 85 * OVERSAMPLENR, 232 },
  365. { 86 * OVERSAMPLENR, 231 },
  366. { 87 * OVERSAMPLENR, 230 },
  367. { 89 * OVERSAMPLENR, 229 },
  368. { 90 * OVERSAMPLENR, 228 },
  369. { 91 * OVERSAMPLENR, 227 },
  370. { 92 * OVERSAMPLENR, 226 },
  371. { 94 * OVERSAMPLENR, 225 },
  372. { 95 * OVERSAMPLENR, 224 },
  373. { 97 * OVERSAMPLENR, 223 },
  374. { 98 * OVERSAMPLENR, 222 },
  375. { 99 * OVERSAMPLENR, 221 },
  376. { 101 * OVERSAMPLENR, 220 },
  377. { 102 * OVERSAMPLENR, 219 },
  378. { 104 * OVERSAMPLENR, 218 },
  379. { 106 * OVERSAMPLENR, 217 },
  380. { 107 * OVERSAMPLENR, 216 },
  381. { 109 * OVERSAMPLENR, 215 },
  382. { 110 * OVERSAMPLENR, 214 },
  383. { 112 * OVERSAMPLENR, 213 },
  384. { 114 * OVERSAMPLENR, 212 },
  385. { 115 * OVERSAMPLENR, 211 },
  386. { 117 * OVERSAMPLENR, 210 },
  387. { 119 * OVERSAMPLENR, 209 },
  388. { 121 * OVERSAMPLENR, 208 },
  389. { 123 * OVERSAMPLENR, 207 },
  390. { 125 * OVERSAMPLENR, 206 },
  391. { 126 * OVERSAMPLENR, 205 },
  392. { 128 * OVERSAMPLENR, 204 },
  393. { 130 * OVERSAMPLENR, 203 },
  394. { 132 * OVERSAMPLENR, 202 },
  395. { 134 * OVERSAMPLENR, 201 },
  396. { 136 * OVERSAMPLENR, 200 },
  397. { 139 * OVERSAMPLENR, 199 },
  398. { 141 * OVERSAMPLENR, 198 },
  399. { 143 * OVERSAMPLENR, 197 },
  400. { 145 * OVERSAMPLENR, 196 },
  401. { 147 * OVERSAMPLENR, 195 },
  402. { 150 * OVERSAMPLENR, 194 },
  403. { 152 * OVERSAMPLENR, 193 },
  404. { 154 * OVERSAMPLENR, 192 },
  405. { 157 * OVERSAMPLENR, 191 },
  406. { 159 * OVERSAMPLENR, 190 },
  407. { 162 * OVERSAMPLENR, 189 },
  408. { 164 * OVERSAMPLENR, 188 },
  409. { 167 * OVERSAMPLENR, 187 },
  410. { 170 * OVERSAMPLENR, 186 },
  411. { 172 * OVERSAMPLENR, 185 },
  412. { 175 * OVERSAMPLENR, 184 },
  413. { 178 * OVERSAMPLENR, 183 },
  414. { 181 * OVERSAMPLENR, 182 },
  415. { 184 * OVERSAMPLENR, 181 },
  416. { 187 * OVERSAMPLENR, 180 },
  417. { 190 * OVERSAMPLENR, 179 },
  418. { 193 * OVERSAMPLENR, 178 },
  419. { 196 * OVERSAMPLENR, 177 },
  420. { 199 * OVERSAMPLENR, 176 },
  421. { 202 * OVERSAMPLENR, 175 },
  422. { 205 * OVERSAMPLENR, 174 },
  423. { 208 * OVERSAMPLENR, 173 },
  424. { 212 * OVERSAMPLENR, 172 },
  425. { 215 * OVERSAMPLENR, 171 },
  426. { 219 * OVERSAMPLENR, 170 },
  427. { 237 * OVERSAMPLENR, 165 },
  428. { 256 * OVERSAMPLENR, 160 },
  429. { 300 * OVERSAMPLENR, 150 },
  430. { 351 * OVERSAMPLENR, 140 },
  431. { 470 * OVERSAMPLENR, 120 },
  432. { 504 * OVERSAMPLENR, 115 },
  433. { 538 * OVERSAMPLENR, 110 },
  434. { 552 * OVERSAMPLENR, 108 },
  435. { 566 * OVERSAMPLENR, 106 },
  436. { 580 * OVERSAMPLENR, 104 },
  437. { 594 * OVERSAMPLENR, 102 },
  438. { 608 * OVERSAMPLENR, 100 },
  439. { 622 * OVERSAMPLENR, 98 },
  440. { 636 * OVERSAMPLENR, 96 },
  441. { 650 * OVERSAMPLENR, 94 },
  442. { 664 * OVERSAMPLENR, 92 },
  443. { 678 * OVERSAMPLENR, 90 },
  444. { 712 * OVERSAMPLENR, 85 },
  445. { 745 * OVERSAMPLENR, 80 },
  446. { 758 * OVERSAMPLENR, 78 },
  447. { 770 * OVERSAMPLENR, 76 },
  448. { 783 * OVERSAMPLENR, 74 },
  449. { 795 * OVERSAMPLENR, 72 },
  450. { 806 * OVERSAMPLENR, 70 },
  451. { 818 * OVERSAMPLENR, 68 },
  452. { 829 * OVERSAMPLENR, 66 },
  453. { 840 * OVERSAMPLENR, 64 },
  454. { 850 * OVERSAMPLENR, 62 },
  455. { 860 * OVERSAMPLENR, 60 },
  456. { 870 * OVERSAMPLENR, 58 },
  457. { 879 * OVERSAMPLENR, 56 },
  458. { 888 * OVERSAMPLENR, 54 },
  459. { 897 * OVERSAMPLENR, 52 },
  460. { 905 * OVERSAMPLENR, 50 },
  461. { 924 * OVERSAMPLENR, 45 },
  462. { 940 * OVERSAMPLENR, 40 },
  463. { 955 * OVERSAMPLENR, 35 },
  464. { 967 * OVERSAMPLENR, 30 },
  465. { 970 * OVERSAMPLENR, 29 },
  466. { 972 * OVERSAMPLENR, 28 },
  467. { 974 * OVERSAMPLENR, 27 },
  468. { 976 * OVERSAMPLENR, 26 },
  469. { 978 * OVERSAMPLENR, 25 },
  470. { 980 * OVERSAMPLENR, 24 },
  471. { 982 * OVERSAMPLENR, 23 },
  472. { 984 * OVERSAMPLENR, 22 },
  473. { 985 * OVERSAMPLENR, 21 },
  474. { 987 * OVERSAMPLENR, 20 },
  475. { 995 * OVERSAMPLENR, 15 },
  476. { 1001 * OVERSAMPLENR, 10 },
  477. { 1006 * OVERSAMPLENR, 5 },
  478. { 1010 * OVERSAMPLENR, 0 }
  479. };
  480. #endif
  481. #if ANY_THERMISTOR_IS(8)
  482. // 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
  483. const short temptable_8[][2] PROGMEM = {
  484. { 1 * OVERSAMPLENR, 704 },
  485. { 54 * OVERSAMPLENR, 216 },
  486. { 107 * OVERSAMPLENR, 175 },
  487. { 160 * OVERSAMPLENR, 152 },
  488. { 213 * OVERSAMPLENR, 137 },
  489. { 266 * OVERSAMPLENR, 125 },
  490. { 319 * OVERSAMPLENR, 115 },
  491. { 372 * OVERSAMPLENR, 106 },
  492. { 425 * OVERSAMPLENR, 99 },
  493. { 478 * OVERSAMPLENR, 91 },
  494. { 531 * OVERSAMPLENR, 85 },
  495. { 584 * OVERSAMPLENR, 78 },
  496. { 637 * OVERSAMPLENR, 71 },
  497. { 690 * OVERSAMPLENR, 65 },
  498. { 743 * OVERSAMPLENR, 58 },
  499. { 796 * OVERSAMPLENR, 50 },
  500. { 849 * OVERSAMPLENR, 42 },
  501. { 902 * OVERSAMPLENR, 31 },
  502. { 955 * OVERSAMPLENR, 17 },
  503. { 1008 * OVERSAMPLENR, 0 }
  504. };
  505. #endif
  506. #if ANY_THERMISTOR_IS(9)
  507. // 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
  508. const short temptable_9[][2] PROGMEM = {
  509. { 1 * OVERSAMPLENR, 936 },
  510. { 36 * OVERSAMPLENR, 300 },
  511. { 71 * OVERSAMPLENR, 246 },
  512. { 106 * OVERSAMPLENR, 218 },
  513. { 141 * OVERSAMPLENR, 199 },
  514. { 176 * OVERSAMPLENR, 185 },
  515. { 211 * OVERSAMPLENR, 173 },
  516. { 246 * OVERSAMPLENR, 163 },
  517. { 281 * OVERSAMPLENR, 155 },
  518. { 316 * OVERSAMPLENR, 147 },
  519. { 351 * OVERSAMPLENR, 140 },
  520. { 386 * OVERSAMPLENR, 134 },
  521. { 421 * OVERSAMPLENR, 128 },
  522. { 456 * OVERSAMPLENR, 122 },
  523. { 491 * OVERSAMPLENR, 117 },
  524. { 526 * OVERSAMPLENR, 112 },
  525. { 561 * OVERSAMPLENR, 107 },
  526. { 596 * OVERSAMPLENR, 102 },
  527. { 631 * OVERSAMPLENR, 97 },
  528. { 666 * OVERSAMPLENR, 92 },
  529. { 701 * OVERSAMPLENR, 87 },
  530. { 736 * OVERSAMPLENR, 81 },
  531. { 771 * OVERSAMPLENR, 76 },
  532. { 806 * OVERSAMPLENR, 70 },
  533. { 841 * OVERSAMPLENR, 63 },
  534. { 876 * OVERSAMPLENR, 56 },
  535. { 911 * OVERSAMPLENR, 48 },
  536. { 946 * OVERSAMPLENR, 38 },
  537. { 981 * OVERSAMPLENR, 23 },
  538. { 1005 * OVERSAMPLENR, 5 },
  539. { 1016 * OVERSAMPLENR, 0 }
  540. };
  541. #endif
  542. #if ANY_THERMISTOR_IS(10)
  543. // 100k RS thermistor 198-961 (4.7k pullup)
  544. const short temptable_10[][2] PROGMEM = {
  545. { 1 * OVERSAMPLENR, 929 },
  546. { 36 * OVERSAMPLENR, 299 },
  547. { 71 * OVERSAMPLENR, 246 },
  548. { 106 * OVERSAMPLENR, 217 },
  549. { 141 * OVERSAMPLENR, 198 },
  550. { 176 * OVERSAMPLENR, 184 },
  551. { 211 * OVERSAMPLENR, 173 },
  552. { 246 * OVERSAMPLENR, 163 },
  553. { 281 * OVERSAMPLENR, 154 },
  554. { 316 * OVERSAMPLENR, 147 },
  555. { 351 * OVERSAMPLENR, 140 },
  556. { 386 * OVERSAMPLENR, 134 },
  557. { 421 * OVERSAMPLENR, 128 },
  558. { 456 * OVERSAMPLENR, 122 },
  559. { 491 * OVERSAMPLENR, 117 },
  560. { 526 * OVERSAMPLENR, 112 },
  561. { 561 * OVERSAMPLENR, 107 },
  562. { 596 * OVERSAMPLENR, 102 },
  563. { 631 * OVERSAMPLENR, 97 },
  564. { 666 * OVERSAMPLENR, 91 },
  565. { 701 * OVERSAMPLENR, 86 },
  566. { 736 * OVERSAMPLENR, 81 },
  567. { 771 * OVERSAMPLENR, 76 },
  568. { 806 * OVERSAMPLENR, 70 },
  569. { 841 * OVERSAMPLENR, 63 },
  570. { 876 * OVERSAMPLENR, 56 },
  571. { 911 * OVERSAMPLENR, 48 },
  572. { 946 * OVERSAMPLENR, 38 },
  573. { 981 * OVERSAMPLENR, 23 },
  574. { 1005 * OVERSAMPLENR, 5 },
  575. { 1016 * OVERSAMPLENR, 0 }
  576. };
  577. #endif
  578. #if ANY_THERMISTOR_IS(11)
  579. // QU-BD silicone bed QWG-104F-3950 thermistor
  580. const short temptable_11[][2] PROGMEM = {
  581. { 1 * OVERSAMPLENR, 938 },
  582. { 31 * OVERSAMPLENR, 314 },
  583. { 41 * OVERSAMPLENR, 290 },
  584. { 51 * OVERSAMPLENR, 272 },
  585. { 61 * OVERSAMPLENR, 258 },
  586. { 71 * OVERSAMPLENR, 247 },
  587. { 81 * OVERSAMPLENR, 237 },
  588. { 91 * OVERSAMPLENR, 229 },
  589. { 101 * OVERSAMPLENR, 221 },
  590. { 111 * OVERSAMPLENR, 215 },
  591. { 121 * OVERSAMPLENR, 209 },
  592. { 131 * OVERSAMPLENR, 204 },
  593. { 141 * OVERSAMPLENR, 199 },
  594. { 151 * OVERSAMPLENR, 195 },
  595. { 161 * OVERSAMPLENR, 190 },
  596. { 171 * OVERSAMPLENR, 187 },
  597. { 181 * OVERSAMPLENR, 183 },
  598. { 191 * OVERSAMPLENR, 179 },
  599. { 201 * OVERSAMPLENR, 176 },
  600. { 221 * OVERSAMPLENR, 170 },
  601. { 241 * OVERSAMPLENR, 165 },
  602. { 261 * OVERSAMPLENR, 160 },
  603. { 281 * OVERSAMPLENR, 155 },
  604. { 301 * OVERSAMPLENR, 150 },
  605. { 331 * OVERSAMPLENR, 144 },
  606. { 361 * OVERSAMPLENR, 139 },
  607. { 391 * OVERSAMPLENR, 133 },
  608. { 421 * OVERSAMPLENR, 128 },
  609. { 451 * OVERSAMPLENR, 123 },
  610. { 491 * OVERSAMPLENR, 117 },
  611. { 531 * OVERSAMPLENR, 111 },
  612. { 571 * OVERSAMPLENR, 105 },
  613. { 611 * OVERSAMPLENR, 100 },
  614. { 641 * OVERSAMPLENR, 95 },
  615. { 681 * OVERSAMPLENR, 90 },
  616. { 711 * OVERSAMPLENR, 85 },
  617. { 751 * OVERSAMPLENR, 79 },
  618. { 791 * OVERSAMPLENR, 72 },
  619. { 811 * OVERSAMPLENR, 69 },
  620. { 831 * OVERSAMPLENR, 65 },
  621. { 871 * OVERSAMPLENR, 57 },
  622. { 881 * OVERSAMPLENR, 55 },
  623. { 901 * OVERSAMPLENR, 51 },
  624. { 921 * OVERSAMPLENR, 45 },
  625. { 941 * OVERSAMPLENR, 39 },
  626. { 971 * OVERSAMPLENR, 28 },
  627. { 981 * OVERSAMPLENR, 23 },
  628. { 991 * OVERSAMPLENR, 17 },
  629. { 1001 * OVERSAMPLENR, 9 },
  630. { 1021 * OVERSAMPLENR, -27 }
  631. };
  632. #endif
  633. #if ANY_THERMISTOR_IS(13)
  634. // Hisens thermistor B25/50 =3950 +/-1%
  635. const short temptable_13[][2] PROGMEM = {
  636. { 20.04 * OVERSAMPLENR, 300 },
  637. { 23.19 * OVERSAMPLENR, 290 },
  638. { 26.71 * OVERSAMPLENR, 280 },
  639. { 31.23 * OVERSAMPLENR, 270 },
  640. { 36.52 * OVERSAMPLENR, 260 },
  641. { 42.75 * OVERSAMPLENR, 250 },
  642. { 50.68 * OVERSAMPLENR, 240 },
  643. { 60.22 * OVERSAMPLENR, 230 },
  644. { 72.03 * OVERSAMPLENR, 220 },
  645. { 86.84 * OVERSAMPLENR, 210 },
  646. { 102.79 * OVERSAMPLENR, 200 },
  647. { 124.46 * OVERSAMPLENR, 190 },
  648. { 151.02 * OVERSAMPLENR, 180 },
  649. { 182.86 * OVERSAMPLENR, 170 },
  650. { 220.72 * OVERSAMPLENR, 160 },
  651. { 316.96 * OVERSAMPLENR, 140 },
  652. { 447.17 * OVERSAMPLENR, 120 },
  653. { 590.61 * OVERSAMPLENR, 100 },
  654. { 737.31 * OVERSAMPLENR, 80 },
  655. { 857.77 * OVERSAMPLENR, 60 },
  656. { 939.52 * OVERSAMPLENR, 40 },
  657. { 986.03 * OVERSAMPLENR, 20 },
  658. { 1008.7 * OVERSAMPLENR, 0 }
  659. };
  660. #endif
  661. #if ANY_THERMISTOR_IS(20) // PT100 with INA826 amp on Ultimaker v2.0 electronics
  662. // The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature.
  663. // This does not match the normal thermistor behaviour so we need to set the following defines
  664. #if (THERMISTORHEATER_0 == 20)
  665. #define HEATER_0_RAW_HI_TEMP 16383
  666. #define HEATER_0_RAW_LO_TEMP 0
  667. #endif
  668. #if (THERMISTORHEATER_1 == 20)
  669. #define HEATER_1_RAW_HI_TEMP 16383
  670. #define HEATER_1_RAW_LO_TEMP 0
  671. #endif
  672. #if (THERMISTORHEATER_2 == 20)
  673. #define HEATER_2_RAW_HI_TEMP 16383
  674. #define HEATER_2_RAW_LO_TEMP 0
  675. #endif
  676. #if (THERMISTORHEATER_3 == 20)
  677. #define HEATER_3_RAW_HI_TEMP 16383
  678. #define HEATER_3_RAW_LO_TEMP 0
  679. #endif
  680. #if (THERMISTORBED == 20)
  681. #define HEATER_BED_RAW_HI_TEMP 16383
  682. #define HEATER_BED_RAW_LO_TEMP 0
  683. #endif
  684. const short temptable_20[][2] PROGMEM = {
  685. { 0 * OVERSAMPLENR, 0 },
  686. { 227 * OVERSAMPLENR, 1 },
  687. { 236 * OVERSAMPLENR, 10 },
  688. { 245 * OVERSAMPLENR, 20 },
  689. { 253 * OVERSAMPLENR, 30 },
  690. { 262 * OVERSAMPLENR, 40 },
  691. { 270 * OVERSAMPLENR, 50 },
  692. { 279 * OVERSAMPLENR, 60 },
  693. { 287 * OVERSAMPLENR, 70 },
  694. { 295 * OVERSAMPLENR, 80 },
  695. { 304 * OVERSAMPLENR, 90 },
  696. { 312 * OVERSAMPLENR, 100 },
  697. { 320 * OVERSAMPLENR, 110 },
  698. { 329 * OVERSAMPLENR, 120 },
  699. { 337 * OVERSAMPLENR, 130 },
  700. { 345 * OVERSAMPLENR, 140 },
  701. { 353 * OVERSAMPLENR, 150 },
  702. { 361 * OVERSAMPLENR, 160 },
  703. { 369 * OVERSAMPLENR, 170 },
  704. { 377 * OVERSAMPLENR, 180 },
  705. { 385 * OVERSAMPLENR, 190 },
  706. { 393 * OVERSAMPLENR, 200 },
  707. { 401 * OVERSAMPLENR, 210 },
  708. { 409 * OVERSAMPLENR, 220 },
  709. { 417 * OVERSAMPLENR, 230 },
  710. { 424 * OVERSAMPLENR, 240 },
  711. { 432 * OVERSAMPLENR, 250 },
  712. { 440 * OVERSAMPLENR, 260 },
  713. { 447 * OVERSAMPLENR, 270 },
  714. { 455 * OVERSAMPLENR, 280 },
  715. { 463 * OVERSAMPLENR, 290 },
  716. { 470 * OVERSAMPLENR, 300 },
  717. { 478 * OVERSAMPLENR, 310 },
  718. { 485 * OVERSAMPLENR, 320 },
  719. { 493 * OVERSAMPLENR, 330 },
  720. { 500 * OVERSAMPLENR, 340 },
  721. { 507 * OVERSAMPLENR, 350 },
  722. { 515 * OVERSAMPLENR, 360 },
  723. { 522 * OVERSAMPLENR, 370 },
  724. { 529 * OVERSAMPLENR, 380 },
  725. { 537 * OVERSAMPLENR, 390 },
  726. { 544 * OVERSAMPLENR, 400 },
  727. { 614 * OVERSAMPLENR, 500 },
  728. { 681 * OVERSAMPLENR, 600 },
  729. { 744 * OVERSAMPLENR, 700 },
  730. { 805 * OVERSAMPLENR, 800 },
  731. { 862 * OVERSAMPLENR, 900 },
  732. { 917 * OVERSAMPLENR, 1000 },
  733. { 968 * OVERSAMPLENR, 1100 }
  734. };
  735. #endif
  736. #if ANY_THERMISTOR_IS(51)
  737. // 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
  738. // Verified by linagee.
  739. // Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance
  740. // Advantage: Twice the resolution and better linearity from 150C to 200C
  741. const short temptable_51[][2] PROGMEM = {
  742. { 1 * OVERSAMPLENR, 350 },
  743. { 190 * OVERSAMPLENR, 250 }, // top rating 250C
  744. { 203 * OVERSAMPLENR, 245 },
  745. { 217 * OVERSAMPLENR, 240 },
  746. { 232 * OVERSAMPLENR, 235 },
  747. { 248 * OVERSAMPLENR, 230 },
  748. { 265 * OVERSAMPLENR, 225 },
  749. { 283 * OVERSAMPLENR, 220 },
  750. { 302 * OVERSAMPLENR, 215 },
  751. { 322 * OVERSAMPLENR, 210 },
  752. { 344 * OVERSAMPLENR, 205 },
  753. { 366 * OVERSAMPLENR, 200 },
  754. { 390 * OVERSAMPLENR, 195 },
  755. { 415 * OVERSAMPLENR, 190 },
  756. { 440 * OVERSAMPLENR, 185 },
  757. { 467 * OVERSAMPLENR, 180 },
  758. { 494 * OVERSAMPLENR, 175 },
  759. { 522 * OVERSAMPLENR, 170 },
  760. { 551 * OVERSAMPLENR, 165 },
  761. { 580 * OVERSAMPLENR, 160 },
  762. { 609 * OVERSAMPLENR, 155 },
  763. { 638 * OVERSAMPLENR, 150 },
  764. { 666 * OVERSAMPLENR, 145 },
  765. { 695 * OVERSAMPLENR, 140 },
  766. { 722 * OVERSAMPLENR, 135 },
  767. { 749 * OVERSAMPLENR, 130 },
  768. { 775 * OVERSAMPLENR, 125 },
  769. { 800 * OVERSAMPLENR, 120 },
  770. { 823 * OVERSAMPLENR, 115 },
  771. { 845 * OVERSAMPLENR, 110 },
  772. { 865 * OVERSAMPLENR, 105 },
  773. { 884 * OVERSAMPLENR, 100 },
  774. { 901 * OVERSAMPLENR, 95 },
  775. { 917 * OVERSAMPLENR, 90 },
  776. { 932 * OVERSAMPLENR, 85 },
  777. { 944 * OVERSAMPLENR, 80 },
  778. { 956 * OVERSAMPLENR, 75 },
  779. { 966 * OVERSAMPLENR, 70 },
  780. { 975 * OVERSAMPLENR, 65 },
  781. { 982 * OVERSAMPLENR, 60 },
  782. { 989 * OVERSAMPLENR, 55 },
  783. { 995 * OVERSAMPLENR, 50 },
  784. { 1000 * OVERSAMPLENR, 45 },
  785. { 1004 * OVERSAMPLENR, 40 },
  786. { 1007 * OVERSAMPLENR, 35 },
  787. { 1010 * OVERSAMPLENR, 30 },
  788. { 1013 * OVERSAMPLENR, 25 },
  789. { 1015 * OVERSAMPLENR, 20 },
  790. { 1017 * OVERSAMPLENR, 15 },
  791. { 1018 * OVERSAMPLENR, 10 },
  792. { 1019 * OVERSAMPLENR, 5 },
  793. { 1020 * OVERSAMPLENR, 0 },
  794. { 1021 * OVERSAMPLENR, -5 }
  795. };
  796. #endif
  797. #if ANY_THERMISTOR_IS(52)
  798. // 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
  799. // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
  800. // Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance
  801. // Advantage: More resolution and better linearity from 150C to 200C
  802. const short temptable_52[][2] PROGMEM = {
  803. { 1 * OVERSAMPLENR, 500 },
  804. { 125 * OVERSAMPLENR, 300 }, // top rating 300C
  805. { 142 * OVERSAMPLENR, 290 },
  806. { 162 * OVERSAMPLENR, 280 },
  807. { 185 * OVERSAMPLENR, 270 },
  808. { 211 * OVERSAMPLENR, 260 },
  809. { 240 * OVERSAMPLENR, 250 },
  810. { 274 * OVERSAMPLENR, 240 },
  811. { 312 * OVERSAMPLENR, 230 },
  812. { 355 * OVERSAMPLENR, 220 },
  813. { 401 * OVERSAMPLENR, 210 },
  814. { 452 * OVERSAMPLENR, 200 },
  815. { 506 * OVERSAMPLENR, 190 },
  816. { 563 * OVERSAMPLENR, 180 },
  817. { 620 * OVERSAMPLENR, 170 },
  818. { 677 * OVERSAMPLENR, 160 },
  819. { 732 * OVERSAMPLENR, 150 },
  820. { 783 * OVERSAMPLENR, 140 },
  821. { 830 * OVERSAMPLENR, 130 },
  822. { 871 * OVERSAMPLENR, 120 },
  823. { 906 * OVERSAMPLENR, 110 },
  824. { 935 * OVERSAMPLENR, 100 },
  825. { 958 * OVERSAMPLENR, 90 },
  826. { 976 * OVERSAMPLENR, 80 },
  827. { 990 * OVERSAMPLENR, 70 },
  828. { 1000 * OVERSAMPLENR, 60 },
  829. { 1008 * OVERSAMPLENR, 50 },
  830. { 1013 * OVERSAMPLENR, 40 },
  831. { 1017 * OVERSAMPLENR, 30 },
  832. { 1019 * OVERSAMPLENR, 20 },
  833. { 1021 * OVERSAMPLENR, 10 },
  834. { 1022 * OVERSAMPLENR, 0 }
  835. };
  836. #endif
  837. #if ANY_THERMISTOR_IS(55)
  838. // 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!)
  839. // Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
  840. // Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance
  841. // Advantage: More resolution and better linearity from 150C to 200C
  842. const short temptable_55[][2] PROGMEM = {
  843. { 1 * OVERSAMPLENR, 500 },
  844. { 76 * OVERSAMPLENR, 300 },
  845. { 87 * OVERSAMPLENR, 290 },
  846. { 100 * OVERSAMPLENR, 280 },
  847. { 114 * OVERSAMPLENR, 270 },
  848. { 131 * OVERSAMPLENR, 260 },
  849. { 152 * OVERSAMPLENR, 250 },
  850. { 175 * OVERSAMPLENR, 240 },
  851. { 202 * OVERSAMPLENR, 230 },
  852. { 234 * OVERSAMPLENR, 220 },
  853. { 271 * OVERSAMPLENR, 210 },
  854. { 312 * OVERSAMPLENR, 200 },
  855. { 359 * OVERSAMPLENR, 190 },
  856. { 411 * OVERSAMPLENR, 180 },
  857. { 467 * OVERSAMPLENR, 170 },
  858. { 527 * OVERSAMPLENR, 160 },
  859. { 590 * OVERSAMPLENR, 150 },
  860. { 652 * OVERSAMPLENR, 140 },
  861. { 713 * OVERSAMPLENR, 130 },
  862. { 770 * OVERSAMPLENR, 120 },
  863. { 822 * OVERSAMPLENR, 110 },
  864. { 867 * OVERSAMPLENR, 100 },
  865. { 905 * OVERSAMPLENR, 90 },
  866. { 936 * OVERSAMPLENR, 80 },
  867. { 961 * OVERSAMPLENR, 70 },
  868. { 979 * OVERSAMPLENR, 60 },
  869. { 993 * OVERSAMPLENR, 50 },
  870. { 1003 * OVERSAMPLENR, 40 },
  871. { 1010 * OVERSAMPLENR, 30 },
  872. { 1015 * OVERSAMPLENR, 20 },
  873. { 1018 * OVERSAMPLENR, 10 },
  874. { 1020 * OVERSAMPLENR, 0 }
  875. };
  876. #endif
  877. #if ANY_THERMISTOR_IS(60) // Maker's Tool Works Kapton Bed Thermistor
  878. // ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=3950
  879. // r0: 100000
  880. // t0: 25
  881. // r1: 0 (parallel with rTherm)
  882. // r2: 4700 (series with rTherm)
  883. // beta: 3950
  884. // min adc: 1 at 0.0048828125 V
  885. // max adc: 1023 at 4.9951171875 V
  886. const short temptable_60[][2] PROGMEM = {
  887. { 51 * OVERSAMPLENR, 272 },
  888. { 61 * OVERSAMPLENR, 258 },
  889. { 71 * OVERSAMPLENR, 247 },
  890. { 81 * OVERSAMPLENR, 237 },
  891. { 91 * OVERSAMPLENR, 229 },
  892. { 101 * OVERSAMPLENR, 221 },
  893. { 131 * OVERSAMPLENR, 204 },
  894. { 161 * OVERSAMPLENR, 190 },
  895. { 191 * OVERSAMPLENR, 179 },
  896. { 231 * OVERSAMPLENR, 167 },
  897. { 271 * OVERSAMPLENR, 157 },
  898. { 311 * OVERSAMPLENR, 148 },
  899. { 351 * OVERSAMPLENR, 140 },
  900. { 381 * OVERSAMPLENR, 135 },
  901. { 411 * OVERSAMPLENR, 130 },
  902. { 441 * OVERSAMPLENR, 125 },
  903. { 451 * OVERSAMPLENR, 123 },
  904. { 461 * OVERSAMPLENR, 122 },
  905. { 471 * OVERSAMPLENR, 120 },
  906. { 481 * OVERSAMPLENR, 119 },
  907. { 491 * OVERSAMPLENR, 117 },
  908. { 501 * OVERSAMPLENR, 116 },
  909. { 511 * OVERSAMPLENR, 114 },
  910. { 521 * OVERSAMPLENR, 113 },
  911. { 531 * OVERSAMPLENR, 111 },
  912. { 541 * OVERSAMPLENR, 110 },
  913. { 551 * OVERSAMPLENR, 108 },
  914. { 561 * OVERSAMPLENR, 107 },
  915. { 571 * OVERSAMPLENR, 105 },
  916. { 581 * OVERSAMPLENR, 104 },
  917. { 591 * OVERSAMPLENR, 102 },
  918. { 601 * OVERSAMPLENR, 101 },
  919. { 611 * OVERSAMPLENR, 100 },
  920. { 621 * OVERSAMPLENR, 98 },
  921. { 631 * OVERSAMPLENR, 97 },
  922. { 641 * OVERSAMPLENR, 95 },
  923. { 651 * OVERSAMPLENR, 94 },
  924. { 661 * OVERSAMPLENR, 92 },
  925. { 671 * OVERSAMPLENR, 91 },
  926. { 681 * OVERSAMPLENR, 90 },
  927. { 691 * OVERSAMPLENR, 88 },
  928. { 701 * OVERSAMPLENR, 87 },
  929. { 711 * OVERSAMPLENR, 85 },
  930. { 721 * OVERSAMPLENR, 84 },
  931. { 731 * OVERSAMPLENR, 82 },
  932. { 741 * OVERSAMPLENR, 81 },
  933. { 751 * OVERSAMPLENR, 79 },
  934. { 761 * OVERSAMPLENR, 77 },
  935. { 771 * OVERSAMPLENR, 76 },
  936. { 781 * OVERSAMPLENR, 74 },
  937. { 791 * OVERSAMPLENR, 72 },
  938. { 801 * OVERSAMPLENR, 71 },
  939. { 811 * OVERSAMPLENR, 69 },
  940. { 821 * OVERSAMPLENR, 67 },
  941. { 831 * OVERSAMPLENR, 65 },
  942. { 841 * OVERSAMPLENR, 63 },
  943. { 851 * OVERSAMPLENR, 62 },
  944. { 861 * OVERSAMPLENR, 60 },
  945. { 871 * OVERSAMPLENR, 57 },
  946. { 881 * OVERSAMPLENR, 55 },
  947. { 891 * OVERSAMPLENR, 53 },
  948. { 901 * OVERSAMPLENR, 51 },
  949. { 911 * OVERSAMPLENR, 48 },
  950. { 921 * OVERSAMPLENR, 45 },
  951. { 931 * OVERSAMPLENR, 42 },
  952. { 941 * OVERSAMPLENR, 39 },
  953. { 951 * OVERSAMPLENR, 36 },
  954. { 961 * OVERSAMPLENR, 32 },
  955. { 981 * OVERSAMPLENR, 23 },
  956. { 991 * OVERSAMPLENR, 17 },
  957. { 1001 * OVERSAMPLENR, 9 },
  958. { 1008 * OVERSAMPLENR, 0 }
  959. };
  960. #endif
  961. #if ANY_THERMISTOR_IS(12)
  962. // 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
  963. const short temptable_12[][2] PROGMEM = {
  964. { 35 * OVERSAMPLENR, 180 }, // top rating 180C
  965. { 211 * OVERSAMPLENR, 140 },
  966. { 233 * OVERSAMPLENR, 135 },
  967. { 261 * OVERSAMPLENR, 130 },
  968. { 290 * OVERSAMPLENR, 125 },
  969. { 328 * OVERSAMPLENR, 120 },
  970. { 362 * OVERSAMPLENR, 115 },
  971. { 406 * OVERSAMPLENR, 110 },
  972. { 446 * OVERSAMPLENR, 105 },
  973. { 496 * OVERSAMPLENR, 100 },
  974. { 539 * OVERSAMPLENR, 95 },
  975. { 585 * OVERSAMPLENR, 90 },
  976. { 629 * OVERSAMPLENR, 85 },
  977. { 675 * OVERSAMPLENR, 80 },
  978. { 718 * OVERSAMPLENR, 75 },
  979. { 758 * OVERSAMPLENR, 70 },
  980. { 793 * OVERSAMPLENR, 65 },
  981. { 822 * OVERSAMPLENR, 60 },
  982. { 841 * OVERSAMPLENR, 55 },
  983. { 875 * OVERSAMPLENR, 50 },
  984. { 899 * OVERSAMPLENR, 45 },
  985. { 926 * OVERSAMPLENR, 40 },
  986. { 946 * OVERSAMPLENR, 35 },
  987. { 962 * OVERSAMPLENR, 30 },
  988. { 977 * OVERSAMPLENR, 25 },
  989. { 987 * OVERSAMPLENR, 20 },
  990. { 995 * OVERSAMPLENR, 15 },
  991. { 1001 * OVERSAMPLENR, 10 },
  992. { 1010 * OVERSAMPLENR, 0 },
  993. { 1023 * OVERSAMPLENR, -40 }
  994. };
  995. #endif
  996. #if ANY_THERMISTOR_IS(70) // bqh2 stock thermistor
  997. const short temptable_70[][2] PROGMEM = {
  998. { 22 * OVERSAMPLENR, 300 },
  999. { 24 * OVERSAMPLENR, 295 },
  1000. { 25 * OVERSAMPLENR, 290 },
  1001. { 27 * OVERSAMPLENR, 285 },
  1002. { 29 * OVERSAMPLENR, 280 },
  1003. { 32 * OVERSAMPLENR, 275 },
  1004. { 34 * OVERSAMPLENR, 270 },
  1005. { 37 * OVERSAMPLENR, 265 },
  1006. { 40 * OVERSAMPLENR, 260 },
  1007. { 43 * OVERSAMPLENR, 255 },
  1008. { 46 * OVERSAMPLENR, 250 },
  1009. { 50 * OVERSAMPLENR, 245 },
  1010. { 54 * OVERSAMPLENR, 240 },
  1011. { 59 * OVERSAMPLENR, 235 },
  1012. { 64 * OVERSAMPLENR, 230 },
  1013. { 70 * OVERSAMPLENR, 225 },
  1014. { 76 * OVERSAMPLENR, 220 },
  1015. { 83 * OVERSAMPLENR, 215 },
  1016. { 90 * OVERSAMPLENR, 210 },
  1017. { 99 * OVERSAMPLENR, 205 },
  1018. { 108 * OVERSAMPLENR, 200 },
  1019. { 118 * OVERSAMPLENR, 195 },
  1020. { 129 * OVERSAMPLENR, 190 },
  1021. { 141 * OVERSAMPLENR, 185 },
  1022. { 154 * OVERSAMPLENR, 180 },
  1023. { 169 * OVERSAMPLENR, 175 },
  1024. { 185 * OVERSAMPLENR, 170 },
  1025. { 203 * OVERSAMPLENR, 165 },
  1026. { 222 * OVERSAMPLENR, 160 },
  1027. { 243 * OVERSAMPLENR, 155 },
  1028. { 266 * OVERSAMPLENR, 150 },
  1029. { 290 * OVERSAMPLENR, 145 },
  1030. { 317 * OVERSAMPLENR, 140 },
  1031. { 346 * OVERSAMPLENR, 135 },
  1032. { 376 * OVERSAMPLENR, 130 },
  1033. { 408 * OVERSAMPLENR, 125 },
  1034. { 442 * OVERSAMPLENR, 120 },
  1035. { 477 * OVERSAMPLENR, 115 },
  1036. { 513 * OVERSAMPLENR, 110 },
  1037. { 551 * OVERSAMPLENR, 105 },
  1038. { 588 * OVERSAMPLENR, 100 },
  1039. { 626 * OVERSAMPLENR, 95 },
  1040. { 663 * OVERSAMPLENR, 90 },
  1041. { 699 * OVERSAMPLENR, 85 },
  1042. { 735 * OVERSAMPLENR, 80 },
  1043. { 768 * OVERSAMPLENR, 75 },
  1044. { 800 * OVERSAMPLENR, 70 },
  1045. { 829 * OVERSAMPLENR, 65 },
  1046. { 856 * OVERSAMPLENR, 60 },
  1047. { 881 * OVERSAMPLENR, 55 },
  1048. { 903 * OVERSAMPLENR, 50 },
  1049. { 922 * OVERSAMPLENR, 45 },
  1050. { 939 * OVERSAMPLENR, 40 },
  1051. { 954 * OVERSAMPLENR, 35 },
  1052. { 966 * OVERSAMPLENR, 30 },
  1053. { 977 * OVERSAMPLENR, 25 },
  1054. { 986 * OVERSAMPLENR, 20 },
  1055. { 994 * OVERSAMPLENR, 15 },
  1056. { 1000 * OVERSAMPLENR, 10 },
  1057. { 1005 * OVERSAMPLENR, 5 },
  1058. { 1009 * OVERSAMPLENR, 0 } // safety
  1059. };
  1060. #endif
  1061. // Pt1000 and Pt100 handling
  1062. //
  1063. // Rt=R0*(1+a*T+b*T*T) [for T>0]
  1064. // a=3.9083E-3, b=-5.775E-7
  1065. #define PtA 3.9083E-3
  1066. #define PtB -5.775E-7
  1067. #define PtRt(T,R0) ((R0)*(1.0+(PtA)*(T)+(PtB)*(T)*(T)))
  1068. #define PtAdVal(T,R0,Rup) (short)(1024/(Rup/PtRt(T,R0)+1))
  1069. #define PtLine(T,R0,Rup) { PtAdVal(T,R0,Rup)*OVERSAMPLENR, T },
  1070. #if ANY_THERMISTOR_IS(110) // Pt100 with 1k0 pullup
  1071. const short temptable_110[][2] PROGMEM = {
  1072. // only few values are needed as the curve is very flat
  1073. PtLine( 0, 100, 1000)
  1074. PtLine( 50, 100, 1000)
  1075. PtLine(100, 100, 1000)
  1076. PtLine(150, 100, 1000)
  1077. PtLine(200, 100, 1000)
  1078. PtLine(250, 100, 1000)
  1079. PtLine(300, 100, 1000)
  1080. };
  1081. #endif
  1082. #if ANY_THERMISTOR_IS(147) // Pt100 with 4k7 pullup
  1083. const short temptable_147[][2] PROGMEM = {
  1084. // only few values are needed as the curve is very flat
  1085. PtLine( 0, 100, 4700)
  1086. PtLine( 50, 100, 4700)
  1087. PtLine(100, 100, 4700)
  1088. PtLine(150, 100, 4700)
  1089. PtLine(200, 100, 4700)
  1090. PtLine(250, 100, 4700)
  1091. PtLine(300, 100, 4700)
  1092. };
  1093. #endif
  1094. #if ANY_THERMISTOR_IS(1010) // Pt1000 with 1k0 pullup
  1095. const short temptable_1010[][2] PROGMEM = {
  1096. PtLine( 0, 1000, 1000)
  1097. PtLine( 25, 1000, 1000)
  1098. PtLine( 50, 1000, 1000)
  1099. PtLine( 75, 1000, 1000)
  1100. PtLine(100, 1000, 1000)
  1101. PtLine(125, 1000, 1000)
  1102. PtLine(150, 1000, 1000)
  1103. PtLine(175, 1000, 1000)
  1104. PtLine(200, 1000, 1000)
  1105. PtLine(225, 1000, 1000)
  1106. PtLine(250, 1000, 1000)
  1107. PtLine(275, 1000, 1000)
  1108. PtLine(300, 1000, 1000)
  1109. };
  1110. #endif
  1111. #if ANY_THERMISTOR_IS(1047) // Pt1000 with 4k7 pullup
  1112. const short temptable_1047[][2] PROGMEM = {
  1113. // only few values are needed as the curve is very flat
  1114. PtLine( 0, 1000, 4700)
  1115. PtLine( 50, 1000, 4700)
  1116. PtLine(100, 1000, 4700)
  1117. PtLine(150, 1000, 4700)
  1118. PtLine(200, 1000, 4700)
  1119. PtLine(250, 1000, 4700)
  1120. PtLine(300, 1000, 4700)
  1121. };
  1122. #endif
  1123. #if ANY_THERMISTOR_IS(999) // User-defined table
  1124. // Dummy Thermistor table.. It will ALWAYS read a fixed value.
  1125. #ifndef DUMMY_THERMISTOR_999_VALUE
  1126. #define DUMMY_THERMISTOR_999_VALUE 25
  1127. #endif
  1128. const short temptable_999[][2] PROGMEM = {
  1129. { 1 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE },
  1130. { 1023 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE }
  1131. };
  1132. #endif
  1133. #if ANY_THERMISTOR_IS(998) // User-defined table
  1134. // Dummy Thermistor table.. It will ALWAYS read a fixed value.
  1135. #ifndef DUMMY_THERMISTOR_998_VALUE
  1136. #define DUMMY_THERMISTOR_998_VALUE 25
  1137. #endif
  1138. const short temptable_998[][2] PROGMEM = {
  1139. { 1 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE },
  1140. { 1023 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE }
  1141. };
  1142. #endif
  1143. #define _TT_NAME(_N) temptable_ ## _N
  1144. #define TT_NAME(_N) _TT_NAME(_N)
  1145. #ifdef THERMISTORHEATER_0
  1146. #define HEATER_0_TEMPTABLE TT_NAME(THERMISTORHEATER_0)
  1147. #define HEATER_0_TEMPTABLE_LEN COUNT(HEATER_0_TEMPTABLE)
  1148. #else
  1149. #ifdef HEATER_0_USES_THERMISTOR
  1150. #error "No heater 0 thermistor table specified"
  1151. #else // HEATER_0_USES_THERMISTOR
  1152. #define HEATER_0_TEMPTABLE NULL
  1153. #define HEATER_0_TEMPTABLE_LEN 0
  1154. #endif // HEATER_0_USES_THERMISTOR
  1155. #endif
  1156. // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
  1157. #ifndef HEATER_0_RAW_HI_TEMP
  1158. #ifdef HEATER_0_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
  1159. #define HEATER_0_RAW_HI_TEMP 0
  1160. #define HEATER_0_RAW_LO_TEMP 16383
  1161. #else // In case of an thermocouple the highest temperature results in the highest ADC value
  1162. #define HEATER_0_RAW_HI_TEMP 16383
  1163. #define HEATER_0_RAW_LO_TEMP 0
  1164. #endif
  1165. #endif
  1166. #ifdef THERMISTORHEATER_1
  1167. #define HEATER_1_TEMPTABLE TT_NAME(THERMISTORHEATER_1)
  1168. #define HEATER_1_TEMPTABLE_LEN COUNT(HEATER_1_TEMPTABLE)
  1169. #else
  1170. #ifdef HEATER_1_USES_THERMISTOR
  1171. #error "No heater 1 thermistor table specified"
  1172. #else // HEATER_1_USES_THERMISTOR
  1173. #define HEATER_1_TEMPTABLE NULL
  1174. #define HEATER_1_TEMPTABLE_LEN 0
  1175. #endif // HEATER_1_USES_THERMISTOR
  1176. #endif
  1177. // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
  1178. #ifndef HEATER_1_RAW_HI_TEMP
  1179. #ifdef HEATER_1_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
  1180. #define HEATER_1_RAW_HI_TEMP 0
  1181. #define HEATER_1_RAW_LO_TEMP 16383
  1182. #else // In case of an thermocouple the highest temperature results in the highest ADC value
  1183. #define HEATER_1_RAW_HI_TEMP 16383
  1184. #define HEATER_1_RAW_LO_TEMP 0
  1185. #endif
  1186. #endif
  1187. #ifdef THERMISTORHEATER_2
  1188. #define HEATER_2_TEMPTABLE TT_NAME(THERMISTORHEATER_2)
  1189. #define HEATER_2_TEMPTABLE_LEN COUNT(HEATER_2_TEMPTABLE)
  1190. #else
  1191. #ifdef HEATER_2_USES_THERMISTOR
  1192. #error "No heater 2 thermistor table specified"
  1193. #else // HEATER_2_USES_THERMISTOR
  1194. #define HEATER_2_TEMPTABLE NULL
  1195. #define HEATER_2_TEMPTABLE_LEN 0
  1196. #endif // HEATER_2_USES_THERMISTOR
  1197. #endif
  1198. // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
  1199. #ifndef HEATER_2_RAW_HI_TEMP
  1200. #ifdef HEATER_2_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
  1201. #define HEATER_2_RAW_HI_TEMP 0
  1202. #define HEATER_2_RAW_LO_TEMP 16383
  1203. #else // In case of an thermocouple the highest temperature results in the highest ADC value
  1204. #define HEATER_2_RAW_HI_TEMP 16383
  1205. #define HEATER_2_RAW_LO_TEMP 0
  1206. #endif
  1207. #endif
  1208. #ifdef THERMISTORHEATER_3
  1209. #define HEATER_3_TEMPTABLE TT_NAME(THERMISTORHEATER_3)
  1210. #define HEATER_3_TEMPTABLE_LEN COUNT(HEATER_3_TEMPTABLE)
  1211. #else
  1212. #ifdef HEATER_3_USES_THERMISTOR
  1213. #error "No heater 3 thermistor table specified"
  1214. #else // HEATER_3_USES_THERMISTOR
  1215. #define HEATER_3_TEMPTABLE NULL
  1216. #define HEATER_3_TEMPTABLE_LEN 0
  1217. #endif // HEATER_3_USES_THERMISTOR
  1218. #endif
  1219. // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
  1220. #ifndef HEATER_3_RAW_HI_TEMP
  1221. #ifdef HEATER_3_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
  1222. #define HEATER_3_RAW_HI_TEMP 0
  1223. #define HEATER_3_RAW_LO_TEMP 16383
  1224. #else // In case of an thermocouple the highest temperature results in the highest ADC value
  1225. #define HEATER_3_RAW_HI_TEMP 16383
  1226. #define HEATER_3_RAW_LO_TEMP 0
  1227. #endif
  1228. #endif
  1229. #ifdef THERMISTORBED
  1230. #define BEDTEMPTABLE TT_NAME(THERMISTORBED)
  1231. #define BEDTEMPTABLE_LEN COUNT(BEDTEMPTABLE)
  1232. #else
  1233. #ifdef BED_USES_THERMISTOR
  1234. #error "No bed thermistor table specified"
  1235. #endif // BED_USES_THERMISTOR
  1236. #endif
  1237. // Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature
  1238. #ifndef HEATER_BED_RAW_HI_TEMP
  1239. #ifdef BED_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value
  1240. #define HEATER_BED_RAW_HI_TEMP 0
  1241. #define HEATER_BED_RAW_LO_TEMP 16383
  1242. #else // In case of an thermocouple the highest temperature results in the highest ADC value
  1243. #define HEATER_BED_RAW_HI_TEMP 16383
  1244. #define HEATER_BED_RAW_LO_TEMP 0
  1245. #endif
  1246. #endif
  1247. #endif // THERMISTORTABLES_H_