Pull to refresh

О полетном контроллере MultiWii (коптеры, самолеты и вертолеты)

Open source *
ВНИМАНИЕ, статья устарела, но её всё еще можно использовать в ознакомительных целях
Захотелось внезапно рассказать подробнее об открытом и свободном проекте для управления различными летательными аппаратами (ЛА). Вообще до недавнего времени он был рассчитан только на мультиротороные системы (коптеры), стабилизацию подвеса камеры и в бета версии была стабилизация для летающего крыла, но судя по dev прошивкам в скором времени будут официально добавлены самолеты и вертолеты, а стабилизация полета летающего крыла уже вышла из стадии бета тестирования.

Небольшая предыстория


В самом начале развития проекта была большая проблема с датчиками — их просто не было или были, но по невероятно высоким ценам, поэтому первым датчиком для этого полетного контроллера стал Wii Motion Plus (WMP) от приставки Nintendo Wii, а от сюда в общем то и пошла приставка Wii в названии. Но время шло, датчики дешевели и сейчас мало кто использует контроллеры от приставки для создания своего MultiWii контроллера.

Составные части


Основным мозгом контроллера является AVR процессор, а если точнее — простая платка Arduino, к которой через I2C порт цепляются различные датчики. На данный момент, чтобы полететь вам понадобится любая Arduino совместимая плата и гироскоп, например ITG3205 выпиленный (это не сленг, а я прямом смысле слова выпиленный) из китайского клона контроллера WMP, но в такой конфигурации коптером будет довольно сложно управлять, так как выравнивать его параллельно земле (а значит и устранять дрейф) придется руками. И тут на помощь приходит акселерометр, которой всегда знает где «низ», т.е. земля, и поможет держать летательный аппарат параллельно земле. Таким образом для спокойного и стабильного полета нужны Arduino и два трехосевых датчика: гироскоп и акселерометр.



Дополнительно можно добавить такие датчики как магнитометр, барометр и GPS приемник.
Магнитометр (он же компас) знает как повернут ЛА относительно направления магнитного поля земли и может помочь при удержании курса, GPS навигации или в режиме carefree для новичков, когда, вне зависимости от направления реального носа аппарата, коптер будет лететь от пилота на команду «вперед» и к пилоту на команду «назад». На магнитометр очень негативно влияют магнитные поля от источников питания, проводов, моторов и всего что может давать электромагнитные волны, поэтому при проектировании рамы ЛА стоит располагать этот датчик как можно дальше от всего металлического и намагниченного.
Барометр (он же датчик атмосферного давления) может пригодиться для удержания высоты, но стоит учесть, что удержания высоты напрямую зависит от точности датчика, например BMP085 (установленный во многих полетных контроллерах) даст точность не более +-1 метра, т.е. при самых хороших условиях ваш ЛА будет плавать по высоте в пределах 1 метра или больше. Более современный датчик MS5611 может давать точность до 10см. На барометр может влиять любое изменения давления вокруг, ветер или потоки воздуха от пропеллеров, поэтому рекомендуется ставить этот датчик «под колпак» или приклеивать к нему кусочек поролона (как на микрофонах), но при этом очень важно не закрыть отверстие в датчике (например налив туда клея).
GPS приемник, полезная и одновременно бесполезная вещь. С одной стороны помогает включать такие хорошие штуки как удержание позиции и возврат на точку старта (возврат домой), а с другой эта самая точка очень приблизительная и зависит от точности приемника, количества видимых спутников или погодных условий, поэтому зависнуть около окна женской раздевалки может получиться в круге диаметром около 3-10 метров (а при добавлении хорошего барометра в сплюснутом шаре).
На момент написания статьи есть попытки добавить сонар (ультразвуковой дальномер) и оптический сенсор перемещения (какие устанавливаются в мышках). Сонар позволит добиться очень точного удержания высоты (около 1см) на малой высоте (примерно до 3 метров), но очень сильно зависит от поверхности, например высокая трава или бугры будут давать помехи и резкую смену высоты, т.е. коптер будет подпрыгивать или резко снижаться. А вот оптический сенсор может помочь GPS приемнику для более точного удержания позиции.
Проект может похвастаться большим количеством поддерживаемых датчиков различного назначения и с каждым релизом их число возрастает, а учитывая открытость проекта можно приделать и свои датчики.
Вот их список, официально поддерживаемых в прошивке MultiWii 2.0 (а в скобочках в последней develop прошивке):
Гироскопы Акселерометры Барометры Магнитометры
WMP
ITG3200
L3G4200D
(MPU6050)
MMA745
ADXL345
BMA020
BMA180
NUNCHACK
LIS3LV02
LSM303DLx_ACC
BMP085
MS561101BA
HMC5843
HMC5883
AK8975
MAG3110


Готовые платы контроллера


Как я уже писал выше — можно сделать свой контроллер из набора доступных датчиков и Arduino, но проще (а часто еще и выгоднее) купить готовую платку, на которой уже есть AVR чип и набор необходимых датчиков.
Самая популярная плата — Crius MultiWii, выпускается в двух вариантах Lite и Standart Edition, а так же недавно появилась новая версия, отличающаяся только наличием удобного I2C входа и более мелким размером.
Crius MultiWii Lite Edition имеет на борту только 2 датчика: гироскоп и акселерометр. Standart Edition, кроме имеющихся в Lite датчиках, может похвастаться барометром BMP085 и компасом. Новая версия платы имеет I2C разъем для подключения GPS модуля, который представляет из себя UART GPS приемник и AVR чип (Arduino), который выступает посредником между GPS и MultiWii контроллером (а в обозримом будущем полностью возьмет на себя GPS функционал, для разгрузки основного мозга).
В некоторых интернет-магазинах можно найти другие аналогичные контроллеры, поэтому если вы встретили нечто с 2мя или 4мя датчиками и 328p чипом (или 1280/2560), то с 99% вероятностью — это MultiWii контроллер.

Описание выводов для Crius и нюансы подключения

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

На картинке выделены разъемы для подключения вышеописанных устройств. Как видите каждый разъем объединяет 3 контакта: S — сигнал, + — питание (+5в) и G — земля. Так же у разъемов есть надписи вида Aцифра и Dцифра — к ним подключаются регуляторы скорости, сервоприводы и иногда дополнительные каналы приемника радио управления (соответствуют выводам на Arduino). Входы отмеченные как THR, ROLL, PITCH, YAW, MODE предназначены для подключения соответствующих выводов приемника.
От каждого регулятора скорости (ESC) идет 3 провода, один из которых +5v (красный или оранжевый по середине), но подавать питание на плату Crius нужно только с одного из ESC, а от других можно (и даже нужно) запитать оставшихся потребителей: приемник и сервы подвеса. Для этого потребуется вытащить из разъема центральный провод у всех (кроме одного, который и будет питать плату) регуляторов скорости и подключить их к потребителям или изолировать.
Для подключения к другим потребителям можно отломить 2 контакта от гребенки и запаять их вместе:


А затем соединить провод питания от регулятора скорости с проводом питания потребителя и затянуть их в термоусадку:


Аналогично можно поступить с ненужными проводами, сложив красный провод пополам и заизолировав его термоусадкой:


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

Нюансы настройки MultiWii


В первую очередь стоит обновить прошивку полученного контроллера, для этого достаточно скачать с официального репозитория MultiWii прошивку (пожалуйста, не качайте DEV версии, если вы не знаете что это и для чего), загрузить её в Arduino IDE, настроить параметры своего летального аппарата и выбрать набор датчиков в файле config.h, после чего загрузить полученный скетч в контроллер, выбрав в настройках одну из плат с чипом 328p (но только не arduinо UNO).
С версии MultiWii 2.0 в списке наборов датчиков появились Crius контроллеры:
//#define CRIUS_LITE // Crius MultiWii Lite
//#define CRIUS_SE // Crius MultiWii SE
Расскоментируйте один из них, соответствующий вашему типу контроллера.
Есть несколько, очень часто возникающих проблем у новичков (актуально для версии 2.0):
  • Для гексокоптера не работает приемник — в config.h требует раскоментировать строку #define A0_A1_PIN_HEX, а для задействования дополнительного канала РУ можно раскоментировать одну из строк #define RCAUXPIN8 или #define RCAUXPIN12 и подключить канал приемника к D8 или D12
  • Не все моторы работают или работают не синхронного — нужно откалибровать регуляторы скорости, для этого нужно соединить все сигнальные и все общие (земля) контакты и подключить их к каналу Throttle (CH3) приемника, а так же подключить один из проводов питания, после чего откалибровать регулятор скорости согласно инструкции к нему, но обычно требуется установить ручку газа в максимальное положение, подать питание на регуляторы скорости (надеюсь винты не забыли снять? а то будет очень больно), после чего опустить ручку газа в нижнее (минимальное) положение
  • Моторы вращаются не в ту сторону — нужно поменять любые 2 контакта, идущие от регулятора скорости к мотору
  • Моторы не активируются — проверить настройки РУ, для этого в MultiWii конфигураторе проверить что крайним положениям ручки соответствуют значения 1000 и 2000, а центральному положению — 1500, если это не так — исправьте, после чего заново перекалибруйте регуляторы скорости


Графический конфигуратор


Графический конфигуратор написан на processing и является кросплатформенным Java приложением, на данный момент скомпилирован для Linux, Windows и MacOS операционных систем 32 и 64 битных архитектур.


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


Справа от графика расположена объемная модель вашего коптера, а так же указатели компаса и наклона аппарата. Если аппарат расположен параллельно горизонту, а на картинке PITCH и ROLL наклонены — нажмите кнопку CALIB_ACC, чтобы контроллер запомнил это положение и всегда стремился к нему.


Сверху над графиком расположены настройки PID регулятора, активации режимов и некоторые статусные данные. Чтобы увидеть значения нужно нажать кнопку READ, для их изменения нажать на окошко с цифрой и подвигать мышкой, а чтобы сохранить — нажать WRITE. Никогда не меняйте за 1 раз несколько значений PID реглятора — иначе не поймете от чего стало лучше или хуже. А что и как крутить можно прочитать тут.

Более детальное описание можно узнать на официальном сайте проекта MultiWii или на моем сайте airm.ru, где стараюсь держать ту же информацию на русском языке, а так же многие дополнения и новости о проекте.

Что, где, почем?


Все описанные контроллеры можно легко найти на ebay, aliexpress, goodluckbuy или rctimer
Цена может варьироваться от 25 до 100 долларов, в зависимости от магазина и наглости.

Полет с GPS


Более года назад я пообещал полет по GPS, по маршруту и прочие плюшки навигации. Пока на MultiWii контроллере удалось испытать удержание позиции.

В целом неплохо, коптер плавал в круге радиусом около 7 метров (ничего не настраивал предварительно), но потом внезапно рванул куда-то в даль от меня и тесты были отложены.
Но зато начал понемногу осваивать фото и видео съемку с воздуха.

Получается так себе, но еще 2/3 лета впереди и куча планов, в том числе отдельный пульт для оператора.


Задавайте вопросы, если таковые имеются, постараюсь ответить и дополнить эту статью.
Tags:
Hubs:
Total votes 37: ↑36 and ↓1 +35
Views 45K
Comments Comments 46