Стокилоомный термистор NTC 3950 (B57540G0104F000, B57560G1104F, B57560G104F или любой подобный) покажет температуру в градусах Цельсия. Возможно к вам в руки попал стокилоомный термистор, и вы хотите считать с него температуру в Цельсиях с помощью ардуино.
Для этого нужно сделать небольшую схему:
А код скетча примерно такой:
void setup(){
pinMode(A0, INPUT);
Serial.begin(9600);
Serial.println("Start");
}
void loop(){
int v = analogRead(A0);
Serial.print(v);
Serial.print("t");
Serial.print(analog2tempBed(v));
Serial.println();
delay(100);
}
const short temptable_11[][2] PROGMEM = {
{ 832, 65 },
{ 858, 60 },
{ 883, 55 },
{ 904, 50 },
{ 924, 45 },
{ 940, 40 },
{ 955, 35 },
{ 968, 30 },
{ 977, 25 },
{ 987, 20 },
{ 994, 15 },
{ 999, 10 }
};
# define BEDTEMPTABLE_LEN (sizeof(temptable_11)/sizeof(*temptable_11))
#define PGM_RD_W(x) (short)pgm_read_word(&x)
static float analog2tempBed(int raw) {
float celsius = 0;
byte i;
for (i = 1; i < BEDTEMPTABLE_LEN; i++)
{
if (PGM_RD_W(temptable_11[i][0]) > raw)
{
celsius = PGM_RD_W(temptable_11[i - 1][1]) +
(raw - PGM_RD_W(temptable_11[i - 1][0])) *
(float)(PGM_RD_W(temptable_11[i][1]) - PGM_RD_W(temptable_11[i - 1][1])) /
(float)(PGM_RD_W(temptable_11[i][0]) - PGM_RD_W(temptable_11[i - 1][0]));
break;
}
}
// Overflow: Set to last value in the table
if (i == BEDTEMPTABLE_LEN) celsius = PGM_RD_W(temptable_11[i - 1][1]);
return celsius;
}
Не буду скрывать, код я спер из прошивки 3д принтера Обратите внимание на temptable_11 — эту таблицу возможно придется доделать под ваш диапазон температур. Надо прописать соответствие между температурой и данными analogRead(A0). Для этого не стоит разогревать термистор до нужной температуры, просто смотрим его сопротивление по даташиту, втыкаем вместо термистора потенциометр, и смотрим значение на А0. Хотя можно не заморачиваться и использовать эту таблицу для широкого диапазона температур:
{1, 841},
{54, 255},
{107, 209},
{160, 184},
{213, 166},
{266, 153},
{319, 142},
{372, 132},
{425, 124},
{478, 116},
{531, 108},
{584, 101},
{637, 93},
{690, 86},
{743, 78},
{796, 70},
{849, 61},
{902, 50},
{955, 34},
{1008, 3}
Или поискать еще тут эти таблицы: http://reprap.org/wiki/Thermistor/ru
Кстати у термисторов хорошая точность и выдерживает большие температуры)