Аналоговый датчик температуры. Модуль KY-013 для Arduino
Обзор и попытка подключить аналоговый датчик температуры KY-013 (Analog Temperature Sensor Module KY-013), который входит в набор 37 датчиков и модулей для ардуино.
Подключение модуля KY-013 к Ардуино
Первой проблемой стало подключение ky-013 к Arduino. В начале я подключил его по всем правилам: маркировкой на датчики “ - ” подключил к земле (GND), “ S ” к A0, а центральный пин к 5 вольтам. Далее загрузил на ардуино код (скетч) который можно найти в описании товара у продавца:
#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; // Кельвин -> Цельсий
return Temp;
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print(Thermister(analogRead(0))); //получаем показания с A0
Serial.println(" C");
delay(500);
}
Включил монитор порта, пошли какие-то циферки, которые никак не реагировали на нагрев или охлаждение датчика.
Методом научного тыка выяснил, что маркировка на модуле нанесена неправильно – перепутаны “-” и “S” местами. Подключил “ - ” к аналоговому пину A0, “S” к земле, центральный – к 5 вольтам (тут претензий нет).
Теперь датчик стал реагировать. Но при этом выдавал совершенно не верную температуру и в добавок при нагревании показания температуры падали.
PTC-термистор
Далее опущу мои мытарства и перейду непосредственно к предварительным выводам:Выше указанный код не подходит к температурному датчику (терморезистру), расположенному на модуле ky-013, так как в нем (коде) применяется Уравнение Стейнхарта-Харта. Цитата из википедии: “Уравнение Стейнхарта-Харта — математическая модель, описывающая сопротивление полупроводниковых терморезисторов с отрицательным температурным коэффициентом электрического сопротивления в зависимости от температуры”. То есть это уравнение применимо только к тем терморезисторам у который при повышении температуры падает сопротивление (NTC-термисторы, от слов «Negative Temperature Coefficient»).
А у нашего подопытного наоборот: при повышении температуры растёт и сопротивление (PTC-термисторы, от слов «Positive Temperature Coefficient»).
Пример кода, иллюстрирующего рост сопротивления с ростом температуры:
void setup() {
Serial.begin(9600);
}
void loop() {
double U = analogRead(A0);
double R = (10230000/U) - 10000;
Serial.print("R = ");
Serial.print(R);
Serial.print(" U = ");
Serial.println(U);
delay(500);
}
R – сопротивление терморезистора, U – напряжение попадающие через модуль на аналоговый вход A0. Подогрейте терморезистор и увидите, как возрастает сопротивление.
Вывод
Использовать модуль KY-013 (аналоговый датчик температуры) как термометр проблематично. Но если вам нужно, к примеру, включить вентилятор при определённой температуре и выключить при другой, то это вполне реализуемо. Просто нужно выяснить какое напряжение подаётся на аналоговый вход при нужной вам температуре…Где купить
Banggood.com:37 в 1 набор модулей для Ардуино: http://bgd.by/27soby
Aliexpress.com:
37 в 1 набор модулей для Ардуино: http://ali.pub/1arpsm