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

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
Прошивки для радиоудлинителей 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 за тестирование прошивок и схемы подключения!
Если есть вопросы/проблемы, или вы нашли баг, пишите в ЛС или ниже в теме.
 

Вложения

Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
ver RX 4.0.0
  • Новый алгоритм обработки шины 1wire(позволяет обрабатывать практически все варианты поведения шины).

@serhiy58, Попробуйте последнюю версию приёмника, должно помочь...
 

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
Всем спасибо!Всё работает отлично,правда RX-тинька не пошла (не дружила с приёмником,шилась,сверялась всё ок)заменил и всё заработало,но при синхронизации адреса передатчика с приёмником светик моргнул только на TX,дальше всё по инструкции и температуру показывает!
Почему так?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
@record35, Какие версии прошивок? При передачи данных светодиод на приёмнике загорается в так передатчику?

При переводе приёмника в режим программирования адреса, светодиод на нём должен светиться постоянно, пока не будет получен новый адрес от передатчика(но это на последних версиях только).
 

serhiy58

✩✩✩✩✩✩✩
20 Май 2019
17
8
Попробуйте последнюю версию приёмника, должно помочь
Спасибо. Попробую - отпишусь :)
Увы! :-(
Перепробовал всякие варианты библиотек и с милисами и с дилеями - кругом Ваш емулятор прекрасно работает, - спасибо за труд! Но с (https://www.thingiverse.com/thing:3924947 ) дружить не хочет... Вставляю "живой" датчик - показывает, подключаю эмулятор - пишет датчик не подключен... Так что видно не судьба с ним. Проще будет сменить проект... Еще раз сапсибо за ответы.
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
@serhiy58, Подключаете точно правильно? Подтяжка на шине только в одном месте резистором 4.7кОм?
Пс. Если есть осциллограф или лог.анализатор, замерьте, сколько проходит время между сигналом сброса и первым пакетом, возможно нужно ещё увеличить таймаут шины.
 
Изменено:

serhiy58

✩✩✩✩✩✩✩
20 Май 2019
17
8
время между сигналом сброса и первым пакетом,
первое фото 500мкс, если я не ошибаюсь, - это на "живом" DS18b20
второе фото - на эмуляторе

"Во время последовательности инициализации ведущее устройство передает импульс сброса (Tx), формируя на шине сигнал низкого уровня в течение времени не менее 480 мкс. Далее, ведущее устройство освобождает шину и переходит в режим приема (Rx). Когда шина освобождается, она подтягивается к высокому логическому уровню резистором 5 кОм. Датчик выделяет положительный фронт, ждет 15-60 мкс и передает импульс присутствия, удерживая низкий уровень линии на время 60-240 мкс. " (это из описания)
у нас это ожидание 7 мкс(я измерил), а когда стоял DS18b20, было 38 мкс. Может здесь собака порылась... :).
 

Вложения

Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
@serhiy58, Это на прошивке из поста выше? Нет, у вас же явно видно что часы видят сигнал присутствия и начинают отправлять данные. Причем первая команда 0xCC - пропуск адресации.
Очень странно что при этом часы пишут что датчика нет... А между байтами тоже задержка в районе 400мкс?
 

serhiy58

✩✩✩✩✩✩✩
20 Май 2019
17
8
@Sergo_ST, прошивка последняя, из поста выше. Между байтами 500 ровно, вот только ожидание датчиком после сброса вместо 15-60 всего 7 мкс.
возможно я с перемычкой начудил: у меня РВ4 на земле а РВ3 + питания?
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
@serhiy58, Маловероятно, не думаю что часы не видя подчинённых на шине, будут начинать обмен. На приемнике PB3 и PB4 никуда подтягивать не нужно, на PB3 можно повесить кнопку для удобства программирования адреса передатчика.
Если на шине будет только подтягивающий резистор, то после сигнала сброса будут идти пачки бит?
Какая длительность низкого уровня после сигнала присутствия(1-й бит)?
 

serhiy58

✩✩✩✩✩✩✩
20 Май 2019
17
8
  • это без датчика(3)
  • это с датчиком(4)
  • ровно 400мкс
я имел ввиду перемычки на передатчике : как должны стоять?
 

Вложения

Изменено:

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
@Sergo_ST,Всё работает как надо,но при синхронизации адреса передатчика с приёмником светик моргнул только на TX,вот что смутило.А вот синхронизация адреса передатчика с приёмником прошла как положено.
 

ZACC

✩✩✩✩✩✩✩
19 Мар 2023
1
0
подскажите по перемычкам. у меня 2 перемычки на земле и считывание идет раз в 10 минут. можете объяснить комбинации? (для 1 минуты нужно только РВ4 на землю?)
и еще вот эту синхронзацию, она делается один раз? или нужно при каждом разе когда отключит от питания часы и наружный датчик? собрал на платке на МК атини13, модульWL101-341 WL102-341 .
Спасибо
 

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
@ZACC, Всё зависит от версии прошивки, раньше время задавалось двумя перемычками, сейчас - одной. В исходнике прошивке передатчика дублируется описание перемычек.
Если вы про синхронизацию адреса передатчика или датчика температуры, то да, один раз, потом данные загружаются из памяти.
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
4
2
Здравствуйте.Спасибо Автору за отличную разработку и прошивку.Правда передатчик немного переделал,не смог запустить от 3 вольт.Добавил повышайку и все заработало.Передатчик WL101,хоть и пишут питание 3,6 вольт,но прекрасно работает и от 5вольт(в другом проекте уже более 2 лет).Так-же работает и FC1000(этот точно не боится 5 вольт).Схему взял с Radiokot.ru(Простые часы на светодиодных матрицах)
{6082976A-CA77-484F-B296-C0302061E710}.png
И мои печатные платы(может кому помогут)
Всем удачи.
 

Вложения

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

wws63

✩✩✩✩✩✩✩
22 Окт 2022
2
1
@Sergo_ST,
Светодиод на передатчике и приемнике практически одновременно периодически сигналят, но показания температуры на часиках не появляются. А есть ли возможность изменить алгоритм передатчика таким образом, например, через минуту после замера температуры происходит повторное измерение и если температура не изменилась, то следующее измерение произойдет через несколько (можно десятков) минут. А результат температуры хранить в ОЗУ. Всё это время при запросе от приемника ему скармливается значение температуры из этого ОЗУ. ТОгда при запросе (с любой периодичностью) от приемника ему всегда будет доступно какое то значение температуры. Прошу прощения, если запутанно выразил свою мысь.
 
  • Лойс +1
Реакции: S_Sergey_G

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
Народ подскажите с этой схемой будет работать,а то что-то показывают -99.9 (в других часах приёмник работает)
 

Вложения

  • 472 KB Просмотры: 19

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
Не один датчик температуры не подключен только радиодатчик.
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
4
2
Это схема с Radiokot.ru -Простые часы на светодиодных матрицах.Автор OLED.Почитайте эту тему,там есть развитие этих часиков с радиодатчиком.Автор прошивок- alcxa,100% рабочие,проверено много раз.По радиоудлинителю,скорей всего нет приема данных с передатчика,поэтому нет записи в МК приемника и часы показывают потерю датчика.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
810
737
@record35, Нужно больше информации по удлинителю, как собрали и подключили, что за прошивка, есть ли осцилограммы того что творится на шине 1wire?
У радиоудлинителя только две ошибки: -85 и +125, всё остальное это уже сами часы формируют.
 

record35

✩✩✩✩✩✩✩
27 Сен 2019
11
1
@vik72,Да вы правы это схема с кота,тема распухла до 520 стр. найти нужную инфу очень сложно,по радиоудлинителю:приём данных есть т.к.этот приёмник работает в других часах.
@Sergo_ST,собрал по схеме из шапки,от туда-же и прошивка,ослика увы нет,есть игрушка ослик до 20кГц,радиоудлинитель работает вот фото в других часах.
P.S. А может надо заново адрес прописывать?А то я взял приёмник с одних часов и воткнул в другие.
 

Вложения

Изменено:

vik72

✩✩✩✩✩✩✩
23 Мар 2023
4
2
Да,тема большая,но на мой взгляд достаточно проштудировать последние страниц 20-30.Я данный эмулятор соединил с часами SuperClock,тоже с Radiokot.Отлично работает.Со схемой OLED не пробовал,разъемы сильно не совпадают,да и там свой радиодатчик,тож отлично работает.Только принцип передачи данных другой.Здесь передается температура умноженная на 5000,что бы уйти от проблем с минусом.Что касается адреса приемника,думаю значения не имеет.Раз приемник принимает,то и записывает в МК инфу.Видимо что то с обработкой не совпадает,или помех очень много.

Вот часики с радиоудлинителем.
33te68mzdo.jpg