Форум ModelldepO  

Вернуться   Форум ModelldepO > Моделизм > Электрика и DCC > Arduino
 
 
Опции темы Опции просмотра
Старый 02.04.2019, 21:13   #1
laba
Местный
 
Аватар для laba
 
Регистрация: 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, добавляем пару строчек(выделены слешами//):
Скрытый текст
Arduino код:
void loop(){
  
Serial.println("trying");
  
delay(100);   
   
  if ( 
radio.available() ) {
        
radio.read( &dataReceivedsizeof(dataReceived) );
        
newData true;
  
  
////////////////////////////////////////////////////////////////////////      
        
interrupts();//подключаем прерывания
  ////////////////////////////////////////////////////////////////////////  
    
    
}
    
  
//////////////////////////////////////////////////////////////////////////////////////////////////  
    
else{noInterrupts(); PORTD B00000000;}// иначе отключаем прерывания и устанавливаем на портах
    // управляющих драйвером низкий уровень, тем самым снимая питание на выходе драйвера.
  //////////////////////////////////////////////////////////////////////////////////////////////////
    
      
if (newData == true) {
        
//Serial.println(dataReceived);
        
inString String(dataReceived);
        
string();
        
newData false;
    } 

Теперь при нажатии кнопки Стоп на мультимаусе, отключении питания передатчика или потери сигнала, питание с декодера сразу снимается и лок останавливается, а после восстановления соединения продолжает выполнять поступающие команды.
Буду это воплощать в "железе", на нормальных платах, т.к. радиомодули очень чувствительны к потерям контакта и качеству питающего напряжения.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
5 пользователя(ей) сказали cпасибо:
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Rocrail+OpenCar System=RailCom "по-воздуху" laba Rocrail 5 13.09.2017 19:56
"Пять копеек" старого "ворчуна" по теме "электроника" старлей Флейм 17 13.01.2014 14:31


Текущее время: 03:45. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Copyright © ModelldepO.ru 2006 -