Цифровые термометры DS18B20 от компании Analog Devices (бывшие Maxim Integrated и Dallas Semiconductor) появились на рынке в середине 2000-х годов и с тех пор прочно заняли нишу доступных и точных температурных сенсоров. Выпускаются они в нескольких корпусах: самый распространенный — трехвыводной TO-92 (похожий на транзистор), также существуют версии для поверхностного монтажа в корпусах SOIC-8 (Рисунок 1), mSOP-8.
Их главные козыри — высокая точность (погрешность до ±0.4°C в диапазоне от -10°C до +70°C), невысокая цена и широкий измеряемый диапазон температур от -55°C до +125°C. Однако, как и у любого популярного компонента, у этих датчиков есть свои особенности и «подводные камни», знание которых отличает надежное промышленное решение от поделки. В этой статье мы разберем ключевые аспекты работы с DS18B20, начиная от протокола 1-Wire и заканчивая тонкостями калибровки.
Самый распространенный вариант датчика в корпусе TO-92 имеет всего три вывода: земля, вход питания и двунаправленный порт передачи данных.
1-Wire — это комплексный стандарт, объединяющий в себе протокол передачи данных и физический интерфейс подключения. Он используется для связи с цифровыми датчиками температуры, идентификаторами iButton и другими устройствами. Главное преимущество — возможность общаться с несколькими устройствами по всего одному проводу данных (плюс общий «земляной» провод). Каждый датчик имеет уникальный 64-битный идентификатор, записанный производителем, что позволяет подключать их параллельно на одну шину и опрашивать по отдельности.
Для надежной работы шины 1-Wire важно правильно организовать её топологию (Рисунок 2). Рекомендуются два варианта:
Линейная топология — общая шина тянется от ведущего устройства (микроконтроллера) до самого дальнего датчика, а остальные подключаются к ней короткими отрезками (менее 3 метров).
Шлейфовая топология — датчики подключаются к общей шине отрезками длиной более 3 метров.
Категорически не рекомендуется использовать топологию «Звезда», когда шина разветвляется на несколько длинных ветвей. Это приводит к отражениям сигнала и сбоям в передаче данных.
Размер сети 1-Wire ограничен её суммарной емкостью. Чем длиннее кабель и больше датчиков, тем больше емкость, а значит, медленнее нарастает сигнал, что может вызвать ошибки. Основной документ при проектировании шины — спецификация разработчика 1-Wire.
Шина 1-Wire очень чувствительна к помехам. В условиях промышленных предприятий, где рядом могут проходить силовые кабели или работать контакторы-пускатели, на линии данных могут наводиться импульсные помехи.
Для защиты применяются несколько мер (Рисунок 3):
Быстрый диод параллельно подтягивающему резистору, который будет уводить избыточный потенциал (положительные выбросы) в шину питания.
Супрессор (TVS-диод), подключенный параллельно шине 1-Wire. Он срабатывает при превышении определенного напряжения (например, 6,5 В) и «обрезает» опасный импульс.
Для линий 1-Wire рекомендуется использовать экранированный кабель типа «витая пара» (UTP или FTP категории 5Е). Провода для сигнала DQ и земли GND должны быть именно скрученной парой — это значительно снижает влияние наводок (Рисунок 4). Экранированный кабель лучше защищает от помех, но увеличивает емкость линии, что нужно учитывать. Экран кабеля рекомендуется заземлять с одной стороны (со стороны ведущего устройства). Прокладывайте шину вдали от силовых кабелей и устройств, создающих сильные электромагнитные помехи (электродвигателей, частотных преобразователей). Если пересечения неизбежны, выполняйте их под прямым углом.
Для работы с датчиками DS18B20 напрямую с компьютера можно использовать USB-UART преобразователь (например, на чипе FTDI или CH340). Схема проста: вывод DQ преобразователя соединяется с линией данных датчика, GND — с землей (Рисунок 5). Между DQ и питанием (обычно 5В от USB) ставится подтягивающий резистор 4.7 кОм. На линии данных организуется обмен по протоколу 1-Wire, а микроконтроллер преобразователя выступает в роли «моста» между USB и шиной датчиков. Для работы потребуется специальное ПО, поддерживающее 1-Wire (например, OWFS или специализированные утилиты).
Существует два основных способа подключения DS18B20 (Рисунок 6): трехпроводная схема (с внешним питанием) и двухпроводная схема (паразитное питание).
Трехпроводная схема (полное питание) — это классический и наиболее надежный вариант. Вы подключаете три провода: VDD (питание 3-5В), GND (земля) и DQ (данные). Между линией DQ и VDD устанавливается подтягивающий резистор номиналом 4.7 кОм. Этот резистор необходим для того, чтобы удерживать шину в высоком логическом состоянии (1), когда ни одно из устройств не передает данные. Без него обмен данными был бы невозможен.
Двухпроводная схема (паразитное питание) — очень заманчивый вариант, так как позволяет сэкономить один провод (Рисунок 7). В этом режиме датчик «ворует» энергию из линии данных DQ. Когда шина находится в высоком состоянии, она не только передает данные, но и заряжает внутренний конденсатор датчика, который питает его, когда шина низкая. Ее также не рекомендуют использовать для измерения температур более 90°C, т.к. датчик будет работать некорректно.
При использовании схемы с паразитным питанием необходимо, чтобы источник питания 5В линии датчиков выдавал достаточную мощность.
Главная опасность паразитного питания — недостаток тока в момент конвертации. Многие статьи в интернете рекомендуют для всех случаев резистор 4.7 кОм, но для паразитного питания этого крайне мало! В момент запуска измерения температуры (конвертации) датчик потребляет ток до 1.5 мА. При таком токе на резисторе 4.7 кОм напряжение упадет на 7В, что сделает работу невозможной.
Вместо того чтобы снижать сопротивление подтяжки (что может привести к самонагреву датчика), правильным решением является использование «жесткой подтяжки» (strong pullup) на MOSFET-транзисторе. Согласно даташиту, в течение максимум 10 мкс после отправки команды на измерение температуры (Convert T [44h]) или копирования в EEPROM (Copy Scratchpad [48h]), шину DQ необходимо принудительно подключить к питанию через MOSFET. Этот транзистор, по сути, закорачивает линию данных на VDD, обеспечивая датчик неограниченным током на все время конвертации (до 750 мс для 12-битного разрешения). В этот момент никакие другие операции на шине 1-Wire не допускаются. Если датчику на момент конвертации не хватает тока, он будет записывать в регистры ошибочные значения (например, 07FF, 07FD).
Важная особенность оригинальных датчиков DS18B20 — они способны переживать неправильную переполюсовку питания (перепутанные провода VDD и GND) без повреждения, если длительность ошибки невелика. Это дает дополнительную страховку при монтаже, особенно в полевых условиях. Однако полагаться на это не стоит — подделки такой защиты не имеют.
Осторожно: в суровых условиях эксплуатации или при ошибках монтажа, если шина 1-Wire окажется замкнутой на землю, ключ на MOSFET просто устроит короткое замыкание, что может вывести из строя источник питания. Поэтому применение такой схемы требует особой внимательности.
В условиях повышенной надежности или при необходимости согласовать разные уровни напряжения (например, 3.3В для МК и 5В для датчиков) применяется гальваническая развязка. Она решает две задачи:
На практике используется цифровой изолятор, который разделяет цепи «земли» микроконтроллера и датчиков. Диод на стороне 1-Wire избавляет от избыточного потенциала (импульсная помеха, повышающая напряжение на шине, уйдёт в источник питания 5В), а второй диод поглощает помеху с обратной полярностью.
Производитель заявляет точность DS18B20 ±0.4°C в диапазоне от -10°C до +70°C. В большинстве любительских и даже многих промышленных проектах этой точности вполне достаточно, и датчик не требует дополнительной калибровки. Данные считываются из температурного регистра в виде 16-битного знакового числа, и преобразование в градусы Цельсия — дело техники.
Однако, если вы работаете над ответственным измерительным проектом, где требуется максимальная точность, стоит учитывать несколько моментов:
Для улучшения точности применяют индивидуальную калибровку:
Такая калибровка позволяет снизить среднюю абсолютную погрешность до 0.05 – 0.13°C, что делает DS18B20 серьезным конкурентом более дорогим датчикам.
К сожалению, рынок наводнен поддельными DS18B20. Исследования показывают, что практически все датчики, купленные на AliExpress и eBay, являются клонами, а не оригинальными микросхемами Maxim.
Чем отличаются подделки?
Главное отличие касается паразитного питания. В оригинальном датчике есть встроенная схема накопления энергии — конденсатор Cpp, который заряжается, когда шина находится в высоком состоянии, и отдает накопленную энергию, когда шина низкая. В подделках эта схема полностью отсутствует — датчики просто не работают в режиме паразитного питания. Они оставляют линию данных в высокоимпедансном состоянии («плавающей») при попытке запитать их паразитно.
Кроме того, у подделок есть и другие особенности:
Вместо EEPROM для хранения настроек используется высоковольтный конденсатор. Это означает, что настройки сохраняются только несколько минут, а не десятилетия, как у оригинала.
Повышенный уровень шума и температурный дрейф, выходящий за пределы заявленных ±0.5°C.
Ошибки и неспецифицированные отказы.
Начальное показание температуры — +25°C или последнее значение перед выключением (а не +85°C, как у оригинала).
Как отличить подделку?
Самый простой способ — проверить ROM-код датчика. У оригинальных DS18B20 семейный код — 28h, а уникальный 48-битный серийный номер имеет структуру, где байты 5 и 6 всегда равны нулю. Если ROM не соответствует шаблону 28-xx-xx-xx-xx-00-00-xx — перед вами клон.
Визуальные признаки:
Маркировка на корпусе напечатана, а не выгравирована лазером.
Отсутствует углубление (индент) на задней стороне корпуса TO-92.
Модификация подделок для работы с паразитным питанием
Если у вас уже есть поддельные датчики, и вы хотите использовать их в двухпроводной схеме, есть два способа «реанимировать» их:
Способ с диодом и электролитическим конденсатором: Добавьте внешнюю цепь накопления энергии прямо у датчика. Между линией DQ и VDD (который теперь используется как вывод для накопления энергии) ставится диод 1N4148 для предотвращения обратного тока, а между VDD и GND — электролитический конденсатор (например, 1 мкФ или больше). Диод не дает конденсатору разряжаться через шину данных в моменты, когда на DQ низкий уровень.
Способ с керамическим конденсатором: Используйте конденсатор 104 (0.1 мкФ) между VDD и GND. В этом случае энергия накапливается за счет внутренней утечки микросхемы (поскольку внутренний диод в подделке часто отсутствует), но эффективность такого метода ниже.
Важно понимать: эти модификации — лишь «костыли», которые позволяют заставить подделку работать в двухпроводной схеме. Они не восстанавливают полноценную функциональность оригинала (например, сохранение настроек в EEPROM). Для ответственных проектов настоятельно рекомендуется покупать датчики только у официальных дистрибьюторов (АО “Чип и Дип", ООО "ДКО ЭЛЕКТРОНЩИК" и др.).
DS18B20 — это мощный и гибкий инструмент для измерения температуры, если знать и учитывать его особенности. Правильный выбор схемы питания (полное или паразитное), использование MOSFET для «жесткой подтяжки» в режиме паразитного питания, а в ответственных случаях — гальваническая развязка — залог стабильной и точной работы вашего устройства. Индивидуальная калибровка позволяет раскрыть весь потенциал этого замечательного датчика. И, конечно, будьте бдительны при покупке: рынок наводнен подделками, которые не работают в режиме паразитного питания и не имеют энергонезависимой памяти.