Это ознакомительная статья она не даст полных знаний о протоколе 1-Wire для этого обращайтесь к специализированной литературе, но на основании этой статьи Вы сможете подключить температурный датчик к ESP8266, Ардуине и еще узнаете о других внешне похожих датчиках.
Дополнено: 15.12.2021
Датчик температуры DS18B20
Tехническая спецификация (Datasheet)
- Напряжение питания: 3V-5.5V
- Потребление тока: 1,5 мА (0,0015 ампер)
- Подключение к питанию прямое или с паразитным питанием
- Разрешение преобразования температуры: 9 бит – 12 бит;
- Период измерения температуры при максимальной точности 12 бит: 750 мС;
- Точность измерения: + /- 2 °C для диапазона от -55 до 125 °C
- Точность измерения +/- 0,5 °C в диапазоне от -10 до 85 °C
- Дрейф измерения +/- 0,2 °C
- Протокол обмена данными: 1-Wire;
- Тип индексации на линии 1-Wire: уникальный 64-битный адрес;
- Есть возможность программирования диапазона тревожного сигнала.
Особенности датчика температуры
- Каждый датчик имеет уникальный 64-разрядный серийный номер, хранящийся во встроенном ROM
- На одной шине может быть много датчиков температуры
- Может запитываться от линии данных (паразитное питание, о нем ниже на примере ключа)
Исполнение
8-Pin SO, 8-Pin µSOP, 3-Pin TO-92
Чаще всего встречается трех пиновое исполнение в форм-факторе TO-92
Обозначение выводов
- GND - Земля
- DQ - Данные (Вход/Выход)
- VDD - Напряжение питания
- NC - Не подключен
А есть ещё герметичные датчики в металлической капсуле от которой отходит три провода, распайка их следующая:
- Красный - Питание (VCC)
- Жёлтый - Данные (DATA)
- Черный - Земля (GND)
Разрешающая способность (до 12 бит)
Разрешающая способность задается пользователем и может составлять:
- 9 бит с приращением 0.5°C
- 10 бит с приращением 0.25°C
- 11 бит с приращением 0.125°C
- 12 бит с приращением в 0.0625°C
По умолчанию при включении питания разрешающая способность – 12 бит
О видах датчиках
- До 2001 года датчик маркировался как DS1820, они уже сняты с производства.
- DS18S20 – более продвинуты, но видимо то же сняты с производства.
- DS18В20 – на данный момент повсеместно используются, более совершенные термометры, самое главное отличие - настраиваемая точность.
Так же бывают датчики в защитном кожухе из нержавейки (водонепроницаемый датчик в капсуле из нержавеющей стали)
По диаметру они 6мм
Применяют там где есть агрессивная среда или жидкость, например, я применяю их в самогоноварении.
А еще бывают отдельно капсулы из нержавеющей стали 6*50 мм" например вот тут (ссылка для примера). Вот как они выглядят
Про терморезисторы
Но помните, что бывают похожие датчики, точно в такой же нержавеющей капсуле, ну почти такой же.
Они меньшего диаметра, 4мм
Внутри которых находится не DS18В20, а термистор. Напомню, терморезистор (термистор, термосопротивление) — полупроводниковый прибор - резистор, электрическое сопротивление которого изменяется в зависимости от его температуры.
Именно термисторы применяются в компьютерных платах для контроля температуры или в 3D принтерах (пример на Ali и еще) или в дешевых термометрах на окно, вот таких
Или в платах подобных этой "XH-W1401 цифровой термостат с контроллером температуры и реле", покупал на Ali
Или вот в такой плате от Мастер-Кит (www.masterkit.ru) Термореле 0…150°C NM4022 (BM4022) (A402)
Про термопары
А есть еще термопары которые не надо путать с терморезисторами применяются много где, но например в мультиметрах.
Отдельно термопара
Статьи на канале:
Но на самом деле это совершенно отдельная огромная тема и думаю к ней мы еще вернемся.
Подключение датчика
Подключить датчик не просто, а очень просто.
Подключить датчик можно двумя способами в зависимости от подачи питания
- Обычным способом используя все три контакта датчика;
- Используя только два контакта, это так называемое "паразитное питание";
Используя только два контакта (паразитное питание)
Для питания чипа используется "паразитное питание" по той же линии что и линия данных (DATA).
R1 -резистор от 1кОм до 4,7кОм, можете выбрать среднее 2,2кОм.
Таким образом датчик очень удобно монтировать на тонком коаксиальном кабеле, диаметром 2...2,5мм. В этом случае его центральный вывод (DATA) паяется к центральной жиле кабеля, а два боковых (GND, VCC) припаиваются к оплетке. Затем на место пайки помещаете каплю термоклея и сверху осаживаете термоусадочную трубку (можно использовать специальную термоусадку с клеющим слоем внутри). Резистор подтяжки ставится на плате обработки. Получается прочно, аккуратно, герметично.
Обычный способ подключения датчика
При этом используются все три контакта датчика
Нужно добавить подтягивающий резистор от DATA к питанию 4,7 кОм (это резистор между питанием +3,3 вольта и DATA (DQ))
И еще про резистор, его сопротивление 4.7кОм, это значение подходит только для коротких линий, как у нас. Если шина используется для подключения устройств на большее расстояние, то сопротивление подтягивающего резистора необходимо уменьшить, сопротивление резистора так же уменьшается если датчик использует паразитное питание (в этом случае к датчику подключается два провода земля и совмещенный питание через резистор и данные, см. ниже)
Теперь давайте подключим все это и посмотрим как все выглядит вживую, вот температурный датчик
А вот резистор SMD 4,7 КОм (SMD 472)
Теперь все соединим, соберем вместе
По цвету проводов можно догадаться о распайке. И все убираем в термоусадку
Провод DATA я соединил с GPIO 1(TX), вы можете соединять с другими GPIO
Настройка датчика в прошивке ESP Easy
Настраивать датчик очень просто, в данном примере я не буду отвлекаться на детали, а только общие принципы, итак идем в "Devices" и жмем "Add", добавляем новое устройство
В раскрывшимся списке выбираем как не странно "Environment - DS18b20"
Теперь настраиваем сам датчик
Обязательно выбираем Имя (Name) - придумываем удобное нам, для примера: "Temperature_Sensor"
Включаем, ставим галочку "Enabled"
И в разделе "Sensor" выбираем на какое GPIO будут приходит данные (GPIO ← TX), у меня к примеру GPIO 1
И пока все, более подробно в отдельной статье, жмем "Submit" и применяем настройки.
После применения настроек появятся дополнительные окошки, которые необходимо настроить.
В исходящих данных ("Output Configuration") выберите адрес вашего датчика ("Device Address") вместо "None" выбирайте код своего датчика, например "28-ff-65-66-40-17-04-c0 [DS18B20]"
Выберите точность датчика ("Device Resolution") о ней было выше, я выбрал минимальную, 9 бит
В разделе Получение данных "Data Acquisition" выберите интервал опроса датчика (Interval), я выбрал 3 минуты, по умолчанию 1 минута
Все минимальная настройка завершилась! Датчик общается по протоколу 1-Wire и ниже чуть чуть об этом протоколе.
А теперь чуть чуть о протоколе 1-Wire
Пожалуй протоколом 1-Wire пользуется скорее всего каждый кто входи и выходит из подъезда дома прикладывая ключ таблетку к домофону.
Что это такое 1-Wire?
1-Wire – последовательный, асинхронный, полудуплексный протокол передачи данных.
Разберем подробно это определение:
- Последовательный - данные передаются последовательно, бит за битом.
- Асинхронный - нет синхронизации, тактового генератора, передача идет по одному проводу.
- Полудуплексный - возможны прием и передача, но только в разное время.
Данный протокол разработан корпорацией Dallas Semiconductor (сейчас Maxim Integrated) давным-давно, в 90-х годах прошлого века.
Плюсы
- Передача идет по одному проводу - шине данных
Минусы
- Скорость передачи маленькая, всего 9600 Бод (а если в битах то скорость не может быть больше 8 333 бит/с, а если учитывать потери на служебные цели, импульсы сброса, импульсы присутствия и др., то скорость будет еще ниже.
И помним, что бот не равен бит (зачем вообще они прицепились к этим БОДам, да потому что шина старая с 90 годов прошлого века, а тогда модемы, телефонная лапша, телетайпы и вот все это)
Вот в отдельной статье: "UART, COM-порт, RS-232 что это и как они связаны? "
- Чувствителен к помехам
Протокол 1-Wire уровни взаимодействия:
- физический
- канальный
- сетевой
- транспортный
А какие устройства работают на данном протоколе?
На 1-Wire работает большинство "таблеток" - домофонных чипов, карточек доступа, транзисторные ключи (DS2405, DS2406), программируемые порты ввода-вывода (DS2408), часы реального времени (DS2417) и многое другое.
Каждое устройство имеет 64-битный код который состоит из трёх частей
[8BIT CRC] - [48BIT серийный номер]- [8BIT код семейства]
- 8BIT CRC - служит для проверки правильности приёма всего кода.
- 48BIT Серийный номер - Уникальный номер для каждого устройства
- 8BIT код семейства - Коды семейства, представлены ниже
Коды семейств всех устройств.
Код семейства (HEX) 01. Устройства: DS1990A, DS1990R, DS2401, DS2411 (Уникальный серийный номер-ключ)
Код семейства (HEX) 02. Устройства: DS1991 (Мультиключ, 1152-битная защищённая EEPROM)
Код семейства (HEX) 04. Устройства: DS1994, DS2404 (4 КБ NV RAM + часы, таймер и будильник)
Код семейства (HEX) 05. Устройства: DS2405(Одиночный адресуемый ключ)
Код семейства (HEX) 06. Устройства: DS1993 (4 КБ NV RAM)
Код семейства (HEX) 08. Устройства: DS1992 (1 КБ NV RAM)
Код семейства (HEX) 09. Устройства: DS1982, DS2502. (1 КБ PROM)
Код семейства (HEX) 0A. Устройства: DS1995 (16 КБ NV RAM).
Код семейства (HEX) 0B. Устройства: DS1985, DS2505 (16 КБ EEPROM)
Код семейства (HEX) 0C. Устройства: DS1996 (64 КБ NV RAM)
Код семейства (HEX) 0F. Устройства: DS1986, DS2506 (64 КБ EEPROM)
Код семейства (HEX) 10. Устройства: DS1920, DS1820, DS18S20, (Датчик температуры)
Код семейства (HEX) 12. Устройства: DS2406, DS2407 (1 КБ EEPROM + двухканальный адресуемый ключ)
Код семейства (HEX) 14. Устройства: DS1971, DS2430A (256 бит EEPROM и 64 бита PROM)
Код семейства (HEX) 1A. Устройства: DS1963L (4 КБ NV RAM + счётчик циклов записи)
Код семейства (HEX) 1C. Устройства: DS28E04-100 (4 КБ EEPROM + двухканальный адресуемый ключ)
Код семейства (HEX) 1D. Устройства: DS2423 (4 КБ NV RAM + внешний счётчик)
Код семейства (HEX) 1F. Устройства: DS2409 (Двухканальный адресуемый ключ с возможностью коммутации на возвратную шину)
Код семейства (HEX) 20. Устройства: DS2450 (Четырёхканальный АЦП)
Код семейства (HEX) 21. Устройства: DS1921G, DS1921H, DS1921Z (Термохронный датчик с функцией сбора данных)
Код семейства (HEX) 23. Устройства: DS1973, DS2433 (4 КБ EEPROM)
Код семейства (HEX) 24.Устройства: DS1904, DS2415 (Часы реального времени)
Код семейства (HEX) 26. Устройства: DS2438 (Датчик температуры, АЦП)
Код семейства (HEX) 27. Устройства: DS2417 (Часы реального времени с прерыванием)
Код семейства (HEX) 28. Устройства: 18B20 (Датчик температуры)
Код семейства (HEX) 29. Устройства: DS2408 (Двунаправленный 8-разрядный порт ввода/вывода)
Код семейства (HEX) 2C. Устройства: DS2890(Одноканальный цифровой потенциометр)
Код семейства (HEX) 2D. Устройства:DS1972, DS2431(1 КБ EEPROM)
Код семейства (HEX) 30. Устройства: DS2760 (Датчик температуры, датчик тока, АЦП)
Код семейства (HEX) 37.Устройства: DS1977 (32 КБ защищённой паролем EEPROM)
Код семейства (HEX) 3A.Устройства: DS2413 (Двухканальный адресуемый коммутатор)
Код семейства (HEX) 41.Устройства:DS1922L, DS1922T, DS1923, DS2422 (Термохронные и гигрохронные датчики высокого разрешения с функцией сбора данных)
Код семейства (HEX) 42. Устройства: DS28EA00 (Цифровой термометр с программируемым разрешением, возможностью работать в режиме подключения к последовательному каналу и программируемыми портами ввода/вывода)
Код семейства (HEX) 43. Устройства: DS28EC20 (20 КБ EEPROM)
Где обозначение памяти
NV RAM – Non-Volatile Random-Access Memory (энергонезависимое ОЗУ)
PROM – Programmable Read-Only Memory (однократно программируемое ПЗУ)
EEPROM – Electrically Erasable Programmable Random-Access Memory (электрически стираемое перепрограммируемое ПЗУ)
Самые распространённые это как раз датчик температуры DS18B20, но еще больше распространены микросхемы в корпусах-таблетках iButton - это ключи к домофонам
Контактная память (touch memory, iButton)
Ключи для домофонов или контактный ключ, контактная память, магнитный ключ, таблетка, кнопка и т. д.
Конечно термин "магнитный ключ" не правильный так как магнитов никаких нет.
Для питания чипа используется "паразитное питание" по той же линии что и линия данных (DATA), наружный ободок это земля. Точно так же может питаться и наш датчик температуры DS18B20
Схема подключения следующая
Резистор R1 от 1кОм до 3кОм, чаще всего в сети встречается 2,2кОм, но это правда для Ардуины, подтягивает линию данных к земле обеспечивая тем самым высокий уровень сигнала попутно заряжая встроенный конденсатор который будет обеспечивать питания датчика при переходе шины в низкий уровень.
Далее мы подробно разберем подключение датчика температуры к ESP 8266 в прошивке ESP Easy.
Как всегда продолжение следует...
Связанные статьи на моем канале:
- Подключаем кнопку и светодиод и настраиваем их в прошивке ESP Easy
Пользуйтесь рубрикатором по каналу, там все по разделам: "Страничка путеводитель по каналу TehnoZet-2"
Подписывайтесь на наш канал TehnoZet-2, там много интересного! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх!
Тэги
#мастерломастер
#умнаяпыль
#умныйдом
#датчики
#Термодатчик