Введение
Актуальность работы:
В современном мире разнообразная роботизированная техника, включая беспилотные летательные аппараты, находит свое применение в самых разных отраслях жизнедеятельности человека. Обладание навыками конструирования такой техники с использованием только базовых материалов является крайне востребованным для проектирования специализированных роботизированных устройств, потребность в которых будет все более и более увеличиваться.
Цель работы: Собрать квадрокоптер своими руками
Задачи:
Изучить основные принципы конструкции и работы квадрокоптера
Освоить процесс подготовки 3D моделей и их печать на 3D принтере
Освоить процесс самостоятельной сборки элементов беспилотного летательного аппарата
Разработать полетную программу для управления квадрокоптером
Теоретическая часть
Дроны и коптеры
Дроны – это беспилотные аппараты. Дроны бывают: наземные, плавающие, летающие. Нас интересуют летающие. Они разделяются на дроны самолетного и вертолётного вида.
Дроны самолетного вида требуют специального места и пространства для взлета, полета приземления - в помещении с ними не поработаешь.
Дроны вертолетного вида могут взлетать «с места» и записать в воздухе. С ними можно работать в помещении. Вертолёт по-другому называется геликоптер. Отсюда дроны вертолетного типа стали называть коптерами.
Конструкция коптера
Хотя название коптеров происходит от названия вертолёт - коптеры делают по другой схеме чем обычные вертолеты. Это связано с тем, что схема управления вертолетом очень сложна для маленьких устройств: настоящие вертолеты могут управляют своим полетом путем поворота лопастей винта. Так, при помощи таких разворотов можно сделать, чтобы «сзади» подъемная сила была больше, чем «спереди». Тогда вертолет немного «наклонится вперед» и тем самым начнет двигать вперед (куда его «потащит» винт). Сделать такой винт самостоятельно для небольшой модели – очень сложно.
Какая же конструкция у коптеров тогда? У коптеров есть несколько двигателей. На каждом из них находится винт (пропеллер), вращение которого и создает подъемную силу.
Таких двигателей/винтов должно быть четное количество – иначе вся конструкция будет вращаться в ту или иную сторону. Когда винтов четное количество, то половина винтов должна быть «правая» (т.е. которые вращаются слева на право), а вторая половина – «левая». Так они не дают раскрутиться самой модели.
Для коптеров с двумя винтами требуются дополнительные устройства для стабилизации положения коптера в пространстве. А схема управления коптерами с 4, 6 и т.д. винтами гораздо проще. Для таких коптеров просто нужно увеличить или уменьшить скорость вращения одного винта, что получить крен коптера в нужном направлении, что придаст коптеру скорость в этом направлении.
Поэтому простейшая схема коптера – это коптер с четырьмя винтами или квадрокоптер.
Схема управления коптером
Давайте рассмотрим, как должна работать схема управления коптером.
Раз в квадрокоптере четыре винта, то должно быть четыре двигателя. Двигатели – это потребители электричества, значит на коптере должен быть и источник электричества – аккумуляторы или батарейки.
Для управления коптером необходимо в нужные моменты времени увеличивать или уменьшать обороты конкретного двигателя. Для управлений оборотами двигателя нужно специальное устройство – контроллер двигателя (для каждого двигателя потребуется свой контроллер).
У для управления коптером нужно точно знать как он расположен в пространстве в каждый момент времени: например, если ли перекосы в ту или иную сторону. Узнать можно это при помощи специального устройства – гироскопа. Вот еще одно устройство, без которого коптер не полетит.
Однако самое важное – это «мозги» коптера, то, что делает обычное электронно-механическое устройство дроном – беспилотным летательным аппаратом. В качестве таких «мозгов» используется в сложных устройствах - компьютер, а в простых - микроконтроллер. Для квадрокоптера достаточно микроконтроллера.
Но хоть микроконтроллер и гораздо проще компьютера, но все равно – это довольно сложное устройство, с которым нужно знать, как обращаться. Так было до недавнего времени. Однако сейчас появилось устройство Arduino, которое позволяет собирать электронные схемы под управлением микроконтроллера почти как в обычном детском конструкторе. И это именно то, что нам нужно!
Таким образом, отдельные детали для сборки квадрокоптера:
4 двигателя. Их нужно купить или на Озоне, или на Али-экспрессе. Так как в конкретных моделях двигателя еще нужно хорошо разбираться, то выберем модели «на глаз»: размер примерно с ногтя большого пальца, высокая скорость вращения, возможность управлять оборотами двигателя. Ну и подешевле.
4 винта (пропеллера). Их нужно будет напечатать на 3d принтере. Для этого нужен 3d принтер (у меня есть) и схемы пропеллеров. Попытаемся найти готовые схемы винтов в интернете. Если не найдем – придется разбираться как устроены эти винты и рисовать схему самостоятельно.
4 контроллера двигателей. Выбирается после того, когда будут известны модели двигателей – просто ищем какие к этим двигателям нужны контроллеры. Покупаем их также на Озоне, или на Али-экспрессе.
Arduino – «конструктор на базе микроконтроллера». Покупаем на Озоне, Али-экспрессе или в ближайшем магазине радиотоваров.
Гироскоп – ищем на Озоне или Али-экспрессе любой гироскоп, который можно подключить к Arduino и покупаем его
Аккумуляторы. Так как у нас нет цели получить коптер, который будет летать без приземления долгое время, то попробуем использовать обычные пальчиковые аккумулятора или аккумуляторы типа «крона»
Корпус дрона. Придумываем схему корпуса и подготавливаем ее 3d схему. Потом печатаем ее на 3d принтере. Корпус дрона должен состоять из простых вещей – палочки, коробочки и т.п. Скорее всего в интернете можно будет найти примерные схемы и адаптировать их под наш коптер.
Теперь осталось только написать программу управления коптером, загрузить ее в Arduino и все готово.
Практическая работа
Изготовление корпуса квадрокоптера
С самого начала я планировал изготовить корпус на 3D принтере. Нужно было найти подходящую 3D модель. При выборе модели я ориентировался на доступные в магазинах двигатели. Я остановился на двигателе 2212.
После чего нашел подходящую для него модель корпуса. Модель состоит из 10 частей, каждую из которых нужно было напечатать: 2 центральные конструкции (верх и низ), 4 мачты, 4 ножки. Помимо этого, были напечатаны 2 вида пропеллеров. Первый после печати оказался слишком хрупким для выбранного двигателя.
Схемы частей представлены в Приложении 1.
Печать корпуса
У меня дома есть принтер Anycubic Motion 2. Для него есть программа Anycubic Workshop. В эту программу загружается файл части модели, модель располагается на рабочей площадке принтера, строится поддержка модели:
Для печати я использовал смолу серого и белого цветов. Процесс печати занимает от 40 минут до полутора часов.
После печати получалась черновая модель. Требовалось убрать остатки смолы и поддержку.
Для укрепления материала, части помещались под ультрафиолетовую лампу на 2 минуты.
Монтаж
Части модели нужно было состыковать дуг с другом и скрепить винтами. К мачтам крепились электродвигатели. Некоторые части ломались, и их пришлось печатать заново.
Сборка электрической схемы
Основным управляющим центром квадрокоптера стал микроконтроллер Arduino Nano. Этот микроконтроллер прост в использовании. К нему подкачаются датчики и двигатели. Датчики – это устройства, которые что-то измеряют, переводят в электрический сигнал и передают на Arduino. Arduino обрабатывает эти сигналы и передает на двигатели команды.
В качестве датчиков используются:
3-х осевой гироскоп GY-521. Это устройство определяет углы наклона квадрокоптера (по всех трем направлениям) и передает углы наклона в виде электрических сигналов на Arduino
Bluetooth модуль JDY-31. Это устройство позволяет принимать команды от мобильного телефона (по каналу связи bluetooth). Это позволяет использовать обычный сотовый телефон в качестве пульта управления квадрокоптером
В качестве двигателей использовались двигатели 2212 2700KV. Число 2700 в названии двигателей показывает, что данная модель увеличивает скорость вращения на 2700 оборотов в минуту при увеличении питания двигателей на 1B.
Двигатели потребляют большой ток во время своей работы. Их нельзя подключить напрямую у Arduino, так как такой большой ток выводит его из строя. Подключать двигатели к Arduino нужно через специальные устройства – контроллеры. В качестве которых использовались контроллеры HW30A. Arduino передает на контроллер сигнал, показывающий с какой скоростью нужно вращать двигатель, и контроллер выдает на двигатель нужного напряжение.
Чтобы электрическая схема работала – нужен источник питания. Для двигателей 2212 в качестве источника питания можно использовать 3 аккумуляторная 18650 напряжением 3.7В каждый, что дает в сумме 11.1В. Однако мне подумалось, что трех аккумуляторов будет недостаточно для питания 4 двигателей и самого Arduino. В итоге я использовал два блока по 3 аккумулятора. Один блок подключил к передним двигателям, а второй – к задним и к Arduino. Использовать два источника питания в одной схеме оказалось не сложно – нужно просто было соединить их выводы «земля» друг с другом.
Все маленькие электронные устройства (Arduino, датчики) были размещены на макетной плате. Это не очень надежно, так как там провода не припаиваются, а просто вставляются в гнезда платы, зато просто и можно легко поменять электрическую схему при необходимости.
У макетной планы нижняя часть липкая, что позволило ее прикрепить к верней части корпуса квадрокоптера. Аккумулятивные батарее крепятся к нижней части квадрокоптера при помощи гибких стяжек. Контроллеры двигателей размещаются на мачтах и также фиксируются при помощи гибких стяжек.
Управляющая программа
Первая версия управляющей программы могла принимать и обрабатывать команда с пульта управления, в качестве которого использовался обычный мобильный телефон с программой Arduino Bluetooth Terminal:
Программа обрабатывает следующие команды:
Start – запуск двигателей
Pause – остановка двигателей
Вверх – увеличить скорость вращение двигателей
Вниз – уменьшить скоровть вращения двигателей
Исходный код управляющей программы приведен в Приложении 3.
Первый запуск
После сборки рамы квадрокоптера и монтирования электрической схемы на нем – наступил волнительный этап – первых запуск квадрокоптера!
Первый запуск прошел с переменным успехом:
двигатели включились как и было запланировано
команда Вверх отрабатывала как надо и увеличивала скорость вращения двигателей
Однако, обнаружилось, что мощности аккумуляторов не достаточно для вращения двух двигателей на больших оборотах – один из двигателей отключался.
Однако нельзя сказать, что у меня получилась неудачная модель – нужно просто заменить аккумуляторы на более мощное. И такие аккумуляторы нашлись! Как только их доставят, я и продолжу работу над своим проектом.
Список литературы
3D модель копруса квадрокоптера для двигателей 2212. https://www.thingiverse.com/thing:4561858
3D модель пропеллера для квадрокоптера.
https://grabcad.com/library/drone-propeller-9
Подключения bluetooth модуля к Arduino.
https://kit.alexgyver.ru/tutorials/bluetooth-jdy31/
Подключение модуля гироскопа к Arduino.
https://kit.alexgyver.ru/tutorials/mpu6050/
Подключение двигателей к Arduino.
https://microkontroller.ru/arduino-projects/podklyuchenie-elektrodvigatelya-bldc-k-arduino/
Приложения
Приложение 1: 3D модели корпуса квадрокоптера
Низ Верх
Нога Мачта
Приложение 2: 3D модель пропеллера
Приложение 3: Управляющая программа
#include <Servo.h>
#include <SoftwareSerial.h>
#define MOTOR_FL_PORT 7
#define MOTOR_FR_PORT 6
#define MOTOR_BL_PORT 5
#define MOTOR_BR_PORT 4
#define BT_RX 9
#define BT_TX 8
SoftwareSerial mySerial(BT_RX, BT_TX);
Servo motorFL;
Servo motorFR;
Servo motorBL;
Servo motorBR;
int mbr=999;
int mbl=999;
int mfr=999;
int mfl=999;
int mstep = 10;
void setup() {
mySerial.begin(9600);
motorFL.attach(MOTOR_FL_PORT);
motorFR.attach(MOTOR_FR_PORT);
motorBL.attach(MOTOR_BL_PORT);
motorBR.attach(MOTOR_BR_PORT);
}
void loop()
{
if (mySerial.available()) {
char cmd = mySerial.read();
executeCommand(cmd);
}
motorFL.writeMicroseconds(mfl);
motorFR.writeMicroseconds(mfr);
motorBL.writeMicroseconds(mbr);
motorBR.writeMicroseconds(mbl);
}
void executeCommand(char cmd)
{
mySerial.write(cmd);
if(cmd == 'A')
cmdStart();
else if(cmd == 'P')
cmdStop();
else if(cmd == 'F')
cmdUp();
else if(cmd == 'B')
cmdDown();
}
void cmdUp()
{
mbr += mstep;
mbl += mstep;
mfr += mstep;
mfl += mstep;
}
void cmdDown()
{
mbr -= mstep;
mbl -= mstep;
mfr -= mstep;
mfl -= mstep;
}
void cmdStart()
mbr=1010;
mbl=1010;
mfr=1010;
mfl=1010;
}
void cmdStop()
{
mbr=999;
mbl=999;
mfr=999;
mfl=999;
}