Проект 12: Датчик температуры
Описание
Термистор (NTC) — широко используемый датчик температуры, сопротивление которого уменьшается с повышением температуры. Используя схему делителя напряжения с известным резистором, мы можем измерить изменение напряжения и вычислить температуру с помощью уравнения Штейнхарта-Харта.
Цель этого проекта — создать систему мониторинга температуры с использованием платы разработки UNO R3 (ch340) и термистора NTC-MF52AT 10K.
Аппаратное обеспечение
Плата разработки UNO R3 (ch340) x1
Термистор NTC-MF52AT 10K x1
Резистор 10K x1
Макетная плата x1
Соединительные провода
Принцип работы
Термистор с отрицательным температурным коэффициентом (NTC) — это резистор, сопротивление которого уменьшается с повышением температуры. Для измерения этого изменения с помощью Arduino мы используем схему делителя напряжения. Мы подключаем термистор NTC последовательно с фиксированным резистором 10K.
Аналоговый пин Arduino считывает напряжение на соединении между термистором и резистором 10K. По мере изменения температуры сопротивление термистора меняется, что, в свою очередь, изменяет напряжение, считываемое аналоговым пином.
Для преобразования этого значения напряжения в температуру в градусах Цельсия мы используем уравнение Штейнхарта-Харта, которое моделирует сопротивление полупроводника при различных температурах.
Схема подключения
Подключите один вывод термистора к 5V.
Подключите другой вывод термистора к аналоговому пину A0.
Подключите резистор 10K от аналогового пина A0 к GND.

Пример кода
/*
Electronics Learning Starter Kit for Arduino
Project 12
Temperature Sensor
Edit By Keyes
*/
int ThermistorPin = A0;
int Vo;
float R1 = 10000; // Fixed resistor value 10K
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07; // Steinhart-Hart coefficients
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
// Calculate resistance of the thermistor
R2 = R1 * (1023.0 / (float)Vo - 1.0);
// Calculate temperature using Steinhart-Hart equation
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T = T - 273.15; // Convert Kelvin to Celsius
Serial.print("Temperature: ");
Serial.print(T);
Serial.println(" C");
delay(1000);
}
Объяснение кода
Вычисление делителя напряжения:
R2 = R1 * (1023.0 / (float)Vo - 1.0);
Эта формула вычисляет текущее сопротивление термистора NTC на основе аналогового значения (0-1023).
Уравнение Штейнхарта-Харта:
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T = T - 273.15;
Эти строки применяют уравнение Штейнхарта-Харта для преобразования вычисленного сопротивления в температуру в Кельвинах, а затем вычитают 273.15 для перевода в градусы Цельсия.
Результат проекта
После загрузки кода на плату разработки откройте последовательный монитор Arduino IDE и установите скорость передачи данных 9600 бод. Вы увидите, как текущая температура окружающей среды выводится каждую секунду в градусах Цельсия. Попробуйте сжать термистор пальцами, чтобы увидеть повышение температуры!
