|
22.03.2019, 03:37 | #1 | ||
Заглянувший
Регистрация: 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%, еепром наполовину, так что запихнуть в него же дополнительные алгоритмы работы со светом вполне возможно.
Последний раз редактировалось Eprinter; 22.03.2019 в 17:26. |
||
|
12 пользователя(ей) сказали cпасибо: |
22.03.2019, 05:51 | #2 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Решил немного пояснить алгоритм.
Первый чип загружен библиотекой ДСС, следит за командами. Если приходит из заданного диапазона (0:0 ... 31:3), преобразует к виду 5 старших бит адрес, 3 младших данные (порт и команда), и пропихивает в последовательный порт. Если получено несколько одинаковых команд подряд, обрабатывается только первая. Второй чип постоянно проверяет буфер, если обнаружена команда - проверяет, не выполняет ли он её уже, и ставит в очередь. Каждые 20 мс запускается обработчик, перебирающий все 128 портов, и если обнаруживается новая или недовыполненная команда, высчитывает и отправляет на нужный драйвер очередной шаг. Если при включении питания дисплей не был подключен, то медленные операции вывода на ЛСД отключены и в режим настройки зайти нельзя. Если был подключен, то на экран выдаётся последняя принятая в работу команда, для отлавливания багов удобно. В любой момент можно перейти в режим настройки, изменить все доступные параметры для любого порта или нескольких подряд и сохранить в еепром, работа при этом прекращается. Программирование CVs не предусмотрено в принципе, т.к. с пульта оказалось гораздо удобнее. Пока реализован алгоритм плавного переключения стрелок, он же (с небольшой доработкой) подойдёт для плавного зажигания/гашения огней. В дальнейшем планирую добавить имитацию различных световых эффектов, как-то сварка и т.п. Также подумываю о программировании переключения многоламповых светофоров одной командой, а не каждым светом по отдельности. Если не будет хватать ресурсов или быстродействия - разделю задачу на два узко заточенных чипа. Мой макет имеет размер 1.22х2.44, поэтому подход централизованной обработки команд и раздачи по шине на места считаю более целесообразным, чем на одну шину ДСС вешать десятки декодеров и апгрейдить их все в случае необходимости. Да и по количеству проводов разницы большой нет - и так, и так их немерено |
|
3 пользователя(ей) сказали cпасибо: |
22.03.2019, 08:53 | #3 | |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
:
0 за это сообщение 0 Всего Репутация: - луч света в тёмном царстве (454)
|
Цитата:
|
|
|
Пользователь сказал cпасибо: |
22.03.2019, 10:23 | #4 | |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Цитата:
У меня БП 20В 5А, после него преобразователи дс-дс до 4В. Даже все 30 серв ну пусть 3А одновременно, значит от БП возьмётся немного менее 1А. Освещение ещё в разы меньше. Другой вопрос, если световые эффекты потребуют бОльших вычислительных ресурсов, чем сервы. Но тогда можно их обрабатывать через одного или даже реже. То есть в принципе всё должно получиться. ПС Вспомнил интересный нюанс. Библиотека Adafruit_PWMServoDriver.h поддерживает следующий формат команд управления выходами: pwm.setPWM(вывод, момент старта импульса ШИМ, момент финиша импульса ШИМ) Для серв длительность импульса получается около 1/8 от возможной, то есть можно для разных выводов отправлять сигналы со сдвигом, и тогда всплески потребления размажутся. В теории Последний раз редактировалось Eprinter; 22.03.2019 в 12:54. |
|
|
Пользователь сказал cпасибо: |
22.03.2019, 15:42 | #5 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
:
0 за это сообщение 0 Всего Репутация: - луч света в тёмном царстве (454)
|
|
|
17.04.2020, 12:47 | #6 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
|
|
22.03.2019, 17:06 | #7 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Да пока ещё не знаю, что будет
Скорее всего эффекты типа "сварка", "цветомузыка", и прочая проще делать по месту, на своих контроллерах. Тогда и не надо будет сильно напрягаться с этим. Мне до света ещё далековато, недавно только макет наконец развернул после более чем годового стояния в углу... |
|
Пользователь сказал cпасибо: |
22.03.2019, 20:15 | #8 | |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
:
0 за это сообщение 0 Всего Репутация: - луч света в тёмном царстве (454)
|
Цитата:
Еще, вам стоит обратить внимание на две вещи про шину i2c: - Во первых частота шины, по умолчанию в библиотеке Wire.h, установлена как "стандартная" и ее можно разогнать/переключить на "быстрый режим". Скрытый текст
- Во вторых,читал в интернете, на разных i2c модулях установлены подтягивающие резисторы для линиий sda и scl. И при увеличении количества модулей - эта подтяжка будет параллелиться и ослабевать. Может быть придется выпаивать эти резисторы для работоспособности шины... |
|
|
4 пользователя(ей) сказали cпасибо: |
23.03.2019, 01:18 | #9 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Спасибо за ценные идеи!
Частоту разгонять в данном случае не нужно по двум причинам: - резко уменьшится расстояние, читал, что при 1МГц уже на одном метре начинаются ошибки, зависит от ёмкости линии - 100 кГц вполне достаточно: 30_команд х 30_бит_длина_команды х 50_раз_в_секунду = 45 кГц, это предельная нагрузка Посмотрел, на этих модулях подтягивающих резисторов нет. Молодцы разработчики, предусмотрели их ж.д. область применения - включение "паровозиком" ПС Впрочем, могу ошибиться насчёт частоты - пишется ведь два байта, так что надо смотреть, включен ли режим многобайтных пакетов. Если да, то 60 кГц, укладываемся. Если нет, то 90 кГц, уже айяйяй... |
|
Пользователь сказал cпасибо: |
23.03.2019, 10:49 | #10 | |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,838
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,653 раз(а) в 1,570 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (2679)
|
Цитата:
(на картинке чтение из MCP23017) |
|
|
3 пользователя(ей) сказали cпасибо: |
24.03.2019, 02:53 | #11 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Есть такой, правда клон китайский, но работает с этой программой прекрасно
Всё никак не соберусь опторазвязку на 6N137 спаять, чтоб ДСС вживую смотреть. Давно делал на PC817, быстродействия не хватало, сигнал искажался, а других под рукой не оказалось. Измерил стрелочным тестером токи. Когда сервы (пока 17 у меня) в покое, потребление на уровне 100 мА. При одновременном переключении не превышает 1 А. Одну случайную серву померял, +30 мА в движении. ПС Посмотрел сигнал по I2C, идёт два байта двумя командами. Будем экспериментировать с частотой либо последовательной передачей команд. И ещё обнаружился баг с оптопарой - после примерно получаса непрерывной работы она сначала начинает мешать в сигнал какой-то мусор, а позже вообще просаживает выход в ноль. Может ограничительный резистор уменьшить? Везде рисуют 1 кОм, я попробовал вначале, но он грелся как печка, поэтому поставил 3к3. Последний раз редактировалось Eprinter; 24.03.2019 в 05:57. |
|
2 пользователя(ей) сказали cпасибо: |
24.03.2019, 13:41 | #12 | |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Цитата:
Из практики: 4к7 и греется уже не так сильно. 1к - это совсем мало. p.s. 3к3 вроде выглядит оптимальным, но если Вы пишете о проблемах, то видимо маловато будет. ---------- Сообщение добавлено в 13:41 ---------- Предыдущие сообщение было в 13:27 ---------- Концентрация каналов очень большая, а в памяти Нано надо хранить тучу настроек. Плюс накладные расходы памяти на диммер с плавной регулировкой, плюс спецэффекты. Может перейти на Мегу, вместо двух Нано? Появились весьма компактные и недорогие Меги, всего раза в 3 больше Нано. |
|
|
24.03.2019, 15:14 | #13 |
Пользователь сказал cпасибо: |
24.03.2019, 15:17 | #14 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Можно и на мегу. Но мне пока хватает нано
Еепром занят ровно на половину - 128 адресов по 4 байта настроек, можно смело ещё 3 байта на канал использовать. Оперативка немногим более половины занята, тоже есть куда расти. Память программ только на треть, пиши - не хочу. Будет не хватать - возьму мегу. Или вместо одной нано возьму две, по 64 канала, в режиме чтения они могут вдвоём с одного сериал-порта команды получать. Один будет чисто под сервы, второй под свет, красота Вы возможно не до конца поняли основную фишку этого декодера. Главная причина использования двух чипов - разделение разных типов задач. Первый камень спокойно следит за непрерывным потоком команд, отлавливая нужные и отсылая по аппаратному последовательному порту. Второй спокойно, в асинхронном режиме, обрабатывает полученные команды. Никаких конфликтов прерываний, никаких ошибок со стеком, не нужно бороться за каждый процессорный такт. Программы простые и понятные, не смотря на то, что этот декодер практически заменяет 32 обычных 4-х канальных. Насчёт оптопары у меня какой-то глюк в монтаже, ещё не разобрался, времени пока нет. На сборной макетке с таким же резистором работает часами. Меняю оптопары местами - глюк остаётся. Спиртом плату мыл, не помогло. Распаяю всё и соберу заново. А, ну да, там же два двубайтных значения уходит - старт и стоп импульса ШИМ. Плюс адрес. |
|
Пользователь сказал cпасибо: |
31.12.2020, 21:29 | #15 | ||
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,072
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,733
Поблагодарили 1,664 раз(а) в 841 сообщениях
:
0 за это сообщение 2 Всего Репутация: обеспечил(а) себе прекрасное будущее (1699)
|
Цитата:
Цитата:
я столкнулся с той же проблемой, 1К 0.25Вт просто палец обжигает, 2шт 2К 0.25Вт получше, но тоже очень горячо... или проще просто 2Вт использовать?
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
||
|
24.03.2019, 23:01 | #16 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Другой пример - диапазон скорости изменения PWM, например, для сервы. Столкнулся с тем, что надо очень плавно двигать сервой (ворота депо), и переменная типа "байт" не давала плавности движения. Пришлось увеличивать в два раза тип переменной. Допустим было 128 байт (серв), а стало 256. Было 6.25%, а стало 12.5% памяти. При условии, что серв 128.
Надеюсь топикстартер учтет мою критику, т.к. старался быть макс.конструктивным. Сам на эти грабли наступал и теперь периодически нахожу их в чужом коде. |
|
2 пользователя(ей) сказали cпасибо: |
25.03.2019, 00:53 | #17 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
О, спасибо за ссылку, сам не наталкивался на двухпроцессорную реализацию в нашем деле. Значит в самом деле уловил идею, витающую в воздухе
Да, это реально более простой путь, ведь стоимость дополнительной платы - копейки по отношению к многим часам отладки сложного кода. Согласен, в каких-то случаях будет мало предусмотренных возможностей. Но этих случаев - единицы. Считаю более целесообразным реализовать для каждого свой узко заточенный декодер, а для основной массы оставить простой, но на много каналов, в сумме это даст бОльшую экономию и средств, и времени. Ваш подход более основательный, он хорош для серийного изготовления. Мой же прост и не везде применим, потому как накладывает ограничения. Кстати, для ворот депо я как раз использую освободившийся СервоМоушен ПС Впрочем, глупость сморозил... Там ведь те же 255 шагов. Для плавных движений правильнее использовать аналоговые привода с конечниками, например вот такой движок с планетарным редуктором: Рассчитан для работы от 24В, но прекрасно крутится и от меньшего. Например при 6В делает один оборот за 30-40 секунд. Ток при этом 20мА. Потребует своего декодера, но зато ради одного его не нужно будет усложнять все остальные ПСПС Впрочем, и декодер свой не понадобится, достаточно драйвера, следящего за конечными выключателями, а управлять сигналами 1 и 0. Нет, как раз самое главное - это использовать хардварные каналы, которые не отвлекают лишние ресурсы от основной задачи. А для перепрошивки у меня предусмотрена перемычка. Отлаживать же вполне можно каждый чип по отдельности, ибо каждый выполняет свою чётко ограниченную функцию. Последний раз редактировалось Eprinter; 25.03.2019 в 02:56. |
|
2 пользователя(ей) сказали cпасибо: |
25.03.2019, 00:55 | #18 | |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
:
0 за это сообщение 0 Всего Репутация: - луч света в тёмном царстве (454)
|
Цитата:
У кого-то функционал устройства расширяется через прямое управление PCA9685, MCP23017 или 74hc595, а мне, например, больше хочется использовать маленькие ведомые МК, которые просто ждут команду, и при этом, сами знают как "красиво помигать светом в клозете"... Тут все варианты правильные, и главное, чтобы это все заработало, так как вы это задумали Иногда помогает уменьшить рывки, если разбить каждый шаг поворота сервы, на маленькие шажки через(writeMicroseconds()), например каждый шаг включает: шажок вперед, следом шажок назад и далее 2-3 шажка вперед... |
|
|
2 пользователя(ей) сказали cпасибо: |
27.04.2019, 18:15 | #19 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Пришли модули 9685. Напаял разъёмы, соединил шлейфом, общая длина метров 7-8, полёт нормальный. Начал эксперименты со светом и обнаружил, что серва прекрасно работает на более высоких, чем 50-60 Гц, частотах:
Она реально отслеживает длину импульса - менее 1мс это минимальный угол, более 2мс максимальный. То есть можно сажать на один модуль вперемешку светодиоды и сервы, при частоте около 400 Гц будет и весь диапазон регулировок охвачен, и эффект стробоскопа на видео заметен не будет: Кто-нибудь ещё пробовал так издеваться над сервоприводом? Как долго он протянет? Первоначально планировал 2 модуля настроить под сервы и 6 под свет, но это не очень удобно, придётся половину проводов удлинять. Если же настроить модули одинаково и только сигнал формировать по-разному, то все сервы подключатся штатными шлейфами к ближайшему модулю (которые равномерно раскидаю под макетом). ПС Погонял всю эту толпу: и выяснил преинтереснейшую вещь - внутренняя тактовая частота модулей стабильна, но не одинакова. Разброс впечатляет - задал всем 400Гц, получил от 340 до 392. Пришлось подгонять, чтобы более-менее выровнять. Уточнённые значения длительности сигнала ШИМ на частоте 355..375 Гц: примерно 0.5мс минимальный угол (0), примерно 2.5мс максимальный (180), сервы SG90. Последний раз редактировалось Eprinter; 28.04.2019 в 15:05. |
|
2 пользователя(ей) сказали cпасибо: |
30.04.2019, 00:11 | #20 | ||
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Дальнейшее развитие проекта.
1. На основной макет 128 портов хватает, но впритык. Напрашивается следующий путь, которым дуть (пунктиром): Ежели встанет необходимость досыпать каналов управления, поставлю логическую ИМС 2И, добавлю несколько строк кода, и команды для другого диапазона адресов пойдут на вторую Наночку. То есть Дуалино достаточно легко превращается в Триолино. А если понадобится, то и в Квадруино, и даже Пентуино Причём для обслуживания 128 исполнительных устройств нужно 2 камня, а для 256 понадобится три, и т.д. Пульт тоже один на всех, он нужен только для настройки. Схему наконец начертил в редакторе, чтобы потом сделать нормальные платы - головную (DCC to Serial) и ведомые (Serial to PCA9685). Как ранее посоветовал Алексей, вторые можно будет использовать отдельно, отправляя на них команды непосредственно с компьютера, минуя двойное преобразование в DCC и обратно. 2. Немного подробнее о пульте: Энкодер (на схеме SW1) используется следующим образом. Нажатие на ручку вызывает прерывание, устанавливающее режим настройки, последующие нажатия активируют изменение очередного параметра, из списка: выбор адреса, установка минимального значения, максимального, скорости изменения, реверса команды, режима работы канала, дальнейшие действия - продолжить настройку со следующим адресом, сохранить изменения в еепром или выйти из режима без сохранения. Вращение ручки изменяет выбранный параметр. Дополнительная кнопка (на схеме S1) расширяет возможности. Пока добавлены две функции: - при старте с зажатой кнопкой все выходы устанавливаются в среднее (между мин и макс) положение - при настройке скорости нажатие кнопки вызывает переключение с заданной Таким образом, настройка любой сервы (да и светика) производится за один раз, не нужно подгонять значения повторно, всё сразу видно - и крайние положения, и скорость, и необходимость реверса. 3. Как уже делал ранее, усилил помехоустойчивость канала I2C: У штатного углового разъёма на модуле срезаю пластмассовую перемычку, из разъёма IDC-12 удаляю один ряд штырьков, насаживаю его плотненько и свободные контакты распаиваю перемычкой - 2 на V+, 4 на GND. С обратного конца модуля впаиваю такой же разъём в плату, соединяя выводы по той же схеме. Таким образом, все логические сигналы разделяются "массой", а нагрузочная способность шлейфа по питанию возрастает, можно насаживать модули несколько штук подряд и не тащить дополнительные провода (у себя планирую две "гирлянды", примерно половина серв в каждой). На схеме указан IDC-14 - как ни странно, в библиотеке Орла почему-то отсутствует IDC-12, придётся потом нарисовать самому. Хотя если честно, широко использую разъёмы IDC в первую очередь потому, что с ними очень простое изготовление шлейфов, на любое количество сигнальных линий. Не люблю паять кабеля на dupont, муторно, а клещей для обжима нет... 4. Решил остановиться на частоте сигнала ШИМ 365 Гц (как уже упоминал ранее, приходится каждый модуль корректировать, чтобы иметь близкие значения частоты, а следовательно и длительности импульсов). Это значение позволяет управлять сервоприводами во всём диапазоне, от 0.5 мс до 2.5 мс, одновременно устраняя стробоскопический эффект от светодиодов, возникающий при низких частотах ШИМ во время съёмки на видео. То есть все виды нагрузки можно будет подключать вперемешку, на один модуль. В программу пока заложил следующие режимы работы выходов: 0 - вкл/выкл, то есть без ШИМа, если надо будет активировать внешний "хитрый" декодер, как ранее упомянул Владимир 1..6 - различные режимы для серв, с регулировкой угла перемещения от 180 до 30 градусов с одинаковым числом шагов и соответственно с разной плавностью перемещения (примерно как ранее советовал Александр) 7 - линейное управление светодиодами - плавное зажигание и гашение, сервы тоже работают, но имеют мёртвые зоны по краям диапазона 8..15 - задел на будущее, под всяческие нелинейные эффекты - моргание, сварка, разгорание газоразрядной лампы и т.п. Пока всё
|
||
|
2 пользователя(ей) сказали cпасибо: |
30.04.2019, 00:28 | #21 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Подскажите, пожалуйста, встречался ли Вам энкодер с фиксацией в центре, как на рокомышке? И еще - где можно раздобыть такую отличную ручку?
|
|
Пользователь сказал cпасибо: |
30.04.2019, 00:48 | #22 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Это моё первое использование энкодера в своих проектах, и на работе с такими не встречался.
Купил готовые модули на Али. ПС Погуглил, вот например упоминание про такие, с фиксацией (ниже середины большой статьи, проще задать поиск по слову "фиксации"). ПСПС Почитал статью внимательнее, много интересного, но не то... Скорее всего, эта фиксация делается дополнительно, производителем конечного устройства. Стало интересно, вечером разберу рокомышку, посмотрю Ручку оттопырил с какого-то умершего принтера из свои завалов. Первоначально не нашёл, подошла по размеру от однокомфорочной плитки, смотрелась жутко Последний раз редактировалось Eprinter; 30.04.2019 в 04:34. |
|
Пользователь сказал cпасибо: |
30.04.2019, 14:05 | #23 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Вскрыл, посмотрел. Нет там энкодера, стоит специальный переменный резистор, видимо для таких применений - средняя точка, два одинаковых плеча, меняется сопротивление либо в одном, либо в другом, смотря куда повёрнут. Фиксация - клювик на крутилке и выступ на корпусе:
Да и не нужен энкодер под такие задачи, чёт я легко повёлся Кстати, чип стоит Атмега-329 - аналог 328 плюс больше портов и поддержка ЖК экранов. |
|
2 пользователя(ей) сказали cпасибо: |
30.04.2019, 19:59 | #24 | |
Ĩ.Ĉ.Š.ҧрѻҫҭҩ мӥҫҭҿӄѣӤ.Ҟ.Ҫ
Регистрация: 10.07.2006
Адрес: 13 верста У.Г.Ж.Д. HOe.N.Z? . . G.Oe.HO!
Сообщений: 2,432
Сказал(а) 'не согласен(а)'!: 466
Сказали 'не согласен'! 136 раз(а) в 123 сообщениях
Сказал(а) спасибо: 3,326
Поблагодарили 7,264 раз(а) в 2,868 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (7893)
|
Цитата:
"клювик" и выступ при интенсивном использовании снашиваются и не чётко фиксируется. |
|
|
3 пользователя(ей) сказали cпасибо: |
03.05.2019, 18:55 | #25 |
Ĩ.Ĉ.Š.ҧрѻҫҭҩ мӥҫҭҿӄѣӤ.Ҟ.Ҫ
Регистрация: 10.07.2006
Адрес: 13 верста У.Г.Ж.Д. HOe.N.Z? . . G.Oe.HO!
Сообщений: 2,432
Сказал(а) 'не согласен(а)'!: 466
Сказали 'не согласен'! 136 раз(а) в 123 сообщениях
Сказал(а) спасибо: 3,326
Поблагодарили 7,264 раз(а) в 2,868 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (7893)
|
на самом деле разработчики мультимауса схалявили, когда поставили переменный резистор. При переходе с лока на лок , не трогая "крутилку" лок не меняет скорость, но стоит только слегка изменить её положение, лок может резко изменить не только скорость, но и направление движения, ведь разные локи могут двигаться в противоположных направлениях.
Именно поэтому для пульта лучшее решение "бесконечный" энкодер, 1) ему не нужна средняя точка; 2) он не запоминает "чужие" значения скоростей. Вот только нужно дорабатывать алгоритм обработки его значений, чтобы не пролетать через "ноль", с обязательной остановкой. И для страховки персональную кнопку "стоп". |
|
2 пользователя(ей) сказали cпасибо: |
Метки |
arduino, dcc, pca9685 |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как правильно установить и подключить декодер звуковой локомотивный декодер SoundGT2 | yuri60 | Цифровая аппаратура Modelldepo | 27 | 25.02.2018 15:58 |
ESU декодер | FP783 | Электрика и DCC | 9 | 25.01.2014 12:42 |
Декодер | igorshajter | Электрика и DCC | 13 | 26.08.2011 04:09 |
декодер для МГ 1 | Влад | Электрика и DCC | 4 | 20.03.2010 01:21 |
декодер | GOGA | Электрика и DCC | 18 | 20.08.2009 15:10 |