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

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

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

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

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

barmaley2m@yandex.ru

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

//Значения из даташита
#define RT0 10000   // Ом
#define B 3977      // K
//--------------------------------------
#define VCC 5.0    //Напр-е питания
#define R 10000    //R=10 КОм

//переменные
float RT, VR, ln, TX, T0, VRT;

void setup() {
  Serial.begin(9600);
  T0 = 25 + 273.15;                 //Температура T0 из даташита, преобразуем из цельсиев в кельвины
}

void loop() {
  VRT = analogRead(A0);             //Считываем аналоговое значение VRT
  VRT = (VCC / 1023.00) * VRT;      //Преобразуем в напряжение
  VR = VCC - VRT;
  RT = VRT / (VR / R);              //Сопротивление RT

  ln = log(RT / RT0);
  TX = (1 / ((ln / B) + (1 / T0))); //Температура с термистора

  TX = TX - 273.15;                 //Преобразуем в цельсии

  Serial.print("Temperature:");
  Serial.print("\t");
  Serial.print(TX);
  Serial.print("C\t\t");
  Serial.print(TX + 273.15);        //Преобразуем в кельвины
  Serial.print("K\t\t");
  Serial.print((TX * 1.8) + 32);    //Преобразуем в фаренгейты
  Serial.println("F");
  delay(1000);

}

 

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 ком.

//Значения из даташита
#define RT0 10000   // Ом
#define B 3977      // K
//--------------------------------------
#define VCC 5.0    //Напр-е питания
#define R 10000    //R=10 КОм
//--------------------------------------
#define ROP 10000  // Ом, опорный резистор в аналогичном делителе

//переменные
float RT, VR, ln, TX, T0, VRT, VRO, RO;

void setup() {
  Serial.begin(9600);
  T0 = 25 + 273.15;                 //Температура T0 из даташита, преобразуем из цельсиев в кельвины
}

void loop() {
  VRT = analogRead(A0);             //Считываем аналоговое значение VRT
  VRO = analogRead(A1);             //Считываем опорные показатели

  VRO = (VCC / 1023.00) * VRO;      //Преобразуем в напряжение
  VR = VCC - VRO;
  RO = VRO / (VR / R);              //Сопротивление RO

  VRT = (VCC / 1023.00) * VRT;      //Преобразуем в напряжение
  VR = VCC - VRT;
  RT = VRT / (VR / R);              //Сопротивление RT

  RT= (RT*RO)/ROP;                  //Корректировка по опорному резистору

  ln = log(RT / RT0);
  TX = (1 / ((ln / B) + (1 / T0))); //Температура с термистора

  TX = TX - 273.15;                 //Преобразуем в цельсии

  Serial.print("Temperature:");
  Serial.print("\t");
  Serial.print(TX);
  Serial.print("C\t\t");
  Serial.print(TX + 273.15);        //Преобразуем в кельвины
  Serial.print("K\t\t");
  Serial.print((TX * 1.8) + 32);    //Преобразуем в фаренгейты
  Serial.println("F");
  delay(1000);
}

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

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

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

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

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

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

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