ДатчикиПогода

DS18B20

Analog Devices / Maxim Integrated · DS18B20, TO-92; трёхпроводное включение

Цифровой термометр 1-Wire. Подключение DS18B20 в корпусе TO-92 к UNO R3, отдельное питание и проверка ошибок.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьЛегко
Проекты с компонентом

О МОДУЛЕ

Что делает DS18B20, TO-92; трёхпроводное включение

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

Базовое исполнение карточки — DS18B20 в корпусе TO-92, с отдельными VDD, DQ и GND. Металлический гермозонд на кабеле содержит такой же тип датчика, но его герметичность, допустимая температура кабеля, распиновка и качество сборки зависят от изготовителя. Диапазон микросхемы не гарантирует диапазон готового зонда.

Разрешение 12 бит не означает точность 0,0625 °C. Для нескольких датчиков сохраняйте их ROM-адреса и обращайтесь по адресу, иначе при изменении состава шины можно перепутать точки измерения. Для длинного кабеля нужны отдельная проверка питания, топологии и формы сигнала.

Фото: SparkFun Electronics / Wikimedia Commons, CC BY 2.0. Исходный фон и линейки удалены; реальная фотография датчика пропорционально масштабирована и размещена на фоне SLDV LAB. Геометрия и детали не перерисованы. На снимке показана обратная сторона корпуса TO-92, маркировка не видна.

Схема распиновки

Авторская схема SLDV LAB для DS18B20 в корпусе TO-92 с отдельным питанием. Плоская сторона с маркировкой обращена к вам, ножки направлены вниз: слева направо GND, DQ, VDD. На фотографии видна обратная сторона корпуса; порядок контактов определяйте по фронтальному виду на схеме. Цвета проводов герметичных зондов не стандартизированы и здесь не задаются.

Источник: Analog Devices / Maxim DS18B20, datasheet Rev. 6, с. 1–2, 4–5 и 7.

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

Диапазон микросхемы
-55–125 °C
Погрешность при −10…+85 °C
±0,5 °C
Настраиваемая разрядность
9–12 бит
Максимальное время преобразования, 12 бит
750 мс
VDD
3–5.5 В
Интерфейс
Dallas/Maxim 1-Wire; уникальный 64-битный ROM-адрес
Питание модуля
DS18B20: VDD 3,0–5,5 В. В примере UNO R3: VDD и подтяжка DQ 4,7 кОм к 5 В, общая GND. Для 3,3-вольтовой платы используйте совместимое питание и подтяжку DQ к 3,3 В. Паразитное питание в примере не используется; провода гермозонда определяйте по его документации, не по универсальной цветовой схеме.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
1 / GNDGNDTO-92: плоская сторона с маркировкой к вам, ножки вниз; порядок слева направо 1,2,3. Сверьте вид корпуса в datasheet.
2 / DQD2Резистор 4,7 кОм между DQ и 5V; короткое подключение одного датчика.
3 / VDD5VUNO R3; отдельное питание, не паразитный режим.

Подходит для Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать DS18B20. Уточни контроллер, корпус или гермозонд, число датчиков, длину кабелей и среду. Основа: UNO R3, один TO-92, DQ на D2, 4,7 кОм к 5V и отдельное VDD. Используй DallasTemperature 3.9.0 и OneWire 2.3.8. Подготовь полное чтение после завершения преобразования, проверку отсутствия и ошибок, а для нескольких датчиков выбор по ROM-адресам. Не угадывай цвета кабеля и не обещай точность по разрядности.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Библиотеки
DallasTemperature 3.9.0; OneWire 2.3.8

Установить обе через Library Manager.

Заголовки
#include <OneWire.h>; #include <DallasTemperature.h>

Каждый #include на отдельной строке.

Шина DQ
D2

UNO R3; внешний резистор 4,7 кОм к 5V.

Разрешение
12

Преобразование занимает до 750 мс.

Ожидание
sensors.setWaitForConversion(true)

Блокирующий учебный пример с отдельным питанием.

Arduino UNO R3 · полный скетч

cpp
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire bus(2);
DallasTemperature sensors(&bus);
DeviceAddress sensorAddress;

void setup() {
  Serial.begin(115200);
  sensors.begin();
  if (sensors.getDeviceCount() != 1 ||
      !sensors.getAddress(sensorAddress, 0) || sensorAddress[0] != 0x28) {
    Serial.println(F("Connect exactly one DS18B20 on D2"));
    while (true) delay(1000);
  }
  if (sensors.isParasitePowerMode()) {
    Serial.println(F("Use separate VDD power for this example"));
    while (true) delay(1000);
  }
  sensors.setResolution(sensorAddress, 12);
  sensors.setWaitForConversion(true);
}

void loop() {
  sensors.requestTemperatures();
  float t = sensors.getTempC(sensorAddress);
  if (t == DEVICE_DISCONNECTED_C || t < -55 || t > 125) {
    Serial.println(F("DS18B20 missing or invalid reading"));
  } else {
    Serial.print(F("T_C=")); Serial.println(t, 4);
  }
  delay(1000);
}

Полный скетч для UNO R3, Arduino AVR Boards 1.8.6, DallasTemperature 3.9.0 и OneWire 2.3.8; API и проводка сверены, компиляция и аппаратный тест не выполнялись. Serial Monitor: 115200 бод. Сначала подключите только один датчик при снятом питании. Чтение выполняется после преобразования, а не сразу после включения. 85 °C является начальным значением регистра, но может быть и реальной температурой: не объявляйте любое 85 °C неисправностью. Если это значение устойчиво при комнатной температуре, проверьте питание и выполнение преобразования. Ошибка DEVICE_DISCONNECTED_C не должна попадать в журнал как температура.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты