Показать сообщение отдельно
Старый 22.03.2019, 03:37   #1
Eprinter
Заглянувший
 
Аватар для Eprinter
 
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - очень-очень хороший человек (439)
По умолчанию DCC декодер на Dualino + 8xPCA9685

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

Немного порыл форумы и выбрал за основу эту библиотеку - http://www.mynabay.com/dcc_monitor/
Просидел выходные в попытке переделать скетч примера. Конечно, программист из меня ещё тот, более четырёх одновременно обслуживаемых приводов с плавным переводом не получилось, начинались пропуски команд. Без плавного проблем нет, но это же неинтересно. Задачка оказалась сродни попытке скрестить ужа с ежом: первый должен держать хвост на пульсе, дабы не пропустить нужную команду, но при этом четыре, ну пусть даже восемь иголок - далеко не ёж. Даже не морской...

В воздухе витала идея оставить ужу ужово, а ежу ежово. Услышано - сделано. Неделя свободного времени, и пара "гнедых" были впряжены в одну упряжку:


Прошу прощения, схема от руки, там всё до безобразия просто: опторазвязка (по ссылке выше), в качестве ужа Ардуино-Про-Мини-168, к ней через последовательный порт подключен ёж Ардуино-Нано-328, на её выход I2C цепляются гирлянды PCA9685. Ах да, ещё для удобства сделал пульт - дисплей 1602 I2C, энкодер и дополнительная кнопка (в скетче подписано, кто куда).

На данный момент у меня один драйвер 9685, остальные в пути, поэтому он отдувался за всех. При отключенном пульте производительности хватает обеспечивать 30 одновременно идущих переключений, если их больше - плавно увеличивается интервал между "шагами" (выбрал 20 мс - частота ШИМа для серв).

Пульт нужен в основном для настройки углов, скорости переключения, реверса, остальные добавлю по мере необходимости. Свои 14 стрелок и один расцепитель настроил, правда пару раз всё зависло, надо оптимизировать код настройки. В работе с КС от МД проверил, всё отлично. Зетку ещё не пробовал.

Да, для облегчения себе жизни остановился на 128 адресах (32х4), идущих подряд, тогда в один байт помещается и адрес, и команда. Мне пока достаточно, а там поглядим. Остальные детали в скетче, он тщательно прокомментирован, если что интересно_&&_!понятно - спрашивайте

Так было:


Так стало:


Пульт, режим настройки (скорость переключения):


ПС Забыл указать ресурсные возможности.
Уж заполнен кодом на 25%, данными на 50%, то есть в принципе можно было порыться на моём складбище и приколхозить Мегу8АУ, но 100 рублей не та экономия, ради которой ...
Ёж загружен на 32%+60%, еепром наполовину, так что запихнуть в него же дополнительные алгоритмы работы со светом вполне возможно.

Вложения:
Тип файла: zip DCC decoder Dualino.zip (5.5 Кб, 153 просмотров)

Последний раз редактировалось Eprinter; 22.03.2019 в 17:26.
Eprinter вне форума  
Вверх
12 пользователя(ей) сказали cпасибо: