Ил-18 Долгий путь к мечте

Гена_Большой

Сегодня немного поэкспериментировал с Ардуино Уно.
Ее прелесть в небольших размерах (7х5 см) и возможностью “пристегнуть” любую “само-нарисованную” плату в режиме бутерброда.
Ардуино Уно в состоянии генерировать 12 каналов PWM с частотой 50Гц и точностью 1-3 мкс.
у меня на столе Ардуинка одновременно крутила 6 машинок.
При этом остается возможность приема SBus от приемника Futaba.

Для реализации “тонкой настройки” придется отобрать у Ардуинки два канала, ровно столько “сжирает” жк экран,
хорошо, что кнопки подключаются к аналоговому порту )).

Итого вполне реально реализовать программную синхронизацию 10 сервомашинок в рамках одного устройства.

DmitryK

Здорово! А мне тут пообещали дать контакты китайцев, которые делают платы. Говорит от 5 шт голые платы или с монтажем на выбор.

Гена_Большой

JLCPCB )), jlcpcb.com/?ysclid=l87qpz1phe682521982
давно с ними дружу, но до недавних пор с оплатой была засада, потом стал травить сам )
Вот сегодня закончил прототип ), SBus декодер на восемь каналов с выключателем питания борта )…
Выключатель отдельное устройство на Attiny13, если его не подключать, питание на сервах будет сразу.

В программе реализовано 14+2, т.е. полный пакет Futaba.
Но это прототип, для тестирования, восьми выходов на сервы хватит.
В основе плата разработки STM32F411.

но в варианте Arduino Uno + плата коммутации (она пустая, по сути разъем подключения АК и выходы на сервы),
никаких плат больше не надо.
главное грамотно софт написать, уже мысли роятся в голове.

Гена_Большой:
  • две стойки шасси с тремя сервами (створки+ретракт)
  • одна сойка шасси с три сервы (створки + ретракт + поворот)
  • два закрылка с двумя сервами.
  • две фары еще две сервы.

Итого я насчитал, что требется десять выходных каналов.
Я правильно посчитал ?

DmitryK

Фары можно от отдельного канала, можно от шасси. Если отдельно, то канал с передатчика напрямую на переднюю фару, две крыльевые считаем.
Если от шасси, то желательно настраивать все три.

Ретракт- конечные точки не нужны. Если сервы вместо ретракта, нужны. Количество створок тоже вопрос. У меня одна серва плюс мех привод на передние створки. И видимо по одной на основных.
Если иметь ввиду коммерческую составляющую, то, мне кажется нужно минимум 2 независимые сервы на створки + ретракт. Ну, если под серьезную копию задел делать…

Гена_Большой:

Итого я насчитал, что требется десять выходных каналов.
Я правильно посчитал ?

Ретракт передний и остальные - это один канал. Т.ч. можно обойтись 9 по минимуму. Если 10 влезет, лучше чтобы было 10. И если фары берем от шасси, тоже 10.

Гена_Большой

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

я тут в закромах отыскал кучку шилдов под Ардуино нано, вот таких

его надо немного “допилить” в плане организации питания сервоприводов ) и будет счастье.
нанок у меня как грязи, так что вечерком буду “пилить” шилд, и можно продолжить пилить программу.

насчет каналов, это я имел в виду не каналы на аппаратуре, а каналы на конечном устройстве.
на данный момент можно реализовать 10 каналов ), каждый со своими конечными точками и замедлением
и соответственно с взаимной синхронизацией, ну нельзя выпускать шасси при закрытых створках).

Гена_Большой

мне сейчас не хватает “таймлайн” выпуска шасси.
сколько времени должны открываться створки, сколько времени должна выпускаться стойка, желательно в секундах.
у И-18 створок шасси 4 штуки, две большие, две маленькие, которые остаются открытыми при выпущеных шасси.
вот тоже нужны времена, что бы правильно рассчитать постоянную времени задержки.
по сули процесс открытия створки будет состоять примерно из тысячи тактов каждый длительностью (t открытия створок/1000 такотов)
при этом все три стойки будут выпускаться одновременно, но такты у них совпадать не будут, минимизируя потребляемый ток сервами )
проще говоря, сервы будут по очереди смещаться на один шаг )
алгоритм уже проверен на другом проекте

DmitryK

Время выхода стойки на ретракте 4секунды. Соответственно задержка между сигналом на ретракт и закрытием створок 6 сек. Выпуск стоек через1 сек после завершения цикла открытия створок. Время открытия-закрытия створок думаю полторы секунды.
Каналы считал на выходе устройтсва.
1-все ретракты
2-4 створки
5 колесо передней стойки
6,7 закрылки.
8-10 фары

ПС. Ретракты стандартные с червяком и концевиками. Им только приблизительно убрано и выпущено. Судя по сервотестеру выпущено менее 1.5мс, убрано больше.

Гена_Большой

т.е. ретракты имеют два фиксированных положения, никаких заморочек с конечными точками не будет. уже легче )
и замедление в них реализовано.

Гена_Большой

с 2-4 все понятно,
5 это поворот носового колеса при рулении, перед уборкой надо поставить в среднее положение,
иначе говоря, можно сделать, что бы при начале открытия створок, носовая стойка вставала в среднее положение.
а после закрытия створок и при выпущенном шасси, реагировала в соответствии с каналом RUDER.

начну потихоньку ковырять логику программы. жаль времени свободного не сильно много.

DmitryK
Гена_Большой:

т.е. ретракты имеют два фиксированных положения, никаких заморочек с конечными точками не будет. уже легче )
и замедление в них реализовано.

именно так. Проверил на и-метре.

1 мс выпущено 2мс убрано

Гена_Большой

препарировал “шилд” из поста выше, подключил питание сервоприводов от внешней батарейки,
прием данных по SBus уже работает, по крайней мере с моим приемником TFR8SB все работает )).
правда конвертер SBus пока сделан на макетной плате и висит на соплях, но это мелочи.
ардуинка, приняв данные с приемника через SBus уверенно крутит сервами, в режиме прямой трансляции.
что получил в канале, то и выдал на серву ).
также погонял скетч, который одновременно гонял из между крайними положениями 12 сервоприводов )).

Вот такие дела, теперь у устройства 12 полноценных каналов PWM, правда с увеличением количества каналов
увеличивается период следования импульсов PWM, ну или уменьшается частота от 50 герц до 30 герц,
но не думаю, что с этим могут возникнуть проблемы, по крайней мере у меня из края в край они “ездили” )

Гена_Большой

ломаю голову, как сделать подстройку конечных точек без использования внешних устройств.
в голову приходит вариант реализованный на стабилизаторах Eagle.
в них после входа в режим программирования конечных точек все делается правым стиком с аппаратуры.
движение стика вправо-влево, выбор регулируемого параметра, вверх-вниз меняем значение и сразу видим.
может попробовать сделать так же ? вот только не могу придумать алгоритм для перехода в этот режим.
может у кого-нибудь есть варианты ? можно по сигналу с канала аппаратуры, они все будут в устройстве через SBus,
но есть ли свободные каналы ?

Гена_Большой

Вечер прошел плодотворно, удалось закончить “рыбу” “калибровки” конечных точек сервоприводов 11 каналов.
Правый стик вправо-влево - перебирает каналы, вверх-вниз - меняет значение текущего параметра.
После завершения цикла происходит запись данных в энергонезависимую память микроконтроллера (EEPROM).
При включении устройства данные считываются из EEPROM.
В режим калибровки устройство переходит в случае если на входе PB5 (нога D13 arduino) микроконтроллера в момент включения присутствует логический ноль.
Для выхода из режима калибровки надо убрать перемычку и выключить-включить питание устройства.

утомило немного )

Гена_Большой
DmitryK:

Джампер самое надежное

с утра, первым делом, проверил идею родившуюся во сне ).
не надо никаких джамперов, если при включении питания устройства или нажатия кнопки Reset,
стик руля высоты поставить в нижнее положение, программа автоматически переходит в режим калибровки ).
вечером, вернусь с работы, продолжу ковырять калибровку.

Дмитрий, вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?
Или можно переводить их из одного положения в другое безо всяких замедлений ?
Второй вариант значительно проще реализовать ))

DIM76
Гена_Большой:

не надо никаких джамперов

И всё же джампер надёжнее. От случайных действий.

Гена_Большой

каких например ?
попадание в программу калибровки возможно только в случае перезапуска программы устройства
и при этом стик руля высоты должен быть в нижнем положении ).
ну можно для успокоения души сделать условие двойным, например … шасси в положении выпущено,
т.е. модель на земле и стик руля высоты в нижнем положении ).
но кмк это уже избыточно ).

DIM76
Гена_Большой:

каких например ?

В поле всякое бывает, даже, казалось бы невозможное. А в авиации нужна двойная гарантия.))) Не так часто нужно будет делать настройки конечных точек, реверса и пр. Да и переткнуть джампер не так уж и трудно и долго. Но, это лишь моё мнение, конечно)))).

Гена_Большой

блок программы setup() выполняется только один раз, при старте программы.
чисто теоретически, при перезапуске устройства, да хз по какой причине,

  • нажали кнопку reset, или
  • сбой программы при котором она вдруг перешла по адресу … не помню точно, но что то типа 0x000F00, надо глянуть даташит.

Но при этом должно совпасть, 0,01 секунды после reset и стик РВ в нижнем положении, ровно столько времени надо проге что бы пролететь блок setup().
кмк, вероятность ничтожно мала.
а джампер, отказы бывают разные, вероятность короткого по входу все таки выше, нежели программное определение состояния стика ).
это я Вам как программист со стажем говорю

DmitryK

Что-то разболелся, лежал влежку с температурой, а тут такие дебаты…

Гена_Большой:

вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?

не важно совсем.
Я сильно извиняюсь, а правый стик откуда возьмется? Это специально из приемника вытаскивать провода и втыкать для настройки?

А, понял. Он же через Сбас.