- PVSM.RU - https://www.pvsm.ru -
Пару месяцев назад я здесь писал про свой тяжелый квад: раз [1], два [2]. Спасибо всем, кто читал и комментировал — я нe ожидал, что мои скромные труды привлекут такое количество читателей. Нo раз данная тема, судя по всему, интересует аудиторию Хабра, то поведаю вам о своем последнем проекте: легком FPV-трикоптере, который я завершил буквально на днях.
Для этого коптера я поставил себe следующие задачи:
Исходя из этих требований, я опять сел за LibreCad, и нарисовал вот что:
Размеры: расстояние между передними моторами — 27см, диаметр пропеллеров — 8".
Трикоптер — достаточно редкая разновидность мультироторов. Имея всего три пропеллера, невозможно компенсировать крутящий момент с помощью пар, вращающихся в противоположном направлении, как это делается на квадро-, гекса-, окто- и других коптерах. В трикоптерах вместо этого используется механизм наклона заднего ротора, позволяющий отклонять его вектор тяги от вертикали и таким образом управлять рысканьем. Преимущества данной схемы для моего проекта:
Недостаток — повышенная механическая сложность, необходим шарнир для крепления заднего мотора, и сервопривод для управления им.
Раму я решил собирать из алюминиевого профиля и стеклопластиковых пластин, вырезанных на фрезеровочном станке. Алюминий дает абсолютно достаточную жесткость на коптере этого размера, и весит такая конструкция очень немного. Дальше я подобрал следующие электронные компоненты:
Моторы: | Suppo A2208/17 1100KV | 3x €13,95 [3] |
---|---|---|
Пропеллеры: | Flyduino HQ 8x5 CF-reinforced (клоны Graupner E-Prop) | €7,80 [4] |
Регуляторы: | Blue Series 12A | 3x $10,02 [5] |
Аккумулятор: | Zippy Compact 3S 2200mAh 25C | $13,17 [6] |
Сервопривод: | Turnigy TGY-9025MG | $5,04 [7] |
FPV камера: | Sony Super HAD II 600TVL | ~45$ |
FPV передатчик: | Iftrontech Nano Stinger 5.8G 25mw | ~100$ |
OSD: | MinimOSD | ~20$ |
Регуляторы я перепрошил прошивкой SimonK [8] — она намного улучшает скорость реакции мотора на изменение заданных оборотов контроллером, поддерживает высокую частоту обновления входного сигнала, и вообще считается must-have для коптеров нa регулях, которые еe поддерживают.
Механику наклона я подходящую в продаже нигде не нашел, и решил делать сам — благо не так давно образовался доступ к 3D-принтеру. Разобравшись за вечер с FreeCAD, нарисовал следующие детали:
Получился шарнир с креплением на 10мм квадратную трубу, отверстием под 3мм ось, и креплением для мотора со стандартными отверстиями.
Мой выбор контроллера для этого коптера также пал на достаточно редкий вариант — Naze32.
(изображен использованный мной клон Flyduino MW32 [9])
Naze32 — по сути порт MultiWii на современное железо. Используется 32-битный процессор STM32F103, гироскоп и акселерометр MPU6050 (также установлен дополнительный акселерометр MMA8452, некоторые версии ПО используют его вместо MPU), барометр MS5611 и магнетометр HMC5883L. Почему я выбрал именно этот вариант:
Приемник GPS я взял обычный uBlox CN-06 (~50$). Можно былo ограничиться на 10г болеe легким модулем Mediatek, но он значительно медленнее и нe настолько точен — для хорошей жe работы функций типа return-to-home точность и скорость обновления критична, поэтому везде рекомендуют использовать uBlox.
В первую очередь я изготовил пластины для рамы и механику наклона заднего мотора.
Фрезеровочный станок вырезает пластины по контуру. Внизу — первая неудачная попытка. Совет: если в ПО станка выбрана 2-мм фреза, удостоверьтесь, что она же и установлена в станке :)
Основные детали вырезаны
Всe детали готовы к сборке. Алюминиевые трубки распилены на нужную длину, всe необходимые отверстия просверлены.
Собранная рама с контроллером.
MakerBot Replicator 2 печатает деталь из PLA. В сумме печать обеих половинок заняла где-то 30 минут, с толщиной слоя 0.2мм.
Готовые половинки шарнира. Отверстия пришлось пересверлить вручную, и место стыка обработать напильником — но после этого детали стыкуются прекрасно, практически без люфта, и поворачиваются без усилия.
Регуляторы Blue Series я, как сказано выше, перепрошил ПО SimonK. Для этогo пришлось снять с них заводскую термоусадку, и с помощью программатора USBAsp [11], адаптера для чипов Atmega [12] и программы kkflashtool [13] их перепрогаммировать. Так как на тот момент я еще не собрал раму и не распаял кабеля, то тест регуляторов после прошивки выглядел так:
После этого регуляторы я изолировал белой термоусадкой — раз уж рама у меня вся белая.
Итоговая сборка коптера в картинках:
Передние моторы, их регуляторы и FPV-камера установлены.
Вся электроника установлена на верхней полураме: спереди видеопередатчик, дальше контроллер, за ним GPS и сзади регулятор и (пока еще жестко прикрученный) третий мотор. Сбоку лежит сервопривод.
Вид снизу: посередине MinimOSD в белой термоусадке, вокруг куча проводов.
Куча проводов слегка упорядочена, припаян коннектор для аккумулятора (обычный желтый XT60). Чем хороши 3S аккумуляторы — их напряжением в 11-12,6В можно напрямую питать 12-вольтовые девайсы, в данном случае камеру и передатчик. Не нужны отдельные BEC'и, экономится вес.
Установлена механика заднего мотора, сервопривод и собственно мотор. В качестве оси шарнира я взял 3мм карбоновый стержень, он очень легкий и прочный. Отверстия под него рассверлены таким образом, что в верхней половинке шарнира он сидит плотно, а в нижней свободно вращается. Для спокойствия он также закрепен каплей клея возле мотора. Снизу висит приемник д/у Graupner GR-16.
Готовый коптер на кухонных весах. Старые аккумуляторы Turnigy на 20 грамм тяжелее новых Zippy Compact, на которых я сейчас летаю — таким образом итоговый вес сейчас 550 грамм, в четыре раза меньше моего квада.
Однако сборка коптера — это еще нe все.
Начнем с самого важного — прошивки ПО контроллера. С чипами STM32 все слегка сложнее, чем с Arduino-совместимыми MultiWii-контроллерами, но ненамного. Замыкаем припоем два контакта на обратной стороне контроллера, подключаем через USB и запускаем Flash Loader Demo [14]:
Выставляем 115200 бод, нужный порт, и поехали. Выбираем «Next» несколько раз, потом выбираем «Download», отмечаем «Jump to User Program» и «Global Erase», выбираем загруженный hex-файл выбранной прошивки (BaseFlight или Harakiri), и жмем еще раз Next. После прошивки контроллер перезагружается, готово. Отключаем, убираем перемычку между контактами на обратной стороне (иначе контроллер будет каждый раз грузиться в режим прошивки).
Конфигурация ПО делается в два шага — сначала основные параметры настраиваются через командную строку, а потом используется стандартный интерфейс от MultiWii для настройки PID-контроллеров, AUX-каналов и иже с ними. Вооружаемся Putty или любым другим терминальным клиентом, вновь подключаем контроллер к USB, открываем подключение к последовательному порту и сразу жмем "#", чтобы контроллер вошел в интерактивный режим:
Выполняем основную конфигурацию — задаем тип коптера (трикоптер), включаем функции GPS и PPM (если используем — PPM это режим вывода сигнала из приемника д/у, при котором всe каналы передаются через один кабель), задаем карту каналов (порядок каналов д/у, ответственных за четыре оси управления и AUX — он разный у разных д/у систем). Сохраняем, контроллер перезагружается.
mixer tri
feature gps
feature ppm
map TAER1234
save
Закрываем терминал, и открываем MultiWii GUI 2.1. Там, как и с любым обыкновенным MultiWii-контроллером, задаем функции AUX-каналов, проверяем диапазоны каналов д/у и настраиваем их так, чтобы границы были как можно ближе к 1000/2000, а середина к 1500, проводим калибровку акселерометра и магнетометра.
Все, можно лететь. Первый тест с коптером такого веса и размера можно легко выполнить сразу на месте, крепко удерживая его в руке (вообще эту процедуру рекомендовать я бы не стал, но при 550г веса и ~1.4кг максимальной тяги его достаточно легко удержать): запустить моторы на минимальный газ и покрутить коптер вокруг всех осей, проверив, что он правильно реагирует (противится движению). Если сервомотор наклоняет задний мотор не в ту сторону, это можно поменять в командной строке:
set yaw_direction = -1
Еще одна деталь, из-за которой мне пришлось поковыряться в параметрах: USB-порт на контроллере Naze32 находится сзади. При установке на моем коптере, однако, там находится GPS, и порт оказывается закрыт. Поэтому я решил повернуть контроллер на 90°. Этo возможно — необходимо лишь поменять оси сенсоров в параметрах; чтобы не было слишком просто, оси у гироскопа, акселерометра и магнетометра все разные (даже несмотря на то, что гироскоп и аксемерометр объединены в одном чипе). С помощью форума FPV-Treff удалось найти правильные команды для поворота на 90° по часовой стрелке:
set align_mag_z = -2
set align_mag_y = -3
set align_mag_x = -1
set align_acc_z = 3
set align_acc_y = -2
set align_acc_x = -1
set align_gyro_z = -3
set align_gyro_y = 1
set align_gyro_x = -2
Выполнять их надо именно в этом порядке, иначе контроллер может зависнуть — видимо, где-то спрятан хитрый баг. После сохранения и перезагрузки обязательно проверяем правильность данных в интерфейсе MultiWii — справа показаны угол крена и тангажа, они должны теперь соответствовать положению повернутого контроллера.
Раз мы уже делаем полноценный FPV-коптер, то не обойтись без OSD, который показывает информацию из контроллера на видео. С Naze32 прекрасно работает MinimOSD, с Harakiri даже со стандартной прошивкой, так как в отличие от BaseFlight Harakiri поддерживает протокол MAVLink. Однако существует ещe такая прекрасная прошивка для MinimOSD под названием KV-Team-OSD [15]. Она вообще предназначена для работы с MultiWii-контроллерами, но прекрасно работает с Naze32, и в отличие от стандартной и других прошивок позволяет изменять PID-параметры контроллера с помощью пульта д/у через экранное меню. Это сильно сокращает время на настройку этих самых параметров, которые обычно меняются только через GUI на компьютере.
MinimOSD — это миниатюрная плата с OSD чипом MAX7456 и процессором ATmega 328p, совместимая с Arduino. Для прошивки и настройки необходим лишь FTDI-адаптер, так как на плате нет разъема USB.
Сначала подключаем MinimOSD через FTDI в USB-порт и открываем Arduino. Открываем стандартный скетч EEPROM Clear, выбираем нужный COM-порт, выставляем плату Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega 328, заливаем. Ждем пару секунд пока загорится светодиод на плате — память старой прошивки стерта. Качаем сорцы KV-Team-OSD версии r345 или r370, открываем и добавляем следующие строки в config.h:
Компилируем, заливаем. Закрываем Arduino, подключаем питание к OSD-стороне платы (там нужны 12В, иначе чип MAX7456 не получает питания; альтернативно на некоторых версиях можно соединить несколько контактов припоем и запитать MAX7456 от 5В, тогда ни в коем случае нельзя подключать + со стороны камеры и передатчика), и открываем GUI от KV-Team-OSD. Сделан он на том же Processing, что и MultiWii GUI, и выглядит соответственно похоже. Заливаем шрифт на чип MAX7456, нажав Upload, дожидаемся окончания процесса. Выставяем параметры: плата Minim, не показывать RSSI и прочую фигню, показывать напряжение из данных MultiWii (если у нас подлючен соответствующий кабель на контроллере), показывать данные GPS кроме координат, ну и все остальное по желанию.
Если в этот момент уже подключены и запитаны камера и передатчик, то на видео сразу по нажатию Write видны изменения в настройках. Для полного удовлетворения можно включить симулятор внизу в GUI и поиграться с симуляцией, посмотрев, как будет изменяться картинка OSD в полете.
По завершению всех настроек не забываем нажать Write, отключаем адаптер FTDI и подключаем MinimOSD к Naze32 — пины TX и RX находятся в середине контроллера, +5В и землю можно взять напрямую с одного из BEC-ов регуляторов, или со свободного разъема на контроллере.
За качество видео прошу извинить заранее. Так как на коптере имеется только FPV-камера, то запись ведется простеньким рекордером на базовой станции — таким образом качество записи чуть хуже того, что я вижу в очках при управлении. Зато, в отличие от записи с помощью GoPrо, видны данные OSD.
Первый мой полет с дешевой сервой HXT900 и неидеальными PID-ами — уже совсем неплохо, но слегка нервно. В середине видео видно, как я приземляюсь и меняю PID-параметры через экранное меню, после этого полет намного плавнее. OSD работает не полностью — я забыл один из параметров в config.h (boxnames), из-за этого не работает статус активных сенсоров, режим полета, статус Armed/Disarmed и скорость по GPS.
Полет после установки сервы TGY-9025MG и перенастройки PID-ов. Плюс OSD работает полностью. Намного лучше :)
Подведу итоги. Все задачи, поставленные для коптера, выполнены:
Аппаратом я доволен чуть больше чем полностью. Летать на нем — одно удовольствие; Naze32 с софтом Harakiri летает великолепно, коптер очень стабильно лежит в воздухе и меняет направление полета как муха за счет легкого веса и достаточно мощной моторизации.
Поскольку я не эгоист, и оставить такое удовольствие себе одному считаю идеологически неправильным, то вот ссылки на чертежи рамы и файлы для 3D-печати шарнира для всех желающих:
Буду рад любым комментариям, критике и замечаниям. На вопросы постараюсь ответить.
Автор: leviathan
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy-ili-sdelaj-sam/45876
Ссылки в тексте:
[1] раз: http://habrahabr.ru/post/178509/
[2] два: http://habrahabr.ru/post/185746/
[3] €13,95: http://flyduino.net/Suppo-A2208-17-1100KV-Brushless-Outrunner
[4] €7,80: http://flyduino.net/Multikopter-Propeller-CW-CCW_22
[5] $10,02: http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=42116
[6] $13,17: http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=36071
[7] $5,04: http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=31585
[8] SimonK: https://github.com/sim-/tgy
[9] Flyduino MW32: http://flyduino.net/Multikopter-FC-Multiwii-BaseFlight
[10] FPV-Treff: http://fpv-treff.de/viewtopic.php?f=18&t=1368
[11] программатора USBAsp: http://www.hobbyking.com/hobbyking/store/uh_viewitem.asp?idProduct=21321
[12] адаптера для чипов Atmega: https://www.hobbyking.com/hobbyking/store/__27195__Atmel_Atmega_Socket_Firmware_Flashing_Tool.html
[13] kkflashtool: http://lazyzero.de/kkflashtool
[14] Flash Loader Demo: http://www.st.com/web/en/catalog/tools/PF257525
[15] KV-Team-OSD: https://code.google.com/p/rush-osd-development/
[16] гифка: http://i.minus.com/igDqzkmcF93MX.gif
[17] как на картинке в начале поста с декоративными элементами: https://dl.dropboxusercontent.com/u/2844116/Quadcopter/tri-full.dxf
[18] только элементы для фрезеровки: https://dl.dropboxusercontent.com/u/2844116/Quadcopter/tri-cnc.dxf
[19] верхняя половина: https://dl.dropboxusercontent.com/u/2844116/Quadcopter/top-10-3.stl
[20] низ под 10мм балку: https://dl.dropboxusercontent.com/u/2844116/Quadcopter/bottom-10-3.stl
[21] низ под 15мм: https://dl.dropboxusercontent.com/u/2844116/Quadcopter/bottom-15-3.stl
[22] Источник: http://habrahabr.ru/post/197878/
Нажмите здесь для печати.