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

Вложения

Изменено:

kym13

★★★✩✩✩✩
14 Ноя 2020
700
112

@МОРО1986,
Я указывал только плату и частоту больше ничего не трогал ну и программатор.
 

МОРО1986

✩✩✩✩✩✩✩
8 Фев 2023
26
5
Чертовщина какая-то ... Может у меня Attiny бракованные все? Уже другую взял, прошил, такая же фигня как и раньше (((
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
@МОРО1986,
Если прошиваются, значит рабочие.Где то ошибка, неисправность.Кстати, передатчик отключаете?, он может не пережить прошивок.
 

МОРО1986

✩✩✩✩✩✩✩
8 Фев 2023
26
5
@vik72, ну мне несколькими постами выше советовали прошивать их отдельно от платы, или отключая всю навеску от них. Мне проще выпаять.
Сейчас попробовал другие приемник с передатчиком поставить. Все синхронизируется, но по прежнему данные не выдает...
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
@МОРО1986,
Если синхронизируется, а данных нет, скорей всего ошибок и помех столько ,что МК не понимает, и не может обработать и применить.Осциллограф в этом очень бы помог, посылки и помехи, стало б видно куда копать.
Да, по программаторам, UsbAsp ,STK-500, и другие позволяют программировать не выпаивая МК, и ничего им не мешает.
 
Изменено:

МОРО1986

✩✩✩✩✩✩✩
8 Фев 2023
26
5
@vik72, возможно. Меня смущает что все это происходит только при подключении линии DQ...
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
@МОРО1986,
Может DS18B20 не исправны.Однажды попадались не определялись в некоторых устройствах, хотя в других работали.
 

МОРО1986

✩✩✩✩✩✩✩
8 Фев 2023
26
5
Еще странно то что если залить готовую прошивку в приемник, он не хочет синхронизироваться с передатчиком, хотя Attiny прошивается и читается, а если залить через Ардуино -синхронизируется. Может дело в самих Attiny?
У меня вот такая.


Новый рисунок (13).jpg
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
@МОРО1986,
Обычные тиньки, у меня такие же, некоторые прошивки с темы не работают, надо с шапки брать, там точно работают.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,057
877
@МОРО1986, Прошивки нужно скачивать с гитхаба, если вы качаете прошивки с этого форума, которые подписаны как "6ms", то инструкция по настройке к ним не применима, это старые прошивки. А второй момент - у них старая эмуляция 1wire, она может не работать с некоторыми устройствами.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,057
877
@МОРО1986, Тогда подключайте к Ардуинке приёмник(только не к D0/D1/D13). Не забывайте про подтяжку в 4.7кОм шины данных к общему питанию. Масса приемника и масса Ардуино должны быть объединены.
Затем заливайте эту прошивку в ардуино и открывайте монитор порта, скорость 9600.
То что будет в логе прикрепите сюда текстовой вставкой.

PS. По умолчанию в прошивке отладки шины указан пин D11.
 
Изменено:

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
@Sergo_ST,
Здравствуйте. Спасибо большое за разработку, пожалуй единственный эмулятор который работает. Некоторые приёмники плохо работают, думаю, просто не успевают подстроиться. Можно ли подправить прошивку, чтобы увеличить количество посылок, или увеличить время посылки, тогда приёмник точнее настроится.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,057
877
@vik72, Вы имеете ввиду увеличить количество импульсов "раскачки"?
Если да, то за это отвечает деф PITC_LENGTH в прошивке передатчика. Количество единиц должно быть чётным и не менее 8.
Обратите внимание что их два, один для SLOW_MODE 0 другой для SLOW_MODE 1.
 
Изменено:

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
Ну да, наверное, только открыть и прочитать исходник, и скомпилировать, проблема.
CvAvr не подходит.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,057
877
@vik72, В Ардуино ИДЕ открываете исходник. Нужно установить ядро указанное в шапке прошивки.
Затем "Скетч" -> "Экспорт бинарного файла". Файл hex появится в папке с исходником.
 

vik72

✩✩✩✩✩✩✩
23 Мар 2023
21
4
@Sergo_ST,
Как то мимо ардуино прошёл, не сталкивался.Спасибо, посмотрю, попробую разобраться.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,057
877
@vik72, В любом случае если хотите поэкспериментировать то надо разбираться)
Вот прошивка с увеличенным количеством импульсов "раскачки" в 4 раза.
 

Вложения

  • Лойс +1
Реакции: vik72

МОРО1986

✩✩✩✩✩✩✩
8 Фев 2023
26
5
@Sergo_ST, благодарю, буду пробовать. Не могли бы вы, пожалуйста, подсказать ещё про калибровочный байт, который надо записать в OSCCAL. Я их считал с МК, а вот как записать так и не понял...
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,057
877
@МОРО1986, В каждой из прошивок есть деф - OSCCAL_SET, туда нужно указать полученное значение вместо 0 от конкретного мк. Затем нужно пересобрать прошивку.

И ещё, забыл написать сразу, в прошивке отладки шины по умолчанию используется пин D11, но можно указать и другой, кроме D0/D1/D13.
 

МОРО1986

✩✩✩✩✩✩✩
8 Фев 2023
26
5
@Sergo_ST, а как перевести то что я считал с МК (допустим у меня считалось значение 283B), в то что нужно записать в OSCCAL?