Ил-18 Долгий путь к мечте
блок программы 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 каналами и начну перенос уже сделаного софта с калибровкой.
А это точно не по питанию обратная связь? Без сервы тоже импульс плавает? Тогда на биения какие-то похоже. Может в логике что-то подмешивается?
на видео работа режима калибровки, если стик отклонить на 1,3 хода, серва движется медленно,
если больше 1/3 то быстро
Т.е. Ручкой задаём скорость перемещения? Может лучше стиком позиционировать в нужном месте?
А это точно не по питанию обратная связь?
абсолютно точно.
Т.е. Ручкой задаём скорость перемещения? Может лучше стиком позиционировать в нужном месте?
так оно стиком и позиционируется, при большом отклонении серва движется быстро, при маленьком медленно.
в общем косяк в архитектуре Атмеги,
думал замена библиотеки поможет, не помогло.
Сегодня к вечеру постараюсь протравить и можно начинать портировать то, что уже написано.
Примерно так будет выглядеть изделие
8 каналов сверху, 8 каналов снизу, слева вверху питание, справа вход SBus.
На виде снизу, справа стабилизатор 5В для питания контроллера, слева инвертор SBus,
что бы на соплях не вешать.
вот, подошла плата
она рассчитана на установку модуля разработки на базе процессора STM32F401/411
Плата для разработки STM32F401, V3.0, STM32F401CCU6, STM32F411CEU6, STM32F4, обучающая плата, 84 МГц, 96 КБ, ОЗУ 100 КБ/МГц, КБ, ОЗУ КБ
Будет иметь на борту полный пакет каналов от приемника через SBus ).
К вечеру думаю соберу.