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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DmitryK

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

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

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

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

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

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

все так, устройство подключается к SBus на приемнике и видит все значения во всех каналах не вмешиваясь в управление.

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

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

возникла “трабла”, пытаюсь понять причину, при длительности импулься в районе 1900 мс сервы начинают дрожать.
от производителя не зависит, пробовал хайтек кст и даже какую то китайскую, возможно дело в самой ардуинке.

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

стоит сделать автоматический выпуск шасси

А зачем? Может сделать ручной выпуск/уборку шасси с кнопки на плате? Реально ли это?

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

А зачем? Может сделать ручной выпуск/уборку шасси с кнопки на плате? Реально ли это?

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

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

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

В общем, при использовании Ардуино максимальная длительность импульса PWM может быть 1850.
Хрень полная.

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

возвращаюсь к варианту на базе микроконтроллера STM32,
осталось разобраться где хранить калибровочные данные, но вроде FLASH память у них есть.
это конечно не EEPROM, но в принципе тоже сойдет, в любом случае калибровка будет делаться не часто.

DmitryK

А 1850 это совсем плохо? В градусах?

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

Дело не в градусах, а в том, что колебания могут появится в любом положении качалки сервы,
уже наткнулся при серво импульсе в районе 1500 мс и в районе 950 мс.
самое главное, я не понимаю чем они вызываются, а значит не могу гарантировать их отсутствие в любом диапазоне.
а выглядит это сильно неприятно, серва начинает дергать качалку, плюс минус 5 градусов примерно,
сначала думал, что серва виновата, но посмотрел сервоимпульс осциллографом, стало понятно, что не серва.
импульс с контроллера меняет длительность., поменял контроллер, та же байда.
а значит косяк глубже, в логике библиотеки Servo.

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

вот так это выглядит

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

на видео работа режима калибровки, если стик отклонить на 1,3 хода, серва движется медленно,
если больше 1/3 то быстро

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

любопытно,
первый канал, две зоны колебаний, в начале и конце диапазона,
второй канал зон стало три, в начале середине и конце.
а на 12 канале их стало пять.

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

Можно оставить вариант на Ардуинке, но тогда возможно придется менять положение качалок, в случае попадания крайних точек в зону колебаний.
и второй неприятный момент, через зону колебаний всегда будет переход при открытии/закрытии створок, фар, закрылков.

так что не вижу смысла, все перенесется на STM32, задел в плане платы уже есть )

прототип уже сделан и проверен, но на этом прототипе восемь каналов.
к выходным протравлю новый с 16 каналами и начну перенос уже сделаного софта с калибровкой.

DmitryK

А это точно не по питанию обратная связь? Без сервы тоже импульс плавает? Тогда на биения какие-то похоже. Может в логике что-то подмешивается?