![]() |
![]() |
#1 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,591
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,677
Поблагодарили 4,666 раз(а) в 1,769 сообщениях
Репутация: репутация неоспорима (4950)
![]() |
![]()
Решил написать в отдельную тему, т.к. другие темы по радиоуправлению, вроде как не имеют отношения к DCC.
Я давал уже ссылку на этот проект, в теме со ссылками по проектам на базе Arduino. Т.к. я планирую, также, как и Андрей, использовать на макете состав для чистки рельсов и чтобы не быть завязанным на плохой токосъём, в процессе чистки, мне было интересно попробовать, как это вообще работает и можно ли это использовать. Собрал из подручных средств два устройства и попробовал по-управлять. Для себя решил добавить, в схему передатчика, опторазвязку на базе 6N137, ну и питание сделал отдельное, а не от DCC. Для управления, приёмник обрабатывает только команды, отправленные на конкретный, прописанный в скетче, локомотивный адрес. Изменить его можно, только перепрошив заново ардуино, прошивкой с новым значением адреса. Надо будет подумать, как это можно изменить. В ходе тестирования, также обнаружился один неприятный момент. Приёмник никак не реагирует на выключение DCC или питания передатчика, либо потерю связи с ним. Это не очень приятный момент, т.к. при этом мы полностью теряем контроль над локомотивом. Он в это время будет выполнять последнюю, полученную им команду и хорошо, если это будет команда остановки. А если нет? Решил исправить ситуацию и немного подправить код. Управление драйвером двигателя осуществляется цифровыми выходами D5 и D6, состояние которых изменяется прерыванием по таймеру2. Немного почесав тыковку, пришёл к такому решению...... При отсутствии входящих сообщений по радиоканалу, необходимо запретить работу прерываний и установить на портах D5 и D6 низкий уровень, что приведёт к снятию питания на выходе драйвера. При появлении сообщений, требуется всего лишь снова разрешить прерывания. Для этого в скетче приёмника, в цикле loop, добавляем пару строчек(выделены слешами//): Скрытый текст
Теперь при нажатии кнопки Стоп на мультимаусе, отключении питания передатчика или потери сигнала, питание с декодера сразу снимается и лок останавливается, а после восстановления соединения продолжает выполнять поступающие команды. Буду это воплощать в "железе", на нормальных платах, т.к. радиомодули очень чувствительны к потерям контакта и качеству питающего напряжения.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
![]() |
![]() |
5 пользователя(ей) сказали cпасибо: |
![]() |
#2 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 99
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 239
Поблагодарили 155 раз(а) в 63 сообщениях
Репутация: - весьма и весьма положительная личность (155)
![]() |
![]()
Я немного запутался, а разве отключение прерываний не застопорит работу шины SPI, которая общается с nrf24? Может безопаснее останавливать сам таймер за номером 2?
|
![]() |
![]() |
![]() |
#3 | |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,591
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,677
Поблагодарили 4,666 раз(а) в 1,769 сообщениях
Репутация: репутация неоспорима (4950)
![]() |
![]() Цитата:
Если разъясните, как это грамотно сделать, все будут только благодарны. Это не мой конёк, я бы так сказал.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
![]() |
![]() |
![]() |
#4 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 99
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 239
Поблагодарили 155 раз(а) в 63 сообщениях
Репутация: - весьма и весьма положительная личность (155)
![]() |
![]() |
![]() |
![]() |
Пользователь сказал cпасибо: |
![]() |
#5 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,591
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,677
Поблагодарили 4,666 раз(а) в 1,769 сообщениях
Репутация: репутация неоспорима (4950)
![]() |
![]()
Спасибо, попробую обязательно. По результатам отпишусь.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
![]() |
![]() |
![]() |
#6 |
Заглянувший
Регистрация: 09.08.2009
Адрес: Донецк
Сообщений: 59
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 5
Поблагодарили 71 раз(а) в 16 сообщениях
Репутация: скоро придёт к известности (71)
![]() |
![]()
Лучше использовать есп8266, там и контроль подключения можно настроить (именно потерю соединения покажет), да и модуль интереснее, компактнее. Короче масса плюсов.
|
![]() |
![]() |
![]() |
Опции темы | |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Rocrail+OpenCar System=RailCom "по-воздуху" | laba | Rocrail | 5 | 13.09.2017 19:56 |
"Пять копеек" старого "ворчуна" по теме "электроника" | старлей | Флейм | 17 | 13.01.2014 14:31 |