Страница 1 из 12

Василий » Вс янв 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

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

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


Василий » Вс янв 24, 2016 5:50 pm
Это следующим этапом :) Та же схема лежит в запасе.

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

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

Продолжайте :)

Crown » Вс янв 24, 2016 7:53 pm
Продолжайте :)
Надо бы написать, что это все будет для садоводов :)

Василий » Вс янв 24, 2016 8:14 pm
А у садоводов DCC? Если да, то наверное и им подойдет :)

У меня пока нет всех запчастей, еще едут, рулить двигателями пока что не умею :) Но думаю что постепенно всему научусь.

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

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

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

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

Василий » Пн фев 01, 2016 12:27 am
Продолжаем разговор.

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

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

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

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