02.04.2019, 21:13 | #1 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (5127)
|
DCC "по-воздуху"
Решил написать в отдельную тему, т.к. другие темы по радиоуправлению, вроде как не имеют отношения к DCC.
Я давал уже ссылку на этот проект, в теме со ссылками по проектам на базе Arduino. Т.к. я планирую, также, как и Андрей, использовать на макете состав для чистки рельсов и чтобы не быть завязанным на плохой токосъём, в процессе чистки, мне было интересно попробовать, как это вообще работает и можно ли это использовать. Собрал из подручных средств два устройства и попробовал по-управлять. Для себя решил добавить, в схему передатчика, опторазвязку на базе 6N137, ну и питание сделал отдельное, а не от DCC. Для управления, приёмник обрабатывает только команды, отправленные на конкретный, прописанный в скетче, локомотивный адрес. Изменить его можно, только перепрошив заново ардуино, прошивкой с новым значением адреса. Надо будет подумать, как это можно изменить. В ходе тестирования, также обнаружился один неприятный момент. Приёмник никак не реагирует на выключение DCC или питания передатчика, либо потерю связи с ним. Это не очень приятный момент, т.к. при этом мы полностью теряем контроль над локомотивом. Он в это время будет выполнять последнюю, полученную им команду и хорошо, если это будет команда остановки. А если нет? Решил исправить ситуацию и немного подправить код. Управление драйвером двигателя осуществляется цифровыми выходами D5 и D6, состояние которых изменяется прерыванием по таймеру2. Немного почесав тыковку, пришёл к такому решению...... При отсутствии входящих сообщений по радиоканалу, необходимо запретить работу прерываний и установить на портах D5 и D6 низкий уровень, что приведёт к снятию питания на выходе драйвера. При появлении сообщений, требуется всего лишь снова разрешить прерывания. Для этого в скетче приёмника, в цикле loop, добавляем пару строчек(выделены слешами//): Скрытый текст
Теперь при нажатии кнопки Стоп на мультимаусе, отключении питания передатчика или потери сигнала, питание с декодера сразу снимается и лок останавливается, а после восстановления соединения продолжает выполнять поступающие команды. Буду это воплощать в "железе", на нормальных платах, т.к. радиомодули очень чувствительны к потерям контакта и качеству питающего напряжения.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
5 пользователя(ей) сказали cпасибо: |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Rocrail+OpenCar System=RailCom "по-воздуху" | laba | Rocrail | 5 | 13.09.2017 19:56 |
"Пять копеек" старого "ворчуна" по теме "электроника" | старлей | Флейм | 17 | 13.01.2014 14:31 |