OK. I finally got the thermistor to read within the tolerance of my thermocouple.
This is the process I followed:
1) Attach thermocouple next to thermistor.
2) measure the resistors directly next to the extruder connector (mine were 4.5K). this will be --rp.
3) Disconnect thermistor and measure room temperature resistance with your MM (Check temperature on the thermocouple) and make a note of both then reconnect thermistor (mine were 110.8K and 20C). This will be --r0 and --t0.
4) run the script with no arguments and get a default table which is added to the firmware in thermistortables.h. Make sure you change which table you use in configuration.h to point to it.
This is necessary so that you have fixed settings and adc values that match for the following steps.
5) compile and upload firmware.
6) Using your interface, tell the extruder to heat to 150C and take a note of the actual temperature. Then look up the adc value in the previous table for the setting and take note of that... this will be adc1 and t1.
7) Perform step 4 again at a temperature of 200.. this will be --adc2 and --t2.
8) Generate a new table using the discovered settings and use it to replace the table previously created (compile and upload).
9) start with step 6 and validate, if necessary update again to get a more accurate table.
I ended up running 3 passes from 6 to 9 to get the table below.
Here is my table:
#if (THERMISTORHEATER_0 == 56) || (THERMISTORHEATER_1 == 56) || (THERMISTORHEATER_2 == 56) || (THERMISTORBED == 56)
// SD2 - possible epcos, 100k NTC thermistor. Part Number unknown.
// ./MakeTempTable.py --r0=110800 --t0=20 --rp=4500 --adc1=170 --t1=164 --adc2=60 --t2=220
const short temptable_56[][2] PROGMEM = {
{ 115, 300 }, // r= 32 adc=7.16
{ 127, 295 }, // r= 35 adc=7.95
{ 142, 290 }, // r= 39 adc=8.85
{ 158, 285 }, // r= 44 adc=9.85
{ 176, 280 }, // r= 49 adc=10.98
{ 196, 275 }, // r= 55 adc=12.26
{ 219, 270 }, // r= 61 adc=13.69
{ 245, 265 }, // r= 68 adc=15.31
{ 274, 260 }, // r= 77 adc=17.15
{ 307, 255 }, // r= 86 adc=19.22
{ 345, 250 }, // r= 97 adc=21.56
{ 387, 245 }, // r= 109 adc=24.21
{ 435, 240 }, // r= 123 adc=27.21
{ 490, 235 }, // r= 139 adc=30.61
{ 551, 230 }, // r= 157 adc=34.46
{ 621, 225 }, // r= 178 adc=38.83
{ 701, 220 }, // r= 201 adc=43.79
{ 790, 215 }, // r= 228 adc=49.40
{ 892, 210 }, // r= 259 adc=55.77
{ 1008, 205 }, // r= 295 adc=62.98
{ 1138, 200 }, // r= 336 adc=71.15
{ 1286, 195 }, // r= 384 adc=80.39
{ 1453, 190 }, // r= 438 adc=90.82
{ 1642, 185 }, // r= 502 adc=102.60
{ 1854, 180 }, // r= 575 adc=115.86
{ 2092, 175 }, // r= 659 adc=130.75
{ 2359, 170 }, // r= 758 adc=147.42
{ 2657, 165 }, // r= 872 adc=166.03
{ 2987, 160 }, // r= 1005 adc=186.72
{ 3354, 155 }, // r= 1160 adc=209.60
{ 3756, 150 }, // r= 1340 adc=234.77
{ 4197, 145 }, // r= 1552 adc=262.30
{ 4675, 140 }, // r= 1799 adc=292.18
{ 5190, 135 }, // r= 2089 adc=324.37
{ 5740, 130 }, // r= 2430 adc=358.75
{ 6322, 125 }, // r= 2832 adc=395.11
{ 6931, 120 }, // r= 3305 adc=433.18
{ 7561, 115 }, // r= 3864 adc=472.59
{ 8207, 110 }, // r= 4525 adc=512.91
{ 8859, 105 }, // r= 5309 adc=553.68
{ 9510, 100 }, // r= 6240 adc=594.36
{ 10151, 95 }, // r= 7348 adc=634.44
{ 10775, 90 }, // r= 8669 adc=673.43
{ 11374, 85 }, // r= 10248 adc=710.85
{ 11941, 80 }, // r= 12139 adc=746.32
{ 12472, 75 }, // r= 14408 adc=779.53
{ 12964, 70 }, // r= 17137 adc=810.24
{ 13413, 65 }, // r= 20429 adc=838.33
{ 13820, 60 }, // r= 24407 adc=863.75
{ 14184, 55 }, // r= 29226 adc=886.50
{ 14507, 50 }, // r= 35081 adc=906.69
{ 14791, 45 }, // r= 42212 adc=924.45
{ 15039, 40 }, // r= 50922 adc=939.94
{ 15254, 35 }, // r= 61590 adc=953.34
{ 15438, 30 }, // r= 74694 adc=964.87
{ 15595, 25 }, // r= 90841 adc=974.72
{ 15729, 20 }, // r=110800 adc=983.07
{ 15842, 15 }, // r=135552 adc=990.13
{ 15937, 10 }, // r=166353 adc=996.06
{ 16016, 5 }, // r=204818 adc=1001.01
{ 16082, 0 } // r=253030 adc=1005.12
};
#endif
I found this script on nophead's blog due to the link Ian posted earlier.
The script is located at: https://github.com/nophead/Marlin/blob/ … mpTable.py