Плата управления квадрокоптером. Немного теории.

Для начала, давайте разберемся, зачем вообще нужна плата управления. Вон, на моделях самолетов летают без всякой «умной» электроники вообще, почему так нельзя летать на коптерах?
Дело в том, что классический самолет (планер) конструктивно обладает таким свойством как «устойчивость». «Устойчивость – свойство самолета восстанавливать без вмешательства пилота кинематические параметры невозмущенного движения и возвращаться к исходному режиму полета после прекращения действия возмущений».

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

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

Как вы уже наверное поняли, основная задача платы управления – сделать наш летательный аппарат (ЛА) «устойчивым» и максимально упростить управление ЛА.

Дале, мы будем рассматривать наш коптер с точки зрения теории автоматизированного управления (ТАУ).

Для того, чтобы эффективно управлять системой нам нужно 3 вещи:

1. Знать, в каком состоянии мы хотим поддерживать систему;
2. Иметь возможность определить, в каком состоянии находится система в данный момент;
3. Иметь возможность оказывать управляющее воздействие на систему.

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

Оказывать управляющее воздействие (в случае квадрокоптера) мы будем посредством изменения скорости вращения двигателей/винтов. Думаю здесь все понятно. Например, нужно развернуть коптер вокруг определенной горизонтальной оси – увеличиваем обороты одного двигателя и снижаем обороты противоположенного двигателя. Изменяя, на одинаковое значение, обороты сразу всех двигателей, мы изменяем общую подъемную силу, и можем управлять положением ЛА по высоте.

Теперь касательно пункта №1. Я знаю два подхода, которые применяются в платах управления, это управления по угловой скорости вращения вокруг осей и по абсолютному положению ЛА.

Управление по угловой скорости.

Во-первых, давайте разберемся — о каких углах идет речь. Так как коптер является ЛА, для обозначения углов используются авиационные термины:

Итак, есть три угла: тангажа (pitch), крена (roll) и рысканья (yaw).

Так вот, первая проблема, с которой приходится сталкиваться при управлении коптером – он самопроизвольно вращается по всем этим углам. Причем быстро, спонтанно и по всем трем одновременно. Если стабилизировать вращение по данным углам – поведение ЛА будет более предсказуемым, и управлять ним будет на порядок легче.

Есть такая популярная (в силу свой доступности) плата управления КуК. Вот она, как раз, и работает по принципу стабилизации вращения по углам. Говоря в терминах ТАУ, КуК это пропорциональный регулятор с обратной связью по угловой скорости.

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

Программа данной платы содержит основной «супер-цикл» регулирования. В каждом цикле, для каждого из трех углов, происходит следующее:

1. получаем моментальное значение угловой скорости с гироскопа (для данного угла).

2. нормируем полученное значение, и умножаем на некий коэффициент P. Этот коэффициент – пареметр пропорционального регулирования, в КуКе но устанавливается с помощью подстрочного резистора, установленного на плате.

3. Изменяем скорость вращения двигателей (на одной из осей коптера) на величину, полученную на предыдущем этапе. Для одного двигателя уменьшаем скорость вращения (на указанную величину), для противоположенного – увеличиваем. Это создает тягу, направленную в противоположенную сторону от вращения коптера (измененного на этапе 1), и тормозит вращение.

Алгоритм (1 – 3) повторяется для каждого из трех углов. После чего цикл начинается сначала.

Вот и все. При правильно подобранном коэффициенте P регулятор будет достаточно эффективно «тормозить» вращение коптера.

Летать на КуКе можно, и при хороших навыках – получается неплохо. Но, нужно понимать, что данный регулятор просто пытается свести к нулю значение угловой скорости. Он не знает, в каком положении относительно горизонта находится ЛА, не берет в расчет линейное перемещение ЛА. Если наш коптер уже перевернулся на 180 градусов и отвесно падает – регулятор на это никак не реагирует – если при падении вращения по осям нет (есть только линейное ускорение), регулировать КуКу нечего 🙂

Намного более перспективным является другой подход:

Стабилизация по абсолютному положению ЛА.

Такой подход возлагает на плату управления стабилизацию по всем параметрам – углам, высоте, линейным перемещениям. В идеале, такая плата управления должна удерживать коптер неподвижно в воздухе, и противодействовать любым внешним воздействиям.
Но здесь есть одна большая сложность – готового «датчика», который бы позволял получить с достаточной точностью и оперативностью данные об абсолютном положении ЛА в пространстве нет. Вернее есть, но не для наших целей. Нам придется построит свой такой «датчик» (на самом деле это будет БИНС) используя более простые и доступные компоненты (акселерометры, гироскопы, магнетометры и т. д.). Сама по себе задача построения такой системы очень непростая. Плюс, мы не можем рассчитывать на сверхточные лазерные гироскопы и т. д. Мы будем использовать MEMS приборы, а это дополнительно усложняет задачу.

Предлагаю в следующей статье перейти к построению БИНС.

Данная статья является «пробной». Просто не уверен, что она соответствует тематике Сообщества. Боюсь, меня пошлют на авиамодельный форум 🙂 Да и плата управления, с точки зрения схемотехники, ничего интересного не представляет. Берем МК, вешаем кучу датчиков на SPI/I2C, пишем программу 🙂 А вот с точки зрения ТАУ и БИНС (и немного ЦОС) – задача, ИМХО, очень интересная.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *