Перейти к содержанию

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).

Распиновка

DS18B20 в корпусе TO-92: 1 GND, 2 DQ, 3 VDDTO-92, плоская граньDS18B201GND2DQ3VDD
DS18B20 в корпусе TO-92: 1 — общий, 2 — данные DQ, 3 — питание VDD
СигналTO-92SO-8 (DS18B20Z)µSOP-8 (DS18B20U)Назначение
GND154общий провод
DQ241данные 1-Wire, открытый сток; при паразитном питании — и питание
VDD338питание; при паразитном питании соединяют с GND
N.C.—1, 2, 6, 7, 82, 3, 5, 6, 7не подключены

В даташите выводы TO-92 показаны в виде снизу. Микросхемы в SO-8 и µSOP-8 имеют разную цоколёвку, хотя корпуса восьмивыводные у обоих, — посадочное место одного под другой не подходит.

Параметры

По даташиту Maxim при питании 3,0–5,5 В во всём диапазоне −55…+125 °C:

ПараметрЗначение
Питание VDD3,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)
Ток при преобразовании или записи EEPROM1 мА типично, до 1,5 мА
Уровень нуля на DQот −0,3 до 0,8 В
Уровень единицы на DQот 2,2 В при местном питании, от 3,0 В при паразитном
Ток стока DQне меньше 4 мА при 0,4 В
Время записи EEPROM2 мс типично, до 10 мс
Ресурс EEPROM50 тыс. записей, хранение 10 лет (при −55…+55 °C)

Пределы погрешности по примечанию 3 даташита — это значения 3σ: так оценён разброс партии, а не гарантия для каждого экземпляра при каждом измерении.

РазрешениеШагВремя преобразования, не больше
9 бит0,5 °C93,75 мс
10 бит0,25 °C187,5 мс
11 бит0,125 °C375 мс
12 бит0,0625 °C750 мс

Разрешение задают битами 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 В.

Источники

  1. 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
  2. Microchip. AN1199: 1-Wire Communication with PIC Microcontroller (DS01199A, 2008) — программная реализация 1-Wire стандартной скорости: сброс нулём 480 мкс, чтение импульса присутствия, скорость около 15 кбит/с

Нашли ошибку?