Датчики температуры DS18B20. Часть 1, Аппаратная

Датчики температуры DS18B20 снискали славу среди разработчиков электроники благодаря их точности (погрешность до полуградуса) и невысокой цене (0.2$ на алике). Кроме того, несколько датчиков можно запараллелить в одну шину и измерять последовательно разные температуры, используя только один порт 1-Wire, ведь у каждого датчика есть уникальный ID записанный изготовителем.

Сейчас можно встретить 3 разновидности датчиков по способу питания:
1) Только полное питание. Паразитное питание тут невозможно! Необходимо на ножку VDD подавать напряжение 3 — 5 Вольт. Обычно, это подделки или отбраковка. Как понять, что вы не нарвались на такое:
Включите мультиметр в режим прозвонки. Красный щуп на DQ, черный на VDD. Если есть падение напряжения 0.7В — значит эта микросхема точно не будет работать от паразитного питания. Вы можете использовать ее лишь с внешним питанием 3 – 5V на ноге VDD. Если же от DQ на VDD никакой проводимости нет, то значит паразитное питание здесь возможно.
2) Только паразитное питание. Когда микросхема получит питание с ножки данных DQ, а ножку VDD можно замкнуть на GND или оставить висеть в воздухе. В этих микросхемах ножка VDD вообще не используется нигде и не подключена к кристаллу. Проверить это просто. Включите мультиметр в режим прозвонки. Красный щуп на GND, черный на VDD. Если нет падения напряжения, значит ножка VDD вообще не подключена к кристаллу. 
3) Смешанное питание. Когда микросхему можно питать либо от VDD 3 – 5V, либо от линии передачи DQ (для активации режима паразитного питания, замкните VDD на GND).

Паразитное питание
Очень удобно подключать эти датчики двумя проводами, по так называемой схеме, паразитного питания. 

В самом начале хочу вас предостеречь от распространенной ошибки: при использовании паразитного питания (когда датчик питается от шины данных) не используйте резистор 4.7k которым пестрят статьи в интернете. Для паразитного питания этого очень мало. Наибольшие энергозатраты начинаются в момент начала конвертирования (замера температуры) до 1.5 мА. По закону Ома вычисляем, что нужно как минимум 3.3k сопротивление, поэтому понижаем уверенно до 2.4k.

Если датчику на момент конвертации не хватает тока, то он будет записывать в температурные регистры ерунду. Часто это 07FF, 07FD, 07FC. А при 4.7k именно так все и будет.

Секреты, которые ни для кого не секреты: 

1) Чем ниже сопротивление подтяжки, тем вероятнее датчик сам себя будет нагревать, ведь Rds его внутреннего ключа около 100 Ом. При слишком маленьком сопротивлении и при слишком частом опросе датчик будет врать в большую сторону.
2) Если при паразитном питании датчиков на шине несколько, то нельзя запускать конвертирование для всех одновременно, им просто не хватит на это тока и никто не измерит ничего.
3) Не используйте паразитное питание для измерения высоких температур 90 и выше градусов. Микросхема будет сбоить.

В даташите довольно популярно об этом моменте с питанием говорится, но техник-практик чаще доверяет статьям в интернете. Все дело в том, что даташит очень лаконичен. В нем редко будут разжевывать некоторые моменты, ведь составители технической документации иногда забывают, что многие моменты для нас не очевидны.


Вот схема жесткой подтяжки на момент конвертирования (измерения температуры). В документации говорится:
Если вы посылаете команду копирования памяти или запускаете измерение температуры, включите жёсткую подтяжку хотя бы на 10 микросекунд сразу же после отправки любой из команд "копирование памяти" или "замер температуры" (The DQ line must be switched over to the strong pullup within 10 µs maximum after issuing any protocol that involves copying to the E2 memory or initiates temperature conversions). 

На рисунке изображен ключ на полевом транзисторе. В суровых условиях эксплуатации или в кривых руках, шина 1-Wire может оказаться в коротком замыкании, тогда ключ жесткой подтяжки уведет в короткое замыкание и источник питания. 
Когда у вас нет никакой «жесткой» подтяжки, то замер температуры проводите над каждым датчиком по очереди. 

Полное питание
Здесь все очевидно. Подключаете три провода VDD, GND, DQ. Между DQ и VDD подтягивающий резистор на 4.7 кОм.

Преимущества такого способа питания:
1) Датчик не врет в большую сторону, потому что не нагревает сам себя.
2) Датчик не сбоит на высоких температурах +90...+125
3) Можно дать команду всем датчикам одновременно на групповой замер температуры
4) Кабель шины можно использовать подлиннее на 15% (90 — 92 метра)


Подключение к микроконтроллеру
Самый примитивный вариант подключения датчика — с использованием одной линии порта микроконтроллера без гальванической развязки. Пример на МК STM32. Линия толерантна к 5В (FT) и настроена не как Push-pull, а как Open Drain. Это означает, что микроконтроллер не будет подтягивать шину к питанию VDD, позволяя датчикам DS18B20 просаживать напряжение. Логический уровень с ножки выхода  мы так же сможем читать.


Здесь кроется большая засада, если датчики 1-Wire окажутся в запомехованных условиях, то микроконтроллер будет ловить удары по мозгам, и, возможно, будет сбоить и перезагружаться. Например, 1-wire провода пустят в одном кабель-канале с силовыми проводами, или они будут располагаться рядом с какими-нибудь злыми помехосоздавателями (например, контакторы-пускатели). Здесь возможны дополнительные меры по защите: а) можно добавить быстрый диод параллельно R9, чтобы он уводил избыточный потенциал в источник питания. б) Параллельно шине 1-Wire можно подключить супрессор. Но это не панацея.

Для условий, где требуется повышенная надежность, есть способ подключения датчика с использованием гальванической развязки. 

Здесь используется довольно быстрый цифровой изолятор ADUM1201 и он выполняет две функции:
1) Гальванически развязывает датчики от микроконтроллера.
2) Согласовывает уровни. Уровни МК 3.3В, а 1-Wire питается от 5В.
Диод D4 избавляет от избыточного потенциала (импульсная помеха повышающая напряжение на шине уйдёт в источник питания 5В), а D5 поглощает помеху с обратной полярностью. R36 – подтягивающий резистор для паразитного питания датчиков 1-Wire. Линии портов микроконтроллера 1W_RXD – вход, 1W_TXD – выход. Так задействованы два цифровых вывода микроконтроллера.

Продолжение В ЭТОЙ СТАТЬЕ (КЛИК)

Обсудить в нашем Telegram канале