Показания температуры с термистора

Bodo
Offline
Зарегистрирован: 26.10.2016

Кодер из меня никакой, поэтому ищу человека который напишет мне правильный скетч за вознаграждение. Табличка с соотношениями сопротивлений к температурам есть в даташите этого термистора.

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

Напишу. Подробности на почту 

barmaley2m@yandex.ru

Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013
01//Значения из даташита
02#define RT0 10000   // Ом
03#define B 3977      // K
04//--------------------------------------
05#define VCC 5.0    //Напр-е питания
06#define R 10000    //R=10 КОм
07 
08//переменные
09float RT, VR, ln, TX, T0, VRT;
10 
11void setup() {
12  Serial.begin(9600);
13  T0 = 25 + 273.15;                 //Температура T0 из даташита, преобразуем из цельсиев в кельвины
14}
15 
16void loop() {
17  VRT = analogRead(A0);             //Считываем аналоговое значение VRT
18  VRT = (VCC / 1023.00) * VRT;      //Преобразуем в напряжение
19  VR = VCC - VRT;
20  RT = VRT / (VR / R);              //Сопротивление RT
21 
22  ln = log(RT / RT0);
23  TX = (1 / ((ln / B) + (1 / T0))); //Температура с термистора
24 
25  TX = TX - 273.15;                 //Преобразуем в цельсии
26 
27  Serial.print("Temperature:");
28  Serial.print("\t");
29  Serial.print(TX);
30  Serial.print("C\t\t");
31  Serial.print(TX + 273.15);        //Преобразуем в кельвины
32  Serial.print("K\t\t");
33  Serial.print((TX * 1.8) + 32);    //Преобразуем в фаренгейты
34  Serial.println("F");
35  delay(1000);
36 
37}

 

Roman1984
Offline
Зарегистрирован: 17.02.2017

Сделаю максимально точно, обращайтесь: petrovskyi.rv@gmail.com

vvadim
Offline
Зарегистрирован: 23.05.2012

а у зверя не точно ?

Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013

там зависимость от напряжения питания.

код не мой, это 15 секунд гугления на тему.

Kunak666
Offline
Зарегистрирован: 10.10.2020

Пишите nemohack@yandex.ru

vvadim
Offline
Зарегистрирован: 23.05.2012

Kunak666 пишет:

Пишите nemohack@yandex.ru

уже два месяца прошло.....

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Для "точности", предлагаю правки в аналогичном стиле :) На канал A1 прицепить делитель из двух прецизионных резисторов 10 ком.

01//Значения из даташита
02#define RT0 10000   // Ом
03#define B 3977      // K
04//--------------------------------------
05#define VCC 5.0    //Напр-е питания
06#define R 10000    //R=10 КОм
07//--------------------------------------
08#define ROP 10000  // Ом, опорный резистор в аналогичном делителе
09 
10//переменные
11float RT, VR, ln, TX, T0, VRT, VRO, RO;
12 
13void setup() {
14  Serial.begin(9600);
15  T0 = 25 + 273.15;                 //Температура T0 из даташита, преобразуем из цельсиев в кельвины
16}
17 
18void loop() {
19  VRT = analogRead(A0);             //Считываем аналоговое значение VRT
20  VRO = analogRead(A1);             //Считываем опорные показатели
21 
22  VRO = (VCC / 1023.00) * VRO;      //Преобразуем в напряжение
23  VR = VCC - VRO;
24  RO = VRO / (VR / R);              //Сопротивление RO
25 
26  VRT = (VCC / 1023.00) * VRT;      //Преобразуем в напряжение
27  VR = VCC - VRT;
28  RT = VRT / (VR / R);              //Сопротивление RT
29 
30  RT= (RT*RO)/ROP;                  //Корректировка по опорному резистору
31 
32  ln = log(RT / RT0);
33  TX = (1 / ((ln / B) + (1 / T0))); //Температура с термистора
34 
35  TX = TX - 273.15;                 //Преобразуем в цельсии
36 
37  Serial.print("Temperature:");
38  Serial.print("\t");
39  Serial.print(TX);
40  Serial.print("C\t\t");
41  Serial.print(TX + 273.15);        //Преобразуем в кельвины
42  Serial.print("K\t\t");
43  Serial.print((TX * 1.8) + 32);    //Преобразуем в фаренгейты
44  Serial.println("F");
45  delay(1000);
46}

Не проверял, мог и накосячить.

Зачем подняли эту некротему ? На дату внимания не обратил :)

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

А смысл мерить  на делителях? Если резисторы строго одинаковые, будет 512 при любом напряжении. Проверил. То есть, напряжение мы не определим. 

Напишите сразу VRO = 512.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну а тогда и от напряжения питания погрешности не будет. О какой погрешности разговор ? Правда в жизни это будет не совсем так, но это тема другого разговора.