DS18B20 — цифровой датчик температуры с шиной 1-Wire
DS18B20 — самый распространённый цифровой датчик температуры для Arduino и ESP32: три вывода, одна линия данных на любое число датчиков и готовое значение в градусах Цельсия. Разбираем по даташиту Maxim Integrated (сейчас — Analog Devices): точность по диапазонам, разрядность и время преобразования, подтяжку и паразитное питание.
Обновлено Редакция GAW
DS18B20 — цифровой термометр, который сам измеряет температуру, переводит её в двоичный код и отдаёт по шине 1-Wire. Для обмена нужна одна линия данных и общий провод, а при паразитном питании — только они. У каждого датчика есть уникальный 64-битный код, поэтому на одну линию вешают десятки датчиков и опрашивают их по очереди. Как DS18B20 выглядит на фоне термисторов, LM35 и I²C-датчиков — в статье «Датчики температуры».
Коротко
- Питание — 3,0–5,5 В от вывода VDD или паразитное, от линии данных.
- Точность — ±0,5 °C в диапазоне −10…+85 °C, ±1 °C до −30…+100 °C, ±2 °C во всём диапазоне −55…+125 °C.
- Разрешение — 9–12 бит, шаг от 0,5 до 0,0625 °C; после включения — 12 бит.
- Время преобразования — до 93,75 мс при 9 битах и до 750 мс при 12 битах.
- Шина — 1-Wire, подтяжка 4,7 кОм, код семейства 28h.
- Корпуса — TO-92 (DS18B20), SO-8 (DS18B20Z), µSOP-8 (DS18B20U).
Распиновка
| Сигнал | TO-92 | SO-8 (DS18B20Z) | µSOP-8 (DS18B20U) | Назначение |
|---|---|---|---|---|
| GND | 1 | 5 | 4 | общий провод |
| DQ | 2 | 4 | 1 | данные 1-Wire, открытый сток; при паразитном питании — и питание |
| VDD | 3 | 3 | 8 | питание; при паразитном питании соединяют с GND |
| N.C. | — | 1, 2, 6, 7, 8 | 2, 3, 5, 6, 7 | не подключены |
В даташите выводы TO-92 показаны в виде снизу. Микросхемы в SO-8 и µSOP-8 имеют разную цоколёвку, хотя корпуса восьмивыводные у обоих, — посадочное место одного под другой не подходит.
Параметры
По даташиту Maxim при питании 3,0–5,5 В во всём диапазоне −55…+125 °C:
| Параметр | Значение |
|---|---|
| Питание VDD | 3,0–5,5 В |
| Напряжение подтяжки при паразитном питании | 3,0–5,5 В |
| Предельное напряжение на любом выводе | −0,5…+6,0 В |
| Погрешность при −10…+85 °C | ±0,5 °C |
| Погрешность при −30…+100 °C | ±1 °C |
| Погрешность при −55…+125 °C | ±2 °C |
| Дрейф | ±0,2 °C типично (испытание 1000 ч при +125 °C и 5,5 В) |
| Ток в режиме ожидания | 750 нА типично, до 1000 нА (до +70 °C) |
| Ток при преобразовании или записи EEPROM | 1 мА типично, до 1,5 мА |
| Уровень нуля на DQ | от −0,3 до 0,8 В |
| Уровень единицы на DQ | от 2,2 В при местном питании, от 3,0 В при паразитном |
| Ток стока DQ | не меньше 4 мА при 0,4 В |
| Время записи EEPROM | 2 мс типично, до 10 мс |
| Ресурс EEPROM | 50 тыс. записей, хранение 10 лет (при −55…+55 °C) |
Пределы погрешности по примечанию 3 даташита — это значения 3σ: так оценён разброс партии, а не гарантия для каждого экземпляра при каждом измерении.
| Разрешение | Шаг | Время преобразования, не больше |
|---|---|---|
| 9 бит | 0,5 °C | 93,75 мс |
| 10 бит | 0,25 °C | 187,5 мс |
| 11 бит | 0,125 °C | 375 мс |
| 12 бит | 0,0625 °C | 750 мс |
Разрешение задают битами R1 и R0 регистра конфигурации (байт 4 памяти датчика); по умолчанию оба равны единице — 12 бит. Значение хранится в EEPROM вместе с порогами тревоги TH и TL и записывается туда командой Copy Scratchpad (48h).
Подключение
Обычная схема — местное питание: VDD на плюс 3,3 или 5 В, GND на общий провод, DQ на вывод микроконтроллера и через резистор 4,7 кОм на плюс питания. Датчики на одной линии соединяют параллельно. При таком питании линия свободна во время измерения, а мастер может узнать о конце преобразования, читая слоты: датчик отвечает нулём, пока измеряет.
Сеанс обмена всегда начинается со сброса: мастер держит линию в нуле не меньше 480 мкс, отпускает её и ловит импульс присутствия от датчиков. Дальше идёт команда ПЗУ — выбор датчика по 64-битному коду или Skip ROM (CCh), если датчик один, — и функциональная команда: Convert T (44h) запускает измерение, Read Scratchpad (BEh) читает 9 байт памяти. Девятый байт — контрольная сумма CRC с полиномом X⁸ + X⁵ + X⁴ + 1; её стоит проверять, особенно на длинном кабеле.
Температура приходит в двух байтах в дополнительном коде, младшие четыре бита — дробная часть: при 12 битах значение делят на 16. Например, код 0191h — это 401 / 16 = +25,0625 °C, а FF5Eh — −10,125 °C.
Паразитное питание
В паразитном режиме вывод VDD соединяют с GND, и датчик питается от линии данных, запасая заряд во внутреннем конденсаторе, пока на линии единица. Для обмена этого хватает, но во время измерения и записи в EEPROM датчик берёт до 1,5 мА, а через резистор 4,7 кОм столько не пройдёт: при 1,5 мА на нём упало бы больше 7 В. Поэтому даташит требует сильной подтяжки — обычно MOSFET, замыкающего линию на плюс, — не позже чем через 10 мкс после команды 44h или 48h и на всё время преобразования. Пока подтяжка включена, другого обмена на линии быть не может.
Даташит не рекомендует паразитное питание при температуре выше +100 °C: из-за токов утечки датчик может перестать отвечать. Узнать, как запитаны датчики на линии, можно командой Read Power Supply (B4h): паразитно запитанный датчик ответит нулём.
Аналоги
Функциональные аналоги DS18B20 — другие цифровые датчики температуры с шиной 1-Wire. Документа производителя о совместимости с ними нет, поэтому точность, время преобразования и поведение при паразитном питании сверяют по их собственным даташитам. Датчики с шиной I²C и другой точностью сравниваются в статье «Датчики температуры», другие микросхемы — в разделе «Микросхемы датчиков».
Частые вопросы
Какая распиновка у DS18B20 в корпусе TO-92?
По даташиту Maxim вывод 1 — общий (GND), 2 — линия данных DQ, 3 — питание VDD. В даташите выводы нарисованы в виде снизу (BOTTOM VIEW), поэтому перед пайкой сверяют номера с рисунком, а не с памятью.
Какой резистор нужен для DS18B20?
Линии DQ нужна подтяжка к питанию: в тексте даташита — около 5 кОм, на схемах — 4,7 кОм. Это стандартный номинал для одного или нескольких датчиков на короткой линии. Без подтяжки шина 1-Wire не работает вовсе: выход датчика — открытый сток, и единицу на линии создаёт только резистор.
Почему DS18B20 показывает 85 °C?
Потому что +85 °C — значение регистра температуры после включения питания (в даташите это 0550h). Если программа прочитала регистр, не дождавшись окончания преобразования, или датчик при паразитном питании сбросился во время измерения из-за нехватки тока, получится именно 85. Нужно выдержать время преобразования — до 750 мс при 12 битах — и при паразитном питании включать сильную подтяжку.
Сколько датчиков DS18B20 можно повесить на одну линию?
Даташит называет число адресуемых устройств на шине практически неограниченным: у каждого датчика свой 64-битный код, в младшем байте которого код семейства 28h. На практике ограничение задают длина и ёмкость кабеля, подтяжка и ток при одновременном преобразовании: каждый датчик во время измерения берёт до 1,5 мА.
Можно ли питать DS18B20 от 3,3 В?
Да: диапазон питания по даташиту — от 3,0 до 5,5 В, и при местном питании 3,3 В датчик работает с той же точностью. При паразитном питании минимальное напряжение подтяжки тоже 3,0 В, но запаса почти нет, а даташит предупреждает, что при низком напряжении для надёжного импульса присутствия порог нуля приходится снижать до 0,5 В.
Источники
- Maxim Integrated (Analog Devices). DS18B20 Programmable Resolution 1-Wire Digital Thermometer (19-7487, Rev 6, 7/19) — с. 1 — диапазон −55…+125 °C, 9–12 бит, корпуса TO-92, SO-8 и µSOP, Pin Configurations; с. 2 — Absolute Maximum Ratings (−0,5…+6,0 В на любом выводе), DC Electrical Characteristics: питание 3,0–5,5 В, погрешность ±0,5/±1/±2 °C по диапазонам (пределы 3σ, примечание 3), VIL до 0,8 В, VIH от 2,2 В (местное питание) и от 3,0 В (паразитное), ток стока 4 мА при 0,4 В, ток покоя 750/1000 нА, ток преобразования 1/1,5 мА, дрейф ±0,2 °C; с. 3 — EEPROM: запись 2–10 мс, 50 тыс. циклов, хранение 10 лет; время преобразования 93,75/187,5/375/750 мс, включение сильной подтяжки не позже 10 мкс; с. 4 — Pin Description; с. 5 — шаг 0,5…0,0625 °C, 12 бит по умолчанию, команда 44h; с. 6 — формат регистра температуры, табл. 1, значение +85 °C после включения; с. 7 — паразитное питание, ток до 1,5 мА, сильная подтяжка, не выше +100 °C, команда B4h; с. 8 — семейство 28h, карта памяти; с. 9 — регистр конфигурации, CRC X8 + X5 + X4 + 1; с. 10 — подтяжка около 5 кОм, 4,7 кОм на рис. 12, сброс линии нулём дольше 480 мкс; с. 19 — Ordering Information
- Microchip. AN1199: 1-Wire Communication with PIC Microcontroller (DS01199A, 2008) — программная реализация 1-Wire стандартной скорости: сброс нулём 480 мкс, чтение импульса присутствия, скорость около 15 кбит/с
Нашли ошибку?
Смотрите также
- Микросхемы датчиковТок, давление, влажность, температура, свет, ИК: карточки и статьи
- 1-WireТайм-слоты, ROM-команды, поиск, CRC8, DS18B20, паразитное питание
- Датчики температуры: NTC, Pt100, термопара, DS18B20, TMP117Термистор, Pt100, термопара, микросхемы и датчик МК: точность, подключение, самонагрев
- Паразитное питаниеПитание от линии данных 1-Wire: сильная подтяжка, пороги, ограничения
- Импульс присутствия 1-WireОтвет устройств 1-Wire на импульс сброса
- Калькулятор CRCCRC-8, CRC-16, CRC-32, Modbus, блок CRC STM32, код на C