|
|
|
/**
|
|
|
|
* 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_
|