Сборка Мультикоптера, Часть Вторая

Часть 1 | Часть 2 | Часть 3 | Часть 4 Итак, мы полны энтузиазма и готовы потратить деньги, силы и время на эту замечательную идею.



Сборка мультикоптера, часть вторая



Начнем с датчиков

Для того чтобы определить углы наклона/поворота мультикоптера по трем осям (а это жизненно важная задача для стабилизации аппарата в воздухе), можно использовать разные датчики: оптический (обработка видео, поступающего с камеры), пирометрический (немного урезанный вариант оптического; сигналы от четырех таких датчиков можно использовать для слежения за линией горизонта), магнитный и инерциальный.

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

Современные достижения микроэлектроники позволили собрать механический (точнее МЭМС ) гироскоп в корпусе 5х5 мм.

ST и Analog Devices предлагают целую линейку микроскопических гироскопов и акселерометров на любой вкус и чувствительность.

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

Гироскопы показывают угловую скорость вращения (с некоторым уровнем напряжения, пропорциональным этой скорости), но у них есть явление, называемое дрейфом: сдвиг нулевого значения в случайную сторону (в моих руках это проявлялось как остаточное «головокружение» датчик после того, как я остановил его вращение).

Быстрое накопление ошибок не позволит обойтись без других датчиков.

Существуют также акселерометры, которые аналогичным образом предоставляют информацию о приложенном к ним ускорении.

Важный момент: акселерометры показывают разницу между фактически приложенным ускорением и привычной нам g, поэтому путем несложных расчетов по сигналам трех акселерометров, направленным по разным осям, можно получить углы поворота системы отсчета наше устройство относительно системы отсчета земли (может я криво выразился, в оригинале это система отсчета).

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

Для того чтобы связать значения, полученные от обоих типов датчиков, традиционно используют Фильтр Калмана , для понимания которого требуется много времени, но он дает отличные результаты, а примеров его реализации в Интернете предостаточно.



Изготовление платы для датчиков

В принципе, можно было бы купить и сразу.

один из готовых модулей инерциальная навигация с уже написанным ПО, но это не спортивный , Правда? Поэтому мы купили парочку цифровых( зачем нам аналог? I2C рулит! ) MEMS детали и начал читать их характеристики, чтобы спаять к ним плату.



Сборка мультикоптера, часть вторая

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

Лучше попробовать реализовать готовый сенсорный модуль , проводка для него уже есть, просто возьми и распечатай( Купить? Нееет, зачем платить 70 долларов и ждать, пока оно прибудет! ).

Заодно освоим метод лазерный утюг , пригодится.



Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

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

Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

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



Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

Травим и оттираем тонер.

Убеждаемся, что что-то не вытравлено и повторяем действия, описанные выше.



Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

Заодно напрягаем наши ленивые мозги тригонометрией и «придумываем» алгоритм управления.

Подключаем (тьфу, на этот раз хотя бы покупные) контроллеры моторов к Ардуино.

Блок питания от компьютера не мог запитать один ненагруженный мотор на средней скорости.

Сила.

Следует отметить, что это было сделано не за день и не за неделю.

Пока четыре раза съездишь на рынок за запчастями (всегда что-нибудь забудешь, или нет в наличии), пока из Америки не привезут тот акселерометр, которого не было в наличии.

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

Мы, мягко говоря, расстроились.

Пришлось заказывать плату с производства, которая стоила 17$ за два десятка штук (минимальный заказ).

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

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

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



Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

Похоже на то, да? Итак, у нас наконец-то есть готовая плата с акселерометрами и гироскопами, можно приступать к написанию ПО.

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

Но это только начинается.



Получение данных

Для отладки собираем некое подобие ардуино-щита с простым АЦП.



Сборка мультикоптера, часть вторая

Вы даже можете прикрепить все это к тестовой площадке, которая вращает потенциометр, предполагая, что потенциометр покажет нам «справедливый» угол.

К сведению, это не так.



Сборка мультикоптера, часть вторая

Имея поверхностные навыки программирования всего, что компилируется, интерпретируется или преобразуется в байт-код, мы набрасываем что-то вроде программы для получения значений от датчиков, сохранения их в CSV-файле для обработки в Excel, а также отображения 3D-модели.

и вывод графиков в реальном времени.

Первым делом получаем значения датчиков, лежащих неподвижно:

Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

При попытке переместить датчики шум увеличивается.

Страшно подумать, какой шум будет от 6 моторов.

Поверните доску:

Сборка мультикоптера, часть вторая



Сборка мультикоптера, часть вторая

Естественно, полученные значения углов поворота различаются для каждого датчика.

Однако на втором рисунке четко видно отклонение значений углов по версии акселерометра и по потенциометру, и они должны быть более-менее одинаковыми.

Оказывается, сопротивление потенциометра меняется нелинейно в зависимости от угла поворота.

Я бы даже сказал хаотично.



Сборка мультикоптера, часть вторая

Всё, мне надоела графика.

Выкидываем потенциометр, переписываем реализацию фильтра Калмана с C на C# и получаем более-менее адекватную реакцию на вращения.



Сборка мультикоптера, часть вторая

(тут оба окна показывают одно и то же, но визуализация очень близка к реальному положению датчиков в руке).

Все работает. УПД СовГВД пишет: На мелкие заметки делить думаю не стоит, в таком темпе все равно будет 20-30 частей + стоило бы упомянуть Wii Motion Plus (пример работы того, что я заказывал с dx) и Wii Nunchack - гироскоп и акселерометр соответственно, на котором много кто летает: multiwii.com и все гораздо проще собрать.

точность не идеальная конечно, но цена копеечная, достать легко и травить не надо доски Продолжение следует. Следует отметить, что тема акселерометров (и других навигационных датчиков) сейчас будет набирать популярность, как и в контексте АР , и для дронов.

Да что там говорить, даже на сигвеях используется одна и та же инерционная система.

Те, кто дружит с матаном, смогут разработать более эффективные и надежные алгоритмы.

И вы можете начать с пары записи остановка а.

Теги: #Сделай сам или Сделай сам #электроника #мультикоптер #инерциальная навигация #лут #иму

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.