🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🌡️ Проект: термометр на DS18B20 с выводом на LCD1602

Схема термометра на DS18B20 с выводом на LCD1602

Цифровой датчик DS18B20 измеряет температуру и выводит её на экран LCD1602 через I2C-переходник — без лишних проводов на дисплей, всего два сигнальных пина.

Как это работает

DS18B20 — цифровой датчик температуры с интерфейсом 1-Wire: всего один провод передаёт данные, а не аналоговое напряжение, как у простых терморезисторов. Это значит, что на длинном проводе (например, если датчик вынесен на улицу или в аквариум) сигнал не искажается наводками так, как это происходит с аналоговым сигналом. У каждого датчика DS18B20 есть свой уникальный 64-битный адрес, поэтому теоретически к одному пину Arduino можно подключить сразу несколько датчиков DS18B20 одновременно, опрашивая их по очереди — в этом проекте используется один.

Экран LCD1602 без переходника занимает 6 пинов Arduino (RS, E, 4 линии данных) плюс питание. Переходник I2C (модуль на чипе PCF8574) превращает это в 2 сигнальных провода — SDA и SCL — по которым LCD1602 "разговаривает" с Arduino по протоколу I2C. Это освобождает пины для других модулей и заметно упрощает разводку проводов на макетной плате.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Подключите DS18B20: сигнальный провод (обычно жёлтый или белый, средний вывод у датчика в корпусе TO-92) → цифровой пин D2 Arduino.
  2. Между сигнальным проводом и VCC (+5В) впаяйте или воткните в макетную плату резистор-подтяжку номиналом 4.7 кОм — без него линия 1-Wire будет "плавать" и показания будут нестабильными или нулевыми.
  3. GND датчика → GND Arduino, VCC датчика → 5V Arduino.
  4. Подключите LCD1602 с I2C-переходником: SDA → A4, SCL → A5 (на Arduino UNO/Nano это стандартные аналоговые пины, используемые под I2C), VCC → 5V, GND → GND.
  5. На плате переходника I2C обычно есть подстроечный резистор синего цвета — им регулируется контрастность символов на экране, если после прошивки экран горит, но текста не видно.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#include <OneWire.h>             // библиотека для протокола 1-Wire
#include <DallasTemperature.h>  // библиотека конкретно под датчики DS18B20
#include <Wire.h>               // стандартная библиотека для шины I2C
#include <LiquidCrystal_I2C.h>  // библиотека для LCD-дисплея через I2C-переходник

#define ONE_WIRE_BUS 2            // пин, к которому подключён сигнальный провод DS18B20

OneWire oneWire(ONE_WIRE_BUS);           // создаём шину 1-Wire на этом пине
DallasTemperature sensors(&oneWire); // передаём шину в библиотеку датчиков температуры
LiquidCrystal_I2C lcd(0x27, 16, 2);       // адрес дисплея на шине I2C, 16 столбцов, 2 строки

void setup() {
  Serial.begin(9600);   // открываем монитор порта для отладки
  sensors.begin();      // инициализируем датчик температуры
  lcd.init();           // инициализируем дисплей
  lcd.backlight();      // включаем подсветку экрана
  lcd.setCursor(0, 0);
  lcd.print("DS18B20 ready"); // приветственное сообщение при старте
  delay(1000);
  lcd.clear();
}

void loop() {
  sensors.requestTemperatures();          // отправляем всем датчикам на шине команду измерить температуру
  float t = sensors.getTempCByIndex(0);   // забираем результат измерения от первого (и единственного) датчика

  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print(" C   ");                     // пробелы в конце стирают "хвост" от предыдущего, более длинного числа

  Serial.print("Temperatura: ");
  Serial.println(t);                      // дублируем значение в монитор порта для отладки

  delay(1000);                            // пауза между измерениями
}

Библиотеки OneWire, DallasTemperature и LiquidCrystal_I2C ставятся через Менеджер библиотек Arduino IDE (Скетч → Подключить библиотеку → Управлять библиотеками). Если LCD не откликается — проверьте адрес на шине I2C через скетч-сканер I2C (обычно 0x27 или 0x3F).

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🌡️ Термостат XH-W1209: готовый контроллер тем…⏰ часы-будильник на DS1302, TM1637 и зуммере →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 302 ₽ 272 ₽ (экономия 30 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA