Термометры — полезный прибор, который давно используется для измерения температуры. В этом мини-проекте мы покажем вам, как сделать цифровой термометр на основе Arduino для отображения текущей температуры окружающей среды на ЖК-дисплее 16×2 в режиме реального времени. Его можно использовать в домах, офисах, на предприятиях и т.д. для измерения температуры.
Мы можем разделить этот проект термометра на основе Arduino на три части: первая часть измеряет температуру с помощью датчика температуры LM35 , вторая часть преобразует значение температуры в подходящие числа по шкале Цельсия, с помощью Arduino, а последняя часть отображает температуру на ЖК-дисплее 16×2. Блок-схема будет показана ниже.
В этом мини-проекте для управления всем процессом используется Arduino Uno. Датчик температуры LM35 используется для измерения температуры окружающей среды, который дает 1 градус температуры на каждые 10 мВ изменения на его выходном контакте. Вы можете легко проверить это с помощью вольтметра, подключив «Vcc» к контакту 1 и «землю» к контакту 3, а выходное напряжение к контакту 2 датчика LM35. Например, если выходное напряжение датчика LM35 составляет 250 мВ, это означает, что температура составляет около 25 градусов Цельсия.
Arduino считывает выходное напряжение датчика температуры с помощью аналогового контакта A0 и выполняет расчет для преобразования этого аналогового значения в цифровое значение текущей температуры. После расчетов, Arduino отправляет данные по температуре на ЖК-дисплей 16×2, используя соответствующие команды ЖК-дисплея. До этого мы разбирали другой датчик температуры DHT11, и также подключали его к плате Ардуино.
Компоненты схемы
Ардуино
В этом мини-проекте мы использовали Arduino для управления всем процессом системы. Arduino — это плата, которая работает на контроллере ATmega AVR. Arduino — это аппаратная платформа с открытым исходным кодом, очень полезная для разработки проектов.
Заказать плату Arduino Uno можно здесь.
Датчик температуры LM35
LM35 представляет собой 3-контактный датчик температуры, который выдает 1 градус Цельсия на каждые 10 мВ. Этот датчик может измерять температуру до 150 градусов по Цельсию. Первый контакт датчика lm35 — Vcc, второй — выход, а третий — земля. LM35 — самый простой датчик температуры, который легко интегрируется с любым микроконтроллером.
Пин № | Функция | Обозначение |
1 | Напряжение питания; 5В (от +35В до -2В) | Vcc |
2 | Выходное напряжение (от +6В до -1В) | Output |
3 | Земля (0 В) | Ground |
LM35 может быть легко подключен к Raspberry Pi, NodeMCU, микроконтроллеру PIC и т.д. для измерения температуры, а также может использоваться автономно с операционным усилителем для индикации уровней температуры.
Заказать датчик температуры LM35 можно здесь.
Жидкокристаллический дисплей
ЖК-дисплей 16×2 широко используется в проектах встроенных систем, потому что он дешев, легко доступен, имеет небольшой размер и прост в интерфейсе. 16×2 имеет две строки и 16 символов, что означает, что он состоит из 16 блоков 5×8 точек. 16-контактов для соединений, в которых 8 бит данных от D0 до D7 и 3 бита управления, а именно RS, RW и EN. Остальные контакты используются для питания, регулировки яркости и подсветки.
Заказать ЖК-дисплей можно здесь.
Источник питания
Плата Arduino уже имеет встроенный блок питания. Здесь нам нужно только подключить к плате блок питания на 9 вольт или 12 вольт.
Принципиальная схема и объяснение
Схема цифрового термометра с использованием Arduino и датчика температуры LM35 показана на схеме выше. Аккуратно выполните соединения, как показано на данной схеме. Здесь ЖК-дисплей 16×2 напрямую подключен к Arduino в 4-битном режиме. Выводы данных ЖК-дисплея, а именно RS, EN, D4, D5, D6, D7, подключены к цифровым контактам Arduino 7, 6, 5, 4, 3, 2. Датчик температуры LM35 подключен к аналоговому выводу A0 Arduino, который генерирует 1 градус Цельсия при изменении выходного сигнала на каждые 10 мВ.
Объяснение кода программы
Код для измерения температуры с использованием LM35 прост и приведен в конце этой статьи. Сначала мы включаем библиотеку для ЖК-дисплея, а затем определяем данные и управляющие контакты для ЖК-дисплея и датчика температуры.
1 2 3 4 |
#include<LiquidCrystal.h> LiquidCrystal lcd(7,6,5,4,3,2); #define sensor A0 |
После получения аналогового значения, на аналоговом выводе мы считываем это значение с помощью функции аналогового чтения и сохраняем это значение в переменной. А затем преобразуем значение в температуру, применяя приведенную ниже формулу.
аналоговое_значение = аналоговое чтение (аналоговый_вывод); температура = аналоговое_значение*коэффициент*100 , где коэффициент = 5/1023 аналоговое_значение = выход датчика температуры |
1 2 3 4 |
/*--------- Температура -------*/ float reading=analogRead(sensor); float temperature=reading*(5.0/1023.0)*100; delay(10); |
Здесь символ степени создается с использованием пользовательского метода символов.
1 2 3 4 5 6 7 8 9 10 11 |
byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; |
Вот таким образом, мы можем собрать простой цифровой термометр для измерения температуры с помощью платы Arduino. Полный код и видео представлены ниже.
Полный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
/*----------- Цифровой термометр на Arduino -------------*/ #include<LiquidCrystal.h> LiquidCrystal lcd(7,6,5,4,3,2); #define sensor A0 byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; void setup() { lcd.begin(16,2); lcd.createChar(1, degree); lcd.setCursor(0,0); lcd.print(" Digital "); lcd.setCursor(0,1); lcd.print(" Thermometer "); delay(4000); lcd.clear(); lcd.print(" Circuit Digest "); delay(4000); lcd.clear(); } void loop() { /*--------- Температура -------*/ float reading=analogRead(sensor); float temperature=reading*(5.0/1023.0)*100; delay(10); /*------ Отображение результата ------*/ lcd.clear(); lcd.setCursor(2,0); lcd.print("Temperature"); lcd.setCursor(4,1); lcd.print(temperature); lcd.write(1); lcd.print("C"); delay(1000); } |
С Уважением, МониторБанк