Настройка контроллера EvvGC с прошивкой 3-STAB

Что такое ПИДы (PID)?

ПИД - Пропорционально-интегрально-дифференциальный принцип формирования управляющего воздействия в системах автоматического управления с обратной связью. В нашем случае в качестве обратной связи выступают показания 6-осевойго акселерометра-гироскопа InvenSense MPU-6050.

P – Пропорциональная составляющая. Управляющее воздействие формируется пропорционально величине отклонения оси мотора от начального значения (умноженного на коэффициент усиления P), фактически это чувствительность мотора к отклонениям. Чем она больше, тем меньше ошибка стабилизации, но при слишком большом коэффициенте усиления, могут начаться автоколебания (самовозбуждение подвеса), а при дальнейшем увеличении коэффициента система может потерять устойчивость.

I – Интегральная составляющая. Нужна для устранения статической ошибки стабилизации и позволяет контроллеру со временем учесть статическую ошибку.  Как только на активный подвес прекращают воздействовать из вне, через некоторое время отклонения осей стабилизируется вблизи 0, сигнал пропорциональной составляющей будет равен нулю, а выходной сигнал будет полностью обеспечивать интегральная составляющая. Интегральная составляющая также может приводить к автоколебаниям.

D – Дифференциальная составляющая. пропорциональна скорости изменения отклонения наклона оси подвеса и предназначена для противодействия отклонениям от целевого значения, которые прогнозируются с учетом текущей скорости стабилизации – обратная компенсация P. Когда пропорциональная составляющая компенсирует отклонение поворотом оси в противоположенную сторону у неё есть некоторый излишек хода, выражаемый в виде вибрации (вблизи нуля может наблюдаться подергивание) D – компенсирует этот эффект, делая эффект стабилизации более мягким.

Power – сила с которой мотор стабилизирует подвес. Если значение ниже оптимального, то подвес может не отреагировать на внешние воздействия с определенной силой, при этом камера будет заваливаться при наклонах. Если значение слишком высокое, то работать все будет отлично, но недолго (моторы или полевые транзисторы MOSFET могут перегреться при неблагоприятном стечении обстоятельств и сгореть). Кроме того, увеличение мощности может привести к возникновению автоколебаний в системе, что потребует снижения ПИД коэффициентов усиления. Помните, что параметры мощности и ПИДы взаимосвязаны между собой и зависят от напряжения источника питания платы, то есть при их изменении, необходимо повторить процедуру настройки PID для достижения оптимального результата.

Перед тем как перейти к настройке параметров прошивки 3Stab контроллера EvvGC, убедитесь, что механически камера и датчик положения установлена жестко на подвесе, а сама система сбалансирована по каждой оси именно для такой конфигурации моментов инерции. А также проверьте напряжение источника питания (аккумулятора) и выставите значение напряжения на стабилизаторе (при его наличии) меньшим либо равным произведению количества элементов питания на их номинальное напряжение (например, для LiIon это 3,6B умножив на количество банок).

Процесс настройки PID контроллера подвеса для прошивки 3Stab для своей системы подвес-камера-объектив

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

Помним, что при прошивке питание чипа STM32 и подключение происходит через порт UART1, а при настройке - через порт UART4, при этом обязательно отключить подачу питания 3,3 В по каналу UART1 при подключении основного питания платы, в противном случае плату можно испортить!

Шаг 1

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

Ставим все по нулям, кроме мощности (P=0 D=0 I=0 Power=30 или больше, в зависимости от типоразмера моторов и веса системы). После сохранения параметров и включения мотора поднимаем значение параметра "D" до 50-100 единиц, если даже при самых низких значениях "D" будет наблюдаться хаотичные движения подвеса хотя бы по одной оси - значит фазы соответствующих моторов подключены не правильно. При этом мотор вращается в другую сторону и ось ведет себя неадекватно (например, при внешнем воздействии на ось она дополнительно "доворачивается" в сторону поворота). Для реверса электродвигателя необходимо поменять крайние контакты разъема подключения соответствующего мотора местами (развернуть штекер подключения мотора на 180 градусов). Отключаем основное питание EvvGC и только после этого переподключаем фазы для "неадекватных" моторовПри правильном подключении подвеса и таких настройках подвес должен просто болтаться, довольно инертно.

Полезный совет: если у вас легкая камера типа GoPro и мощность моторов меньше 50 процентов (Power=50 единиц на прошивке 3Stab), то лучше питать контроллер EvvGC от 2s LiPo (2*3.7В) и поднять максимально разрешенную программно мощность (Power), это обеспечит большую стабильность всей системы стабилизации в целом.

Шаг 2

При подключении питания контроллера EvvGC происходит автоматическая калибровка датчика положения. Поэтому кладем всю конструкцию на горизонтальную поверхность, так чтобы датчик лежал ровно и подключаем основное питание EvvGC. Во время калибровки мигает светодиод на плате, подвес руками не трогать. Если же диод мигает очень долго (более 20 секунд) значит подвес не находится в неподвижном состоянии, переподключите питание или сделайте сброс платы (перемычкой Reset).

MPU OrientationMPU orientation EvvGC

Датчик лучше всего располагать на пересечении линий осей моторов и посадить жестко на клей. Правильный монтаж датчика экономит время и нервы. Крепить на двусторонний скотч не рекомендуется, но у многих с тонким скотчем и хорошо подготовленными поверхностями все работает. Датчик располагается согласно схеме на фото справа. В перспективе функция настройки положения датчика будет добавлена в GUI 3-Stab, что позволит располагать плату датчика положения более гибко.

Перед началом тонкой настройки параметров PID, проверьте соответствует ли число полюсов "Pole" установленное в 3-STAB GUI количеству постоянных магнитов в ваших моторах, если нет - установить верное значение.

Шаг 3
Отключаем моторы Pitch и Yaw установкой для них значений Power=0. (По аналогии можно начинать настройку с оси Pitch, как вам удобнее, при этом все что написано ниже для Roll справедливо для Pitch, а Roll и Yaw отключены).

Шаг 4 (для Roll)
P=0 D=100 I=0 Power=30 Теперь с шагом в 5 единиц увеличиваем Power. До тех пор пока на моторе не появится усилие, достаточное для удержания оси (обычно это 50-80). Можно просто пошевелить подвес, чтобы стало понятно есть ли усилие на моторе или нет.

Шаг 5 (для Roll)
С шагом в 50 единиц увеличиваем D до тех пор пока поворачивая ось мотора не почувствуется, что она становиться как бы "ватной" (при окончании внешнего воздействия мотор должен сразу же останавливаться). Важно подобрать такие значения D, при которых система не начнет происходить самовозбуждение мотора. После обнаружения такого эффекта, рекомендуем снизить значение D на 5-15% либо на пару единиц снизить значение Power для того, чтобы гарантированно уйти от эффекта появления паразитной вибрации. 

Шаг 6 (для Roll)

С шагом в 100(0) единиц увеличиваем P пока настраиваемая ось не начнет удерживать правильное положение. После этого продолжаем увеличивать значение P но уже с на порядок меньшим шагом, так чтобы добиться минимальной ошибки по углу для данной оси. Если появилась вибрация - уменьшаем значение Р на 5-10%.

Шаг 7 (для Roll)
С целью достижения еще меньшей ошибки позиционирования камеры с шагом в 100(0) единиц увеличиваем "I" добиваясь минимального отклонения графика угла поворота оси. Если появилась вибрация, либо дальнейшее увеличение I перестало влиять на ошибку позиционирования - уменьшаем значение I на 1000 единиц.

Шаг 8

Подключаем мотор Pitch. Повторяем шаги 4-7 для Pitch. Если моторы у вас одинаковые, то значения у вас должны быть ниже чем для Roll. Связано с тем, что ось Pitch менее нагружена. После завершения настройки 2-х осей, можно перейти к настройке Yaw повторив шаги 4-7 для неё. Так как 3-я ось является самой высоконагруженной, то и значение Power для нее должно быть больше чем для Roll.

Шаг 9
Тестируем подвес в различных условиях работы и наслаждаемся результатом. При работе подвеса допускается небольшой шум при отработке резких движений, при этом вибрации в состоянии покоя быть не должно. Если у вас осталась легкая вибрация по осям, то попробуйте поварьировать значения Power, P и D с небольшим шагом (но не меняйте значения более чем на 5-10%). Вибрация должна исчезнуть.

Шаг 10

Продолжение настройки прошивки 3Stab будет заключаться в установке дополнительных параметров работы контроллера EvvGC и настройке специальных функций, подробно описанных в статье 3-STAB GUI: опции и настройки.

Шаг 11

GoPro 3 axis EvvGC Gimbal Может быть для кого то окажутся полезны в качестве примера примерные параметры настройки легкого карбонового 3-х осевого подвеса с контроллером EvvGC на базе прошивки 3Stab.hex для камеры GoPro Hero 3 Black Edition (с моторами 2208 / kv80 / 12,5 Ом):

PITCH: P=3200 D=300 I=15000 Power=35

ROLL: P=6000 D=800 I=10000 Power=55

YAW: P=5000 D=900 I=5000 Power=90

Наша команда состоит из неравнодушных и увлеченных людей, которых объединяет работа над уникальным проектом - создание системы качественной стабилизации камеры 3Stab и контроллера UStab. Мы используем наш опыт и профессиональные навыки, чтобы воплотить действительно хорошие идеи в жизнь! Будем рады общению с Вами!