Квадрокоптер на ардуино своими руками

SovGVD31 мая 2011 в 22:44

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

Распиновка подключения может немного отличаться, так как прошивка периодически меняется, но на момент написания статьи моторы, датчики, приемник и т.д. следует подключать так (из release note):
Моторы
(вид сверху, перед коптера вверху,
направление вращения и соотвествующие пропеллеры можно посмотреть на этой картинке или этой)
Передний левый2
Передний правый5
Задний левый6
Задний правый3
Приемник
(хотя бы первые 4, можно взять разъем от IDE шлейфа и отрезав лишнее вставить в приемник)
ThrottleA8
RollA9
PitchA10
YawA11
Mode (Aux1)A12
Aux2A13
Cam1A14
Cam2A15
Питание мозгов и приемника
Arduino можно питать от контроллера скорости (если имеет преобразователь питания), подпаяв выход питания к USB и Vin, другой вариант — питать напрямую от аккуулятора через специальный разъем питания на плате
Приемник запитываем от Arduino через соответствующие выходы +5v и GND
Другое
Переход в режим командной строки (ага, будет консолька) и настройки
для удобства можно поставить перемычку или выключатель
A5 замыкать с GND
Модуль GPSRX2, TX2
Модуль XbeeRX3, 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 на борту



Возможно следующая статья будет о полностью автономном полете, но не раньше чем через месяц, следите за вашей хабралентой.
Реклама прорвала Адблок: рейтинг лидеров digital рекламы Digital Index 2018

Пройти
Источник: https://habr.com/post/120332/

Предыдущая статья: сделай аську своими руками

Следущая статья: киров сад своими руками

Лучшие статьи: