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

Вопросы и ответы связанные с цифровым управлением, аналоговой автоматикой и их элементами
Сообщение
Автор
Аватара пользователя
Василий
Модератор
Сообщения: 9441
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 344 раза
Поблагодарили: 458 раз
Контактная информация:

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

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

В процессе эксперименты и изучения всякой электроники применимой к нашему делу, получился у меня простейший 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 КБ) 1330 скачиваний
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя
LABA
Сообщения: 1616
Зарегистрирован: Пт мар 20, 2009 9:25 pm
Откуда: Питер
Благодарил (а): 32 раза
Поблагодарили: 7 раз
Контактная информация:

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

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

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

Аватара пользователя
Василий
Модератор
Сообщения: 9441
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 344 раза
Поблагодарили: 458 раз
Контактная информация:

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

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

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

Федюнь
Сообщения: 1430
Зарегистрирован: Вс фев 19, 2012 7:18 am
Имя: Фарид
Откуда: Узбекистан Ташкент
Поблагодарили: 1 раз
Контактная информация:

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

#4 Непрочитанное сообщение Федюнь »

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

Аватара пользователя
Василий
Модератор
Сообщения: 9441
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 344 раза
Поблагодарили: 458 раз
Контактная информация:

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

#5 Непрочитанное сообщение Василий »

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

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

Аватара пользователя
Crown
Сообщения: 61
Зарегистрирован: Пт ноя 23, 2012 10:39 am
Имя: Андрей
Откуда: Тула
Контактная информация:

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

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

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

Аватара пользователя
Василий
Модератор
Сообщения: 9441
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 344 раза
Поблагодарили: 458 раз
Контактная информация:

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

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

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

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

shalex
Сообщения: 286
Зарегистрирован: Сб июн 06, 2015 3:26 pm
Благодарил (а): 26 раз
Поблагодарили: 10 раз

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

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

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

Аватара пользователя
Василий
Модератор
Сообщения: 9441
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 344 раза
Поблагодарили: 458 раз
Контактная информация:

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

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

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

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

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

Аватара пользователя
Василий
Модератор
Сообщения: 9441
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 344 раза
Поблагодарили: 458 раз
Контактная информация:

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

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

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

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

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

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

PS: За корявость не пинать :)
Вложения
DCC_decoder.ino
(14.52 КБ) 1233 скачивания
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Ответить

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