Часть 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 и все гораздо проще собрать.
точность не идеальная конечно, но цена копеечная, достать легко и травить не надо доски Продолжение следует. Следует отметить, что тема акселерометров (и других навигационных датчиков) сейчас будет набирать популярность, как и в контексте АР , и для дронов.
Да что там говорить, даже на сигвеях используется одна и та же инерционная система.
Те, кто дружит с матаном, смогут разработать более эффективные и надежные алгоритмы.
И вы можете начать с пары записи остановка а.
Теги: #Сделай сам или Сделай сам #электроника #мультикоптер #инерциальная навигация #лут #иму
-
Карманный Пк И Технология Ipod
19 Oct, 24 -
Мини-Обзор 3G/Wifi Роутера Huawei E5830
19 Oct, 24 -
Ты Не Можешь Украсть Луну
19 Oct, 24