31 мая 2011 в 23:44

Квадрокоптер своими руками: Часть II.1

ВНИМАНИЕ, статья устарела, но её всё еще можно использовать в ознакомительных целях
В прошлой статье я рассказал про набор деталек для построения своего квадрокоптера, а теперь настала пора поговорить о датчиках и мозгах.

Датчики и способы их добывания


Самый простой вариант — это купить готовую платку с 4мя основными датчиками (9DOF):
  • гироскоп — для измерения углового ускорения
  • акселерометр — для измерения ускорения и гравитации (по сути можно узнать угол наклона)
  • барометр — для измерения высоты и удержания коптера на этой самой высоте
  • магнитометр (компас) — для удержания направления движения

Так же сейчас появилась еще одна платка, на которой помимо четырех датчиков располагается GPS приемник, который пригодится для автономного полета.
Если вы решили покупать именно такую плату с датчиками (то вы сделали правильный выбор!), дальше про датчики можно не читать, но если вдруг у вас уже есть в наличии хотя бы гироскоп с акселерометром или хотите поиграть с удачей при заказе Wii Motion Plus из китайских магазинов, тогда дочитывайте эту часть статьи до конца.

Добываем гироскоп ITG3200

Возможно вы недавно купили себе Wii Motion Plus для своей игровой консоли с сайтов вроде dealextreme или buyincoins, тогда откройте его и посмотрите какой чип гироскопа там используется, скорее всего это будет ITG3205, он же ITG3200:
ITG3205 wii motion plus

воспользуюсь изображением с форума http://forum.xufo.net/bb/viewtopic.php?p=171796
Если ваша плата выглядит именно так, то вам очень повезло и следующим шагом будет допиливание этого WMP до хорошего гироскопа:
WMP to ITG3200

красным отмечено место перерезания дорожки, так же на обратной стороне есть дорожка ведущая к чипу, её тоже перепиливаем и на обратной стороне есть удобное место для припаивания проводка GND (земля, общий)

Добываем акселерометр BMA020 или BMA180

А вот тут уже и сложнее и проще одновременно, мне повезло и добрый пользователь с форума rcdesign.ru напаял мне BMA020 на платку с минимальной обвязкой, которую я посадил на тонкий 2х сторонний скотч:
BMA020

Вы можете поискать отдельно датчик и самостоятельно сделать подобную платку или попросить друзей или купить готовую с датчиком BMA020 или BMA180.

Другие варианты датчиков

На самом деле подойдут любые доступные гироскоп с акселерометром с шиной I2C, но придется переписывать соответствующие части кода или вставить уже готовый код из проекта MultiWii, например для гироскопа L3G4200D или аналогового акселерометра adxl335. Но иногда придется повозиться с ориентацией осей датчиков (менять знаки и оси в коде) и борьбой с вибрацией.

Сборка мозгов


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

Распиновка подключения может немного отличаться, так как прошивка периодически меняется, но на момент написания статьи моторы, датчики, приемник и т.д. следует подключать так (из release note):
Моторы
(вид сверху, перед коптера вверху,
направление вращения и соотвествующие пропеллеры можно посмотреть на этой картинке или этой)
Передний левый 2
Передний правый 5
Задний левый 6
Задний правый 3
Приемник
(хотя бы первые 4, можно взять разъем от IDE шлейфа и отрезав лишнее вставить в приемник)
Throttle A8
Roll A9
Pitch A10
Yaw A11
Mode (Aux1) A12
Aux2 A13
Cam1 A14
Cam2 A15
Питание мозгов и приемника
Arduino можно питать от контроллера скорости (если имеет преобразователь питания), подпаяв выход питания к USB и Vin, другой вариант — питать напрямую от аккуулятора через специальный разъем питания на плате
Приемник запитываем от Arduino через соответствующие выходы +5v и GND
Другое
Переход в режим командной строки (ага, будет консолька) и настройки
для удобства можно поставить перемычку или выключатель
A5 замыкать с GND
Модуль GPS RX2, TX2
Модуль Xbee RX3, TX3
Сонар/дальномер 9 — tx, 10 — echo
Светодиоды (не забываем про резисторы последовательно) 13,30,31


Настройка прошивки и загрузка


Эта часть статьи может стать не актуальна, поэтому следите за веткой форума ArduCopter Mega: порт на обычную Arduino (тестим)
  1. Скачиваем архив с прошивкой и распаковываем
  2. Папку libraries следует скопировать поверх (с заменой) такой же папке в Arduino IDE (arduino-0022)
  3. В папке libraries/AP_ADC в файле AP_ADC_ADS7844.cpp выбрать тип датчика: раскомментировать один из вариантов #define FFIMU, #define ALLINONE или одновременно #define ALLINONE и #define BMA_020 для варианта с датчиками ITG3200 и BMA020
  4. Если у вас нет барометра (как у меня), то придется закоментировать код работы с шиной I2C с этим датчиком в файле libraries/APM_BMP085/APM_BMP085.cpp
  5. Открыть через Arduino IDE любой из файлов в папке MegaPirate
  6. Во вкладке APM_Config.h выбрать тип своего коптера, для этого после #define FRAME_CONFIG вставьте один из вариантов: QUAD_FRAME TRI_FRAME HEXA_FRAME Y6_FRAME OCTA_FRAME, а так же тип ориентации рамы #define FRAME_ORIENTATION, выставив PLUS_FRAME или X_FRAME
  7. Если у вас нет GPS, лучше в начале изменить значение #define GPS_PROTOCOL на GPS_PROTOCOL_NONE, чтобы не ждать 10-15 секунд инициализации GPS (когда его нет!)
  8. Теперь можно подключить Arduino Mega и загрузить этот скетч в контроллер


Настройка коптера


После успешной загрузки скетча-прошивки в Arduino можно скачивать программу настройки (внимание, работает только в Windows и сильно кривовато в Linux с Wine) и замыкать контакт A5 с GND.
После запуска программы в меню Options выбираем COM-порт Arduino:

В меню Action выбираем AC2 Setup

И видим огромную кнопку, на которую нужно нажать и следовать инструкциям, особенно важно не пропустить первое окошко с кучей текста, в котором вас попросят двигать ручки пульта до их минимальных и максимальных значений, а так же другое окошко, в котором вас попросят убедится, что коптер стоит ровно для калибровки датчиков.
После завершения настройки можно размыкать A5 с GND и в меню выбрать пункт AC2 Sensor, чтобы проверить адекватность работы датчиков во вкладке Raw Sensor: повороты платки с датчиками должны четко отрабатываться — как повернули, так стрелка и встала, если она доплывает или перелетает значение, то есть проблемы с датчиками или коэффициентами в вашем коде.


Так же тут же стоит проверить работу приемника в соседней вкладке и если уровни двигаются как надо, то отклоняем джойстик газа (в пульте Mode 2 левый) вниз вправо на 2 секунды (надеюсь на этом этапе у вас не подключен аккумулятор и не стоят пропеллеры), светодиод на контроллере должен начать мигать. А теперь медленно двигаем ручку газа вверх, при этом в левом столбце уровни должны примерно одинаково увеличиваться.


Результат


Ну вот вроде бы и всё =) Теперь можно нацеплять пропеллеры (не перепутайте куда какие, какого вращения и проверьте чтобы моторы крутились в нужную сторону) и попробовать взлететь, для этого поставьте коптер подальше от себя (или держите его в руке над головой), наклоните левую ручку вниз-вправо на 2 секунды и медленно прибавляйте газу. Если коптер взлетает — это уже хорошо, если его начинает трясти, то требуется регулировать PIDы, для этого в меню Action выберите пункт PID Config — AC2, ужаснитесь количеству циферок и начинайте настраивать значения под себя. О том как это делать я не могу рассказать, так как делалось практически методом тыка, но стоит начать с параметра P. У меня хорошо летает вот с такими настройками:

После посадки не забудьте выключит моторы, отклонив ручку левого джойстика вниз-влево на те же 2 секунды и убедитесь что светодиод статуса больше не мигает.
Удачи в сборке и настройке своего коптера и не забывайте читать о новых фишках на форуме.

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


А так же адекватный полет с GoPro на борту



Возможно следующая статья будет о полностью автономном полете, но не раньше чем через месяц, следите за вашей хабралентой.
SovGVD @SovGVD
карма
46,2
рейтинг 0,1
Web разработчик
Самое читаемое

Комментарии (30)

  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      просто старая видеокамера подвешена, но планирую купить комплект FPV (вид от первого лица) в ближайшее время
  • +2
    Я придумал, как такое можно использовать на даче — беспроводная газонокосилка.
    • 0
      А ещё можно использовать дома как мощный вентилятор. Обычные дико подорожали, а лето обещают к в прошлом году
      • 0
        Жужжит громко, да и звук напоминает стадо мух в дачных/деревенских туалетах.
      • 0
        Уж лучше придумать датчик комаров и мух =)) Засек муху или комара — сам взлетает и рубит его :-)))
        • +1
          их и без датчика затягивало в лопасти, но комаров меньше не становилось =\
    • 0
    • 0
      дорогая косилка получается — трава наматывается на вал и блокирует его, ток идущий через двигатель возростает, и регуль испускает дымок. занавес ;)
  • +2
    Про настройку ПИД-регулятора можно посмотреть здесь http://pidregulator.com. Здесь и теория и практические выкладки. На самом деле подбором, не осознавая, что на что влияет не особо хорошо. На мой взгляд правильная настройка поможет Вам добиться более чистого управления.
  • 0
    Что лучше или практичнее в полёте, Трикоптер или Квадрокоптер?
    • 0
      лучше окто или гекса — надежнее и грузоподъемность выше (если например какую то дорогую камеру хотите поднять)
      трикоптер говорят лучше ведет себя в поворотах (но меньше полезной нагрузки), квадро более стабильный, но при повороте может немного менять высоту
      а вообще всё очень субъективно и зависит от навыков полетов — можно и на дешевом китайском вертолете делать пируэты
      • 0
        Очень привлекает трикоптер с задним рулевым винтом на пошаговом двигателе, вот думаю собирать начать.
        • 0
          много гемороя с механикой, и там не пошаговый, а серва стоит
  • +2
    После просмотра таких конструкций — я бы рекомендовал учиться делать печатки дома — это просто(утюгом), быстро, дешево и красиво :-)
  • 0
    А что с ним такое происходит, когда он набирает высоту? Это из-за ветра, или из-за чего? Получается выше его поднять не получится?
    • 0
      что именно происходит? поднять можно очень высоко, просто когда летаешь первый раз по нормальному — страшновато высоко, далеко или еще как то =)
  • 0
    Интересно что проблема стабилизации может быть решена достаточно успешно с помощью программного обеспечения - видео. Думаю можем ждать появление нужных библиотек в ближайшее время. Пока что относится к разработке на том видео нашел только pdf
    • 0
      а сейчас она так же достаточно успешно решается с помощью ПО и кучки датчиков =)
      если память не изменяет все эти крутые видео (из MIT в частности) делаются на коптерах, которые отслеживаются не дешевыми датчиками, а камерами по периметру площадки и мозги у них не одна ардуинка, а полноценная связь с кластером… так что сравнение немного не уместное: колхоз на дешевом оборудование vs крутые коптеры с дорогущими прибабахами
      • 0
        Да, ардуинки конечно маловато, но так ли нужны кластеры для подобных обсчётов? Неужели обсчитывается аэродинамика? Если так, то конечно без кластера никак. А про датчики согласен конечно, они видимо не дадут такой точности позиции как съёмка и анализ с разных позиций камерами по периметру.
  • 0
    А где можно получить информацию о том, какие пины ардуины к какому из устройств подключать для этой прошивки?
    • 0
      скачать прошивку и посмотреть файлик release_notes.txt в корне архива
      • 0
        Спасибо!
  • 0
    В конце видео можно заметить Марка Цукерберга
  • 0
    >Возможно следующая статья будет о полностью автономном полете, но не раньше чем через месяц, следите за вашей хабралентой.
    как бэ уже почти год прошел а пирогов все нет…
    • 0
      Да да, я помню но как то не складывается с автономным полетом, хотя другие давно летают на ArduCopter2 и клонах вроде MegapirateNG.
      • 0
        Сейчас собираю инфу по тому, что можно собрать и как дешевле. Мы играем в страйкбол. На данный момент пришло понимание того, что без читов чаще всего рано или поздно преимущество теряется в той или иной ситуации. Поэтому хотелось бы подумать на возможностью наблюдения с высоты с возможность доставки страйкобольных гранат непосредственно к противнику, бросая с высока. Из требований от коптера:
        1. Движение по точкам GPS.
        2. Автономный взлет и посадка.
        3. Время полета ~20 минут.
        4. Полезная нагрузка для гранаты 200-300 грамм.(а то и все 400 г.).
        5. Видеонаблюдение.
        • 0
          1. вы должны понимать что GPS_точка это шарик около 2-5 метров в диаметре, в котором коптер будет плавать, есть варианты улучшения позиционирования с помощью оптического сенсора (от мышки)
          2. ArduCopter2 вроде бы умеет это и MultiWii по немного подбирается
          3. можно вытянуть, но экономить на каждом грамме, а минут 10-15 без проблем
          4. гекса зеркалку с фаршем таскает, а 400 грамм любой квадрик утянет
          5. FPV комплект (камера + передатчик + приемник)
          посчитать примерно время и характеристики можно на сайте ecalc.ch/xcoptercalc_e.htm?ecalc

          Кстатии этот самый коптер любым камнем можно легко сбить и в итоге выкинете минимум 500-600$
        • 0
          Попробуйте связаться вот с этим человеком forum.rcdesign.ru/f123/thread279021.html у него коптер поддерживает полностью автономный полет.
      • 0
        Забыл кстате поблагодарить за то, что уже написано, что помогло накидать небольшую план-схему.

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