ЭЛЕКТРОНИКА Радиоудлинитель датчика температуры DS18B20

Sergo_ST

★★★★★★✩
15 Мар 2020
979
829
Прошивки для радиоудлинителей DS18B20 можно скачать здесь.

Внимание! Перед прошивкой передатчика, обязательно полностью отключите радио-модуль, иначе он может выйти из строя!
Так-же могут быть проблемы с ATTINY13A купленными в Китае!!!


WDS18B20.JPG
Фьюзы RX прошивки Low 0x7A High 0xFF.
Фьюзы TX прошивки Low 0x79 High 0xFB.

Перед прошивкой передатчика желательно считать из сигнатуры мк калибровочный байт для осциллятора 4.8МГц и прописать его в OSCCAL_SET прошивки передатчика!
После прошивки необходимо обязательно прописать адрес передатчика в приёмнике по инструкции ниже!

Поддерживаются любые совместимые с указанными в схеме радио-модули на 433МГц.

Что реализовано:
  • Полноценная шина 1wire с возможностью адресации(команды - Search ROM, Read ROM, Match ROM, Skip ROM).
  • Копирование памяти и адреса датчика(адрес хранится в EEPROM приемника).
  • Защита от помех(передача бит по высокому уровню + проверка сигнала раскачки).
  • Сверка адреса передатчика(адрес задается перемычками).
  • Прописывание адреса передатчика в приёмник.
  • Сверка контрольной суммы принятых данных.
  • Система ошибок(125 - передатчик давно не выходил на связь, -85 - нет сигнала от датчика температуры).
  • Возможность установки перемычками установки интервалов передачи и адресов.
  • Возможность перед компиляцией установить свой максимальный интервал передачи(по умолчанию 60мин).
  • Возможность перед компиляцией выбрать режим "SLOW_MODE", для более устойчивой передачи.
  • Дублирование передачи(отправка повторного пакета через 8 сек).
  • Запрос температуры(за 8 секунд до основной передачи).

Сопряжение передатчика с приёмником:
  • Выключить передатчик и приёмник.
  • Отключить приёмник от шины 1wire(подтяжка должна остаться).
  • Прижать пин PB3 приёмника к земле.
  • Включить приёмник(светодиод будет светиться постоянно).
  • Включить передатчик.
  • Через 1.5 - 3сек светодиод приёмника должен потухнуть - адрес прописан.
  • Выключить приёмник.
  • Убрать прижим к земле пина PB3.
Синхронизация адреса датчика температуры с приёмником:
  • Выключить передатчик и приёмник.
  • Отключить приёмник от шины 1wire.
  • Включить приёмник.
  • Включить передатчик.
  • Через 1.5сек светодиоды приёмника и передатчика должны загореться - адрес прописан.

Установка перемычки адреса:
  • GND - PB3(0xAA)
  • GND - Резистор 60K - PB3(0xBB)
  • GND - Резистор 170K - PB3(0xEE)
  • VCC - PB3(0xCC)
Установка перемычки интервала:
  • GND - PB4(1мин)
  • GND - Резистор 60K - PB4(5мин)
  • GND - Резистор 170K - PB4(10мин)
  • VCC - PB4(30мин)

Что нового:
ver 3.5.2

  • Добавлена индивидуальная адресация(можно использовать несколько удлинителей в одном месте).
  • Добавлена возможность прописывать передатчик в память приёмника (для этого необходимо PB3 прижать к земле и включить питание).
  • Добавлен медленный режим для протокола радиопередачи
  • Повышена помехоустойчивость при раскачке.
  • Убраны интервалы дублирующей передачи 8сек(теперь передаётся за раз 3 пакета).
  • Теперь при старте передаётся температура вместе с адресом датчика.
  • Оптимизация.
ver 3.5.4
  • Добавлен выбор адреса и времени с помощью аналоговых перемычек для передатчика.
  • Удалён режим передачи 3-х пакетов за раз.
  • Оптимизация приёмника.
ver 3.5.5
  • Исправление прошивки приёмника.
  • Добавлена возможность установить коррекцию частоты.
  • Мелкие исправления.
ver RX 4.0.0
  • Новый алгоритм обработки шины 1wire(позволяет обрабатывать практически все варианты поведения шины).
ver RX 4.1.0
  • Переработан алгоритм ответа на сигнал сброса.
ver TX 4.1.2
  • Исправление отключения ацп.

За идею была взята статья с этого сайта.
Так-же огромное спасибо maksland за тестирование прошивок и схемы подключения!
Если есть вопросы/проблемы, или вы нашли баг, пишите в ЛС или ниже в теме.
 

Вложения

Изменено:

ser535

✩✩✩✩✩✩✩
1 Янв 2022
3
0
@nick 56, Спасибо за ответ, подключил на прямую, т.к. радио модуль который на прием я благополучно сжег, жду с Китая другой.
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
88
17
подключите питание радиомодуля через стабилизатор на 3.3в, например 662 и не будете жечь, и можно будет запитать от 3х батареек ААА
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
517
73
@Sergo_ST, Прошил Wemos D1 вашим последним(самым последним) который вы скинули "nick 56" скетчем (универсальным), у меня настроено что передатчик отправляет данные каждые 25 минут на часы. В WEB морду часов данные приходят как и положено через 25 мин., а в com порт почему то каждые 12 мин два раза но между ними 3-4 сек., а должно быть 8 сек. это конечно не критично, интересно почему так происходит ведь для передатчика не имеет значения сколько приёмников. Или имеет значение?
 

Вложения

Sergo_ST

★★★★★★✩
15 Мар 2020
979
829
@kym13, Значит такой интервал выбран... Как подключена перемычка выбора интервала?
Между пакетами давно нет четкого интервала в 8сек, в зависимости от выбранного адреса устанавливается свой интервал смещения пакетов.
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
517
73
@Sergo_ST, ... Как подключена перемычка ..... Резистор на 100К(99,6К), при таком номинале отправляет данные с интервалом в 25 мин. проверенно опытным путем. Что касается 8 сек то это по большому счёту это не важно, главное отправляет. Через 12 мин. он в com порт IDE выводит, а в веб часов через 25 мин. вот что интересно. Приёмники разные, не стал с часов снимать подключил второй к отдельной ESP, а передатчик один.
 

Вложения

Sergo_ST

★★★★★★✩
15 Мар 2020
979
829
@kym13, У вас прошивка передатчика сток? Если да, то с таким резистором должно быть около 10мин интервал, что в принципе соответствует данным лога(+-12мин).
Максимальный интервал(+-30мин) достигается подключением перемычки напрямую к vcc.
 

Andrew_V

✩✩✩✩✩✩✩
16 Июн 2024
5
0
Добрый вечер. Поставил на Wemos скетч из RX_RADIO_DS18B20. Есть какой то способ кроме температуры получать полный адрес датчика? Давно бьюсь над этим. Получается или адрес датчика получить или температуру. Как их получить вместе?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
979
829
@Andrew_V, Адрес самого датчика DS18B20 передается один раз только при подаче питания на передачик, далее только температура.

В тестовой прошивке и в правду не было акцента на этот момент тк изначально она предназначалась для анализа пакетов с передатчика...

Если всё же требуется распознать пакет с адресом ds18b20, то после смены статуса на RECEIVE_DATA_OK следует в первую очередь проверить availableDataRX(), если он не равен 9 - значит это пакет с адресом, его можно будет считать через getDataRX() побайтно.

А для чего он вам нужен в программной реализации приёмника если не секрет?

PS.Поправил пример вывода данных, теперь адрес ds18b20 будет отображаться в логе.
 
Изменено:

Andrew_V

✩✩✩✩✩✩✩
16 Июн 2024
5
0
Спасибо! Теперь понятно. Я хочу использовать один приемник и несколько датчиков температуры. Верно я понимаю, что надо изменить программу в передатчике для этой цели? Что бы адрес передавался каждый раз
 

Sergo_ST

★★★★★★✩
15 Мар 2020
979
829
@Andrew_V, Так каждому передатчику можно задать один из четырех адресов с помощью перемычки на PB3(смотрите шапку темы), но если этого недостаточно, пресеты адресов можно изменить указав новые в исходнике прошивки передатчика.
Адрес самого ds18b20 вам для этого не к чему, тк в прошивке приемника он используется исключительно для реализации работы адресации на шине 1wire.
 

Andrew_V

✩✩✩✩✩✩✩
16 Июн 2024
5
0
@Sergo_ST, Спасибо. Попробовал - коды датчиков отображает! Еще вопрос. Несколько датчиков шлют данные на один приемник. В приемник прописывается адрес ds18b20 первого, или не прописывается - если премник не получил ни с одного датчика его первый сигнал (датчики включены раньше чем был включен приемник) - не должно быть проблем при приеме данных? Опытным путем установил, что вроде как проблем нет. Но мало ли...
 

Sergo_ST

★★★★★★✩
15 Мар 2020
979
829
@Andrew_V, Как я и говорил выше, ID самого датчика ds18b20 нужен только для реализации адресации на шине 1wire, тобишь когда к одному проводу подключено например несколько физических датчиков и приёмник радиоудлинителя.