От Arduino-квадрокоптера до октокоптера RPAS: история проекта
Примечание
Автор проекта и всех материалов: J.M. Brokking (Joop Brokking), brokking.net. Ниже подробный пересказ хронологии проекта по его страницам. Оригиналы: главная, Q&A, загрузки, медиа; копии в Wayback Machine. На страницах «медиа» автора 13 видео по этапам (ссылки на странице Видео и ссылки на оригинальные страницы).
Автор задался вопросом: можно ли самому написать полётный контроллер мультикоптера без готового ПО. Проект стартовал 6 января 2014 как «зимний» (на улице слишком холодно для вертолётов), к тому времени он только познакомился с Arduino.
Хронология
2 февраля 2014 — первый квадрокоптер на Arduino летает. Стабилизация только по гироскопу: три ПИД-регулятора (тангаж, крен, рыскание), уставки — сигналы приёмника, измеряемая величина — гироскоп, выход — моторы. Код по сути тот же, что в YMFC-3D V2: простой квадрокоптер на Arduino Uno с автонастройкой.
8 февраля 2014 — работает автовыравнивание. Алгоритм слияния гироскопа и акселерометра автору показался сложным; прочитав про фильтры Калмана, он решил, что должен быть более простой путь, и, не используя MultiWii, Aeroquad и прочее, получил рабочий вариант («грубый код, но принцип рабочий»). Позднее это превратилось в разбор IMU (см. MPU-6050: 6-осевой IMU для автовыравнивания мультикоптеров (Arduino)).
22 февраля 2014 — первый полёт с удержанием высоты (барометр MS5607 фирмы Measurement Specialties, различает перепады около 20 см). Аппарат заметно «подпрыгивал», потребовался новый алгоритм по данным давления.
20 марта 2014 — удержание высоты работает идеально.
19 апреля 2014 — первый автономный полёт с GPS-модулем LS20031 и компасом (аппарат знает широту, долготу и направление). Удержание позиции было неточным, автор заменил модуль на u-blox LEA-6S и после доработки алгоритмов получил нужную точность.
16 июня 2014 — готов код квадрокоптера и телеметрического приёмопередатчика: с телеметрического блока аппарат можно отправить в любую точку (waypoint), даже при сильном ветре.
Лето–осень 2014 — переписывание ПО: Arduino-код удобен, но медленный и громоздкий, поэтому автор заменил Arduino-библиотеки собственными (таймеры, последовательный вывод, библиотека Wire написаны заново). Добавлены: возврат домой (RTH), RTH при потере сигнала пульта, поддержка Futaba S.Bus, сохранение и загрузка маршрутных точек, GPS-круиз (полёт при удержании GPS), поддержка сигнала подвеса. Итог: программа 28 КБ, реальная частота обновления 250 Гц.
30 декабря 2014 – 19 февраля 2016 — отказ от Arduino-«этажерки» на шилдах (стянутой липучками): собственная печатная плата. Сначала односторонняя для ручной пайки (много помех, ненадёжна), затем профессионально изготовленная двухслойная; пришлось научиться паять SMD. 10 июля 2015 плата готова.
8 октября 2015 — первый полёт октокоптера (избыточность моторов и ESC, возможность нести тяжёлые камеры и подвесы). Выходы под 8 моторов уже были на плате. Лучи октокоптера делались на микрофрезере Proxxon, переделанном в ЧПУ; центральные пластины — на нём же, остальное лобзиком и дрелью. Рама из крашеной фанеры оказалась тяжёлой, поэтому автор купил ЧПУ-фрезер и научился делать детали из углеволокна (см. Сборка фрезерного станка Stepcraft 420 с управлением через Arduino Uno и Фрезеровка углеволокна для любителей).
19 февраля 2016 — новая цель: аппарат, способный пройти проверку лётной годности RPAS. Для этого нужна точная система измерения тока, поэтому автор разработал плату измерения тока каждого регулятора. Идея: у многих ESC завышены ограничения тока, и при механическом отказе ток мотора может медленно превысить допустимый и привести к перегреву и короткому замыканию. С этой платой контроллер может отключить мотор до перегрева; при октокоптере полёт продолжается, и пилот безопасно садится. Можно также предупреждать пилота, если один мотор потребил заметно больше других.
17 марта 2016 — плата интерфейса ESC готова и работает, но пока не установлена: текущий полётный контроллер общается по I2C, а новая плата требует SPI. Следующий шаг — перепроектировать сам контроллер с крошечными LGA-датчиками прямо на плате (для пайки автор сделал паяльную плиту, см. Паяльная плита для оплавления (reflow) с управлением на Arduino).
Файлы
Схема YMFC-3D (JPG)(по ссылке со страницы загрузок RPAS).
Видео автора (YouTube)
Видео проекта на канале автора MacPuffdog: плеер ведёт на оригинал, ролики лежат у автора.
Фото на сайте автора
Фотографии и рисунки к проекту лежат на сервере автора (у сайта нет HTTPS, поэтому здесь только ссылки, они открываются в новой вкладке). Копия всех файлов хранится у нас в архиве.