Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog

Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog Роботы

Multiwii flight controller with ppm sum

To program our code we have two options. One is to create the entire code for the Arduino and create a PID control with the data from the IMU and the receiver and control the drone. The other option is to use an already tested code. In this part we will use the second option.

The platform that we will use is called Multiwii. Multiwii is a flight control platform that could adapt for a big variety of flying machines. Drones, planes, helicopters and so on. The flight controller should read the accelerations and gyro data from the MPU uint.

Unzip the file. Inside of the unzipped folder you will find the Arduino code that we should upload to the flight controller board and also a Java/Procesing platform for live configuration of the board. Open the Arduino IDE. Now go to the folder and open the .ino file.

Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog

Here we define the minimum throttle. To control the motors, we have to send a PWM signal to the esc. The PWM is modulated by changing the pulse width of the signal. This width is measured in micro seconds. The motors that I’m using have a throttle range from 1000 us to 2000us where 1000 is no speed at all and 2000 is full throttle.

I like to live my drone on 1150 or 1200 minimum throttle because that will ensure me that I’ll have no motors delay when I start flying my drone. That would also mean that the motors will spin at low RPM while in the stand by mode. Ok I live the maximum throttle at 2000.

Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog

I’ll uncomment one that has the MPU 60 50 module. I select the NANOwii board since this one is for Arduino anno with a MPU6050 board. The next step is to establish a PPM communication between the radio controller receiver and the flight controller. The receiver that we will build will send an 8 channel PPM signal with the values for the throttle, yaw, pitch and roll. For that type control F to open the find tab. Now type PPM and click search.

Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog

Here in the PPM sum receiver add this line.

#define SERIAL_SUM_PPM THROTTLE,YAW,PITCH,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 // BELECTRONOOBS

This is the order of the PPM channels that we will receive. Now save and compile the code. Connect the Arduino of the flight controller to an USB and upload the code. Our flight controller is ready. Now to test it open the Java application from the other folder. Keep the Arduino connected to the USB and select the corresponding com. Click start and move the flight controller around.

Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog

As you can see we have a decent live control of the board. You could edit the PID values, calibrate the sensor or change the commands.

Базовые понятия

Квадрокоптеры бывают разные, но всех их объединяют четыре несущих винта:

Не смотря на кажущуюся симметрию, пилоту очень важно различать, где у квадрокоптера перед (показан стрелкой). Здесь, как у радиоуправляемых моделей автомобилей: при команде «вперед» квадрокоптер летит не туда, куда смотрит пилот, а туда, куда направлен воображаемый нос квадрокоптера.

Это таит в себе опасность: новичкам бывает трудно вернуть к себе подхваченный ветром аппарат, развернутый как-нибудь боком (мы, конечно, не говорим про полеты по камере от первого лица и про «умные» режимы полета с использованием компаса и GPS.) Решению этой проблемы частично могут помочь передние винты или лучи другого цвета, какой-нибудь шарик спереди или разноцветные светодиоды. Но все это оказывается бесполезным, когда пепелац стремительно превращается в точку над горизонтом.

Мы будем летать на раме квадрокоптера формы «X», потому что она мне больше нравится внешне. У каждой конструкции свои плюсы и свое предназначение. Кроме квадрокоптеров есть и другие мультикоптеры. Даже если не считать экзотические варианты, все равно их видов — целая куча!
Программируем квадрокоптер на Arduino (часть 1)

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

Углы тангажа, крена и рыскания (pitch, roll, yaw) — углы, которыми принято определять и задавать ориентацию квадрокоптера в пространстве.
Программируем квадрокоптер на Arduino (часть 1)Программируем квадрокоптер на Arduino (часть 1)Программируем квадрокоптер на Arduino (часть 1)Иногда слово «угол» опускают и просто говорят: тангаж, крен, рыскание. Но согласно Википедии это не совсем точно. Полет квадрокоптера в необходимом направлении достигается изменением этих трех углов. Например, чтобы полететь вперед квадрокоптер должен наклониться за счет того, что задние моторы закрутятся чуть сильнее передних:
Программируем квадрокоптер на Arduino (часть 1)
Газ квадрокоптера — среднее арифметическое между скоростями вращения всех моторов. Чем больше газ, тем больше суммарная тяга моторов, тем сильнее они тащат квадрокоптер вверх (НЕ ВПЕРЕД!!! «Тапок в пол» здесь означает наискорейший подъем). Обычно измеряется в процентах: 0% — моторы остановлены, 100% — вращаются с максимальной скоростью. Газ висения — минимальный уровень газа, который необходим, чтобы квадрокоптер не терял высоту.

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

Режимов полета существует много. Используется и GPS, и барометр, и дальномер. Но мы хотим реализовать базовый — режим стабилизации (stab, stabilize, летать в «стабе»), в котором квадрокоптер держит те углы, которые ему задаются с пульта не зависимо от внешних факторов. В этом режиме при отсутствии ветра квадрокоптер может висеть почти на месте. Ветер же придется компенсировать пилоту.

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

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

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

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

Благодаря им полетный контроллер узнает текущие углы тангажа, крена и рыскания. Эти датчики бывают встроенными в полетный контроллер, а бывают внешними. Процесс вычисления трех углов по показаниям датчиков — тема для отдельной статьи. Но нам этого здесь знать не надо: за нас все сделает MPU-6050.

Моторы на мультикоптерах потребляют большие токи, поэтому полетный контроллер управляет ими не напрямую, а через специальные аппаратные драйвера, называемые регуляторами скорости (ESC, ре́гуль, е́ска).

«Протокол» общения между регулятором и мотором нам не так важен, как «протокол» общения между полетным контроллером и регулятором, ведь нам предстоит из контроллера программно управлять регулятором. Бывают регуляторы, управляемые по i2c, но наиболее распространенные управляются сигналом прямоугольной формы с минимумом 0 вольт и максимумом 3-5 вольт (его называют ШИМ или PWM, а некоторые утверждают, что правильнее — PPM. Подробнее, например, здесь).

«Протокол» — это громко сказано: чтобы дать команду мотору вращаться с максимальной скоростью контроллер должен отправлять импульсы длительностью 2 миллисекунды, перемежающиеся логическим нулем длительностью 10 — 20 миллисекунд. Длительности импульса в 1 миллисекунду соответствует остановка мотора, 1.

При всей кажущейся простоте, здесь кроется засада: полетные контроллеры бывают разные с разными настройками, регуляторы бывают разные, и минимум (1 мс) и максимум (2 мс) — не универсальны. В зависимости от множества факторов диапазон 1-2 мс может на деле оказаться 1.1 — 1.9 мс.

Для того, чтобы регулятор и контроллер говорили абсолютно на одном языке существует процедура калибровки регуляторов. В ходе этой процедуры диапазоны регуляторов изменяются и становятся равными диапазону контроллера. Процедура зашита в программу каждого регулятора и включает в себя несколько простых шагов (шаги могут отличаться в зависимости от производителя — читайте инструкции!):

Смотрите про коптеры:  Интеллектуальные режимы полета квадрокоптеров от DJI

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

PWM с точно таким же принципом использует и бортовой приемник. Это небольшое устройство, получающая сигналы радиоуправления с земли и передающая их в полетный контроллер. Чаще всего в полетном контроллере для каждого канала управления (газ, тангаж, крен и т.п.) имеется свой вход на который поступает PWM.

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

Итак: во время калибровки радио полетный контроллер запоминает диапазоны приемника по всем каналам управления; во время калибровки регуляторов диапазон полетного контроллера заносится во все регуляторы.

Помимо программы для полетного контроллера необходима еще одна программа: интерфейс настройки полетного контроллера. Чаще всего им является программа для PC, которая соединяется с полетным контроллером по USB и позволяет пользователю настраивать и проверять полетную программу, например: запускать калибровку радио, настраивать параметры стабилизации, проверять работу датчиков, задавать маршрут полета на карте, определять поведение мультикоптера при потере сигнала и многое другое. Мы свой интерфейс настройки будем писать на C и Qt в виде консольной утилиты. Вот она, если заглянуть в будущее:

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

Поэтому полетный контроллер должен обеспечивать хоть какую-то безопасность: механизм armed/disarmed. Состояние квадрокоптера «disarmed» означает, что моторы отключены и даже команда полного газа с пульта не имеет никакого эффекта, хотя питание подано.

Состояние «armed» квадрокоптера означает, что команды с пульта выполняются полетным контроллером. В этом состоянии квадрокоптеры взлетают, летают и садятся. Квадрокоптер включается и должен сразу попасть в состояние disarmed на тот случай, если невнимальельный пилот включает его, когда стик газа на пульте находится не в нуле.

Чтобы перевести коптер в состояние «armed» пилоту необхоимо сделать какой-то заранее оговоренный жест стиками пульта. Часто этим жестом является удержание левого стика в правом нижнем углу (газ = 0%, рыскание = 100%) втечении пары секунд. После этого полетный контроллер делает хотя бы минимальную самопроверку и при ее успешном прохождении “армится” (к полету готов!)

О моторах, аккумуляторах, регуляторах, пропеллерах

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

И все же для общего понимания полезно знать основные моменты.

Аккумуляторы

Среди любителей и профессионалов многороторных систем наиболее распространены литий-полимерные аккумуляторы, как основные источники питания бортовой электроники и моторов. Их различают по емкости, напряжению и максимальной токоотдаче. Емкость, как обычно, измеряется в ампер-часах или миллиампер-часах. Напряжение измеряется в количестве «банок» аккумулятора. Одна «банка» — в среднем 3.7 вольт. Полностью заряженая «банка» — 4.2 вольта. Наиболее распространеты аккумуляторы с количеством банок от трех до шести. Максимальная токоотдача измеряется в амперах, а маркируется, например вот так: 25C. C — емкость аккумулятора, 25 — множитель. Если емкость равна 5 амперам, то такой аккумулятор может отдавать 25 * 5 = 125 ампер. Конечно же параметр токоотдачи лучше брать с запасом, но, в основном, чем он больше, тем дороже аккумулятор. Пример маркировки: 25C 3S 4500mah.

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

Моторы, пропеллеры, регуляторы

Основной параметр бесколлекторного мотора — его kv. Это количество оборотов в минуту на каждый вольт поданного напряжения. Наиболее распространены моторы с kv от 300 до 1100. Kv ближе к 1000 обычно выбирают для малых квадрокоптеров (1-2 килограмма плюс 500 граммов полезной нагрузки) и ставят на них пластиковые пропеллеры до 12 дюймов в диаметре. На больших мультикоптерах (для поднятия хорошей и тяжелой фото-видео техники) или на долголетах (для рекордов по времени полета) обычно стоят моторы с низким kv (300-500) и огромными карбоновыми пропеллерами (15 — 20 дюймов в диаметре). Kv — не единственный важный параметр мотора: часто можно встретить целые таблицы зависимости мощности мотора и тяги от подаваемого напряжения и типа установленного пропеллера. Кроме того, каждый мотор рассчитан на свой диапазон напряжений (количество банок аккумулятора) и на свой максимальный ток. Если производитель пишет 3-4S, не стоит использовать его с 5S аккумуляторами. Это же касается и регуляторов.

Если мотор рассчитан на ток до 30А, то регулятор стоит рассчитывать на ток до 30 10А, чтобы не допускать перегревов. Некачественные или неподходящие регуляторы могут вызвать так называемые «срывы синхронизации» и остановку мотора в полете, и вы узнаете еще один мультироторный термин: “поймал планету.” Еще один важный момент — толщина и качество проводов. Неправильно рассчитанное сечение провода или плохой коннектор могут привести к пожару в воздухе.

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

Бортовой компьютер и сенсоры

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

• компас и GPS вместе добавляют такие функции, как удержание курса, удержание позиции, возврат на точку старта и выполнение маршрутных заданий (автономный полет). К установке компаса стоит подойти внимательно, так как на его показания сильно влияют расположенные рядом металлические объекты или силовые провода, из-за чего «мозги» не смогут определить верное направление движения;

• сонар или УЗ-дальномер используется для более точного удержания высоты и автономной посадки; • оптический сенсор от мышки используется для удержания позиции на малых высотах; • датчики тока определяют оставшийся заряд аккумулятора и могут активировать функции возврата на точку старта или приземление.

Сейчас существует три основных открытых проекта: MultiWii, ArduCopter и его портированная версия MegaPirateNG. MultiWii самый простой из них, для запуска требует Arduino с процессором 328p, 32u4 или 1280/2560 и хотя бы одним датчиком-гироскопом. ArduCopter — проект, напичканный всевозможным функционалом от простого висения до выполнения сложных маршрутных заданий, но требует особого железа, основанного на двух чипах ATmega.

Продвинутый девяти- канальный пульт
Продвинутый девяти-
канальный пульт

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

Наконец, стоит упомянуть еще один компьютер — PX4, отличающийся от клонов Arduino тем, что у него есть UNIX-подобная операционная система реального времени, с шеллом, процессами и всеми делами. Но надо предупредить, что PX4 — платформа новая и довольно сырая. Сразу после сборки не полетит.

Настройка полетных параметров, как и программы настройки, очень индивидуальна для каждого проекта, а теория по ней могла бы занять еще одну статью, поэтому вкратце: почти все прошивки для мультикоптеров основаны на PID-регуляторе, и основной параметр, требующий вмешательства, — пропорциональная составляющая, обозначаемая как P или rateP.

Безопасность

Все новички, думая о безопасности, вспоминают AR.Drone и его защиту винтов. Это хороший вариант, и он работает, но только на мелких и легких аппаратах, а когда вес твоего коптера начинает приближаться к двум килограммам или давно перевалил за эту цифру, то спасти может только прочная железная конструкция, которая будет весить очень много и, как ты понимаешь, сильно уменьшит грузоподъемность и автономность полета. Поэтому лучше сперва тренироваться подальше от людей и имущества, которое можно повредить, а уже по мере улучшения навыков защита станет и не нужна. Но даже если ты пилот со стажем, то не забывай о технике безопасности и продумывай возможные негативные последствия твоего полета при нештатных ситуациях, особенно при полетах в людных местах. Не стоит забывать, что сбой контроллера или канала связи может привести к тому, что аппарат улетит от тебя далеко, и тогда для поиска может пригодиться GPS-трекер, установленный заранее на коптер, или же простая, но очень громкая пищалка, по звуку которой ты сможешь определить его местоположение. Настрой и заранее проверь функцию fail safe твоего полетного контроллера, которая поможет приземлиться или вернуть коптер на точку старта при потере сигнала с пульта.

Математика стабилизации, пид-регуляторы (pid)

Если вы решили заняться мультикоптерами, то рано или поздно вам придется столкнуться с настройкой ПИД-регулятора, поскольку этот математический аппарат применяется почти во всех задачах стабилизации: стабилизация углов квадрокоптера в воздухе, полет и удержание позиции по GPS, удержание высоты по барометру, бесколлекторные механизмы стабилизации видеокамеры в полете (подвес камеры).

Смотрите про коптеры:  Я всегда считал, что он лучший FPV пилот. Сами посмотрите. | Пикабу

Вы приобретаете двухосевой подвес для камеры, ставите туда, например, GoPro, включаете и вместо стабилизации получаете конвульсии, вибрации и дергания, хотя все датчики откалиброваны и механические проблемы устранены. Причина — неверные параметры ПИД-регуляторов.

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

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

Кроме того, мы же собираемся писать собственную систему стабилизации квадрокоптера! Предлагаю вместе со мной самим заново «изобрести» и «на пальцах» понять формулу ПИД-регулятора. Для тех, кому больше нравится сухой математический язык, я рекомендую Википедию, английскую статью, т.к. в русской пока не так подробно изложен материал.

Будем рассматривать квадрокоптер в двумерном пространстве, где у него есть только один угол — угол крена, и два мотора: левый и правый.

В полетный контроллер непрерывно поступают команды с земли: «крен 30 градусов», «крен -10 градусов», «крен 0 градусов (держать горизонт)»; его задача — как можно быстрее и точнее их выполнять с помощью моторов с учетом: ветра, неравномерного распределения веса квадрокоптера, неравномерного износа моторов, инерции квадрокоптера и т.п.

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

На Adruino вполне можно одну итерацию цикла обработки и управления уместить в 10 миллисекунд. Это значит, что раз в 10 миллисекунд будут считываться показания углов квадрокоптера, и на их основе будут отправляться управляющие сигналы к моторам. Эти 10 миллисекунд называют периодом регулирования. Понятно, что чем он меньше, тем чаще и точнее происходит регулирование.

Уровень газа поступает из приемника в контроллер. Обозначим его Программируем квадрокоптер на Arduino (часть 1). Напомню, что это среднее арифметическое между скоростями вращения всех моторов, выраженное в процентах от максимальной скорости вращения. Если Программируем квадрокоптер на Arduino (часть 1) и Программируем квадрокоптер на Arduino (часть 1) — скорости вращения левого и правого моторов, то:где Программируем квадрокоптер на Arduino (часть 1) — реакция квадрокоптера (усилие), которое создает момент вращения за счет того, что левый мотор вращается на Программируем квадрокоптер на Arduino (часть 1) быстрее, чем газ, а правый — на столько же медленнее. Программируем квадрокоптер на Arduino (часть 1) может принимать и отрицательные значения, тогда правый мотор закрутится быстрее. Если мы научимся вычислять эту величину на каждой итерации цикла обработки, значит мы сможем управлять квадрокоптером. Понятно, что Программируем квадрокоптер на Arduino (часть 1) как минимум должно зависеть от текущего угла крена (Программируем квадрокоптер на Arduino (часть 1)) и желаемого угла крена (Программируем квадрокоптер на Arduino (часть 1)), который поступает с пульта управления.Представим ситуацию: поступает команда «держать горизонт» (Программируем квадрокоптер на Arduino (часть 1) = 0), а квадрокоптер имеет крен влево:Программируем квадрокоптер на Arduino (часть 1) — разность (ошибка) между Программируем квадрокоптер на Arduino (часть 1) и Программируем квадрокоптер на Arduino (часть 1), которую контроллер стремится минимизировать.

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

Здесь P — коэффициент пропорциональности. Чем он больше, тем сильнее будет реакция, тем резче квадрокоптер будет реагировать на отклонение от требуемого угла крена. Эта интуитивно понятная и простая формула описывает работу пропорционального регулятора.

За несколько десятков миллисекунд (несколько итераций цикла обработки) под воздействием пропорционального регулятора квадрокоптер вернется в требуемое (в данном случае горизонтальное) положение. Все это время ошибка Программируем квадрокоптер на Arduino (часть 1) и усилие Программируем квадрокоптер на Arduino (часть 1) будут иметь один и тот же знак, хоть и становиться все меньше по модулю. Набрав какую-то скорость поворота (угловую скорость) квадрокоптер просто перевалится на другой бок, ведь никто его не остановит в требуемом положении. Все равно что пружина, которая всегда стремится вернуться в начальное положение, но если ее оттянуть и отпустить — будет колебаться, пока трение не возьмет верх. Конечно, на квадрокоптер тоже будет действовать трение, но практика показывает, что его не достаточно.По этой причине в пропорциональный регулятор нужно добавить еще одно слагаемое, которое будет тормозить вращение квадрокоптера и препятствовать перерегулированию (переваливанию в противоположную сторону) — своего рода имитация трения в вязкой среде: чем быстрее поворачивается квадрокоптер, тем сильнее надо пытаться его остановить, конечно, в разумных пределах. Скорость вращения (скорость изменения ошибки ) обозначим как Программируем квадрокоптер на Arduino (часть 1), тогда:

где D — настраиваемый коэффициент: чем он больше, тем сильнее останавливающее усилие. Из школьного курса физики всплывают смутные воспоминания, что скорость изменения любой величины — производная этой величины по времени:

И вот пропорциональный регулятор превращается в пропорционально-дифференциальный (пропорциональное слагаемое и дифференциальное):

Ошибку Программируем квадрокоптер на Arduino (часть 1) вычислить легко, ведь на каждой итерации мы знаем Программируем квадрокоптер на Arduino (часть 1) и Программируем квадрокоптер на Arduino (часть 1); P и D — настраиваемые перед запуском параметры. Для вычисления производной (скорости изменения Программируем квадрокоптер на Arduino (часть 1)) необходимо хранить предыдущее значениеПрограммируем квадрокоптер на Arduino (часть 1), знать текущее значение Программируем квадрокоптер на Arduino (часть 1) и знать время, которое прошло между измерениями (период регулирования). И вот она — физика шестого класса школы (скорость = расстояние / время):Программируем квадрокоптер на Arduino (часть 1) — период регулирования; Программируем квадрокоптер на Arduino (часть 1) — значение ошибки с предыдущей итерации цикла регуляции. Кстати, эта формула — простейший способ численного дифференцирования, и он нам здесь вполне подойдет.

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

Необходим механизм, который бы отслеживал такие отклонения и исправлял их. Характерной особенностью таких ошибок является то, что они прявляют себя со временем. На помощь приходит интегральное слагаемое. Оно хранит сумму всех ошибкок Программируем квадрокоптер на Arduino (часть 1) по всем итерациям цикла обработки. Как же это поможет? Если пропорционального слагаемого не достаточно, чтобы исправить маленькую ошибку, но она все равно есть — постепенно, со временем, набирает силы интегральное слагаемое, увеличивая реакцию Программируем квадрокоптер на Arduino (часть 1) и квадрокоптер принимает требуемый угол крена.Тут есть нюанс. Предположим Программируем квадрокоптер на Arduino (часть 1) равна 1 градусу, цикл регулирования — 0.1с. Тогда за одну секунду сумма ошибок примет значение 10 градусов. А если цикл обработки — 0.01с, то сумма наберет аж 100 градусов. Чтобы за одно и тоже время интегральное слагаемое набирало одно и тоже значение при разных периодах регулирования, полученную сумму будем умножать на сам период регулирования. Легко посчитать, что в обоих случаях из примера получается сумма в 1 градус. Вот оно — интегральное слагаемое (пока без настраиваемого коэффициента):Эта формула — не что иное, как численный интеграл по времени функции Программируем квадрокоптер на Arduino (часть 1) в интервале от нуля до текущего момента. Именно поэтому слагаемое называется интегральным:

где T — текущий момент времени.Пришло время записать окончательную формулу пропорционально-интергрально-дифференциального регулятора:

где Программируем квадрокоптер на Arduino (часть 1) — один из настраиваемых параметров, которых теперь трое: Программируем квадрокоптер на Arduino (часть 1). Эта формула удобна в применении из программного кода, а вот формула, которая приводится в учебниках:

Существует несколько ее вариаций, например, можно ограничить модуль интегрального слагаемого, чтобы он не превысил определенный допустимый порог (мы так и будем делать).

Настройка квадрокоптера с gps (inav).

Далее я опишу Вам самые основные настройки квадрокоптера (в основном скриншоты), которых будет достаточно для того, чтобы он без проблем полетел. На некоторых заострю ваше внимание. Чтобы наиболее полно изучить все настройки INAV рекомендую обратиться к документации на GitHub.

Ну вот мы прошили квадрокоптер, подключили к INAV Configurator. Первая вкладка, которую мы увидим — Setup и на ней будут видны два красных крестика, говорящие нам о том, что нужно откалибровать акселерометр и, в дальнейшем, компас.настройка квадрокоптера с GPS

Вообще блок Pre-arming checks на этой вкладке показывает все ли в порядке с подключениями и настройками. Если по какой-либо причине после всех настроек у вас квадрокоптер не будет Arm, то идите на эту вкладку и выясняйте причины.

Идем на вкладку Configuration и выбираем AUTO там, где указано. Здесь и далее после каждой операции не забываем сохранять и перезагружать.настройка компаса и акселерометра квадрокоптеракалибровка компаса и акселерометра INAVПрошиваем приемники FrSky через полетный контроллер | RCDetails Blog

Если вы все сделали правильно, то на вкладке Setup в блоке Pre-arming checks все будет зелёное.

Вкладка порты (инициализируем IBUS и GPS модуль).настройка портов пк OmnibusНастройка квадрокоптера с GPSПрошиваем приемники FrSky через полетный контроллер | RCDetails Blogк этой статье. В ней подробно описано как изменить направление вращения мотора в BLHeli Configurator.настройка моторов квадрокоптера с gpsMAG Alignment (важная настройка квадрокоптера с GPS) зависит от того, какой стороной и в каком направлении вы установили компас. Другими словами, подбирая эту настройку, мы как бы заставляем работать в унисон компас и акселерометр. Подбором этого значения, каждый раз сохраняя конфигурацию, вы должны добиться того, чтобы на вкладке Setup при наклоне квадрокоптера в ту или иную сторону, картинка на экране повторяла наклоны, но не вращалась!!! Если помимо наклона, происходит вращение, то продолжайте подбирать настройку дальше, пока движения не будут точно совпадать.настройка квадрокоптера с GPS. вкладка конфигурацияMAG Alignment (важная настройка квадрокоптера с GPS) зависит от того, какой стороной и в каком направлении вы установили компас. Другими словами, подбирая эту настройку, мы как бы заставляем работать в унисон компас и акселерометр. Подбором этого значения, каждый раз сохраняя конфигурацию, вы должны добиться того, чтобы на вкладке Setup при наклоне квадрокоптера в ту или иную сторону, картинка на экране повторяла наклоны, но не вращалась!!! Если помимо наклона, происходит вращение, то продолжайте подбирать настройку дальше, пока движения не будут точно совпадать.Прошиваем приемники FrSky через полетный контроллер | RCDetails Blog

Смотрите про коптеры:  Летательный пост №7 Пропеллеры! | Пикабу

Настройка передатчика для контроллера kk multicopter

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

Настройка каналов Aileron, Elevator, Throttle, Rudder передатчика:

JR / SPEKTRUM — все каналы в реверсе, канал газа — норма;FUTABA — все каналы норма, канал газа в реверс;HITEC — все каналы норма, канал руля высоты (Elevator) реверс;TURNIGY – все каналы норма, канал газа и руля высоты(Elevator)  реверс;

Данные взяты с интернета, поручусь только за Turnigy.

Центровка стиков передатчика:

— Установить все стики на передатчике в центральное положение.— На плате повернуть барашек потенциометра Pitch в положение 0.— Включить питание платы (подключить батарейку).— На плате светодиод мигнет один раз, потом через несколько секунд три раза быстро (стики на передатчике НЕ ТРОГАТЬ).— Выключить питание платы (отключить батарейку)— Восстановить значение барашка потенциометра Pitch в 50%

 Калибровка газа:

Рекомендую снять винты с двигателей — во избежание, некоторые регуляторы могут дать полный газ!

Установить стик газа на передатчике НА МАКСИМУМ!— На плате повернуть барашек потенциометра Yaw в положение 0.— Включить питание платы (подключить батарейку).— На плате светодиод мигнет один раз, потом через несколько секунд три раза быстро.

— Движки должны “запеть свою мелодию” и регуляторы войдут в режим программирования,  игнорируете этот сигнал регулей и переводите стик газа НА МИНИМУМ!— Движки должны подать звуковой сигнал.— Выключить питание платы (отключить батарейку)— Восстановить значение барашка потенциометра Yaw в 50%

Сброс настроек:

— Установить все барашки потенциометров на 0.— Включить питание платы (подключить батарейку).— Подождать несколько секунд.— Выключить питание платы (отключить батарейку)— Установить все барашки потенциометров на 50%

 Реверсирование каналов гироскопов:

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

Правая влево/вправо CH1 — Aileron – элероны Roll — кренПравая вперёд/назад CH2 — Elevator — руль высоты Pitch — тангажЛевая вперёд/назад CH3 — Throttle — газ -Левая влево/вправо CH4 — Rudder — руль направления Yaw — рыскание

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

Все! Квадрокоптер готов к полету!

Включайте передатчик, затем подключайте питание квадрокоптера.

Включение и отключение моторов

Для того, что бы моторы перешли в рабочий режим — переведите правый стик вниз-вправо. Загорится светодиод на контролере полета KK Multicopter.Для отключения двигателей — переведите правый стик влево вниз. Совет дан для прошивок которые лежат ниже.

Для других прошивок существуют следующие комбинации — оба стика вниз вправо, оба стика вниз друг к другу. Отключение — в другую сторону соответственно.

Питание и контроллеры питания

Капитан подсказывает: чем больше мощность мотора, тем больше батарейка ему нужна. Большая батарейка — это не только емкость (читай, время полета), но и максимальный ток, которая она отдает. Но чем больше батарейка, тем больше и ее вес, что вынуждает скорректировать наши прикидки относительно винтов и моторов.

На сегодняшний день все используют литий-полимерные батарейки (LiPo). Они легкие, емкие, с высоким током разрядки. Единственный минус — при отрицательных температурах работают плохо, но если их держать в кармане и подключать непосредственно перед полетом, то во время разряда они сами слегка разогреваются и не успевают замерзнуть. LiPo-элементы вырабатывают напряжение 3,7 В.

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

Например, твои моторы потребляют 10 А каждый и их четыре штуки, а батарея имеет параметры 2200 мА · ч 30/40C, таким образом, коптеру требуется 4 • 10 A = 40 A, а батарея может выдавать 2,2 A • 30 = 66 A или 2,2 А • 40 = 88 А в течение 5–10 секунд, что явно будет достаточно для питания аппарата. Также эти коэффициенты напрямую влияют на вес аккумулятора. Внимание!

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

Элементы батареи объединяют последовательно или параллельно. При последовательном включении увеличивается напряжение, при параллельном — емкость. Схему подключения элементов в батарее можно понять по ее маркировке. Например, 3S1P (или просто 3S) — это три последовательно подключенных элемента.

Однако моторы подключаются к батарее не напрямую, а через так называемые регуляторы скорости. Регуляторы скорости (они же «регули» или ESC) управляют скоростью вращения моторов, заставляя твой коптер балансировать на месте или лететь в нужном направлении. Большинство регуляторов имеют встроенный стабилизатор тока на 5 В, от которого можно питать электронику (в частности, «мозг»), можно использовать отдельный стабилизатор тока (UBEC).

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

Китайцы и тут подсуетились, и часто можно встретить регуляторы скорости с уже обновленной прошивкой. Не забывай, что такие регули не следят за состоянием аккумулятора и могут разрядить его ниже 3,0 В на банку, что приведет к его порче. Но в то же время на обычных ESC стоит переключить тип используемого аккумулятора с LiPo на NiMH или отключить уменьшение оборотов при разрядке источника питания (согласно инструкции), чтобы под конец полета внезапно не отключился мотор и твой беспилотник не упал.

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

Два силовых провода, идущих от регулятора, надо подключить к батарейке. НЕ ПЕРЕПУТАЙ ПОЛЯРНОСТЬ! Вообще, для удобства регуляторы подключают не к самой батарейке, а к так называемому Power Distribution Module — модулю распределения энергии. Это, в общем-то, просто плата, на которой припаяны силовые провода регуляторов, распаяны разветвления для них и припаян силовой кабель, идущий к батарее.

Собираем

Общая фотография перед сборкой (на момент сборки еще не получил нужные аккумуляторы, поэтому первые полеты были с аккумуляторами от Hubsan H107L на 240 мАч, 20С)

Комплектующие для сборки микро коптера


Вставляем моторы на место, не забывая про направление вращения. Я планирую использовать Betaflight, поэтому порядок моторов должен быть такой:

Моторы и направление вращения в betaflight

Моторы двух видов: вращаются по часовой стрелке (CW) и против часовой (CCW). Теоретически могут вращаться в любую сторону, но из-за особенностей конструкции щеток, при вращении «в неправильную» сторону ресурс очень сильно падает, либо они почти сразу ломаются.

Поэтому, смотрим внимательно

: те что вращаются

по часовой стрелке

(смотрим сверху) имеют

красный и синий

провода, те что вращаются

против часовой стрелки

имеют проводки

черного и белого

цветов.


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

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

ПК и мотору установлены на раме

Вес растет.

Припаиваем провода от моторов, ставим крепеж камеры, припаиваем провод питания камеры и проводок с разъемом для подключения аккумулятора. Ставим винты, взвешиваем все это дело и ужасаемся. 🙂

Собранный коптер


Пробуем взлететь. Со стареньким аккумулятором 240 мАч 20С газ висения примерно 90%. Начинаем борьбу за вес.

Антенна – клевер, у нее

, весит много, кроме того, конструкция достаточно жесткая, поэтому легко ломается. Отпаиваем антенну, берем кусочек тонкого коаксиала (от любой ненужной антенны сосиски, или от старого телефона, wifi роутера и т.п.). Снимаем изоляцию, отмерив от края 13 мм.

Антенна клевер на весах


Получили отличное решение – вес меньше, гибкость сильно лучше.

Идем дальше. Берем раму, отламываем корзину для аккумулятора (аккумулятор будем крепить на резинке). Дополнительно отламываем «защиту» винтов, вместо нее оденем термоусадку (она защитит провода, выходящие от мотора и немного поработает амортизатором).
Термоусадка для защиты проводов
Еще раз взвешиваемся.
Итоговый вес
Немножко радуемся полученному результату.

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector