Ил-18 Долгий путь к мечте
т.е. ретракты имеют два фиксированных положения, никаких заморочек с конечными точками не будет. уже легче )
и замедление в них реализовано.
с 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,
стик руля высоты поставить в нижнее положение, программа автоматически переходит в режим калибровки ).
вечером, вернусь с работы, продолжу ковырять калибровку.
Дмитрий, вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?
Или можно переводить их из одного положения в другое безо всяких замедлений ?
Второй вариант значительно проще реализовать ))
не надо никаких джамперов
И всё же джампер надёжнее. От случайных действий.
каких например ?
попадание в программу калибровки возможно только в случае перезапуска программы устройства
и при этом стик руля высоты должен быть в нижнем положении ).
ну можно для успокоения души сделать условие двойным, например … шасси в положении выпущено,
т.е. модель на земле и стик руля высоты в нижнем положении ).
но кмк это уже избыточно ).
каких например ?
В поле всякое бывает, даже, казалось бы невозможное. А в авиации нужна двойная гарантия.))) Не так часто нужно будет делать настройки конечных точек, реверса и пр. Да и переткнуть джампер не так уж и трудно и долго. Но, это лишь моё мнение, конечно)))).
блок программы setup() выполняется только один раз, при старте программы.
чисто теоретически, при перезапуске устройства, да хз по какой причине,
- нажали кнопку reset, или
- сбой программы при котором она вдруг перешла по адресу … не помню точно, но что то типа 0x000F00, надо глянуть даташит.
Но при этом должно совпасть, 0,01 секунды после reset и стик РВ в нижнем положении, ровно столько времени надо проге что бы пролететь блок setup().
кмк, вероятность ничтожно мала.
а джампер, отказы бывают разные, вероятность короткого по входу все таки выше, нежели программное определение состояния стика ).
это я Вам как программист со стажем говорю
Сдаюсь, некомпетентен…
да ладно Вам.
Что-то разболелся, лежал влежку с температурой, а тут такие дебаты…
вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?
не важно совсем.
Я сильно извиняюсь, а правый стик откуда возьмется? Это специально из приемника вытаскивать провода и втыкать для настройки?
А, понял. Он же через Сбас.
все так, устройство подключается к SBus на приемнике и видит все значения во всех каналах не вмешиваясь в управление.
мне одна мысль не дает покоя, что будет если вдруг устройство потеряет связь с приемником,
думаю на этот случай стоит сделать автоматический выпуск шасси, но это все мысли на будущее.
возникла “трабла”, пытаюсь понять причину, при длительности импулься в районе 1900 мс сервы начинают дрожать.
от производителя не зависит, пробовал хайтек кст и даже какую то китайскую, возможно дело в самой ардуинке.
стоит сделать автоматический выпуск шасси
А зачем? Может сделать ручной выпуск/уборку шасси с кнопки на плате? Реально ли это?
А зачем? Может сделать ручной выпуск/уборку шасси с кнопки на плате? Реально ли это?
что бы выпустиь шасси надо открыть створки, весь процесс лубо в аппаратуре,
но не хватит каналов и нет механизмов замедления и синхронизации,
либо во внешнем устройстве, подключенном к приемнику,
в этом случае выходы приемника будут висеть в воздухе.
а описанная ситуация, конечно не сильно вероятная, устройство перестало видеть SBus от приемника,
например отвалился повод.
вот на этот случай и необходимо предусмотреть аварийный вариант, нет сигнала от приемника, выпустить шасси,
что бы не сажать на пузо.
есть еще вариант, устройство вышло из строя, но тут уже ничего не поделать,
если от зависания, спасает сторожевой таймер, который может перезапустить программу,
то более серьезные проблеммы так не лечатся ).
В общем, при использовании Ардуино максимальная длительность импульса PWM может быть 1850.
Хрень полная.