MultiWii

Материал из Multicopter Wiki
Перейти к: навигация, поиск

Полётный контроллер на основе Arduino - аппаратной вычислительной платформе, основными компонентами которой являются простая плата ввода/вывода и среда разработки на языке Processing/Wirin (типа С++). Называется так исторически потому, что в первых версиях были задействованы гироскопы из контроллера к игровой консоли Nintendo Wii (Wii Motion Plus и Wii Nunchuk), в данный момент платформа поддерживает большое количество сенсоров.

MultiWii.JPG

Платка продается в готовом виде, ничего паять не нужно. Изначально нужно было докупать гироскопы из контроллера Wii Motion Plus ($10) и акселерометр из контроллера Wii Nunchuk ($7), сейчас этого делать не нужно. Последние версии контроллеров Multiwii можно приобрести на rctimer.com или на Hobbyking, цена от 15 до 60$ в зависимости от функций.

Так как проект MultiWii работает на Arduino, то по идее все железо MultiWii совместимо с проектом Ardupilot, собственно есть такая команда ArduPirates которая занимается портированием кода Ardupilot на MultiWii (или наоборот как кому нравится). Что делает железо для MultiWii очень привлекательным вложением.

Контроллеры с процессором Atmega 2560 и датчиками последнего поколения MPU6050 (All In One Pro v1, v2) обеспечивают хорошее качество полета при невысокой цене (около 60$).

Содержание

Преимущества

  • Держит горизонт.
  • При наличии магнетометра (компаса) держит курс.
  • Обычно на плате уже есть USB порт, так что код заливается с компьютера без программатора и обновляется за секунды.
  • Настройка MultiWii происходит через удобный графический интерфейс. Можно настроить чувствительность аппы, вручную оттриммировать акселерометр, тогда в горизонте он вообще будет висеть в точке в безветренную погоду. Для опытного пользователя есть возможность копаться в коде
  • Регулярно обновляются прошивки
  • Очень универсален, поддерживает практически все существующие виды рам трикоптера. Можно пилотировать 3D в акро-режиме, летать блинчиком вокруг себя и по FPV.
  • MultiWii при должной настройке летает очень стабильно как в режиме только с гироскопом, так и со всей компанией датчиков.
  • Подходит для аэрофото/видеосъёмки. Если сделать все аккуратно (рама, моторы, пропеллеры, виброзащита), то абсолютно нормально можно летать и снимать. Контроллер прост и надежен, ни разу не было такого, чтобы из-за MultiWii упал коптер. Может работать в качестве автономного контроллера подвеса.
  • Возможно подключение Bluetooth или радиомодема для беспроводной настройки.
  • При использовании процессора Atmega2560 возможно использование функций GPS.
  • Существует версия Multiwii, портированная на процессоры stm: Afroflight (Naze32), однако этот проект поддерживается одним человеком, и его скорость развития под вопросом.

Поддерживаемые системы

Требования

  • Так как проект бюджетный, то и датчики в ней бюджетные, а значит их надо максимально защищать от вибраций. Насколько аккуратно будет сделана рама, отбалансированы пропеллеры и моторы, настолько и стабильно будет летать коптер.

(с датчиками последнего поколения качество полета заметно лучше)

  • Платы продаются без корпуса, желательно как-то защищать плату от влаги, грязи и пр.
  • Для использования компаса, его вместе с платой необходимо поднять выше над силовыми проводами, иначе он работать не будет. Возможно вынести компас вверх на отдельной плате (как сделано в Наза), но это менее надежно (в случае сбоя i2c-шины коптер может упасть).

Новое в версии MultiWii 2.0

Теперь вам необходима как минимум Arduino IDE версия 1.0, чтобы открывать *.ino файлы.

Сенсоры

  • Акселерометр MMA7544
  • Магнитометр (компас) MAG3110

Платы

  • CRIUS_SE
  • CRIUS_LIGHT
  • MONGOOSE
  • CHERRY6DOFv1_0
  • DROTEK_6DOF_MPU

Процессор

Код сделан на основе ATMega 32U4, который может рассматриваться как промежуточный вариант между 328 и 2560, с кучей плюшек по сравнению с 328, но почти таким же размером. [1]

Портирование на STM32

Возможно портирование MultiWii на 32-битный процессор. Это код позволяет перепрошить некоторые дешевые контроллеры полета на MultiWii, например FreeFlight FC, которую можно найти на сайте goodluckbuy или специально сделанный для этой версии AfroFlight32. [2] [3]

Режим стабильного полета (stable mode)

Настройки BMA180 и BMA020 изменены на 8G (было 2G). Было замечено, что вибрации приводят к переполнению акселерометров, вызывая неверное измерения и, как следствие, неверные углы PITCH/ROLL. Вероятно это было основной причиной "уплывания горизонта", т.е. стабильный режим с этими сенсорами теперь будет немного лучше. Одно из следствий: TRUSTED ACC теперь включено по умолчанию и наверное будет удалено в будущих версиях.

Значение D в PID LEVEL настройках теперь используется для ограничения эффекта коррекции угла. По умолчанию (D=100), поведение стаб. режима не поменялось. С более мелким D будет такой эффект: более плавное изменение уровня, должно убрать смертельные колебания.

Настройка

  • Скачать исходный код Multiwii (на момент написания текста последняя версия 2.2)
  • В файле config.h раскомментировать нужные строки кода, в зависимости от типа имеющейся платы (например #define QUADX, #define CRIUS_AIO_PRO_V1, #define MOTOR_STOP)
  • Скомпилировать с помощью Arduino IDE и загрузить прошивку в плату
  • Откалибровать акселерометр и (при необходимости) компас
  • Смотря на графики, проверить правильность работы датчиков по следующему алгоритму

1) TILT the MULTI to the RIGHT (left side up):
MAG_ROLL, ACC_ROLL and GYRO_ROLL goes up
MAG_Z and ACC_Z goes down
2) TILT the MULTI forward (tail up):
MAG_PITCH, ACC_PITCH and GYRO_PITCH goes up
MAG_Z and ACC_Z goes down
3) Rotating the copter clockwise (YAW):
GYRO_YAW goes up
4) The copter stays level:
MAG_Z is positive ; ACC_Z is positive

  • Проверить end-points на аппаратуре, чтобы минимум был около 900мс, максимум 1900 (иначе моторы не запустятся)

Если все нормально, можно лететь.

Если крутит по YAW

Проверить/настроить:

  1. Регули откалибровать на одинаковый диапазон газа!
  2. Аппа по yaw ~1500. Проверять в GUI! Находим макс. погрешность. Отводим стик в мин. положение и потом медленно возвращаем его в центр, под действием пружины в аппе, т.е. просто замедляя действие пружины. Запоминаем мин. значение (к примеру 1492). Потом проделываем тоже самое для макс. значения. Далее отводим стик на мин/макс позицию и отпускаем/отстреливаем под действием пружины аппы и также находим мин/макс значения, но они как правило меньше чем с "плавным" возвратом стика... Желательно проделать тоже самое для ролл/питч сразу, чтобы найти оптимальное значение для DEADBAND (мертвая зона стиков для полетного контроллера)...
  3. Теперь берем максимальное отклонение от центра, добавляем 3-4 единицы и вписываем в DEADBAND в config.h - например, 1500-1492+4 = 12
  4. После этого тримы не трогаем!
  5. Далее все процедуры с выключенным магнетометром! Hужно отстроить коптер по механике, чтобы нос не крутило. Временно выставляем yaw I в ноль и взлетаем, если за минуту не крутит более чем на 10-30 град. то все ОК по идее и интегральная составляющая будет держать как надо. Возвращаем yaw I на место (0.04-0.07), взлетаем, должно быть все ок, т.е. кручение не более 10 град. в минуту...

Если крутит сильно (при yaw I=0), то у вас скорее всего: не откалиброваны регуляторы, неравномерно мощные моторы (например, где то износ больше: подшипник или магниты ослабли от перегрева), моторы не строго параллельны горизонту (кривой мотормаунт, круглые лучи рамы с маунтами закрепленными не строго по горизонту и т.д.)... Лечить можно изменением наклона мотора, подгибанием мотормаунта к примеру, если конструкция позволяет... К примеру коптер крутит по часовой стрелке, значит для компенсации подгибаем мотор вправо... Полечили? Возвращаем yaw I на место и т.д.

См. также

Ссылки

Видео

Где купить

См. также

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты
Группа ВКонтакте