🛒
0 товар.
0 руб.
Логотип

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

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

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

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

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

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

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

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

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

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

  1. DS18B20: сигнальный провод → D2.
  2. Между сигналом и VCC — резистор-подтяжка 4.7 кОм, без него показания будут нестабильны.
  3. GND → GND, VCC → 5V.
  4. LCD1602 с I2C: SDA → A4, SCL → A5, VCC → 5V, GND → GND.
  5. Синий подстроечный резистор на плате I2C регулирует контрастность экрана.

Скетч

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

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

#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес на шине I2C, 16 столбцов, 2 строки

void setup() {
  Serial.begin(9600);
  sensors.begin();
  lcd.init();
  lcd.backlight();
}

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

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

  Serial.println(t);                    // дублируем в монитор порта
  delay(1000);
}
                

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

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

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

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

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

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

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

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

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

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

Корзина

Поиск


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