Сегодня датчики температуры имеют широкое применение в различных встраиваемых системах от «умных» домов до промышленных компьютеризированных комплексов. Но словосочетание «датчик температуры» представляет собой общее понятие, под которым скрываются различные устройства, отличающиеся друг от друга характеристиками, формой исполнения и ценой.
Одним из простых типов датчиков температуры является термистор. Он довольно дешевый по сравнению с другими типами датчиков и прост в использовании, поэтому в основном его выбирают радиолюбители для создания своих проектов. Поэтому в данном материале рассмотрим, что такое термистор, и как его подключить к Arduino.
Итак, Термистор представляет собой особый тип резистора, сопротивление которого зависит от температуры. Есть два противоположных по своему принципу действия типа термисторов: PTC (с положительным температурным коэффициентом), где сопротивление возрастает с повышением температуры, и NTC (с отрицательным температурным коэффициентом), где сопротивление уменьшается при повышении температуры. В данном примере будем работать с NTC-термистором. Для расчета сопротивления термистора можно воспользоваться простой формулой, которая называется уравнением с параметром B (справедливо только для NTC-термистора).
Здесь е является основание натурального логарифма, R0 является сопротивлением терморезистора, измеренное при температуре T0, а B представляет собой постоянный коэффициент, который зависит от характеристик материала, эта константа выражается в Кельвинах, и ее значение указано производителями в технической документации на конкретную модель термистора.
Для расчета температуры нам нужно знать сопротивление RT, а для этого нужно воспользоваться законом Ома. Рассмотрим типовую схему с участием термистора.
Здесь сопротивление термистора найдем как RT = VRT / (VR/R). Вот теперь у нас есть все данные для расчета температуры.
Вот так будет выглядеть схема подключения термистора к Arduino. В ней мы подключим узел соединения резистора и терморезистора к аналоговому входу A0 платы Arduino, чтобы измерять напряжение в этой точке.
Далее приведем скетч, в котором будет определяться температура в цельсиях, кельвинах и фаренгейтах на основе полученного значения с аналогового входа A0 и параметров подключенного термистора.
//Значения из даташита
#define RT0 10000 // Ом
#define B 3977 // K
//--------------------------------------
#define VCC 5 //Напр-е питания
#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 = (5.00 / 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(500);
}
Вот так будет выглядеть вывод данных на экран через последовательный порт.
© digitrode.ru