
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 / GND | GND | TO-92: плоская сторона с маркировкой к вам, ножки вниз; порядок слева направо 1,2,3. Сверьте вид корпуса в datasheet. |
| 2 / DQ | D2 | Резистор 4,7 кОм между DQ и 5V; короткое подключение одного датчика. |
| 3 / VDD | 5V | UNO 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
D2UNO 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 не должна попадать в журнал как температура.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.
