Ил-18 Долгий путь к мечте
спасибо, хорошая идея.
Вечер прошел плодотворно, удалось закончить “рыбу” “калибровки” конечных точек сервоприводов 11 каналов.
Правый стик вправо-влево - перебирает каналы, вверх-вниз - меняет значение текущего параметра.
После завершения цикла происходит запись данных в энергонезависимую память микроконтроллера (EEPROM).
При включении устройства данные считываются из EEPROM.
В режим калибровки устройство переходит в случае если на входе PB5 (нога D13 arduino) микроконтроллера в момент включения присутствует логический ноль.
Для выхода из режима калибровки надо убрать перемычку и выключить-включить питание устройства.
утомило немного )
Джампер самое надежное
с утра, первым делом, проверил идею родившуюся во сне ).
не надо никаких джамперов, если при включении питания устройства или нажатия кнопки Reset,
стик руля высоты поставить в нижнее положение, программа автоматически переходит в режим калибровки ).
вечером, вернусь с работы, продолжу ковырять калибровку.
Дмитрий, вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?
Или можно переводить их из одного положения в другое безо всяких замедлений ?
Второй вариант значительно проще реализовать ))
не надо никаких джамперов
И всё же джампер надёжнее. От случайных действий.
каких например ?
попадание в программу калибровки возможно только в случае перезапуска программы устройства
и при этом стик руля высоты должен быть в нижнем положении ).
ну можно для успокоения души сделать условие двойным, например … шасси в положении выпущено,
т.е. модель на земле и стик руля высоты в нижнем положении ).
но кмк это уже избыточно ).
каких например ?
В поле всякое бывает, даже, казалось бы невозможное. А в авиации нужна двойная гарантия.))) Не так часто нужно будет делать настройки конечных точек, реверса и пр. Да и переткнуть джампер не так уж и трудно и долго. Но, это лишь моё мнение, конечно)))).
блок программы setup() выполняется только один раз, при старте программы.
чисто теоретически, при перезапуске устройства, да хз по какой причине,
- нажали кнопку reset, или
- сбой программы при котором она вдруг перешла по адресу … не помню точно, но что то типа 0x000F00, надо глянуть даташит.
Но при этом должно совпасть, 0,01 секунды после reset и стик РВ в нижнем положении, ровно столько времени надо проге что бы пролететь блок setup().
кмк, вероятность ничтожно мала.
а джампер, отказы бывают разные, вероятность короткого по входу все таки выше, нежели программное определение состояния стика ).
это я Вам как программист со стажем говорю
Сдаюсь, некомпетентен…
да ладно Вам.
Что-то разболелся, лежал влежку с температурой, а тут такие дебаты…
вопрос, в режиме калибровки конечных точек важно, что бы регулируемые сервы двигались так же замедленно, как и в рабочем режиме ?
не важно совсем.
Я сильно извиняюсь, а правый стик откуда возьмется? Это специально из приемника вытаскивать провода и втыкать для настройки?
А, понял. Он же через Сбас.
все так, устройство подключается к SBus на приемнике и видит все значения во всех каналах не вмешиваясь в управление.
мне одна мысль не дает покоя, что будет если вдруг устройство потеряет связь с приемником,
думаю на этот случай стоит сделать автоматический выпуск шасси, но это все мысли на будущее.
возникла “трабла”, пытаюсь понять причину, при длительности импулься в районе 1900 мс сервы начинают дрожать.
от производителя не зависит, пробовал хайтек кст и даже какую то китайскую, возможно дело в самой ардуинке.
стоит сделать автоматический выпуск шасси
А зачем? Может сделать ручной выпуск/уборку шасси с кнопки на плате? Реально ли это?
А зачем? Может сделать ручной выпуск/уборку шасси с кнопки на плате? Реально ли это?
что бы выпустиь шасси надо открыть створки, весь процесс лубо в аппаратуре,
но не хватит каналов и нет механизмов замедления и синхронизации,
либо во внешнем устройстве, подключенном к приемнику,
в этом случае выходы приемника будут висеть в воздухе.
а описанная ситуация, конечно не сильно вероятная, устройство перестало видеть SBus от приемника,
например отвалился повод.
вот на этот случай и необходимо предусмотреть аварийный вариант, нет сигнала от приемника, выпустить шасси,
что бы не сажать на пузо.
есть еще вариант, устройство вышло из строя, но тут уже ничего не поделать,
если от зависания, спасает сторожевой таймер, который может перезапустить программу,
то более серьезные проблеммы так не лечатся ).
В общем, при использовании Ардуино максимальная длительность импульса PWM может быть 1850.
Хрень полная.
возвращаюсь к варианту на базе микроконтроллера STM32,
осталось разобраться где хранить калибровочные данные, но вроде FLASH память у них есть.
это конечно не EEPROM, но в принципе тоже сойдет, в любом случае калибровка будет делаться не часто.
А 1850 это совсем плохо? В градусах?
Дело не в градусах, а в том, что колебания могут появится в любом положении качалки сервы,
уже наткнулся при серво импульсе в районе 1500 мс и в районе 950 мс.
самое главное, я не понимаю чем они вызываются, а значит не могу гарантировать их отсутствие в любом диапазоне.
а выглядит это сильно неприятно, серва начинает дергать качалку, плюс минус 5 градусов примерно,
сначала думал, что серва виновата, но посмотрел сервоимпульс осциллографом, стало понятно, что не серва.
импульс с контроллера меняет длительность., поменял контроллер, та же байда.
а значит косяк глубже, в логике библиотеки Servo.
вот так это выглядит
не зависимо от сервы, колебания возникают при одинаковой длительности импульса,
это скорее всего связано с алгоритмом в библиотеке и пересечением с другим таймером.
на видео работа режима калибровки, если стик отклонить на 1,3 хода, серва движется медленно,
если больше 1/3 то быстро
любопытно,
первый канал, две зоны колебаний, в начале и конце диапазона,
второй канал зон стало три, в начале середине и конце.
а на 12 канале их стало пять.
Можно оставить вариант на Ардуинке, но тогда возможно придется менять положение качалок, в случае попадания крайних точек в зону колебаний.
и второй неприятный момент, через зону колебаний всегда будет переход при открытии/закрытии створок, фар, закрылков.
так что не вижу смысла, все перенесется на STM32, задел в плане платы уже есть )
прототип уже сделан и проверен, но на этом прототипе восемь каналов.
к выходным протравлю новый с 16 каналами и начну перенос уже сделаного софта с калибровкой.