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

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

Вложения

Изменено:

Комментарии

Sergo_ST

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

Вложения

Изменено:

AndrewVass

✩✩✩✩✩✩✩
28 Май 2024
8
0
@Sergo_ST, Ну я на макетке вообще отключаю передатчик - и ток практически не меняется. При подключенном передатчике он даные передает нормально. Светодиод индикации передачи успешно моргает. Attiny13a пробовал две штуки и одну v - результат практически идентичен
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@AndrewVass, Попробуйте измерить голый мк, без датчика температуры и радиопередатчика, отставив только подтяжку ресет. Может не так измеряете?
 

AndrewVass

✩✩✩✩✩✩✩
28 Май 2024
8
0
@Sergo_ST, Я ставил на него прошивку моргания светодиодом отсюда http://we.easyelectronics.ru/AVR/avr-power-management-ili-kak-pravilno-spat.html и при вкл светодиоде потребление 5 мка, а во сне мой прибор показывает ноль - то есть менее 1 мка. Но сегодня померяю отключив датчик температуры. Что то мне подсказывает, что врядли это повлияет на результат) Сколько у вас потребление?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@AndrewVass, Попробуйте в строку 128 прошивки передатчика добавить это:
C++:
ADCSRA = 0x00;
Я только прошивку писал, тестировал @maksland, и насколько я помню потребление было(и должно быть) околонулевое. Но тк в новых ревизиях прошивки был добавлен опрос ацп, возможно из-за того что он не был полностью выключен осталось включенным опорное напряжение...
 

AndrewVass

✩✩✩✩✩✩✩
28 Май 2024
8
0
@Sergo_ST, Огромное спасибо! Заработало. При отключенном передатчике в режиме сна 6-7 мка потребление на Attiny13A и почему то 20 мка на Attiny13v, хотя вроде как на ней должно быть меньше). При подключенном 20 мка (но я планирую использовать другой модуль передатчика без ноги EN и запитывать его непосредственно от PB0. Надеюсь, что будет меньше кушать)

@poty, Да. Прошу извинить. Когда горит - 700 мка примерно (тускло так горит)).
 

AndrewVass

✩✩✩✩✩✩✩
28 Май 2024
8
0
Не подскажите как доработать прошивку приемника для приема данных с нескольких датчиков? Если я верно понимаю, можно убрать проверку соответствия адреса датчика ранее сохраненному. Но как это реализовать - мне не хватает знаний...
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@AndrewVass, Не нужно ничего менять, просто используете во всех передатчиках один и тот же адрес.
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
501
149
@AndrewVass,
По моему данная реализация не позволяет использовать один приемник для опроса нескольких датчиков.
По крайней мере я не увидел такой возможности в коде. Выдается всегда последнее принятое значение температуры, и понять от какого конкретно датчика оно пришло - невозможно. Небольшими изменениями кода это не исправить.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@Bruzzer, Всё так, этого и не предполагалось тк это просто "удлинитель" датчика температуры. А вот вопрос для чего это нужно @AndrewVass остаётся открытым...
 

AndrewVass

✩✩✩✩✩✩✩
28 Май 2024
8
0
@Sergo_ST, Хочу решить задачку мониторинга температуры с нескольких автономных датчиков и записи получаемых данных. Пока что реализовал запись на sd карту с заданным интервалом с одного датчика. Можно конечно к каждому датчику прилепить свой приемник, но как то это не красиво) И да - просто этот код под такую задачку не переделать, это я уже понял)
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@AndrewVass, Если всё же необходимо знать с какого именно датчика пришли данные, то в данной реализации это невозможно. Для этого потребуется или новый контроллер с большим количеством памяти чтобы реализовать данную функцию, либо же, если проект в который требуется передавать эти данные с открытым исходным кодом, то проще перенести в него приём данных с радиоканала. У меня где-то была подобная реализация(кто-то ранее просил сделать), пишите в лс, попробую найти её...
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
90
20
Здравствуйте. Решил и я собрать радиоудлинитель. С самого начала всё идёт не по описанию. Прошился без проблем Синапрогом. Включаю приёмник, включаю передатчик, на передатчике диод загорается постоянно, на приёмнике моргает 2раза и гаснет(уже не так, по описанию должен гореть постоянно). Ладно иду дальше, выключаю и передатчик и приёмник, припаиваю РВ3 к земле, включаю, светодиод не горит(опять не так). Вычитал на форуме, что надо выпаять резистор нулевой, это к моей ситуации относится? Прошивка 6мс, или надо с гитхаба заливать?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@nick 56, Инструкция написана для актуальных прошивок на гит-хабе. И прошивать я рекомендую именно их.
Прошивка 6ms которая закреплена в шапке темы очень старая, и логика сопряжения там была совсем другая, насколько я помню...
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
90
20
Скачал новые прошивки, перепрошился. Приёмник стал реагировать светодиодом на замыкание РВ3 на землю. Но с передатчиком теперь не реагирует. Обратил внимание, что программатор , когда ставлю руками Attiny13a, исправляет её на13.Наверное китайцы фуфло подложили, хотя на них написано13а.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@nick 56, Это без разницы, любая Attiny13 будет работать, если она исправна.
Вы фьюзы выставили для обоих мк верные? Схемы собрали полностью как в шапке, или только на голых мк экспериментируете?

При включении передатчика светодиод на передатчике мигает кратковременно несколько раз?
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
90
20
Схемы собрал полностью.
При включении передатчик моргает два раза.
Единственно, что не делал ,это не прописывал калибровочный байт, т.к не знаю как это делать. Но вроде это не обязательно.
 

Вложения

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@nick 56, Отключите радиомодули(433) от передатчика и приемника, и соедините приемник и передатчик напрямую, объединив земли и дата пины для радиомодулей(433).
Затем ещё раз проделайте процедуру прописывания адреса передатчика(именно передатчика, а не датчика температуры).
Если реакция приёмка появится - значит проблема в модулях радио 433.

И вы так не ответили, фьюзы выставили точно верные? Приложите скрины считанных фьюз для передатчика и приемника, пометив от какого какой скрин.

Прошивки собираете сами, или используете уже собранные(hex)?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,000
837
@nick 56, В таком случае, если всё точно собрано правильно и на PB5 есть подтяжка к +питания, тогда остаётся только проблема с калибровкой внутреннего генератора.
Нужно считать её и прописать в прошивке TX, деф - OSCCAL_SET. Ну и пересобрать прошивку соответственно.
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
90
20
Залил программы с источника, что указан в шапке, всё сразу заработало. Нигде ничего на платах не менял, фузы не трогал, т.к они одинаковые.
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
90
20
Sergo_ST, Всё таки хочется запустить Вашу прошивку. Считал и записал калибровочный байт, скомпилировал прошивку, а результат тот же. Даже напрямую без передатчика и приёмника не вяжутся. Светодиод передающей платы моргнет два раза, при подаче питания, и всё.
 

Andrew_V

✩✩✩✩✩✩✩
16 Июн 2024
5
0
Добрый день. Не могли бы помочь изменить программу для приемника так, что бы при каждом новом сигнале от передатчика прописывался новый адрес передатчика? Я принимаю сигнал от нескольких датчиков
update: проблему решил. после каждого приема данных просто сбрасываю контроллер!
 
Изменено:

ser535

✩✩✩✩✩✩✩
1 Янв 2022
3
0
При синхронизации адреса датчика температуры
Через 1,5сек светодиоды приёмника и передатчика должны загореться - адрес прописан.
Как загореться? У меня после Сопряжение передатчика с приёмником при включении мигает один раз на передатчике и приемнике, потом через минуту еще раз через примерно 8 секунд второй и т.д. При подключении датчика, при включении загорается светодиоды на передатчике и приемнике два раза, потом как и без датчика через минуту один раз и еще через 8 секунд, это значит датчик работает?
 

nick 56

★✩✩✩✩✩✩
11 Апр 2024
90
20
У Вас всё правильно. Надо было написать, что синхронно моргнут.