DCC++ - командная станция на Arduino без пайки

Вопросы и ответы связанные с цифровым управлением, аналоговой автоматикой и их элементами
Сообщение
Автор
ddor
Сообщения: 50
Зарегистрирован: Вс окт 12, 2014 1:52 pm
Имя: Дмитрий

DCC++ - командная станция на Arduino без пайки

#1 Непрочитанное сообщение ddor »

Всех с Новым Годом!

Где-то год назад захотел попробовать цифру, посмотрел на ценники и ужаснулся. Причем не только ценам, но и ограничением тех или иных систем и доплатой за каждый чих. В результате взял задёшево старый Lokmaus2, чтобы попробовать и определиться, определился, что хочу иметь возможность программировать CV больше, чем 99, одновременное управление парой-тройкой поездов, желательно, не вставая с дивана :) и возможность подключения к компьютеру. При этом не хочу платить за это более 50 евро и, тем более, получать в нагрузку закрытые протоколы, мелкий шрифт в инструкциях и обещания производителей допилить поддержку чего-либо позднее.
Как ни странно, нашёл ответ для всех моих хотелок, даже с запасом на будущие хотелки. DCC++ - это командная станция и бустер на 1.5 А на основе Arduino со свободно распространяемым кодом. Минимально необходимое железо - Arduino UNO или Mega 2560 + Motor Shield (на L298P) + блок питания на 12-15 В. К компьютеру подключается по USB (serial communication). При желании можно использовать Bluetooth модуль для ардуино и, таким образом, избавиться от проводов. Если в качестве мозгов использовать Mega 2560, то можно добавить ethernet shield (w5100). И ничего не надо паять. В случае использования китайских модулей всё это укладывается бюджет с большим запасом.

Итак, что мы имеем за 20 евро (Mega + Motor Shield, БП найдётся в закромах):
- 12 локомотивов в одновременной работе (на Arduino Mega можно в коде задать в пару раз больше)
- 128 скоростей. Это может быть проблемой, если в хозяйстве есть декодеры на 14 скоростей. Но вряд ли таких много.
- до 28 функций декодера
- программирование на макете + программирование и чтение CV на пути для программирования
- поддержка аксессуарных декодеров
- Мониторинг потребляемого тока. В коде порог отключения питания стоит на ~ 1А, можно увеличить, если БП и Motor Shield позволяют.
- Не используемые для генерации сигнала DCC выводы Arduino (8 для UNO и штук 40-50 для Mega) можно использовать как входы для сенсоров или цифровые выходы (например, включать и выключать освещение на макете). Автор будет попробовать добавить дополнительные Mega на шине I2C, где каждая будет считывать сенсоры/ управлять сервами и т.п., так что потенциально отпадает необходимость в декодерах для стрелок.
- Простой протокол для общения с внешними программами. Из известных уже поддерживается в JMRI. Автор DCC++ также выложил свою программу для управления / автоматизации.

Проект находится в начальной стадии, материалов почти нет. То же описание протокола существует не в виде отдельного документа, а как комментарии в коде.
Основные ресурсы (на английском):
Веб-сайт (пустой): http://dccplusplus.github.io/
Код базовой станции и управляющей программы: https://github.com/DccPlusPlus
Обсуждение проекта: http://www.trainboard.com/highball/inde ... ace.84800/
Видео с объяснением, как это работает и как это использовать. Частично заменяет отсутствующую документацию. Объяснения принципов работы DCC очень хороши, рекомендую всем интересующимся.: https://www.youtube.com/channel/UCJmvQx ... IH-_g-_rZw

март 2016: Поддержка DCC++ добавлена в Rocrail: http://wiki.rocrail.net/doku.php?id=dccpp:dccpp-en
Последний раз редактировалось ddor Пт апр 01, 2016 11:22 am, всего редактировалось 1 раз.

qvan22
Сообщения: 1
Зарегистрирован: Вс мар 03, 2013 1:55 am

Re: DCC++ - командная станция на Arduino без пайки

#2 Непрочитанное сообщение qvan22 »

ddor писал(а): Сам пока не опробовал, т.к. встречаю праздники вне дома, и моя Mega до меня ещё не доехала. Но в течение января соберу и отчитаюсь.
Недавно тоже пробовал самодельную цифру на ардуино.
По части железа почти как у вас, а вот сам пример кода брал в другом источнике.
[Оффтопик]
http://www.trainelectronics.com/DCC_Arduino/controller
В итоге оцифровал свой первый локомотив и по управлял им через компьютер.
Правда без знания языка си тут будет очень сложно...

ddor
Сообщения: 50
Зарегистрирован: Вс окт 12, 2014 1:52 pm
Имя: Дмитрий

Re: DCC++ - командная станция на Arduino без пайки

#3 Непрочитанное сообщение ddor »

Правда без знания языка си тут будет очень сложно...
Так тут уже всё готово, на Си писать ничего не нужно, нужно в среде Ардуино скомпилировать и залить уже готовую программу. Тут больше вопросов к управляющей программе. Либо ставить JMRI, либо программу от автора, либо своё, либо посылать команды из консоли. Все варианты требуют хотя бы минимального чтения документации.

Утром почтальон принёс Ардуино, после работы я его подключил. Завелось с первого раза. На JMRI и программу от автора времени нет, поэтому я для себя набросал простенький контроллер на LabVIEW.
IMGP6651.JPG
После пяти минут заявленные функции по контролю локомотива работают стабильно (с декодерами ESU и Tams). Это очень понравилось. Аксессуарных декодеров нет, их проверить не могу.
Ложка дёгтя в том, что заявлены 128 только скоростей. У меня есть один декодер Roco на 14 скоростей, то, что он не отзывается, не было сюрпризом. Но также не заработал декодер из старого Roco ICE2 на 28 скоростей, также не заработали самодельные моторные декодеры от http://dccdiy.org.uk/. По совокупности, в моём случае, это много, так что я буду копать в направлении посылки команд в формате 28-ми скоростей.

Итог: я в восторге от простоты реализации и цены решения. Для маленького овала и современных фирменных декодеров - самое то, работает после включения, даже пилить ничего не надо. Для остальных применений надо допиливать. Буду пробовать изменить код для работы на 28-ми скоростях. В перспективе, хочу добавить Bluetooth, достать с антресолей старый КПК и написать для него контроллер на LabVIEW.

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Re: DCC++ - командная станция на Arduino без пайки

#4 Непрочитанное сообщение Onegin »

Декодерам нужно попробовать изменить CV29.
VBLO Digital Research.

Штык
Сообщения: 1
Зарегистрирован: Чт янв 28, 2016 11:06 am
Имя: Дмитрий

Re: DCC++ - командная станция на Arduino без пайки

#5 Непрочитанное сообщение Штык »

обясните для слабоумных какие пины нужно отрезать от мотор шилда? что то я не совсем понял там, тот который свыше 12 вольт может ввести на саму Ардуину с этим понятно, а вот сверху два которые breake A и breake B с ними что?

ddor
Сообщения: 50
Зарегистрирован: Вс окт 12, 2014 1:52 pm
Имя: Дмитрий

Re: DCC++ - командная станция на Arduino без пайки

#6 Непрочитанное сообщение ddor »

Onegin, спасибо, я опознал тот декодер как Lenz LE111, и 128 шагов он, в принципе, не понимает, про CV29 тоже не знает.
Штык писал(а):какие пины нужно отрезать от мотор шилда?
Надо не пины отрезать, а перерезать одну дорожку на плате, вот картинка: http://trainelectronics.com/DCC_Arduino ... tTrace.jpg
Больше ничего нигде резать не надо. Затем мотор шилд ставится на Ардуино, если это Мега, то сверху на шилде нужно добавить одну перемычку между pin2 и pin13 (картинка в третьем сообщении). Если использован Ардуино Уно, то перемычки нужны две, картинка здесь: http://trainelectronics.com/DCC_Arduino ... roller.jpg

PS: Понял вопрос после прочтения документа Motor Shield Pin Mappings. Если Вы пины 8 и 9 не собираетесь использовать в дальнейшем для подключения датчиков или как цифровые выходы, то перерезать дорожки Brake Disable A / B не обязательно. Система эти пины не использует, и пока к ним никакое устройство не подключено, эти контакты не мешают.

doctorby
Сообщения: 2
Зарегистрирован: Сб мар 12, 2016 9:30 am
Имя: Вадим

Re: DCC++ - командная станция на Arduino без пайки

#7 Непрочитанное сообщение doctorby »

Почитал тему и https://sites.google.com/site/dccppsite/the-system
Имею Arduino Mega, Motor Shield, локомотивные декодеры
Появились вопросы
1.От Motor Shield подключение к рельсам от канала А для эксплуатации? А к каналу В для программирования чего? стрелочных декодеров? И если их нет оно не понадобится? И как программировать декодер локомотива. При подключении питания к каналу А или В.
2.Какой блок питания? Написано 15-20 В, он должен быть стабилизированный или достаточно мост и фильтр, можно ли использовать импульсный ?
Спасибо за ответ.

ddor
Сообщения: 50
Зарегистрирован: Вс окт 12, 2014 1:52 pm
Имя: Дмитрий

Re: DCC++ - командная станция на Arduino без пайки

#8 Непрочитанное сообщение ddor »

Появились вопросы
1.От Motor Shield подключение к рельсам от канала А для эксплуатации? А к каналу В для программирования чего? стрелочных декодеров? И если их нет оно не понадобится? И как программировать декодер локомотива. При подключении питания к каналу А или В.
Канал А - это рельсы на макете, канал В - "Programming track", изолированный участок пути для программирования декодеров локомотивов. Написано по программированию лок. декодеров много, напр. http://www.dccwiki.com/Decoder_Programming
Программировать можно как на макете (если декодер поддерживает Programming on the Main), так и на Programming track, но адрес декодера можно менять только на Programming track, так что имеет смысл подключить и его. Также читать CV можно только на Programming track. Питание включается и выключается одновременно для обоих каналов. При программировании для макета или Programming track используются разные комманды, станция сама определит, куда посылать сигнал.
2.Какой блок питания? Написано 15-20 В, он должен быть стабилизированный или достаточно мост и фильтр, можно ли использовать импульсный ?
Большинство на исходном форуме использует импульсные БП от ноутбуков. 15-20 В - это по спецификации для H0, насколько я помню, на Motor Shield написано до 18 В. У меня исходно 19 В от БП от ноутбука и понижается на 7815 до 15 В.

doctorby
Сообщения: 2
Зарегистрирован: Сб мар 12, 2016 9:30 am
Имя: Вадим

Re: DCC++ - командная станция на Arduino без пайки

#9 Непрочитанное сообщение doctorby »

Вопросов все больше...
Собрал систему, блок питания подключил, рельсы.. И что-то не сложилось У меня декодеры Laisdcc http://laisdcc.com/LaisDcc_Decoders_Manual_V2.pdf, http://laisdcc.com/cvlist.pdf, скажу сразу, что помучившись с DccpController и так не смог запустить движение, у знакомого на Мультимаусе ввел CV1=3 и все поехало, свет горит, то есть декодер рабочий. Ну а с DCC++:
В среде Ардуино загрузил с сайта BaseStation, выбрал проверить, скомпилировать скетч. вылезло следующее:
E:\temp\BaseStation-master\DCCpp_Uno\DCCpp_Uno.ino:427:152: warning: backslash and newline separated by space [enabled by default]
R.currentBit=0; /* reset current bit pointer and determine which Register and Packet to process next--- */ \
E:\temp\BaseStation-master\DCCpp_Uno\DCCpp_Uno.ino:433:100: warning: backslash and newline separated by space [enabled by default]
R.tempPacket=R.currentReg->activePacket; /* flip active and update Packets */ \
E:\temp\BaseStation-master\DCCpp_Uno\DCCpp_Uno.ino:449:103: warning: backslash and newline separated by space [enabled by default]
} /* END-ELSE */ \
E:\temp\BaseStation-master\DCCpp_Uno\DCCpp_Uno.ino:450:88: warning: backslash and newline separated by space [enabled by default]
E:\temp\BaseStation-master\DCCpp_Uno\DCCpp_Uno.ino:196:59: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
CurrentMonitor mainMonitor(CURRENT_MONITOR_PIN_MAIN,"<p2>"); // create monitor for current on Main Track
E:\temp\BaseStation-master\DCCpp_Uno\DCCpp_Uno.ino:197:59: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
CurrentMonitor progMonitor(CURRENT_MONITOR_PIN_PROG,"<p3>"); // create monitor for current on Program Track
Но загрузился нормально и тесты проходит. Вопрос. что за сообщения?
Затем запустил Dccp контроллер, нажимаю Power on значок меняет цвет, на мотор шильде загораются светодиоды, дальше у меня тупик. Что делает Programming track? Что нужно вводить туда, когда вводил 1 в СV локомотив дергался и заполнялись поля hex03 dec 3 bin 00000011, engine adress read чуть дернулся short 3 long 0 Active short.
Дальше пробовал operations programming Выбирал cabы Выбрал 8601 вставлял СV 1 локомотив дергался и заполнял поля hex03 dec 3 bin 00000011 Byte 0-7 ставил 0, какой ставить? Нажал Write. Переставил на рельсы движения, на кнопку 8601 не реагирует не двигается, свет не включает. Так попробовал со всеми CAB. Эффект тот же.
В мануале написано, что можно в контроллере менять параметры. Almost all of the code you will need to customize for your own layout can be found in the "controllerConfig" tab of the Processing IDE. Definitions of the throttle, the cabs, and the cab buttons can be found starting at line 283. The first cab you'll see defined is #2004 in the following line:
cab2004 = new CabButton(tAx-125,tAy-150,50,30,150,15,2004,throttleA); но значений в скобках понять не могу. Очень хочется запустить, не хватает знаний. На http://www.trainboard.com ответа не нашел. Где копать, может есть более простой контроллер управления? Или прочитать о настройках этого более понятно. Может кто-то работает с этой штуковиной подскажите...

atom
Сообщения: 92
Зарегистрирован: Ср дек 23, 2015 4:40 pm
Имя: Сергей
Откуда: Ставрополь
Контактная информация:

Re: DCC++ - командная станция на Arduino без пайки

#10 Непрочитанное сообщение atom »

Раз аксакалы молчат, я давно "не играл с цифрой". Но помню первые проблемы были в том самом DCC+++.

Ранее было три варианта DCC14, DCC28 и DCC128. Рокомышь видела все три по умолчанию. А вот у ECOS надо было указать какой тип...
Это позже появились декодеры которые поддерживали все три варианта, и сами выбирали оптимальный тип...

Может и в Вашем случае, ноги растут оттуда?

Ответить

Вернуться в «Цифровое управление, Аналоговая автоматика и их элементы»