1-wire - это система связи между устройствами, разработанная Dallas Semiconductor Corp, которая обеспечивает низкоскоростной обмен данными и питание по единственному проводу.
Отличительной особенностью этой шины является возможность использовать только двух проводов: данных и земли. Чтобы добиться этого устройства включают конденсатор 800pF для запасания энергии и питания устройства в моменты использования линии данных.
Посмотрим на одну из таких штук, оказавшуюся у меня под рукой: DS18B20.
Первым делом читаем документацию чтобы понять подходит ли это устройство и каковы его возможности. Итак:
Далее в документации есть схема включения: которая мне не совершенно нравится. GPIO выход как мы рассмотрели ранее состоит из двух транзисторов. Если установим на выходе низкий уровень (фактически соединим с землёй) и в тот же момент откроем подтягивающий транзистор в предложенной схеме, то получим жаренную Raspberry Pi Я не хочу так рисковать.
Так что поставим резистор в , что даст , если ток будет маловат для измерения температуры, то уменьшим сопротивление.
Почему GPIO4
? Почитаем /boot/overlays/README
:
Name: w1-gpio
Info: Configures the w1-gpio Onewire interface module.
Use this overlay if you *don't* need a GPIO to drive an external pullup.
Load: dtoverlay=w1-gpio,<param>=<val>
Params: gpiopin GPIO for I/O (default "4")
pullup Non-zero, "on", or "y" to enable the parasitic
power (2-wire, power-on-data) feature
Name: w1-gpio-pullup
Info: Configures the w1-gpio Onewire interface module.
Use this overlay if you *do* need a GPIO to drive an external pullup.
Load: dtoverlay=w1-gpio-pullup,<param>=<val>
Params: gpiopin GPIO for I/O (default "4")
pullup Non-zero, "on", or "y" to enable the parasitic
power (2-wire, power-on-data) feature
extpullup GPIO for external pullup (default "5")
Оверлей w1-gpio-pullup
- это не наш вариант1, а вот w1-gpio
выглядит привлекательно. Так что добавим в файл /bbot/config.txt
следующую строку:
dtoverlay=w1-gpio,gpiopin=4
Внимание
Как оказалось не все йогурты одинаково полезны (btw, йогурты вообще не полезны, никак). Некоторые из DS18B20 являются не очень удачными подделками. В частности мне достались обе микросхемы серии +158ac2, которые не работают в паразитном режиме, то есть мне придётся подавать напряжение на микросхемы отдельно:
Проверяем обнаружение термометра и корректность показаний:
выглядит вполне правдоподобно
Это последнее, что я хотел бы попробовать сегодня, в конце концов это всё таки шина. Для начала внесём изменения в макетную плату:
Смотрим:
Погрешность укладывается в заявленную точность .