Цифровой термометр на Arduino и LCD дисплее 16х2
Цифровой термометр на Arduino и LCD дисплее 16х2
Исходное описание этого урока взято с сайта garagelab.com и находится по здесьЭтот урок показывает интересный способ считывания значений температуры с помощью схемы на основе Arduino и отображения ее на экране LCD дисплея размером 16x2 символов. В качестве температурного датчика в схеме используется микросхема LM35DZ.
Для этого урока понадобятся следующие компоненты:
- 1 плата Arduino (любая плата, совместимая с Arduino)
- 1 дисплей LCD 16x2
- 1 потенциометр с сопротивлением 10 КОм
- 1 Датчик температуры LM35
- Провода-перемычки для соединения
- 1 Макетная плата для монтажа без пайки
Очень удобен для этого и других уроков будет KIT22434P Стартовый набор для Arduino
Датчик LM35, применяемый в схеме измеряет температуру окружающей среды и преобразует ее в электрическое напряжение, пропорциональное этой температуре. В нашей схеме мы присоединяем выход датчика Vo к аналоговому порту Arduino A0, который преобразует это напряжение с число с плавающей точкой (float) - числовое значение тьемпературы, передаваемое затем на индикатор.
Потенциометр 10 КОм регулирует контрастность изображения дисплея.
Давайте соберем электрическую схему, изображенную на нашем рисунке, которая состоит из платы Arduino и других компонентов.
И затем запустим среду разработки Arduino IDE, в которой введем следующую программу:
#include <LiquidCrystal.h> // IПодключение библиотеки для работы с LCD display
#define sensor 0 // Присваиваем имя “sensor” выврлу Arduino A0
int Vin; // в этой переменной сохраняется значение входного напряжения на входе Arduino
float Temperature; // В этой переменной хранится рассчитанное значение текущей температуры
float TF; // Значение температуры, преобразованное из Цельсия ºC в Фаренгейт ºF (в нашей программе не используется, но может быть полезно для дальнейшей модификации)
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
/* Данная функция лроежеляет номера портов Arduino, которые будут управлять работой LCD дисплея */
void setup()
{
lcd.begin(16, 2); // Arduino настраивается на конфигурацию дисплея 16x2 символов
lcd.print("Temperature: "); // Вывод строки заголовка на экран дисплея
}
void loop()
{
Vin = analogRead (sensor); /* Arduino измеряет напряжение на входе порта датчика и сохраняет его в переменной “Vin” */
Temperature=(500*Vin)/1023; /* Преобразование значения напряжения в температуру и сохранение в переменной
“Temperature” в градусах Цельсия ºC */
// TF = ((9*Temperature)/5)+32; // Преобразование градусов Цельсия ºC в Фаренгейт ºF - закомментировано, в программе не используется
lcd.setCursor(0, 1); // Перевести курсор дисплея в начало второй строки
lcd.print(Temperature); // Выврд на экран значения температуры
lcd.print(" C"); // Вывод символа “C” для обозначения шкалы Цельсия
delay(1000); // Ждать 1 секунду, после чего произвести следующее измерение температуры
}
После окончания ввода загрузите программу в Aduino.
Теперь Ваш проект готов для измерения и отображения температуры.
Уверены, что это доставит Вам удовольствие.
Учтите при этом что датчик LM35DZ измеряет температуру в диапазоне -55ºC ... 150ºC.
А вот как рассчитывается значение измеренной температуры:
В примененном нами датчике на каждый 1ºC значение выходного напряжения увеличивается на 10 мВ в диапазоне от 0 до 5 В. При этом точность оцифровки напряжения датчика - 10 бит (это разрешение аналогового порта Arduino), что составляет 1024 разных значения напряжения, соответствующих разным температурам.
При этом максимальное значение (1023) соответствует напряжению 5 В. Половина этого значения 511 соответствует 2,5 В и т.д.
Для расчета мы должны использовать значение температуры 500ºC, которое соответствует значению 1023 аналогового порта. Это недопустимо высокая температура для работы нашего датчика, но коэффициент преобразования датчика таков, что это максимальное значение мы и должны использовать для расчета текущей температуры.
Итак получаем следующее соотношение:
Temperature ----- Vin
500ºC ----- 1023 (максимальные значения)
Исходя из этого получаем формулу расчета температуры:
Temperature = (500*Vin)/1023, в градусах Цельсия ºC
Если Выхотите преобразовать температуру в Фаренгейты, то получаем следующую формулу:
TF = ((9*Temperature)/5)+32,
А вот примерно так будет выглядеть Ваш проект:
Только температура у Вас будет отображаться в градусах Цельсия