Простейший DCC декодер на Arduino

Первое новое сообщение

Аватара пользователя 1.Василий » Вс янв 24, 2016 2:35 pm

В процессе эксперименты и изучения всякой электроники применимой к нашему делу, получился у меня простейший DCC декодер. (все зачеркнутое более не актуально)

Код расположен тут https://github.com/YoulDHead/DCC_decoder

Сразу хочу оговориться, это не полноценный декодер, в коде пока не реализована полная (да и частичная тоже :)) разборка полученных пакетов. Мало того, я думаю что ресурсов использованной Arduino на полноценную разборку просто не хватит. Но в принципе, реализуя нужные кусочки, в дальнейшем можно получить вполне функциональные декодеры.

В результата получился вполне приличный и совсем даже не простейший декодер. Умеет быть мобильным и акссессуарным. Поддерживает достаточно большую часть возможностей описанных в NMRA.

Мне понадобилось -
Arduino Pro Mini самая дешевая трехвольтовая версия. Примерно 120р.
Опторазвязка 6N137 - 15р
Диод 1N4004 - 1р 10 коп.
Резисторы - 1k 1-шт, 10k 2-шт - примерно по 50 копеек за штуку.
Два регулятора на 3.3 и 5В и конденсаторы для их обвязки.
Монтажный провод, кусок текстолита.

Из остального, адаптер USB-TTL для программирования Arduino и компьютер с установленной средой.

Подключение электронной части - вот по этой схеме:

schematic1.png

Собственно код
[attachment=0]DCC_decoder.ino[/attachment]

В данный момент, декодер ловит пакеты с адресом 4 и выводит их содержимое в компорт.
Проверял на обычной рокомышке.


По мере каких-то доработок буду выкладывать. Если есть пожелания, вопросы, табуретки - пожалуйста :)

UPD:
Самое главное забыл. Вся информация по протоколу DCC из первоисточника:
http://www.nmra.org/sites/default/files ... 004-07.pdf
http://www.nmra.org/sites/default/files ... 012_07.pdf
Вложения

DCC_decoder.ino
(4 КБ) 969 скачиваний

Цитата
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя 2.LABA » Вс янв 24, 2016 3:23 pm

Так же стоит сделать возможность считывать значение CV. Для этого надо, чтобы контроллер в нужный момент дёргал какой-нибудь ногой, с длительностью 6мс.
К этой ноге вот такую обвязку приделать:

tt-new_cr.png
tt-new_cr.png (3.44 КБ) 9075 просмотров

Цитата
Изображение
http://dccwikiru.ucoz.net

Аватара пользователя 3.Василий » Вс янв 24, 2016 5:50 pm

Это следующим этапом :) Та же схема лежит в запасе.
Цитата
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

4.Федюнь » Вс янв 24, 2016 6:38 pm

Пожелания:
1)вывод на генератор дыма
2)выводы для подключения 2х серв поднятия/отпускания пантографов 2шт.
3)выводы наружнего освешения тележек
4)вывод для подключения светодиода имитации искры/дуги на пантографе
5)возможность записывать и воспроизводить звуки
6) возможность управлять как в цифре так и в аналоге
)))))) можно продолжать ешё ешё и ешё)))
это конешно так к примеру)))
Цитата

Аватара пользователя 5.Василий » Вс янв 24, 2016 7:25 pm

1, 2, 3, 4 легко.
5 - приедут запчасти, подумаем. Локсаунд не обещаю, но простенькие звуковые схемы я думаю будут. Нашел совсем простой плеер, за 200 рублей, который поддерживает воспроизведение до 512 звуковых фрагментов с SD карточки и рулится через I2C.
6 - это вряд-ли, , так как с мне это не очень интересно, хотя....

Продолжайте :)
Цитата
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя 6.Crown » Вс янв 24, 2016 7:53 pm

Продолжайте :)
Надо бы написать, что это все будет для садоводов :)
Цитата

Аватара пользователя 7.Василий » Вс янв 24, 2016 8:14 pm

А у садоводов DCC? Если да, то наверное и им подойдет :)

У меня пока нет всех запчастей, еще едут, рулить двигателями пока что не умею :) Но думаю что постепенно всему научусь.
Цитата
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

8.shalex » Вс янв 24, 2016 10:03 pm

[Оффтопик]
Есть небольшой вопрос - почему бы не использовать готовую библиотеку?
p.s. упс, не заметил, что это эксперимент. вопрос снимается
Цитата

Аватара пользователя 9.Василий » Вс янв 24, 2016 10:48 pm

Есть небольшой вопрос - почему бы не использовать готовую библиотеку?
p.s. упс, не заметил, что это эксперимент. вопрос снимается
Да это в общем не оффтоп :)

Первая причина - да, эксперимент. У меня так лучше укладывается в голове информация, когда не просто прочитал, а прочитал и сделал.
А вторая причина - Про Мини очень ограничены по ресурсам, поэтому полноценная библиотека там ни к чему. Лучше оставить место для других задач.

Сейчас отладив этот кусочек, я могу сделать любой конкретный функционал выловив лишь нужный пакет еще на уровне получения битов, в теле обработчика прерываний. Для себя вижу следующие возможности:
1. Отсеивать пакеты по типу адресов
2. Отсеивать пакеты по типу сообщений
3. Реализовывать только те обработчики, которые нужны и не тащить вместе с библиотекой все обработчики, универсальный код для всех пакетов и т.п. и т.д. (Хотя это все зависит от реализации библиотеки).
Цитата
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя 10.Василий » Пн фев 01, 2016 12:27 am

Продолжаем разговор.

Добавлено - запись в eeprom значений CV в Direct Mode. В коде реализован для CV1, переделать под всю пачку дело двух минут.

Реализованы классы для пакетов, и стэка пакетов.

В принципе сейчас в компорт выдает on-off при нажатии на кнопочку F1 рокомыши :)

PS: За корявость не пинать :)
Вложения

DCC_decoder.ino
(14.52 КБ) 927 скачиваний

Цитата
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
Поле сортировки

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