Arduino. Подключение датчика температуры DS18B20 и вывод температуры на LCD дисплей 1602

В данной статье мы рассмотрим пример подключения датчика температуры DS18B20 и LCD дисплея к плате Arduino UNO и вывод значений температуры на дисплей в режиме реального времени.

Датчик температуры DS18B20

DS18B20 - это цифровой температурный датчик с интерфейсом 1-Wire от Maxim IC. На выходе мы получаем информацию в Цельсиях с точностью от 9 до 12 бит, от -55 до 125 (+/- 0,5). Каждый датчик имеет уникальный 64-разрядный серийный номер, что позволяет использовать огромное количество датчиков на одной шине данных.

Характеристики DS18B20

  • диапазон измеряемой температуры: −55… 125 °C
  • напряжение питания: от 3 В до 5,5 В
  • точность: ±0,5°C (в пределах −10… 85 °C)
  • потребляемый ток при опросе: 1 мА

Для работы с датчиком можно пользоваться библиотекой OneWhire, но для упрощения работы с датчиком предлагается использовать библиотеку DS18B20, которая существенно упрощает работу с датчиками данного типа.

DS18B20

внешний вид датчика температуры

LCD дисплей 1602

Жидкокристаллический дисплей (Liquid Crystal Display) сокращенно LCD построен на технологии жидких кристаллов. Самый распространенный LCD дисплей на рынке является дисплей LCD 1602A, который может отображать ASCII символа в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей.

Характеристики дисплея 1602:

  • напряжение питания: 5 В
  • размер дисплея: 2.6 дюйма
  • тип дисплея: 2 строки по 16 символов
  • цвет подсветки: синий
  • цвет символов: белый
  • габаритные: 80мм x 35мм x 11мм

В данном примере будем использовать LCD дисплей 1602A оборудованным последовательной шиной I2C. I2C - это последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов. Использует две двунаправленные линии связи (SDA и SCL), применяется для соединения низкоскоростных периферийных компонентов с процессорами и микроконтроллерами.

lcd display 1605

внешний вид платы дисплея

Жидкокристаллический дисплей 1602 с I2C модулем подключается к плате Ардуино всего 4 проводами — 2 провода данных и 2 провода питания. Подключение проводится стандартно для шины I2C:

  • вывод SDA подключается к порту A4;
  • вывод SCL подключается к порту A5;
  • вывод Vcc LCD дисплея осуществляется к разъему +5V платы Arduino UNO;
  • вывод GND дисплея осуществляется к разъему GND платы Arduino UNO;

Схема подключения

Для вывода температуры на LCD дисплей с датчика DS18b20, будем использовать плату Arduino UNO. Собираем схему, которая показана ниже. Для получения стабильных значений с датчика температуры лучше всего подключить резистор номиналом 4,7кОм между выводам 2 и 3 датчика.

schema

схема подключения

Скетч Arduino

В скетче используется две стандартные библиотеки Ардуино это DS18B20 и LiquidCrystal_I2C. Данные библиотеки вы можете найти в менеджере библиотек в меню Arduino IDE (см. Инструменты -> Управлять библиотеками). Так же данные дополнительно выводятся в последовательный порт, эти данные вы можете посмотреть используя стандартный монитор порта Arduino IDE (см. Инструменты -> Монитор порта). Не забудьте установить скорость порта равную 9600 бод/сек.

Пример скетча:

// Подключение библиотек необходимых для работы скетча
#include <DS18B20.h>
#include <LiquidCrystal_I2C.h>     

// Провод данных подключен к контакту 2 на Arduino
#define SENSOR_PIN 2

DS18B20 ds(SENSOR_PIN);
LiquidCrystal_I2C lcd(0x27,16,2); 

void setup(void)
{
  // Старт серийного порта
  Serial.begin(9600);
  // Инициализация lcd    
  lcd.init();                                
  // Включаем подсветку
  lcd.backlight();  
                         
  Serial.println("Start..."); 
}

void loop(void)
{
  if (ds.selectNext()) {
    // Выводим в последовательный порт
    Serial.print(ds.getTempC());
    Serial.println(" C");
    
    // Выводим на lcd дисплей данные
    lcd.setCursor(0, 0);
    lcd.print(ds.getTempC()); 
    lcd.print(" *C");
  }

  // Задержка 1 сек.
  delay(1000);
}

Вывод

Используя lcd 1602 и схему подключения lcd 1602 к Ардуино по I2C вы сможете применять данный LCD дисплей в различных примерах основанных на Arduino. Так же используя датчик температуры вы можете автоматизировать процессы основанные на контролировании температуры.