Продолжаем изучать модули из набора «37 in 1 Sensors Kit for Arduino» и сегодня рассмотрим модуль KY-013 – аналоговый датчик температуры. Разберем, как его подключить к Arduino, выведем показание температуры в монитор порта. А также рассмотрим, с какими проблемами можно столкнуться при работе с данным модулем.
Неправильная маркировка и расположение выходов модуля KY-013.
У модуля KY-013 есть несколько вариантов неправильной маркировки выводов подключения.
Первый вариант это перепутанные местами сигнальный вывод (S) и GND. Если при подключении у вас не выводит показания температуры, то у вашего модуля аналогичная проблема. Меняем местами подключения данных контактов.
Второй вариант связан с выводом температуры в неправленом направлении. То есть если вы нагреваете датчик, а температура понижается. Вот что вы увидите в мониторе порта.
В таком случае меняем местами подключения питания 5v и GND. И показания будут выводиться правильно.
Описание модуля KY-013 – аналоговый датчик температуры.
Модуль аналогового датчика температуры KY-013 для Arduino измеряет температуру окружающей среды за счет изменения сопротивления термистора. Данный модуль можно подключать к различным микроконтроллерам (Arduino, ESP32, ESP8266, stm32 и пр.) для измерения температуры окружающей среды.
Технические характеристики KY-013:
- Рабочее напряжение -5В;
- Диапазон измерения температуры - от -55 до 125 ° C;
- Точность измерения - ± 0,5 ° С;
Модуль аналогового датчика температуры KY-013 состоит из термистора NTC и резистора 10 кОм. Сопротивление термистора зависит от температуры окружающей среды, мы воспользуемся уравнением Стейнхарта – Харта, чтобы получить точную температуру термистора.
Схема подключения KY-013 аналогового датчика температуры к Arduino UNO.
Схема подключения KY-013 аналогового датчика температуры к Arduino NANO.
Подключаем линию питания платы (посередине) и землю (-) к 5 В и GND соответственно. Затем сигнал (S) к контакту A0 на Arduino.
Внимание! Не забывайте про вероятность, что на некоторых платах нанесена неправильная разметка контактов, о чем я рассказывал в начале урока.
Пример кода Arduino для получения значений температуры с датчика KY-013.
В следующем скетче Arduino будет вычисляться температура термистора с использованием уравнения Стейнхарта-Харта. Код вернет температуру в градусах Цельсия.
int ThermistorPin = A0;
int Vo;
float R1 = 10000; // значение R1 на модуле
float logR2, R2, T;
float c1 = 0.001129148, c2 = 0.000234125, c3 = 0.0000000876741; //коэффициенты Штейнхарта-Харта для термистора
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0); //вычислите сопротивление на термисторе
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // температура в Кельвине
T = T - 273.15; //преобразование Кельвина в Цельсия
Serial.print("Temperature: ");
Serial.print(T);
Serial.println(" C");
delay(500);
}
Коэффициенты применимы только к платам с термисторами 10 кОм, некоторые редкие платы имеют термисторы на 100 кОм и требуют других коэффициентов.
Проверяем точность аналогового датчика температуры с помощь модуля KY-001.
Для того чтобы определить точность измерения модуля KY-013 - аналогового датчика температуры, подключим модуль KY-001, который оснащён цифровым датчиком DS18B20. Урок по подключению модуля KY-001 смотрите тут: KY-001 модуль температуры на базе DS18B20. Подключение к Arduino.
Схема подключения модулей KY-001, KY-013 к Arduino UNO.
Схема подключения модулей KY-001, KY-013 к Arduino NANO.
Код Arduino получения показаний с модулей KY-001, KY-013.
#include <OneWire.h>
OneWire ds(2);
int ThermistorPin = A0;
int Vo;
float R1 = 10000; // значение R1 на модуле
float logR2, R2, T;
float c1 = 0.001129148, c2 = 0.000234125, c3 = 0.0000000876741; //коэффициенты Штейнхарта-Харта для термистора
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0); //вычислите сопротивление на термисторе
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // температура в Кельвине
T = T - 273.15; //преобразование Кельвина в Цельсия
byte i;
byte data[12];
byte addr[8];
float celsius;
// поиск датчика
if ( !ds.search(addr)) {
ds.reset_search();
delay(250);
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // измерение температуры
delay(1000);
ds.reset();
ds.select(addr);
ds.write(0xBE); // начало чтения измеренной температуры
//показания температуры из внутренней памяти датчика
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];
// датчик может быть настроен на разную точность, выясняем её
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; // точность 9-разрядов, 93,75 мс
else if (cfg == 0x20) raw = raw & ~3; // точность 10-разрядов, 187,5 мс
else if (cfg == 0x40) raw = raw & ~1; // точность 11-разрядов, 375 мс
// преобразование показаний в градусы Цельсия
celsius = (float)raw / 16.0;
Serial.print("KY-013 = ");
Serial.print(T);
Serial.println(" C");
Serial.print("KY-001 = ");
Serial.print(celsius);
Serial.println(" C");
Serial.println("------");
delay(500);
}
В данном скетче считываем показания температуры с двух модулей KY-001, KY-013 и выводим полученные значения в монитор порта.
Как видим из показаний, температура с модуля KY-013 больше почти на 1 градус цельсия, чем с модуля KY-001. Хотя производитель гарантирует точность измерения ± 0,5 ° С.
Вывод по модулю KY-013.
Вывод про модуль KY-013 - аналоговый датчик температуры можно сделать следующий. Использовать его можно в проектах не требовательных к точности измерений температуры, с возможными отклонениями в показаниях ± 1 ° С. Это связано с значительной погрешностью измерения данного модуля.
Понравился Урок KY-013 – модуль аналогового датчика температуры? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
|
Пример кода Arduino для получения значений температуры с датчика KY-013.ino | 1 Kb | 790 |
Скачать
Вы можете скачать файл.
|
|
Код Arduino получения показаний с модулей KY-001, KY-013.ino | 2 Kb | 732 |
Скачать
Вы можете скачать файл.
|
Комментарии