Arduino для квадрокоптера своими руками

Контроллер для квадрокоптера на базе Arduino своими руками

Для того, чтобы ваш квадрокоптер на Arduino благополучно взлетел, надо обеспечить минимальный вес всей конструкции.

В нем важен каждый грамм. Именно по этой причине часто используют миниатюрную Arduino Nano, которую устанавливают на монтажной плате. В этом проекте предложена конструкция платы управления для квадрокоптера с минимально необходимой обвязкой и платами Arduino Nano и GY80.

Какого-то супер концепта в предложенной конструкции нет. Ее можно сделать и получше, но надеюсь, что благодаря этим материалам у кого-то появятся собственные идеи или же вы воспользуетесь предложенным решением.

Arduino-контроллер для квадрокоптера

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

Предложенная конструкция контроллера для квадрокоптера на Arduino Nano имеет ряд недостатков. Некоторые размышления на этот счет приведены ниже.

Вход BEC для питания квадрокоптера

Все, кроме одного контакта питания BEC (cистема питания приемника и квадрокоптера от силовой батареи и отключении мотора при достижении порогового напряжения) должны быть отключены. Порой на форумах люди заявляют, что несколько источников питания может вызывать неполадки из-за разницы в напряжениях (что очень похоже на правду, так как на них действительно разные регуляторы напряжения, хоть и очень маленькие). Отделить подключение сзади невозможно, так как там припаяно. Так что приходится отделять контакты моторов 2,3 и 4, чтобы в результате оставались только контакты сигнала и земли.

По сути эти источники питания BEC 5 В надо убрать или использовать в других целях. Например, можно предусмотреть дополнительный источник питания для контроллера, если первый перестал работать. Остальные BEC можно использовать для серводвигателей видеокамеры.

Расположение контактов для мотора и ресивера

Контакты для моторов желательно разместить в четырех различных углах для более простого доступа к ним. Контакты для ресивера (приемника) желательно располагать неподалеку от контактов питания.

Сокет для микроконтроллера

Для того, чтобы передавать данные по GPS или использовать ультразвуковой датчик расстояния с Arduino Nano, UNO или Pro Mini, нам понадобится дополнительный микроконтроллер. Он будет обрабатывать данные с GPS или сонар модулей и передавать их на плату контроллера полета через I2C.

Очень удобная фича — встроенный сокет для легкого подключения по I2C для периферийных устройств.

2 дополнительных контакта для моторов (для гексакоптера) показаны на риунке ниже.

Другие проекты контроллеров для квадрокоптеров

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

Плата контроллера может использоваться для три- и квадрокоптера с возможностью дополнительной установки камеры и стабилизацией тангажа.

Для питания сенсоров используется 3.3 В постоянный ток от Arduino Nano.

Контроллер, выполненный в круглом форм-факторе. Контроллер можно использовать на три- и квадрокоптерах.

Еще один круглый контроллер. Может использоваться для три- и квадрокоптеров. Можно подключить видеокамеру. Предусмотрена стабилизация тангажа и крен.

Предусмотрена проверка питания. Если питание отсутствует, подается сигнал на динамик. Можно запитать плату от отдельного BEC. На контроллере установлен светодиод для отслеживания состояния и питания.

Есть интересные серийные контроллеры для квадрокоптера на Arduino. Например, в пердставленом ниже тоже используется круглый форм-фактор плат. Этот контроллер можно использовать для три- квадро-, гексакоптера. Поддерживаются все фичи MultiWii версии 1.6. Кроме того, на плате есть встроенный регулятор 3.3 вольт.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Источник

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

Основная идея проекта — создать недорогой квадрокоптер, который имеет автономное питание и алгоритм стабилизации полета на Arduino.

Помимо Arduino нам понадобятся гироскоп/акселерометр и щеточные моторы. В приведенном проекте не рассмотрены методы управления полетом квадрокоптера, но их однозначно можно добавить. Стоимость данного квадрокоптера приблизительно равна 60$.

Читайте также:  Заправка игрушечная своими руками

Что такое квадрокоптер?

Уверен, что большинство читающих эту статью уже знают, что такое квадрокоптер. Если нет, привожу краткое описание этих замечательных устройств.

Квадрокоптер — это летающее устройство с четырьмя «ногами», на каждой из которых установлен мотор с пропеллером. Квадрокоптеры по своей сути схожи с вертолетами, но перемещение, поворот, наклон у них обеспечивается за счет синхронной работы четырех пропеллеров. Кроме того, у квадрокоптеров существует такое понятие как “pitch” (“тангаж”) – поворот вокруг продольной оси. Для того, чтобы стабилизировать полет квадрокоптера, два пропеллера вращаются в одно направлении (по часовой стрелке), а два — в противоположном направлении (против часовой стрелки). Благодаря этой возможности — зависать в одном положении в воздухе, квадрокоптеры в первую очередь используются для фотографии с воздуха и видеосъемки. Конечно же, квадрокоптеры и остальные подобные устройства со множеством двигателей, используются в спасательных операциях, полицией, военными и т.п. В последнее время стоимость компонентов для производства квадрокоптеров значительно уменьшилась и многие компании принялись за их производство. Купить готовое изделие на сегодняшний день не составит проблем.

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

Первое, что было сделано: гуглинг по магазинам в поисках компонентов, которые нам понадобятся для его изготовления.

В большинстве случаев используются микроконтроллеры и безщеточные (вентильные) моторы. В качестве контроллера было решено использовать Arduino, так как это идеальная платформа с точки зрения цены. Первая проблема, которая возникла — безщеточные двигатели. Помните, мы ведь ориентируемся на бюджет в 60 $. А стоимость одного безщеточного двигателя, который можно использовать в нашей конструкции квадрокоптера, колеблется в диапазоне от 20 $ до 60 $! Кроме того, использование этих моторов предполагает установку дополнительных контроллеров — speedcontrollers. Так что было решено использовать щеточные двигатели. Габариты нашего квадрокоптера небольшие, так что были куплены моторы с относительно маленьким крутящим моментом. Гугл подсказал, что квадрокоптеры с подобными приводами существуют. Найденные моторы могут поднять до 55 грамм веса, что нас вполне устроило. Следующий шаг — решение проблем стабилизации моторов с помощью гироскопов и акселерометров. Гироскоп — это устройство, которое использует гравитацию Земли для определения угла наклона (ориентации) в пространстве. Классическая конструкция гироскопа состоит из свободно вращающегося диска, который называется ротором. Ротор установлен на оси, которая расположена по центру большего, более стабильного колеса. При вращении оси ротор остается в статичном состоянии, которое соответствует центру гравитации. Акселерометр же представляет из себя компактное устройство, которое используется для измерения ускорения. Когда объект выходит из состояния покоя (начинает двигаться) акселерометр фиксирует вибрации, которые возникают при этом движении. В акселерометрах используются микроскопические кристаллы, которые генерируют напряжение при ударах. Это напряжение снимается и формируется значение ускорения. Эти два сенсора обязательны в квадрокоптере. Именно на основании их показаний формируется управляющий сигнал, который регулирует скорость вращения двигателей для обеспечения крена, перемещения или стабилизации нашего квадрокоптера.

Необходимые узлы, детали и оборудование

Для проекта квадрокоптера с управлением от Arduino нам понадобятся:

  • — провода;
  • — литиевые аккумуляторы на 3.7 В;
  • — транзистор: ULN2003A Darlington Transistor (можно взять транзистор, который поддерживает нагрузки и побольше);
  • — моторы: 0820 Coreless Motors;
  • — микроконтроллер: Arduino Uno;
  • — акселлерометр/гироскоп: плата MPU-6050 (дешевый и сердитый вариант типа «все в одном»);
  • — 3D принтер или доступ к нему для печати деталей конструкции квадрокоптера;
  • — инструменты (в том числе паяльник и умение им пользоваться!).

Ссылки для заказа необходимого электронного оборудования, которое использовалось в проекте из Китая

3-D печать деталей квадрокоптера

Один из первых шагов — создание рамы нашего квадрокоптера. Было решено пойти по пути наименьшего сопротивления и напечатать раму на 3D принтере. Помимо простоты изготовления, каркас, напечатанный на 3D принтере, получается достаточно легкий благодаря печати «сотами». Детали были спроектированы в Solidworks. Ниже представлены все твердотельные модели. Все можете их спокойно скачать и отправлять на печать. Детали сохранены в формате .stl. Если хотите, можете их смело дорабатывать и изменять с использованием того же Solidworks. Модели параметрические, так что если вы решите использовать другие моторы, достаточно просто изменить несколько параметров в модели и вы получите готовый каркас под ваши габаритные размеры квадрокоптера.

Читайте также:  Втулки для кулисы своими руками

В результате вы получите что-то вроде такого:

Настройка акселерометра-гироскопа (I2C)

1. Не подключайте к 5 В!

2. Рекомендуем использовать вот эту библиотеку для Arduino: Github.

В этом примере использовалась плата MPU6050 от SparkFun. На Amazon она стоит около $10, работает хорошо. Аналогичный Китай на Aliexpress или Ebay предлагает подобные платы по цене до 5 долларов. Тоже отлично работает.

Что такое I2C?

На простых платах акселерометра все логично и понятно: на ней предусмотрены отдельные аналоговые выходы для осей X, Y и Z. Каждый выход соответствует отдельной оси акселерометра. Если вы теперь взглянете на плату с I2C, поймете, что тут все несколько запутаннее. I2C — это стандарт обмена данными, при котором большие объемы информации передаются с помощью цифровых логических импульсов вместо аналоговых выходов. MPU6050 предоставляет вам 6 контролируемых осей (3 для гироскопа и 3 для акселерометра). Если бы они все были аналоговыми, нам пришлось бы задействовать все аналоговые порты на Arduino Uno. С протоколом I2C мы задействует гораздо меньше контактов для подключения.

Схема подключения Arduino

Схема подключения платы MPU6050 приведена ниже. Обратите внимание, что библиотека для Arduino предполагает использование именно этих контактов. Как правило, даже если у вас плата от другого производителя, контакты обозначены одинаково, следовательно, схема подключения остается такой же.

Если вы запитаете от 5 В, плата может испортиться, так что будьте внимательны и используйте именно 3.3 В. На некоторых платах MPU6050 есть регулятор напряжения, который выполняет роль предохранителя, но рисковать все равно не стоит. Если на вашей плате есть контакт AD0, его надо подключить к земле (GND). В нашем случае контакт VIO подключен к AD0 на самой плате, так что подключать пин AD0 не надо.

Скетч для Arduino

На этом этапе вам понадобятся некоторые знания в программировании Arduino. Если вы чего-то не понимаете, остановитесь на этом моменте и постарайтесь с ним разобраться. Приведенные ниже пояснения помогут вам со многими вопросами, но описать все возможные нюансы невозможно.

После того как вы подключили MPU-6050 к вашему Arduino, включите его и загрузите скетч I2C scanner code.

Скопируйте код программы, вставьте его в пустой скетч и запустите. Откройте серийный монитор Arduino IDE (Tools->Serial Monitor) и убедитесь, что вы подключены к 9600 (нижний левый).

Если вы все сделали правильно, должно обнаружиться устройство I2C и ему присвоиться адрес 0x68 ил 0x69. Запишите его. Если появились ошибки, проверьте подключение.

Теперь вам надо загрузить скетч, который обрабатывает информацию с акселерометра/гироскопа. По сети гуляет не один вариант подобных скетчей, рекомендуем использовать вот этот. После перехода по ссылке, нажмите “Download Zip”. После скачки, разархивируйте архив. Потом этого откройте Arduino IDE. Перейдите в sketch->import library -> add library. Вам надо будет добавить обе папки: I2Cdev и MPU6050.

После того как вы установили библиотеки, откройте файл MPU6050_DMP6 (MPU6050 -> Examples). Рекомендую вам его просмотреть, даже если вы не особо ориентируетесь в коде. Если у вас присвоился адрес 0x69, вам надо раскомментировать одну строку в верхней части кода (после #includes), так как по умолчанию стоит 0x68. Теперь программа должна компилироваться.

Загрузите программу, откройте окно серийного монитора (в этот раз с 115200) и следуйте инструкциям. Поздравляю, так как сейчас вы должны были получить значения с акселерометра/гироскопа через Arduino!

Прежде чем двигаться дальше, надо откалибровать ваш гироскоп/акселерометр. Найдите плоскую горизонтальную поверхность и поставьте на нее плату MPU6050.

Теперь запустите скетч для калибровки, который можно скачать здесь: MPU6050_calibration.ino (опять-таки, по умолчанию установлен порт 0x68, но вы можете его изменить). Запишите данные отклонений (offset), которые вы получите. Эти данные вы будете использовать в скетче MPU6050_DMP6 (и в дальнейшей программе для квадрокоптера).

Теперь у вас есть рабочий, безусловно полезный, акселерометр/гироскоп.

Подключение к Arduino

Подключение акселерометра мы рассмотрели. Следующий шаг — заставить Arduino управлять моторами. Плата Arduino предоставляет на выход небольшое значение силы тока и напряжения, так что вместо того, чтобы подключать моторы напрямую к цифровым выходам платы, мы используем транзисторы для «усиления» напряжения.

Читайте также:  Как сделать закрытое крыльцо своими руками

Начнем сборку электросхемы. На этом этапе нам понадобятся Arduino, моторы, транзисторы (монтажная плата и коннекторы). Схема подключения приведена ниже, под необходимыми текстовыми пояснениями. Подключите четыре ШИМ выхода (отмечены на Arduino знаком

) к транзистору, как это показано на рисунках. После этого подключите коннекторы к моторам, которые подключены к источнику питания. В приведенном проекте квадрокоптера использовался источник питания 5 В, но должна подойти и батарея 3-5 В.

Убедитесь, что транзисторы заземлены, и земля на Arduino подключена к земле от источника питания. Убедитесь, что роторы двигателей вращаются в правильном направлении (они должны обеспечивать подъем квадрокоптера, а не крен). Если вы переключите контакт мотора с 5 В на транзистор, ротор двигателя начнет вращаться в противоположном направлении. После настройки изменять направление вращение двигателей больше не придется. Изменять мы будем только скорость.

После запуска акселерометра и его проверки, необходимо установить все на ProtoBoard (можно использовать монтажную плату, на которую напаять рельсы для установки на Arduino. Можно пойти по более элегантному пути и приобрести Proto Shield). Не стоит припаивать транзистор на плату для прототипирования. Лучше использовать для него сокет с контактами, чтобы вы могли его в любой момент заменить.

В нашем случае мы припаяли акселерометр к плате и только после этого провели калибровку. Но практика показывает, что это не совсем правильно. Для увеличения точности показаний гироскопа/акселерометра, его лучше сначала откалибровать на ровной поверхности и только потом припаять.

Программа для Arduino

Программа, которая выложена здесь, стабилизирует квадрокоптер и позволяет ему зависнуть в стабильном состоянии. Программа является основой для дальнейшего управления и перемещения квадрокоптера. Помимо основной программы вам надо будет скачать библиотеку Arduino PID по этой ссылке.

Можете почитать по поводу ПИД-регулирования на Вики, если вы не знакомы с этими регуляторами. PID класс для Arduino использует три входа: заданное положение, измерение и выход. Выход зависит от текущего положения и измерений. ПИД-регулятор старается изменить выход таким образом, чтобы измерения соответствовали заданному положению. В алгоритме используется интересная математика. Алгоритм ПИД-регулирования старается отработать таким образом, чтобы значения оставались максимально стабильными.

В нашем алгоритме для стабилизации используется два ПИД-контроллера: один для тангажа и другой для крена. Разница в скорости вращения пропеллеров 1 и 2 будет такой же как и разница в скорости пропеллеров 3 и 4. Аналогично для пар 1,3 и 2,4. После этого ПИД-регулятор изменяет разницу в скорости, выводя тангаж и крен в нуль.

Не забудьте проверить какие цифровые пины с Arduino идут к моторам и соответственно изменить скетч.

Дальнейшая модернизация квадрокоптера на Arduino

Основные проблемы с маленьким квадрокоптером — его стоимость и вес. Можете поискать моторы побольше и помощнее, но это особо не улучшит его характеристики. Что вам действительно поможет, (если вы готовы отдать больше денег) — это безщеточные (вентильные) моторы. По характеристикам они на порядок лучше, но в довеску к ним надо использовать контроллеры скорости, что сделает квадрокоптер дороже.

Для уменьшения веса конструкции лучше всего использовать именно Arduino Uno, так как к этой модели контроллера можно снять «прошитый» чип микропроцессора и установить его непосредственно на вашу ProtoBoard. В результате вы выиграете около 30 грамм веса, что немало при таких масштабах. Дополнительно вам надо будет использовать еще несколько конденсаторов и т.п. Или, как альтернативный вариант, можно использовать Arduino Pro Mini.

Программа для Arduino, которая написана и представлена в предыдущем разделе, может быть легко расширена и обогащена дополнительным функционалом. Самое главное, что на этом этапе квадрокоптер уже может автоматически стабилизировать полет. Если вы хотите настроить дистанционное управление, можете посмотреть в сторону трансмиттеров/ресиверов или bluetooth модулей. В общем, основа у вас теперь есть, а пространства для дальнейшей модернизации — еще больше.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Источник

Оцените статью