New example board: reprap
[simavr] / examples / board_reprap / marlin / thermistortables.h
1 #ifndef THERMISTORTABLES_H_
2 #define THERMISTORTABLES_H_
3
4 //#include "Marlin.h"
5
6 #define OVERSAMPLENR 16
7
8 #if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1)  || (THERMISTORHEATER_2 == 1) || (THERMISTORBED == 1) //100k bed thermistor
9
10 const short temptable_1[][2] PROGMEM = {
11 {       23*OVERSAMPLENR ,       300     },
12 {       25*OVERSAMPLENR ,       295     },
13 {       27*OVERSAMPLENR ,       290     },
14 {       28*OVERSAMPLENR ,       285     },
15 {       31*OVERSAMPLENR ,       280     },
16 {       33*OVERSAMPLENR ,       275     },
17 {       35*OVERSAMPLENR ,       270     },
18 {       38*OVERSAMPLENR ,       265     },
19 {       41*OVERSAMPLENR ,       260     },
20 {       44*OVERSAMPLENR ,       255     },
21 {       48*OVERSAMPLENR ,       250     },
22 {       52*OVERSAMPLENR ,       245     },
23 {       56*OVERSAMPLENR ,       240     },
24 {       61*OVERSAMPLENR ,       235     },
25 {       66*OVERSAMPLENR ,       230     },
26 {       71*OVERSAMPLENR ,       225     },
27 {       78*OVERSAMPLENR ,       220     },
28 {       84*OVERSAMPLENR ,       215     },
29 {       92*OVERSAMPLENR ,       210     },
30 {       100*OVERSAMPLENR        ,       205     },
31 {       109*OVERSAMPLENR        ,       200     },
32 {       120*OVERSAMPLENR        ,       195     },
33 {       131*OVERSAMPLENR        ,       190     },
34 {       143*OVERSAMPLENR        ,       185     },
35 {       156*OVERSAMPLENR        ,       180     },
36 {       171*OVERSAMPLENR        ,       175     },
37 {       187*OVERSAMPLENR        ,       170     },
38 {       205*OVERSAMPLENR        ,       165     },
39 {       224*OVERSAMPLENR        ,       160     },
40 {       245*OVERSAMPLENR        ,       155     },
41 {       268*OVERSAMPLENR        ,       150     },
42 {       293*OVERSAMPLENR        ,       145     },
43 {       320*OVERSAMPLENR        ,       140     },
44 {       348*OVERSAMPLENR        ,       135     },
45 {       379*OVERSAMPLENR        ,       130     },
46 {       411*OVERSAMPLENR        ,       125     },
47 {       445*OVERSAMPLENR        ,       120     },
48 {       480*OVERSAMPLENR        ,       115     },
49 {       516*OVERSAMPLENR        ,       110     },
50 {       553*OVERSAMPLENR        ,       105     },
51 {       591*OVERSAMPLENR        ,       100     },
52 {       628*OVERSAMPLENR        ,       95      },
53 {       665*OVERSAMPLENR        ,       90      },
54 {       702*OVERSAMPLENR        ,       85      },
55 {       737*OVERSAMPLENR        ,       80      },
56 {       770*OVERSAMPLENR        ,       75      },
57 {       801*OVERSAMPLENR        ,       70      },
58 {       830*OVERSAMPLENR        ,       65      },
59 {       857*OVERSAMPLENR        ,       60      },
60 {       881*OVERSAMPLENR        ,       55      },
61 {       903*OVERSAMPLENR        ,       50      },
62 {       922*OVERSAMPLENR        ,       45      },
63 {       939*OVERSAMPLENR        ,       40      },
64 {       954*OVERSAMPLENR        ,       35      },
65 {       966*OVERSAMPLENR        ,       30      },
66 {       977*OVERSAMPLENR        ,       25      },
67 {       985*OVERSAMPLENR        ,       20      },
68 {       993*OVERSAMPLENR        ,       15      },
69 {       999*OVERSAMPLENR        ,       10      },
70 {       1004*OVERSAMPLENR       ,       5       },
71 {       1008*OVERSAMPLENR       ,       0       } //safety
72 };
73 #endif
74 #if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORBED == 2) //200k bed thermistor
75 const short temptable_2[][2] PROGMEM = {
76    {1*OVERSAMPLENR, 848},
77    {54*OVERSAMPLENR, 275},
78    {107*OVERSAMPLENR, 228},
79    {160*OVERSAMPLENR, 202},
80    {213*OVERSAMPLENR, 185},
81    {266*OVERSAMPLENR, 171},
82    {319*OVERSAMPLENR, 160},
83    {372*OVERSAMPLENR, 150},
84    {425*OVERSAMPLENR, 141},
85    {478*OVERSAMPLENR, 133},
86    {531*OVERSAMPLENR, 125},
87    {584*OVERSAMPLENR, 118},
88    {637*OVERSAMPLENR, 110},
89    {690*OVERSAMPLENR, 103},
90    {743*OVERSAMPLENR, 95},
91    {796*OVERSAMPLENR, 86},
92    {849*OVERSAMPLENR, 77},
93    {902*OVERSAMPLENR, 65},
94    {955*OVERSAMPLENR, 49},
95    {1008*OVERSAMPLENR, 17},
96    {1020*OVERSAMPLENR, 0} //safety
97 };
98
99 #endif
100 #if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORBED == 3) //mendel-parts
101 const short temptable_3[][2] PROGMEM = {
102                 {1*OVERSAMPLENR,864},
103                 {21*OVERSAMPLENR,300},
104                 {25*OVERSAMPLENR,290},
105                 {29*OVERSAMPLENR,280},
106                 {33*OVERSAMPLENR,270},
107                 {39*OVERSAMPLENR,260},
108                 {46*OVERSAMPLENR,250},
109                 {54*OVERSAMPLENR,240},
110                 {64*OVERSAMPLENR,230},
111                 {75*OVERSAMPLENR,220},
112                 {90*OVERSAMPLENR,210},
113                 {107*OVERSAMPLENR,200},
114                 {128*OVERSAMPLENR,190},
115                 {154*OVERSAMPLENR,180},
116                 {184*OVERSAMPLENR,170},
117                 {221*OVERSAMPLENR,160},
118                 {265*OVERSAMPLENR,150},
119                 {316*OVERSAMPLENR,140},
120                 {375*OVERSAMPLENR,130},
121                 {441*OVERSAMPLENR,120},
122                 {513*OVERSAMPLENR,110},
123                 {588*OVERSAMPLENR,100},
124                 {734*OVERSAMPLENR,80},
125                 {856*OVERSAMPLENR,60},
126                 {938*OVERSAMPLENR,40},
127                 {986*OVERSAMPLENR,20},
128                 {1008*OVERSAMPLENR,0},
129                 {1018*OVERSAMPLENR,-20}
130         };
131
132 #endif
133 #if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORBED == 4) //10k thermistor
134 const short temptable_4[][2] PROGMEM = {
135    {1*OVERSAMPLENR, 430},
136    {54*OVERSAMPLENR, 137},
137    {107*OVERSAMPLENR, 107},
138    {160*OVERSAMPLENR, 91},
139    {213*OVERSAMPLENR, 80},
140    {266*OVERSAMPLENR, 71},
141    {319*OVERSAMPLENR, 64},
142    {372*OVERSAMPLENR, 57},
143    {425*OVERSAMPLENR, 51},
144    {478*OVERSAMPLENR, 46},
145    {531*OVERSAMPLENR, 41},
146    {584*OVERSAMPLENR, 35},
147    {637*OVERSAMPLENR, 30},
148    {690*OVERSAMPLENR, 25},
149    {743*OVERSAMPLENR, 20},
150    {796*OVERSAMPLENR, 14},
151    {849*OVERSAMPLENR, 7},
152    {902*OVERSAMPLENR, 0},
153    {955*OVERSAMPLENR, -11},
154    {1008*OVERSAMPLENR, -35}
155 };
156 #endif
157
158 #if (THERMISTORHEATER_0 == 5) || (THERMISTORHEATER_1 == 5) || (THERMISTORHEATER_2 == 5) || (THERMISTORBED == 5) //100k ParCan thermistor (104GT-2)
159 const short temptable_5[][2] PROGMEM = {
160 {1*OVERSAMPLENR, 713},
161 {18*OVERSAMPLENR, 316},
162 {35*OVERSAMPLENR, 266},
163 {52*OVERSAMPLENR, 239},
164 {69*OVERSAMPLENR, 221},
165 {86*OVERSAMPLENR, 208},
166 {103*OVERSAMPLENR, 197},
167 {120*OVERSAMPLENR, 188},
168 {137*OVERSAMPLENR, 181},
169 {154*OVERSAMPLENR, 174},
170 {171*OVERSAMPLENR, 169},
171 {188*OVERSAMPLENR, 163},
172 {205*OVERSAMPLENR, 159},
173 {222*OVERSAMPLENR, 154},
174 {239*OVERSAMPLENR, 150},
175 {256*OVERSAMPLENR, 147},
176 {273*OVERSAMPLENR, 143},
177 {290*OVERSAMPLENR, 140},
178 {307*OVERSAMPLENR, 136},
179 {324*OVERSAMPLENR, 133},
180 {341*OVERSAMPLENR, 130},
181 {358*OVERSAMPLENR, 128},
182 {375*OVERSAMPLENR, 125},
183 {392*OVERSAMPLENR, 122},
184 {409*OVERSAMPLENR, 120},
185 {426*OVERSAMPLENR, 117},
186 {443*OVERSAMPLENR, 115},
187 {460*OVERSAMPLENR, 112},
188 {477*OVERSAMPLENR, 110},
189 {494*OVERSAMPLENR, 108},
190 {511*OVERSAMPLENR, 106},
191 {528*OVERSAMPLENR, 103},
192 {545*OVERSAMPLENR, 101},
193 {562*OVERSAMPLENR, 99},
194 {579*OVERSAMPLENR, 97},
195 {596*OVERSAMPLENR, 95},
196 {613*OVERSAMPLENR, 92},
197 {630*OVERSAMPLENR, 90},
198 {647*OVERSAMPLENR, 88},
199 {664*OVERSAMPLENR, 86},
200 {681*OVERSAMPLENR, 84},
201 {698*OVERSAMPLENR, 81},
202 {715*OVERSAMPLENR, 79},
203 {732*OVERSAMPLENR, 77},
204 {749*OVERSAMPLENR, 75},
205 {766*OVERSAMPLENR, 72},
206 {783*OVERSAMPLENR, 70},
207 {800*OVERSAMPLENR, 67},
208 {817*OVERSAMPLENR, 64},
209 {834*OVERSAMPLENR, 61},
210 {851*OVERSAMPLENR, 58},
211 {868*OVERSAMPLENR, 55},
212 {885*OVERSAMPLENR, 52},
213 {902*OVERSAMPLENR, 48},
214 {919*OVERSAMPLENR, 44},
215 {936*OVERSAMPLENR, 40},
216 {953*OVERSAMPLENR, 34},
217 {970*OVERSAMPLENR, 28},
218 {987*OVERSAMPLENR, 20},
219 {1004*OVERSAMPLENR, 8},
220 {1021*OVERSAMPLENR, 0}
221 };
222 #endif
223
224 #if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor
225 const short temptable_6[][2] PROGMEM = {
226    {28*OVERSAMPLENR, 250},
227    {31*OVERSAMPLENR, 245},
228    {35*OVERSAMPLENR, 240},
229    {39*OVERSAMPLENR, 235},
230    {42*OVERSAMPLENR, 230},
231    {44*OVERSAMPLENR, 225},
232    {49*OVERSAMPLENR, 220},
233    {53*OVERSAMPLENR, 215},
234    {62*OVERSAMPLENR, 210},
235    {73*OVERSAMPLENR, 205},
236    {72*OVERSAMPLENR, 200},
237    {94*OVERSAMPLENR, 190},
238    {102*OVERSAMPLENR, 185},
239    {116*OVERSAMPLENR, 170},
240    {143*OVERSAMPLENR, 160},
241    {183*OVERSAMPLENR, 150},
242    {223*OVERSAMPLENR, 140},
243    {270*OVERSAMPLENR, 130},
244    {318*OVERSAMPLENR, 120},
245    {383*OVERSAMPLENR, 110},
246    {413*OVERSAMPLENR, 105},
247    {439*OVERSAMPLENR, 100},
248    {484*OVERSAMPLENR, 95},
249    {513*OVERSAMPLENR, 90},
250    {607*OVERSAMPLENR, 80},
251    {664*OVERSAMPLENR, 70},
252    {781*OVERSAMPLENR, 60},
253    {810*OVERSAMPLENR, 55},
254    {849*OVERSAMPLENR, 50},
255    {914*OVERSAMPLENR, 45},
256    {914*OVERSAMPLENR, 40},
257    {935*OVERSAMPLENR, 35},
258    {954*OVERSAMPLENR, 30},
259    {970*OVERSAMPLENR, 25},
260    {978*OVERSAMPLENR, 22},
261    {1008*OVERSAMPLENR, 3}
262 };
263 #endif
264
265 #if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01
266 const short temptable_7[][2] PROGMEM = {
267    {46*OVERSAMPLENR, 270},
268    {50*OVERSAMPLENR, 265},
269    {54*OVERSAMPLENR, 260},
270    {58*OVERSAMPLENR, 255},
271    {62*OVERSAMPLENR, 250},
272    {67*OVERSAMPLENR, 245},
273    {72*OVERSAMPLENR, 240},
274    {79*OVERSAMPLENR, 235},
275    {85*OVERSAMPLENR, 230},
276    {91*OVERSAMPLENR, 225},
277    {99*OVERSAMPLENR, 220},
278    {107*OVERSAMPLENR, 215},
279    {116*OVERSAMPLENR, 210},
280    {126*OVERSAMPLENR, 205},
281    {136*OVERSAMPLENR, 200},
282    {149*OVERSAMPLENR, 195},
283    {160*OVERSAMPLENR, 190},
284    {175*OVERSAMPLENR, 185},
285    {191*OVERSAMPLENR, 180},
286    {209*OVERSAMPLENR, 175},
287    {224*OVERSAMPLENR, 170},
288    {246*OVERSAMPLENR, 165},
289    {267*OVERSAMPLENR, 160},
290    {293*OVERSAMPLENR, 155},
291    {316*OVERSAMPLENR, 150},
292    {340*OVERSAMPLENR, 145},
293    {364*OVERSAMPLENR, 140},
294    {396*OVERSAMPLENR, 135},
295    {425*OVERSAMPLENR, 130},
296    {460*OVERSAMPLENR, 125},
297    {489*OVERSAMPLENR, 120},
298    {526*OVERSAMPLENR, 115},
299    {558*OVERSAMPLENR, 110},
300    {591*OVERSAMPLENR, 105},
301    {628*OVERSAMPLENR, 100},
302    {660*OVERSAMPLENR, 95},
303    {696*OVERSAMPLENR, 90},
304    {733*OVERSAMPLENR, 85},
305    {761*OVERSAMPLENR, 80},
306    {794*OVERSAMPLENR, 75},
307    {819*OVERSAMPLENR, 70},
308    {847*OVERSAMPLENR, 65},
309    {870*OVERSAMPLENR, 60},
310    {892*OVERSAMPLENR, 55},
311    {911*OVERSAMPLENR, 50},
312    {929*OVERSAMPLENR, 45},
313    {944*OVERSAMPLENR, 40},
314    {959*OVERSAMPLENR, 35},
315    {971*OVERSAMPLENR, 30},
316    {981*OVERSAMPLENR, 25},
317    {989*OVERSAMPLENR, 20},
318    {994*OVERSAMPLENR, 15},
319    {1001*OVERSAMPLENR, 10},
320    {1005*OVERSAMPLENR, 5}
321 };
322 #endif
323
324 #define _TT_NAME(_N) temptable_ ## _N
325 #define TT_NAME(_N) _TT_NAME(_N)
326
327 #ifdef THERMISTORHEATER_0
328   #define heater_0_temptable TT_NAME(THERMISTORHEATER_0)
329   #define heater_0_temptable_len (sizeof(heater_0_temptable)/sizeof(*heater_0_temptable))
330 #else
331 #ifdef HEATER_0_USES_THERMISTOR
332   #error No heater 0 thermistor table specified
333 #else  // HEATER_0_USES_THERMISTOR
334   #define heater_0_temptable 0
335   #define heater_0_temptable_len 0
336 #endif // HEATER_0_USES_THERMISTOR
337 #endif
338
339 #ifdef THERMISTORHEATER_1
340   #define heater_1_temptable TT_NAME(THERMISTORHEATER_1)
341   #define heater_1_temptable_len (sizeof(heater_1_temptable)/sizeof(*heater_1_temptable))
342 #else
343 #ifdef HEATER_1_USES_THERMISTOR
344   #error No heater 1 thermistor table specified
345 #else  // HEATER_1_USES_THERMISTOR
346   #define heater_1_temptable 0
347   #define heater_1_temptable_len 0
348 #endif // HEATER_1_USES_THERMISTOR
349 #endif
350
351 #ifdef THERMISTORHEATER_2
352   #define heater_2_temptable TT_NAME(THERMISTORHEATER_2)
353   #define heater_2_temptable_len (sizeof(heater_2_temptable)/sizeof(*heater_2_temptable))
354 #else
355 #ifdef HEATER_2_USES_THERMISTOR
356   #error No heater 2 thermistor table specified
357 #else  // HEATER_2_USES_THERMISTOR
358   #define heater_2_temptable 0
359   #define heater_2_temptable_len 0
360 #endif // HEATER_2_USES_THERMISTOR
361 #endif
362
363 #ifdef THERMISTORBED
364   #define bedtemptable TT_NAME(THERMISTORBED)
365   #define bedtemptable_len (sizeof(bedtemptable)/sizeof(*bedtemptable))
366 #else
367 #ifdef BED_USES_THERMISTOR
368   #error No bed thermistor table specified
369 #endif // BED_USES_THERMISTOR
370 #endif
371
372 #endif //THERMISTORTABLES_H_
373