Ил-18 Долгий путь к мечте
программирование для Stm32 у меня еще имеет маленький скилл.
Вот он, этот скилл и повысится))).
Вот для ознакомления еще девайс. aliexpress.ru/item/32711059200.html?_ga=2.24332768…
Только нигде не нашел полного описания. Только схема подключения.
это девайс для конкретной модели, вполне вероятно что мануал по настройке идет с моделью.
Сегодня немного поэкспериментировал с Ардуино Уно.
Ее прелесть в небольших размерах (7х5 см) и возможностью “пристегнуть” любую “само-нарисованную” плату в режиме бутерброда.
Ардуино Уно в состоянии генерировать 12 каналов PWM с частотой 50Гц и точностью 1-3 мкс.
у меня на столе Ардуинка одновременно крутила 6 машинок.
При этом остается возможность приема SBus от приемника Futaba.
Для реализации “тонкой настройки” придется отобрать у Ардуинки два канала, ровно столько “сжирает” жк экран,
хорошо, что кнопки подключаются к аналоговому порту )).
Итого вполне реально реализовать программную синхронизацию 10 сервомашинок в рамках одного устройства.
Здорово! А мне тут пообещали дать контакты китайцев, которые делают платы. Говорит от 5 шт голые платы или с монтажем на выбор.
JLCPCB )), jlcpcb.com/?ysclid=l87qpz1phe682521982
давно с ними дружу, но до недавних пор с оплатой была засада, потом стал травить сам )
Вот сегодня закончил прототип ), SBus декодер на восемь каналов с выключателем питания борта )…
Выключатель отдельное устройство на Attiny13, если его не подключать, питание на сервах будет сразу.
В программе реализовано 14+2, т.е. полный пакет Futaba.
Но это прототип, для тестирования, восьми выходов на сервы хватит.
В основе плата разработки STM32F411.
но в варианте Arduino Uno + плата коммутации (она пустая, по сути разъем подключения АК и выходы на сервы),
никаких плат больше не надо.
главное грамотно софт написать, уже мысли роятся в голове.
- две стойки шасси с тремя сервами (створки+ретракт)
- одна сойка шасси с три сервы (створки + ретракт + поворот)
- два закрылка с двумя сервами.
- две фары еще две сервы.
Итого я насчитал, что требется десять выходных каналов.
Я правильно посчитал ?
Фары можно от отдельного канала, можно от шасси. Если отдельно, то канал с передатчика напрямую на переднюю фару, две крыльевые считаем.
Если от шасси, то желательно настраивать все три.
Ретракт- конечные точки не нужны. Если сервы вместо ретракта, нужны. Количество створок тоже вопрос. У меня одна серва плюс мех привод на передние створки. И видимо по одной на основных.
Если иметь ввиду коммерческую составляющую, то, мне кажется нужно минимум 2 независимые сервы на створки + ретракт. Ну, если под серьезную копию задел делать…
Итого я насчитал, что требется десять выходных каналов.
Я правильно посчитал ?
Ретракт передний и остальные - это один канал. Т.ч. можно обойтись 9 по минимуму. Если 10 влезет, лучше чтобы было 10. И если фары берем от шасси, тоже 10.
на коммерческую составляющую мне честно говоря фиолетово )),
сейчас речь идет о конкретном изделии под конкретную модель.
я тут в закромах отыскал кучку шилдов под Ардуино нано, вот таких
его надо немного “допилить” в плане организации питания сервоприводов ) и будет счастье.
нанок у меня как грязи, так что вечерком буду “пилить” шилд, и можно продолжить пилить программу.
насчет каналов, это я имел в виду не каналы на аппаратуре, а каналы на конечном устройстве.
на данный момент можно реализовать 10 каналов ), каждый со своими конечными точками и замедлением
и соответственно с взаимной синхронизацией, ну нельзя выпускать шасси при закрытых створках).
мне сейчас не хватает “таймлайн” выпуска шасси.
сколько времени должны открываться створки, сколько времени должна выпускаться стойка, желательно в секундах.
у И-18 створок шасси 4 штуки, две большие, две маленькие, которые остаются открытыми при выпущеных шасси.
вот тоже нужны времена, что бы правильно рассчитать постоянную времени задержки.
по сули процесс открытия створки будет состоять примерно из тысячи тактов каждый длительностью (t открытия створок/1000 такотов)
при этом все три стойки будут выпускаться одновременно, но такты у них совпадать не будут, минимизируя потребляемый ток сервами )
проще говоря, сервы будут по очереди смещаться на один шаг )
алгоритм уже проверен на другом проекте
Время выхода стойки на ретракте 4секунды. Соответственно задержка между сигналом на ретракт и закрытием створок 6 сек. Выпуск стоек через1 сек после завершения цикла открытия створок. Время открытия-закрытия створок думаю полторы секунды.
Каналы считал на выходе устройтсва.
1-все ретракты
2-4 створки
5 колесо передней стойки
6,7 закрылки.
8-10 фары
ПС. Ретракты стандартные с червяком и концевиками. Им только приблизительно убрано и выпущено. Судя по сервотестеру выпущено менее 1.5мс, убрано больше.
т.е. ретракты имеют два фиксированных положения, никаких заморочек с конечными точками не будет. уже легче )
и замедление в них реализовано.
с 2-4 все понятно,
5 это поворот носового колеса при рулении, перед уборкой надо поставить в среднее положение,
иначе говоря, можно сделать, что бы при начале открытия створок, носовая стойка вставала в среднее положение.
а после закрытия створок и при выпущенном шасси, реагировала в соответствии с каналом RUDER.
начну потихоньку ковырять логику программы. жаль времени свободного не сильно много.
т.е. ретракты имеют два фиксированных положения, никаких заморочек с конечными точками не будет. уже легче )
и замедление в них реализовано.
именно так. Проверил на и-метре.
1 мс выпущено 2мс убрано
препарировал “шилд” из поста выше, подключил питание сервоприводов от внешней батарейки,
прием данных по SBus уже работает, по крайней мере с моим приемником TFR8SB все работает )).
правда конвертер SBus пока сделан на макетной плате и висит на соплях, но это мелочи.
ардуинка, приняв данные с приемника через SBus уверенно крутит сервами, в режиме прямой трансляции.
что получил в канале, то и выдал на серву ).
также погонял скетч, который одновременно гонял из между крайними положениями 12 сервоприводов )).
Вот такие дела, теперь у устройства 12 полноценных каналов PWM, правда с увеличением количества каналов
увеличивается период следования импульсов PWM, ну или уменьшается частота от 50 герц до 30 герц,
но не думаю, что с этим могут возникнуть проблемы, по крайней мере у меня из края в край они “ездили” )
ломаю голову, как сделать подстройку конечных точек без использования внешних устройств.
в голову приходит вариант реализованный на стабилизаторах Eagle.
в них после входа в режим программирования конечных точек все делается правым стиком с аппаратуры.
движение стика вправо-влево, выбор регулируемого параметра, вверх-вниз меняем значение и сразу видим.
может попробовать сделать так же ? вот только не могу придумать алгоритм для перехода в этот режим.
может у кого-нибудь есть варианты ? можно по сигналу с канала аппаратуры, они все будут в устройстве через SBus,
но есть ли свободные каналы ?
Джампер самое надежное
спасибо, хорошая идея.
Вечер прошел плодотворно, удалось закончить “рыбу” “калибровки” конечных точек сервоприводов 11 каналов.
Правый стик вправо-влево - перебирает каналы, вверх-вниз - меняет значение текущего параметра.
После завершения цикла происходит запись данных в энергонезависимую память микроконтроллера (EEPROM).
При включении устройства данные считываются из EEPROM.
В режим калибровки устройство переходит в случае если на входе PB5 (нога D13 arduino) микроконтроллера в момент включения присутствует логический ноль.
Для выхода из режима калибровки надо убрать перемычку и выключить-включить питание устройства.
утомило немного )
Джампер самое надежное
с утра, первым делом, проверил идею родившуюся во сне ).
не надо никаких джамперов, если при включении питания устройства или нажатия кнопки Reset,
стик руля высоты поставить в нижнее положение, программа автоматически переходит в режим калибровки ).
вечером, вернусь с работы, продолжу ковырять калибровку.
Дмитрий, вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?
Или можно переводить их из одного положения в другое безо всяких замедлений ?
Второй вариант значительно проще реализовать ))
не надо никаких джамперов
И всё же джампер надёжнее. От случайных действий.
каких например ?
попадание в программу калибровки возможно только в случае перезапуска программы устройства
и при этом стик руля высоты должен быть в нижнем положении ).
ну можно для успокоения души сделать условие двойным, например … шасси в положении выпущено,
т.е. модель на земле и стик руля высоты в нижнем положении ).
но кмк это уже избыточно ).