Создание системы управления электродвигателями в наноспутнике

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение:

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

Данная статья является продолжением первой статьи, в которой было рассмотрено создание печатной платы для управления электродвигателем и описаны основные моменты алгоритма управления PMSM Control (Permanent Magnet Synchronous Motor), в этой статье больше внимания уделено самому алгоритму и его программной реализации.

Терминология:

Далее в статье будут использоваться термины «электрические градусы» и «механические градусы». Угол поворота ротора измеряется в механических градусах. Для определения понятия электрических градусов, положим, что при прохождении одного механического оборота ротора на фазы катушек нужно подать N периодов (T) синусоид, сдвинутых по фазе на T/3 друг относительно друга, где N это количество полюсов электродвигателя. Тогда будем считать, что один механический градус равен N электрическим градусам.

Задача:

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

Программная реализация:

В первую очередь разберемся с тем как создать вращающийся вектор магнитного поля статора. Как говорилось ранее для этого на каждой фазе электродвигателя создается напряжение синусоидальной формы (Рис1). Установка напряжение происходит с помощью широтно-импульсной модуляции (ШИМ), для генерации ШИМ сигнала используется восьмой таймер (TIM8). У TIM8 настроено три пары каналов (Рис. 2), генерирующих прямой и инвертированный ШИМ сигналы, для управления транзисторными ключами на плате (Рис. 3).

Рисунок 1 - Фазовые напряжения
Рисунок 1 - Фазовые напряжения
Рисунок 2 - Настройки TIM8 в CubeMX
Рисунок 2 - Настройки TIM8 в CubeMX
Рисунок 3 - Пара транзисторных ключей
Рисунок 3 - Пара транзисторных ключей

Скважность ШИМ сигнала восьмого таймера берется из таблицы синуса. По прохождению всей таблицы и реализуется форма напряжений на фазе (Рис. 1). Для изменения скважности со временем заводится еще один таймер TIM6, по прерыванию шестого таймера происходит инкрементация текущего номера ячейки таблицы синуса. Для всех трех фаз таблицы напряжений отличаются друг от друга сдвигом значений на 120 градусов (Рис. 1). Скорость прохождения по таблице зависит от вычисленной датчиками холла реальной скорости вращения ротора, поэтому значения регистра переполнения для TIM6 Auto Reload Register (ARR) вычисляется по формуле (1).

\begin{equation} 	ARR = \frac{timerclock \cdot mintosec}{prescler\cdot pairs \cdot meanrate \cdot sintablesize}, \space\space \space \space \space \space \space \space\space\space(1) \end{equation}\\где\space timerclock-частота\space тактирования \space TIM\space 6;\\presceler-делитель \space частоты \space тактирования \space TIM \space 6;\\pairs-количество \space полюсов \space электродвигателя;\\sintablesize-размер \space таблицы \space со \space значениями \space скважностей \space TIM \space 8;\\meanrate-скорость \space ротора;\\mintosec-коэффецент \space перевода \space минут \space в \space секунды;

Взаимная работа двух таймеров TIM8 и TIM6 один из которых работает в режиме PWM показана на рисунке 4.

Рисунок 4 - Реализация фазовых напряжений
Рисунок 4 - Реализация фазовых напряжений

Алгоритм:

При данном методе регулирования скорость прохождения одного электрического оборота вектором магнитного поля статора (или по-другому скорость прохождения по таблице напряжений) определяется только исходя из вычисленной реальной скорости вращения ротора. Управление же скоростью задается двумя другими параметрами системы, такими как: длина вращающегося вектора статора (power) и угол опережения вектора статора относительно вектора ротора (timing). Чем меньше длина вектора статора, тем с меньшей силой он притягивает ротор, по мере увеличения длины вектора статора ротор все быстрее притягивается к нему, скорость вращения, измеренная датчиками Холла, растет и скорость движения по таблице увеличивается.

Анимация 1 - Вращение магнитных полей
Анимация 1 - Вращение магнитных полей
Рисунок 5 - Power и timing
Рисунок 5 - Power и timing

Помимо вычисления скорости, по датчикам Холла можно определить угловое положение вектора магнитного поля ротора, там самым установить, где должен находиться вектор магнитного поля статора, на рисунке 1 показано, как соотносятся значения датчиков Холла и фазовые напряжения. При больших скоростях вращения, время которое проходит от определения фактического углового положения ротора до установки вектора статора не является бесконечно малым, и за это время ротор может уже изменить свое положение, поэтому вектор статора нужно подавать с опережением, за это отвечает timing. Timing это угол на который вектор напряженности магнитного поля статора опережает вектор напряженности магнитного поля ротора, фактически же это число равное сдвигу индекса по таблице со значением скважности ШИМ (Рис. 6).

Рисунок 6 - Сдвиг фазовых напряжений
Рисунок 6 - Сдвиг фазовых напряжений

Зависимость длины вектора магнитного поля статора и timing от скорости вращения маховика определяются экспериментально. Устанавливаются эти два параметра вручную и измеряется фактическая скорость вращения маховика с помощью внешнего лазерного тахометра. Полученные данные аппроксимируются и получается две зависимости, по которым для любой заданной скорости можно определить timing и power.

Так как заданная в произвольный момент, требуемая скорость может сильно отличаться от текущей скорости, то отдельной задачей является плавный выход на установленные timing и power, так как при резком изменении этих параметров может произойти “срыв”, иначе говоря вектор магнитного поля статора оторвется от вектора магнитного поля ротора и вращение станет неконтролируемым.

Синхронизация по датчикам Холла:

В процессе вращения накапливается угол «разбежка» между векторами магнитного поля ротора и магнитного поля статора, поэтому в дискретные моменты времени целесообразно сбрасывать накопленную ошибку. Так как половину времени одного электрического оборота каждый датчик Холла находится в низком состоянии и половину времени в высоком по возрастающему и спадающему фронту сигнала датчика можно однозначно определить в каком положении находится вектор магнитного поля ротора. Поэтому по прохождении ротором 60 электрических градусов происходит синхронизация между текущими значениями ШИМ сигналов на фазах и реальным положением магнитного поля ротора.

Power:

Как было сказано ранее физический смысл power это длина вектора магнитного поля статора, фактически же это коэффициент, на который умножаются значения таблицы синуса. Умножая значения таблицы на коэффициент меньший единицы, мы ограничиваем максимальное напряжение, подаваемое на каждую из фаз. Тем самым скважность ШИМ сигнала будет меняться не от 0 до 100%,  а от 0 до (power·100)%

Зависимость power и timing от rate:

Реализуя вращение магнитного поля статора, синхронизацию TIM6 ARR с измеряемой скоростью вращения и подстройки положения статора при срабатывании событий от датчиков Холла, мы заставим ротор вращаться с определенной скоростью. Для выхода и поддержания заданной скорости требуется установить нужные значения power и timing. Для определения зависимости power от rate и timing от rate можно воспользоваться итеративным методом. Постепенно увеличивая значения power и timing снимаем показание скорости ротора, по полученным данным строим две зависимости (Рис. 7, Рис. 8).

Зависимость power и timing от rate:

Реализуя вращение магнитного поля статора, синхронизацию TIM6 ARR с измеряемой скоростью вращения и подстройки положения статора при срабатывании событий от датчиков Холла, мы заставим ротор вращаться с определенной скоростью. Для выхода и поддержания заданной скорости требуется установить нужные значения power и timing. Для определения зависимости power от rate и timing от rate можно воспользоваться итеративным методом. Постепенно увеличивая значения power и timing снимаем показание скорости ротора, по полученным данным строим две зависимости (Рис. 7, Рис. 8).

Рисунок 7 - Зависимость power от rate
Рисунок 7 - Зависимость power от rate
Рисунок 8 - Зависимость timing от rate
Рисунок 8 - Зависимость timing от rate

Используя данные зависимости при установке требуемой скорости будут определяться power и timing. По прерыванию по переполнению седьмого таймера параметры системы будут постепенно изменятся, плавно доходя до вычисленных. Скорость инкрементации параметров power и timing определяется экспериментально так, чтобы достигалась оптимальная динамика разгона, но в тоже время не происходило «срыва» вектора магнитного поля ротора от вектора магнитного поля статора. При торможении аналогично после вычисления power и timing по приведенным зависимостям происходит линейная инкрементация этих параметров.

Недостатки алгоритма:

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

Видео работы алгоритма:

Электродвигатель с двумя полюсами в корпусе наноспутника: https://youtu.be/F-M69tzZS1g

Электродвигатель с семью полюсами: https://youtu.be/xsf-Bp4m1Ns

Github с файлами проекта:

https://github.com/egobun/project/tree/main/cubemx/udm/bldc_vik_451

Источник: https://habr.com/ru/articles/809133/


Интересные статьи

Интересные статьи

Добрый день, уважаемые коллеги и друзья! Уже больше года я работаю в Армении в компании, которая занимается созданием под ключ сложных, комплексных систем. Взяли меня на роль руководителя проектов, че...
Небольшой обзор систем контроля версий, альтернативных git, и основанных на математической теории. Речь пойдёт о двух системах распределённого контроля версий: Darcs, написанной на Haskell, и Pi...
Эта статья объясняет, как создать слушатель в Kafka на лету в процессе работы приложения c помощью простой детальной инструкцией. В процессе разработки решение использовался язык программирования Java...
Когда речь заходит о создании .NET библиотеки, части API которой являются платформозависимыми, приходится думать, как всё это оформить в NuGet пакет, да так, чтобы устано...
Это фото скромного аэродрома «Орловка» (код ИКАО: UUTO) в Тверской области — на самом деле очень символично. Впервые в истории Россия присоединяется к клубу технологических лидеров, способных...