Термистор NTC 10k

Резисторы, транзисторы, конденсаторы, микросборки, чип компоненты ...
Вопросы согласования управляющих модулей с периферией.

Термистор NTC 10k

Сообщение Joel1988 » 02 фев 2013, 21:36

Итак, приобрел я парочку термисторов вот таких http://www.ebay.com/itm/10K-1-NTC-2-met ... 1c2f5ff601
с надеждой подключить их к ардуине. Сначала не задумался о преобразовании его сопротивления в градусы. А когда подключил понял что там не линейное изменение сопротивления. Полез искать как подключать термисторы. Нашел прример, как нужно, с 10к термистором. Поставил 10кОм подтягивающий резистор, скопипастил кода кусок с преобразованием значения с термистора в градусы
Код: Выделить всё
double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 1000));
Temp = 1 / (0.0014762284 + (0.00018817994 * Temp) + (0.00000038493403 * Temp * Temp * Temp));
Temp = Temp - 273.15;            // Convert Kelvin to Celcius
return Temp;
}

иии... не сходится температура на градусов 9, точно не помню. Понял что коэффициенты то не те какие надо. Нашел калькулятор расчета коэффициентов http://www.capgo.com/Resources/Temperat ... rCalc.html
Подставлял значения с PDFки ибеевской http://coldtears.lin3.siteonlinetest.co ... 10kNTC.pdf
Все равно температура не та.

Подскажите как правильно рассчитать эти самые коэффициенты Стейнхарт-Харта, или может есть какой-нибудь по-лучше калькулятор для этого?
Joel1988
 
Сообщения: 8
Зарегистрирован: 15 дек 2012, 14:38

Re: Термистор NTC 10k

Сообщение CyberLab » 02 фев 2013, 21:42

Если нужна точность, то нужно сделать таблицу из нескольких замеров, минимальная температура, максимальная температура и три точки между минимумом и максимумом
Потом рассчитать коэффициент и только потом с этим коэффициентом делать расчет в коде
Аватара пользователя
CyberLab
 
Сообщения: 319
Зарегистрирован: 02 фев 2013, 12:50
Откуда: Москва

Re: Термистор NTC 10k

Сообщение setar » 03 фев 2013, 01:19

в прошивке 3D принтера (любой) работа с термистром идет через таблицу.

Код: Выделить всё
#define OVERSAMPLENR 16

#if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 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

в принципе от туда же можете код выдрать работающий с температурой
смотреть здесь: https://github.com/ErikZalm/Marlin/blob ... _v1/Marlin
в частности https://github.com/ErikZalm/Marlin/blob ... rature.cpp
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко


Вернуться в Электроника, электротехника

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 9