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

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
Прошивки для радиоудлинителей 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.
  • Включить приёмник.
  • Включить передатчик.
  • Через 1,5сек светодиоды приёмника и передатчика должны загореться - адрес прописан.

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

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

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
  • Переработан алгоритм ответа на сигнал сброса.

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

Вложения

Изменено:

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
Вот спасибо!А влагу натащил-это пластик отсырел или на плате окислы?
 

maksland

★★★✩✩✩✩
13 Янв 2019
463
105
Omsk
PETG, но я еще дихлометаном обработал его. Влагопоглотитель надо было ложить.
Плата чистая, на крышке, сверху ледок был. Вода везде путь найдет :). Или заводской использовать
 

Вложения

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
Ок,учту про селикогель,нашёл такую коробку,два отвести заглушу,батарейку купил такую,ну и углевод перересую,спасибо за помощь,надеюсь на быстрое развитие в развитии.
PSПринтер есть,попробую пока такую, хотя ip-65 х.з.
 

Вложения

Изменено:
  • Лойс +1
Реакции: maksland

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Вопрос к уважаемому
Sergo_ST.
Я спрашивал про адрес который записывается в еепром приёмника, так всё таки как он выглядит ?
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Про какой адрес идёт речь? В последней версии прошивки их 2 - адрес датчика температуры и адрес передатчика.
Первые 8 байт - адрес датчика температуры, 15-й байт (по умолчанию) - адрес передатчика.
Прошивку 6ms из шапки темы пробовали?
Заливаете уже собранные прошивки(hex) или собираете через ИДЕ?
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Я спрашивал про адрес передатчика.
После того как прижал пин PB3 приёмника к земле, подал питание, светодиод на приёмнике светится постоянно.
Подаю питание на передатчик, через 3 секунды светодиод на передатчике зажёгся а на приёмнике погас, адрес передатчика записался в еепром приёмника я правильно понял ?
 
  • Лойс +1
Реакции: 13O13A

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Да, но погасший светодиод говорит то что передача данных завершена, но если были проблемы, то пакет данных будет пропущен(в тч и адрес). Светодиоды на передатчике/приёмнике должны зажигаться/гаснуть одновременно. Если на приёмнике гаснет раньше - скорее всего проблема с таймингами или много помех.
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Я микроконтроллеры прямо соединил

Вот так выглядит еепром приёмника после вышеописанных мной действий.
Прошивку я брал из ссылки на гитхабе2023-02-18_19-56-13.png
 

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Вы так и не ответили, прошивку 6ms пробовали?
В ЕЕПРОМ всё верно, 15-я ячейка равна 0, те адрес успешно сброшен. Массы приёмника и передатчика объединены?
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
А почему он сброшен если я его прописать пытаюсь и почему не прописан адрес датчика температуры DS18B20 который подключен к передатчику ?
Или я что то не так делаю ?
Я в своём первом посте писал что пробовал все прошивки какие есть в ветке.....
Питание приёмника и передатчика общее от макетой платы
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Скорее всего проблема с таймингами, тк пакет данных пропускается. Возможно фьюзы неверные, прочитайте их из мк, у приёмника должны быть - Low 0x7A High 0xFF, у передатчика Low 0x79 High 0xFB.
Да, я видел что вы пробовали все прошивки, меня интересует именно эта тк она 100% рабочая.
Приёмник подключен к чему-нибудь по шине 1wire во время записи адреса?
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Фьюзы точно такие как вы указали.
Приёмник только запитан, подтягивающий резистор PB1 на 4,7к обязателен во время записи? Я с ним и без него пробовал
 

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
Подключено точно всё правильно? Какая нога мк передатчика подключена к какой ноге мк приёмника? Пины мк ресет подтянуты к +питания?
Резистор подтяжки шины 1wire желательно установить.
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
PB1 передатчика к PB0 приёмника, ресет к питанию подтянут.
Я бы понял проблему с таймингами по радиоканалу но тут прямое подключение
 

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
Без разницы прямое соединение или радио, тайминги задаются и считываются мк, если мк работает не на той частоте что предполагается в программе, то и тайминги уйдут в след за ней.
Если фьюзы верные и всё подключено точно правильно - значит остаются только мк.
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Уважаемый Sergo_ST извините что надоедаю.....
Прописал я ручками в еепром адрес условного датчика DS18B20 и устройство вместо 0 стало отображать код ошибки 125, стало быть прошивка в МК крутится и на счёт таймингов вы совершенно справедливо сделали замечание !
Нашёл я в закромах парочку старых тинек и хотел уже паять но вот чего подумал.......
У меня есть 7 устройств к которым я хотел сделать радиоудлинители и столько старых тинек у меня всё равно нет да и заниматься перепайкой каждый раз в надежде повезёт не повезёт тоже не совсем айс и возможно я не последний кто с этим столкнулся, может попробовать вот такой вариант https://www.joyta.ru/13516-kalibrat...vosstanovleniya-fyuzov-avr-mikrokontrollerov/
Вдруг у вас будет время и вы чего по программе подскажете , я в языках программирования как бэ это помягче......не силён. У меня программатор аля STK500 пользуюсь им через AVR Studio 4, калибровочные байты он читает, пишет, что скажете ?
tiny44_84 у меня на данный момент нет но есть отладочная плата mega2560 только кварц на 12 мГц в неё придётся вкорячить, для неё из исходников по ссылке выше прошивка компилируется, попробую на ней изобразить калибратор.
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Не знаю зачем Вы собираетесь калибровать OSC, но допуски по таймингам приёма очень широкие. Отклонение в несколько процентов никак не повлияет на распознавание сигнала. К примеру, если прошивки в SLOW_MODE то логическая единица это длительность высокого уровня в 1500мкс, окно для распознавания будет: 750мкс - 2250мкс.
То что у вас нормально работает шина 1wire, косвенно говорит об исправности мк приёмника. Следственно остаётся проблема или в подключении или в мк передатчика.
 
Изменено:
  • Лойс +1
Реакции: poty

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Sergo_ST, я писал в сообщениях выше что собрал два комплекта приёмника и передатчика, поведение у них совершенно одинаковое.
Вы думаете в обоих случаях проблема в подключении и в МК передатчика ?
Программы в МК крутятся, я смотрел осциллографом опрос микроконтроллером DS18B20 в передатчике и выдачу сигнала на модуль WL101-341 всё красиво.
У приёмника если адрес датчика руками прописать шина 1-wire тоже работает МК отвечает на запрос.
Вы же сами писали про тайминги вот я и подумал от чего они могут зависеть кроме как не от CLK ?
Я по примерам из ссылки выше попробовал ручками подобрать калибровочные байты для микроконтроллеров но так как языков программирования не знаю возникли трудности.
Пример использует 0 ячейку ЕЕPRОМ а у нас туда записывается адрес датчика а у меня сменить ячейку не получилось.
Может подскажете как установить значение OSCCAL=0x39; напрямую без EEPROM ?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Проблема с таймингами имелась ввиду как следствие неверной частоты мк(будь то брак/неверные фьюзы или ещё что). Калибровка OSC ничего не даст.
Если вы делали замеры осциллографом выходного сигнала на передатчик, какая была длительность высокого уровня сигнала(неважно в какой момент)?
 

alexangarsk

✩✩✩✩✩✩✩
29 Окт 2022
17
1
Не дождался ответа поменял МК из старой партии, с ними всё работает как задумал автор проекта.
Прилагаю осциллограммы.
В процессе экспериментов выяснил что у новых микроконтроллеров CLK ниже ~ 400 - 500kHz.
У микроконтроллеров из старой партии чётко соответствует установленным фьюзам.
 

Вложения

Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
820
742
@alexangarsk, Странно, вроде и предыдущая осциллограмма по таймингам должна попадать... Но тут неизвестно в мк приёмника что с частотой ещё...