Создание собственной системы стабилизации
Скажите пожалуйста, измерял ли кто-нибудь как сильно вибрация влияет на работу ahrs? Интересно именно после всяких фильтров.
Смотрю все ролики на ютубе и там вроде контроллер прикручен намертво к раме квадрика.
При этом все летает, все стабилизируется.
У меня же какая-то хрень происходит: на столе – стучу, кручу – показывает достаточно аккуратно.
А на раме с запущенными двигателями – вертикаль «волчком ходит».
Вибрирует ощутимо, и пока не придумал как её сильно погасить (жду балансир для пропеллеров из китая).
Может это я что-то накодил не то?
Может это я что-то накодил не то?
Может… rual где-то тут кино кидал жестко контроллер прикручен… у меня тоже контроллер жестко на раме работает как с DSM так и с EKF нормально… ДУС не боятся вибраций, вибраций боится акселерометр - вывод: больше доверия ДУС… т.е. в краткосрочной перспективе работают ДУС, в долгосрочной - аксель (грубо коррекция уплывания ДУС)
больше доверия ДУС…
Вроде так и есть… Проверю еще раз все параметры…
Спасибо.
и пока не придумал как её сильно погасить
Пусть “ходит”…, так и должно быть…, для стабилизации она не используется, там крен и тангаж нужен…
Может это я что-то накодил не то?
В AHRS надо только Kp и Ki немного подобрать, если углы уже показывает правильно , ошибиться в принципе негде…
Добрый день.
Не могу найти формулу компенсации магнитометра по акселерометру.
Не подкинете методику?
Спасибо
Не могу найти формулу компенсации магнитометра по акселерометру.
Странная какая то постановка ) Что можно компенсировать в компасе акселем?
В магнитометре смещение осей компенсируется по мин/макс значениям.
Не могу найти формулу компенсации магнитометра по акселерометру.
xh=MX * cos(Pitch) - MZ * sin(Pitch);
yh=MX *sin(Pitch)*sin(-Roll) + MY * cos(-Roll)-MZ*sin(-Roll)*cos(Pitch);
Azimut=atan2(yh,xh)*TooGRD;
if(Azimut<0){Azimut=360+Azimut;}
где
TooGRD - константа перевода из радиан в градусы
Надо только знаки Pitch и Roll правильно подобрать, в зависимости от физического расположения сенсоров, и будет азимут с компенсацией наклонов. (если об этом речь была(?))…
(если об этом речь была(?))…
это главный вопрос! )) … и тема акселя не раскрыта.
Да ещё… формула вроде из одного известного алгоритма. Олег, как она в перевернутом состоянии себя чувствует?
… и тема акселя не раскрыта
Откуда и как получать углы крена и тангажа - это по желанию, я например, себе взял “честные” углы по расчетам IMU (гира+аксель), а потом их использовал для коррекции магнитометра и получения угла направления…
как она в перевернутом состоянии себя чувствует?
вроде “как положено”…, типа: перевернул - “полетел обратно”, правда при углах близких к 90 гр. наблюдается приличный дрейф (видимо свойство cos/sin)…, а так, свои 3-5 градусов точности вполне достижимы…
добрый день. а есть код для ардуины, который на выходе выдает все углы? (компас, наклон) соотвественно с компесацией
мультивий 😁
нашел проект DIY_Headtracker
исходники както более понятны.
за, против?
Немного не по теме, но тут эксперты собрались. Вопрос простой, можно ли использовать CC3D (или ардупилот) с коптером на щеточных моторах? Вместо регулей - мосфеты, но главное - прошивка. Я так подозреваю, что можно, раз уж это открытые проекты. Вроде как сигналы на ESC идут немного другие, чем ипользуются для щеточных моторов. Вопрос простоты внесения требуемых изменений в код прошивки, если таковые потребуются.
легко. так как ppm сигнал изначально делается шимом
на таких моторах PWM, а не PPM. не нужно трогать CC (или ардупилот), нужны просто регули для коллекторников (если речь идет про двупроводные моторы).
на таких моторах PWM, а не PPM. не нужно трогать CC (или ардупилот), нужны просто регули для коллекторников (если речь идет про двупроводные моторы).
Странно, я думал сигнал там отличается только частотой. И на ESC-ах всегда указывают почему-то PWM, а не PPM. На коптере 2-х проводные моторы. Померил частоту сигнала, идущего на них - в районе 3,75кГц.
Контроллеров подходящих не встречал, да и это уж слишком, по-моему.
моторы управляются не частотой, а скважностью.
что именно “слишком” — не понял.
что именно “слишком”
Ну у обычного ESC вроде бы задача обрабатывать входящий сигнал и на его основе управлять тремя фазами. Что из себя может представлять контроллер щеточным 2х проводном движком я как-то смутно представляю (в плане стыковки с полетным контроллером). Если только конвертор PPM to PWM, но врядли такие существуют, а если и существуют, то это большая редкость.
да, почитал про PPM, вроде стало понятно, в чем различие. Но как его преобразовать не программным путем в PWM, я не представляю
ну, с “просто регулями” я, конечно, погорячился. мелких и доступных, действительно, в широкой продаже не наблюдается.
но если вопрос только в программной части, т. е. сам драйвер уже есть и он ждет не дождется готового PWM на входе, то все проще. в GSC нужно сделать что-то вроде:
- ActuatorSettings —> ChannelUpdateFreq для выбранных каналов выставить в 4 кГц, к примеру
- на закладке Outputs для этих же каналов задать минимум и максимум как 0 и 250 мкс
вроде бы CC и его потомки работают минимум с микросекундами, поэтому для увеличения разрешения нужно снижать частоту, 2 кГц позволит задать 500 промежуточных значений, а 8 кГц — всего 125.
то все проще. в GSC нужно сделать что-то вроде:
Отлично. Это мне и нужно было узнать.
2 кГц позволит задать 500 промежуточных значений, а 8 кГц — всего 125.
Это и есть ActuatorSetting —> ChannelUpdateFreq?
Что касается драйверов, то на штатном контроллере используются сдвоенные n-канальные мосфеты, по 1му на канал, насколько мне удалось разобраться. Точно такие же нашел в продаже.
Вопрос простоты внесения требуемых изменений в код прошивки, если таковые потребуются.
Не уверен, что ардупилот позволит “из коробки” управлять щеточными двигателями (особенно если вы сами хотите делать “контроллер”)
Но внесение изменений там в любом случае достаточно простое - благо система поделена очень хорошо на модули.
Самый влоб - это переписать HAL для RC out - именно через него идут управляющие команды на есц.
github.com/diydrones/…/RCOutput_APM1.cpp
Спасибо, все-таки предпочел CC3D. Главным образом, из-за цены.
Однако, есть один момент, я хоть и нашел точно такие же мосфеты, как на штатном полетном, но также нашел почти такие же, но чуть дешевле, и с чуть меньшим сопротивлением открытого канала, и выходы разведены удобней. Только смущает входная емкость затвора в 2400пф, что в 2-е превышает аналогичную емкость штатной пары. Не знаю, может ли это вообще создать какие-то проблемы выходам CC3D. По идее, он ведь может управлять и сервами напрямую, или я ошибаюсь?
токи там небольшие. Питается коптер от 2S. Штатный мосфет по даташиту держит 7А продолжительно, т. е. в паре на канал это 14А.
Только смущает входная емкость затвора в 2400пф, что в 2-е превышает аналогичную емкость штатной пары. Не знаю, может ли это вообще создать какие-то проблемы выходам CC3D. По идее, он ведь может управлять и сервами напрямую, или я ошибаюсь?
очень правильно смущает, прямым соединением контроллера и КМОПа вы вряд ли получите нормальный ШИМ, нужно будет ставить драйвер КМОП-вентеля, хотя есть ключи со встроенным драйвером ТТЛ. Сервы не из этой темы, внутри сервы контроллер, он отлично понимает и сопрягается с выходом полетника.
На штатном полетном контроллере этого квадра затворы мосфетов соединяются с PWM- выходами МК лишь через резистор 100 Ом. Дополнительно, затвор с землей соединен через 10к.
В даташите по его МК, 35mA макс. на выход. Что-то не могу найти, какой МК стоит на CC3D
Те мосфеты имеют типовое пороговое напряжение открытия канала 0,8В, а на те, что я к сожалению уже успел заказать, 1,8В. Наверное, это тот самый параметр, относящийся к ТТЛ уровням (в данном случае)?
Вот черт. Отменить тогда заказ чтоли.
35 макс - это на данну ножку, с учетом что остальные выходы порта отключены, причем это - втекающий ток (ножка в 0), а вот вытекающий - значительно ниже
по открытию - нужн смотреть даташит, нужны мосфеты с работой от 2,8в лучше всего.
про ттл уровни - это немного другое - обычные полевики управляются напряжением (но небходим достаточный ток для заряда емкости затвора, кстати резистор ставят для ограничения скачка этого тока чтобы не спалить вывод контролера, а резистор на землю - для гарантированного разряда затвора и выключения полевика). а есть со встроенной логикой,которая работает по лог.уровню (0-1) и обеспчивает номинальный ток, но такие сложно найти мелкго размера на норм ток и адекватной цены