Подключение термистора к Arduino

 Термистор – это резистор, сопротивление которого меняется от температуры. Термисторы бывают двух типов: с положительным и отрицательным температурным коэффициентом. У терморезистора с положительным коэффициентом при повышении температуры сопротивление возрастает, а с отрицательным коэффициентом - уменьшается.

 И называют их по разному: термистор, терморезистор и термосопротивление... но это одно и тоже, и внешний вид у них бывает всевозможный, в зависимости от характера их применения.

Подключение термистора к Arduino

 В данном примере мы будем использовать простейший NTC термистор c номинальным сопротивлением 10 кОм который легко приобрести в любом радио магазине. Обозначение его может быть 103 или TTC 103 (обозначение 103 говорит о том данный термистор имеет сопротивление 10 000 Ом = 10 кОм, то есть обозначение '103' = первые 2 цифры это '10' и последняя '3' это 3 нуля, таки образом получается 10 000 Ом или же 10 кОм).

 Схема подключения довольна проста, это простейший резистивный делитель на двух резисторах одинакового номинала, R1 это наш NTC термистор номиналом 10 кОм подключенный к +5v, а R2 это обычный резистор с номиналом 10 кОм подключенный к минусу питания. И со средней точки включения R1 и R2 мы и будем снимать показания на аналоговый вход A0 Arduino (схема включения на первой картинке этой статьи).

Подключение термистора к Arduino

 Ну и собственно код, код очень простой и использует библиотеку math.h которая уже есть в поставляемом софте от Arduino, а так же небольшие вычисления для получения нужных нам значений.

#include <math.h>		// библиотека для выполнения простых математических операций

double Thermister(int RawADC) {
	double Temp;
	Temp = log(((10240000/RawADC) - 10000));
	Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
	Temp = Temp - 273.15;		// Kelvin to Celcius
	//Temp = (Temp * 9.0)/ 5.0 + 32.0;		// 1 способ Convert Celcius to Fahrenheit 
	//Temp = (Temp * 1.8) + 32.0;		// 2 способ Convert Celcius to Fahrenheit
	return Temp;
}

void setup() {
	Serial.begin(9600);		// открывает последовательный порт, на скорости 9600 бит/c
}

void loop() {
	Serial.print("Sensor_1: ");
	Serial.println(float(Thermister(analogRead(0))), 1);		// выводим показание 1 датчика
	//Serial.print("Sensor_2: ");
	//Serial.println(float(Thermister(analogRead(1))), 1);		// выводим показание 2 датчика
	//Serial.println(int(Thermister((analogRead(0))* 1.8) + 32.0));		// выводим показание 1 датчика в фаренгейтах
	delay(1000);		// ждем 1 секунду
}

 Загружаем в Arduino скетч, открываем монитор порта (Ctrl+Shift+M в программе Arduino) и видим температуру, а так же я прижал пальцем немного термистор и температура начала изменятся.

Подключение термистора к Arduino

 Таким образом можно подключить несколько "датчиков" термисторов и контролировать сразу несколько температур ...

 Был проделан эксперимент, термистор был подпаян на 11 метровый гибкий медный кусок кабеля 2х0.75 и сам термистор вынесен на улицу для контроля уличной температуры. Термистор был укутан в несколько слоев термоусадочных трубок для стабилизации изменения температуры ибо показания сильно прыгали когда наш датчик обдувался ветром... да и влага не будет проникать и портить его.

 Схема немного была доработана, были добавлены два электролитических конденсатора для стабилизации показаний с резистивного делителя.

Подключение термистора к Arduino

 Ну и на последок фото с меги к которой подключено 2 термистора, 1 первое показание это улица, а втрое в комнате.

Подключение термистора к Arduino