В гостях у Самоделкина! » Электроника » Arduino » Самодельная система стабилизации самолета на базе Arduino

Самодельная система стабилизации самолета на базе Arduino


С недавних пор я увлекся авиамодельной темой. И тут понеслась: построил самолет, купил аппаратуру. Предвидя быструю кончину первой модели не отходя от кассы начал собирать вторую, параллельно занимаясь в симуляторе. В общем оттягивал я свой первый реальный полет как мог, боясь с ходу разбить модель. И тут совершенно случайно, бороздя просторы алиэкспресса я наткнулся на интересную штуку - систему стабилизации полета. Это небольшое, размером с приемник, устройство, которое корректирует полёт самолета, делая его более плавным, сглаживая огрехи пилота. Начал искать, читать, говорят и правда хорошая вещь для новичков. Ну и тут я загорелся - хочу и хоть ты тресни. Вот только бюджет уже совсем поджимал... Казалось бы, самолет тот построить вопрос долларов на 10 потолок, а аппаратуру купи, аккумулятор купи, зарядное устройство для него купи, двигатель, регулятор, сервоприводы, пропеллеры ... Короче в итоге набегает немало. Немного приуныв, но не сдавшись я начал чухать затылок: дык, я ж вроде паять умею. Начал искать и почти сразу же нашел небольшую статейку под названием "Система стабилизации самолета за 200 рублей". Совсем скромная статейка со совсем скромной реализацией. Но это уже что-то. Полез на зарубежные форумы - и о чудо, да это же огромный проект с постоянным развитием! Решено, будем делать!

Проект называется MultiWii. Изначально это задумывалось как полетный контроллер для мультикоптеров на базе arduino, но со временем начало обрастать и совершенствоваться. Сейчас есть код, позволяющий ставить эту систему стабилизации и на самолеты, и на V крылья. Для самого простого исполнения, как в вышеупомянутой статье, потребуется всего 2 вещи: arduino и акселерометр. Все это можно спаять проводами, залить горячими соплями и работать будет. Но оно может и будет, вот только я так не работаю.




И так, для изготовления полноценного устройства понадобятся:

  • Arduino PRO Mini, 5V, Atmega 328
  • Модуль трехосевого акселерометра с гироскопом MPU-6050
  • Гребенка PLS
  • Кусок фольгированного стеклотекстолита, если делаете плату сами.
  • SMD резистор 500-1500 Om
  • Светодиод 3 мм любой.

Из инструментов:

  • Паяльник
  • Припой
  • Флюс (я советую F5)
  • USB - UART конвертер CP2102 или аналогичный
  • Модельный/канцелярский/монтажный нож для изготовления корпуса

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

Как я говорил проект растет и развивается. Так что сюда можно прикрутить еще Bluetooth модуль, для настройки контроллера с телефона, барометр, для контроля высоты, GPS для возврата модели "домой" при потере сигнала. Помимо этого так же растет тема про самодельные приемники на базе той же arduino и дешевого модуля связи A7105, который без хирургических вмешательств сопрягается с моей аппаратурой FlySky i6, так что в теории можно связать два этих проекта и забабахать полноценные "мозги" для самолета, планера или крыла. А в купе с вышеупомянутой бюджетной аппаратурой, которая спокойно прошивается с 6-и каналов на 14-ть - это выходит вообще просто идеальный вариант для новичка за свои деньги.

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


Arduino



Для прошивки ардуинки потребуется специальный USB - UART (TTL) конвертор, т.к. Arduino PRO Mini не имеет USB интерфейса. Пугаться этого не стоит, как правило, купить их можно там же, где продают arduino и модули. Вся разница в прошивке через этот конвертер лишь в том, что нужно умело нажимать кнопку ресета на самой ардуинке строго в момент окончания загрузки скетча, хотя есть конвертеры, которые дергают лапку ресета и сами. Описывать процедуру заливки скетча я не буду, уже миллион статей и видео на эту тему написано и снято.

Плата



Следующим шагом будет изготовление платы. Плата изготавливается любой доступной технологией или заказывается. Крайне советую лудить дорожки, лучше сплавом РОЗЕ или ВУДА, что бы слой был как можно меньше, большие токи тут не гуляют, а медь лучше защитить от лишней коррозии, дождь, снег, мало ли, все таки не домашнее устройство. Я делал плуту ЛУТ-ом, не лучший результат, можно много отмазываться плохим принтером, но кого это волнует)



Первым делом впаиваем перемычки.



За ними arduino. Ножки для прошивки ардуинки нужно впаять вверх или угловые вбок. Можно залить скетч сразу, можно не заливать, это не важно, т.к. собранное устройство все равно придётся подключать к компьютеру, по этому контакты для программирования должны быть легкодоступны. Единственное советую проверить arduino перед впаиванием, залить любой проверочный скетч и убедиться, что плата прошивается. Просто перепаивать потом будет тот еще геморрой.



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




Один нюанс. На плате есть один резистор и светодиод. Резистор SMD формата можно выпаять из какой-то сломанной техники, номинал 500 Ом - 1.5 кОм. Светодиод можно взять обычный 3мм, у меня был прямоугольный, я впаивал его.


На этом этапе устройство в принципе уже можно подключать и настраивать, но как по мне выглядит незавершенным. Электроника для радиоуправляемых моделей уже давно приобрела модульный характер. По этому и это устройство считаю нужно довести уже до готового модуля, который легко монтировать в модель и подключать. Для этого ему нужен корпус. Хорошим вариантом было бы напечатать его на 3D принтере, пластик который используется для печати легкий и прочный. Но не у всех он есть. Можно сделать корпус методом термоформирования, в интернете масса информации как сделать простой станок для этого из пылесоса, бруса, и куска фанеры. Но для этого нужно делать болван, а это лень. По этому я пошел по пути наименьшего сопротивления. Да и такой способ будет под стать этой статьи - сделать как можно проще, используя минимум инструментов.


Корпус

По размерам платы я вырезал два кусочка пластика, в моем случае тонкий прозрачный ПВХ, но использовать можно что угодно, коробочку от диска например. Промежуточные фото не делал, но думаю и так понятно будет. Линейкой замерял расстояние до контактов на плате, и прорезал окошки для них на верхней части "корпуса". Просверлил отверстия соосно отверстиям на плате и соединил все вместе импровизированными заклепками из трубочек от ушных палочек. Что бы сделать такую заклепку достаточно аккуратно подержать кончик трубочки в пламени зажигалки и когда образуется наплыв - прижать к корпусу этой зажигалки. С обратной стороны подрезаем трубки оставив пару миллиметров и делаем то же самое. В качестве проставок использовал отрезки трубки от капельницы. В итоге вышел такой вот бутерброд:




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




Шильдик напечатал на самоклеящейся глянцевой бумаге. Купил недавно специально для таких целей. Раньше делал так: печатал на чем есть, ламинировал скотчем и клеил на двухсторонний скотч. Самые внимательные могли оценить мой уровень английского языка)

Теперь устройство действительно можно назвать готовым модулем. Итоговый вес 15.5 грамм. Многовато если сравнивать с покупным, но в целом очень даже ничего. По крайней мере моя модель с размахом 950мм потянет без проблем. Но если гнаться за весом - можно распаять arduino из рассыпухи прямо на плате, сэкономит грамма 2, использовать тонкий миллиметровый текстолит (я использовал какой был, полтора или два миллиметра, не измерял), не делать корпус. Но стоит ли ради тех 5 грамм? К примеру вес родного приемника от моей аппы - 16 грамм.
Устройство должно быть расположено в горизонтальной плоскости, стрелка указывает направление движения. Так же устройство нельзя устанавливать вверх дном. Для большей наглядности прилагаю картинку.




Настройка, калибровка

Теперь переходим к настройкам. Сначала нужно подсоединить устройство к компьютеру, после чего открываем приложенный графический интерфейс пользователя. Если никаких проблем с драйверами нет, то в программе должен появиться порт:




Выбираем его. Теперь нужно откалибровать акселерометр. Жмем кнопку READ и если все правильно - можем наблюдать показания с датчика в реальном времени. Кладем устройство на ровную поверхность и жмем CALIB_ACC. Обычно "ровная поверхность" это стол рядом с компьютером, так что когда жмете калибровку - руки от стола подальше. Кто не помнит, акселерометр - это датчик ускорения. Так что любые колебания или вибрации на калибровке положительно сказываться не будут. Но по возможности лучше все же калибровать на выставленной по уровню поверхности. Гироскоп калибруется сам при каждом включении, так что его калибровать не нужно. Единственное - при включении модель должна располагаться в неподвижном состоянии. То есть кладем модель на землю, включаем и не трогаем. Сразу происходит калибровка гироскопа. О калибровке сообщает светодиод, подписанный как STATUS.




Тут же настраиваем AUX1. Для него удобно использовать трех позиционный переключатель, если на передатчике такой имеется. При низком уровне (переключатель в первом положении) стабилизация отключена, при среднем уровне (и положении соответственно) включен акселерометр, при высоком - гироскоп и акселерометр. Для обычного полета в принципе достаточно акселерометра, гироскоп обычно задействуют при FPV полетах. Что бы было как я описал - выставьте значения как показано тут:



Немного о других настройках. PID - это настройки самой стабилизации. В двух словах:

  • Р - это величина корректирующей силы, приложенной для того, чтобы вернуть модель в её начальное положение.
  • I – это период времени, в течение которого записываются и усредняются угловые отклонения.
  • D – это скорость, с которой модель вернется в её начальное положение.




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

Далее. TPA отвечает за значение этих PID настроек в зависимости от положения газа. При значении 0.00 значения PID будут одинаковыми при любом положении газа, то есть как предполагается, на любой скорости. При значении 1.00 при газе 100% PID будут равны нулю, то есть стабилизация будет отключена. При значении 0.5 на 100% газа пиды будут равны 50% соответственно. Тут уже настраивается под самолет и под свой стиль пилотажа, я пока оставил 50%.

Так же на канале AUX2 нужно настроить арминг. Арминг - термин коптерный. По человечьи это называется разблокировка двигателя. На самолетах это обычно реализуется через аппаратуру управления, но т.к. этот контроллер изначально коптерный - тут это сделали довольно жестко. В общем вешаем на AUX2 какой-то свободный тумблер, в программе ставим ARM на высокий уровень. Тут кто-то может захотеть схитрить и выставить разблокировку на всех уровнях AUX2, вот только не проканает. В таком случае мультивий откажется запускать двигатель вообще. Можно предположить что это баг, но я думаю что скоре защита. Самолет все таки только вперед летит, а куда рванет неуправляемый коптер одним Богам известно.

К слову это на самом деле удобно. Конкретно в моей аппе разблокировка двигателя осуществляется переводом тумблера вверх. При этом аппаратуру включать нужно как раз со всеми тумблерами в верхнем положении. То есть выходит что нужно включить аппаратуру, перевести тумблер вниз что бы заблокировать двигатель, и потом уже переводить обратно вверх для разблокировки. И инвертировать главное нельзя. Тут же получается по человечески, в верхнем положении двигатель заблокирован, в нижнем разблокирован.




Во вкладке SERVO можно произвести реверс сервомашинок, если это необходимо. Тут сделали как-то мудрено. Для начала нужно нажать SERVO. Появиться список сервомашинок и уровни. Если сейчас нажать на клавишу реверса и попытаться сохранить - ничего не сохраниться. Сначала нужно нажать GO LIVE, после чего при отклонении стиков можно будет наблюдать отклонение уровней в окне. Теперь нажимаем на кнопку реверса нужного канала и уже после этого жмем SAVE. Теперь все записалось.




Важный момент про отключение устройства от компьютера. Если выдернуть провода программирования из устройства или выдернуть конвертер из USB порта не закрыв COM порт или программу MultiWiiConf - примерно со 100%-й вероятностью произойдет краш системы и синий экран. По крайней мере на моем ноуте это так. Я даже специально проверял. Не знаю, проблемы ли это моего железа или так реагирует видна на виртуальный COM порт, но предупрежден - значит вооружен. Имейте в виду.

И еще немного настроек которые могут пригодиться. Если Ваш приемник умеет выдавать PPM сигнал, возможно Вам захочется передавать на мультивий его. Для этого открываем файл прошивки, переходим во вкладку config.h и ищем раздел PPM Sum Reciver (восслався Ctrl+F). Тут нужно расскоменитровать 2 строчки. Кто не в теме, раскомментировать - это значит убрать два слэша в начале строки. Было так:


//#define PPM_ON_THROTTLE


Стало так:

#define PPM_ON_THROTTLE


Так же нужно расскоментировать одну из этих строчек в зависимости от аппаратуры:

//#define SERIAL_SUM_PPM        PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Graupner/Spektrum
//#define SERIAL_SUM_PPM        ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Robe/Hitec/Futaba
//#define SERIAL_SUM_PPM        ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Multiplex
//#define SERIAL_SUM_PPM        PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For some Hitec/Sanwa/Others


В моем случае это вторая строка, там где Futaba (при чем аппаратура у меня FlySky). Тут возможно придётся подбирать опытным путем, возможно и самому прописать нужную последовательность. Так или иначе ничего сложного в этом нет. Компилируем скетч и заливаем его по новой. Для возврата в обычный режим делаем обратное, комментируем строки, компилируем, заливаем. Хочу обратить внимание, после перезаливки скетча все настройки и калибровка будут сбиты, имейте это в виду.

Ещё одна распространённая проблема с которой как я понял часто сталкиваются, и я не исключение. После того как все собрали и настроили, подключили все рули - уплывает руль направления. Передернули ручки на пульте - вроде стал на место, но стоит немного покачать планер - опять уплывает в сторону, при чем на довольно серьезный угол. Лечится элементарно: в программе GUI устанавливаем значение YAW - I в ноль. Проблема сразу уходит.


Ну и видео работы:


Заключение

В общем и целом, если у Вас есть опыт изготовления печатных плат, устройство собирается за один вечер. Основные настройки для самолета я уже внес в скетч сам, остальные описал в статье. Информацию пришлось собирать по разным форумам, в основном зарубежным. Тем не менее даю ссылки на разные источники, которые помогут в случае других проблем, хотя их быть не должно.

Форум продавца печатных плат из Вены, у которого я и позаимствовал формфактор платы. Покупать я не предлагаю, но в теме есть детальный гайд по конфигурации прошивки на английском языке. Правда для старой версии прошивки, но в новой все почти так же. Так же в ветке есть мод, позволяющий в реальном времени регулировать PID настройки через аппаратуру управления потенциометром.

Личный блог авиамоделиста Патрика Эмерсона. У него есть своя личная переписанная прошивка, говорят что идеально оптимизированная под самолеты. Но опять таки старой версии. Можете попробовать ее, но за появление глюков не описанных в этой статье я ответственности не несу. Там же много описаний настроек.

Русская тема на форуме. Но основную полезную информацию, которая там описана, а именно лечение руля направления я уже изложил. Тем не менее, мало ли.

Итоговая стоимость колеблется в пределах 4-8 долларов, смотря по какой цене купили ардуино и модуль, есть ли дома текстолит, есть ли программатор. При любом раскладе это в разы меньше рыночной стоимости от 20 долларов за устройство с такими же характеристиками. Лично мне оно обошлось в 2 доллара, запас ардуинок для таких вот целей был закуплен еще год назад, не было только модуля.

В прикрепленном ниже архиве скетч для ардуино, программа настройки MultiWiiConf для разных операционных систем, файл печатной платы (для открытия нужен SprintLayout не меньше 6-й версии) а так же печатная плата в формате PDF, для тех, у кого нет лазерного принтера дома (нужно печатать в размере 100%).


airplain_stabilization.rar [10.64 Mb] (скачиваний: 206)

Всем удачи в творчестве!
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Относительно дешевый Quadcopter на Arduino с управлением от телефона, планшета, ПК

Самодельный летающий дрон с камерой, который следует за вами на автопилоте (на основе Arduino)

10
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
10
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
10
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 10 из 10 (голосов: 4 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
9 комментариев
  1. feonor12 Автор
    Забыл написать о ещё одной проблеме. Двигатель пускается только если самолет находиться в горизонтальном положении. Может случится так, что в полете вы будете делать петлю например, и по какой-то причине уберете газ в ноль, случайно может. Так вот после этого двигатель может уже не стартонуть. Самый простой способ решения проблемы пускать сигнал газа от приемника по Y кабелю, один подключается напрямую к регулятору, второй к мультивию. Но это работает только если вы не используете PPM. Для PPM этот косяк нужно лечить в коде.
  2. Валерий К.
    Уважаемый автор, я собрал автопилот по вашей статье. Но при прошивка не произошла по причине отсутствия завершения компиляции скетча. Прошу оказать помощь, поскольку я, к сожалению, не программист. С ардуино работаю недавно и опыта мало, а летать охота.
    1. feonor12 Автор
      Приветствую. Учитывая то, что скетч 100% рабочий, а библиотеки встроены в сам скетч, единственное что приходит на ум, это старая или наоборот сильно новая версия Arduino IDE. Почему-то иногда при "не той" версии скетч не компилится, у самого было только раз, но на форумах часто пишут о такой проблеме. Не помню, какая версия стояла когда собирал, но сейчас проверил, все скомпилировалось. Версия 1.8.6
      Так же почитайте источники, которые прикрепил в конце статьи, возможно кто-то тоже сталкивался с проблемой.
      P.S. Это не автопилот. Проект автопилота на ардуино тоже есть, ищите ardupilot.
      1. Валерий К.
        Спасибо за ответ. попробую другую версию. И, я знаю, что это не автопилот. Мне нужен именно стабилизатор полета.
        1. feonor12 Автор
          Отпишитесь, по возможности, на счет результата, решили проблему или нет. И если да - то как. Это будет полезно другим читателям.
  3. Гость Геннадий
    Привет. Собрал, залил скетч в ардуино , в программе показывает отклонения. Но не могу подключится к rc аппаратуре. Сервомашинки не работают, точнее "дребезжат".
    1. feonor12 Автор
      А Вы как к приемнику подключали, через PPM или поканально? Если поканально - то нужно в скетче во вкладке conhig.h найти раздел PPM Sum Reciver и закомментировать обратно строчку #define PPM_ON_THROTTLE, читайте конец статьи. Если у Вас через PPM но не работает - проверьте, не забыли ли переключить аппаратуру и приемник в режим PPM.
    2. feonor12 Автор
      И строчку #define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Robe/Hitec/Futaba тоже нужно закоментировать, в том же разделе, они рядом.
  4. Гость Геннадий
    Вобщем експеременты не увенчались успехом, ардуинка сгорела. Ждем новую от братьев китайцев, для продолжения.

Привет, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы уже рассказали на сайте о своей самоделке?

Последние комментарии

Все комментарии
Новые самоделки на почту

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.