— Что такое векторное управление?
— Держать ток под 90 градусов.
Термин «векторное управление» электродвигателями знаком всем, кто хоть как-то интересовался вопросом, как с помощью микроконтроллера управлять двигателем переменного тока. Однако обычно в любой книге по электроприводу глава про векторное управление находится где-нибудь ближе к концу, состоит из кучи волосатых формул с отсылками ко всем остальным главам книги. Отчего разбираться в этом вопросе совсем не хочется. И даже самые простые объяснения всё равно держат путь через дифференциальные уравнения равновесия, векторные диаграммы и кучу другой математики. Из-за чего появляются примерно вот такие вот попытки как-то закрутить двигатель без использования мат.части. Но на самом деле векторное управление – это очень просто, если понимать принцип его работы «на пальцах». А там уже и с формулами разбираться в случае надобности будет веселее.
Рассмотрим принцип работы самого простого двигателя переменного тока – синхронной машины с постоянными магнитами. Удобный пример – компас: его магнитная стрелка представляет из себя ротор синхронной машины, а магнитное поле Земли – магнитное поле статора. Без внешней нагрузки (а в компасе её нет, если не считать трение и жидкость, гасящую колебания стрелки) ротор всегда ориентируется по полю статора. Если мы будем держать компас и вращать под ним Землю, то стрелка будет крутиться вслед, совершая работу по перемешиванию жидкости внутри компаса. Но есть и чуть более простой способ – можно взять внешний магнит, например, в виде стержня с полюсами на концах, поле которого значительно сильнее магнитного поля Земли, поднести его к компасу сверху и вращать магнит. Стрелка будет двигаться вслед за вращающимся магнитным полем. В настоящем синхронном двигателе поле статора создается электромагнитами – катушками с током. Схемы обмоток там сложные, но принцип один – они создают статором магнитное поле, направленное в нужную сторону и имеющее нужную амплитуду. Посмотрим на следующий рисунок (Рисунок 1). В центре изображен магнит – ротор синхронного двигателя («стрелка» компаса), а по бокам два электромагнита – катушки, создающие каждая свое магнитное поле, одна в вертикальной оси, другая в горизонтальной.
![](https://habrastorage.org/r/w1560/files/1c0/67b/c0d/1c067bc0d3854a68a00c71b5c347bea8.png)
Рисунок 1. Принцип действия синхронной электрической машины
Магнитный поток катушки пропорционален току в ней (в первом приближении). Нас будет интересовать магнитный поток от статора в том месте, где расположен ротор, т.е. в центре рисунка (краевыми эффектами, рассеянием и всем прочим пренебрегаем). Магнитные потоки двух перпендикулярно расположенных катушек векторно складываются, образуя для взаимодействия с ротором один общий поток. Но так как поток пропорционален току в катушке, удобно рисовать непосредственно вектора токов, сонаправив их с потоком. На рисунке показаны некоторые токи Iα и Iβ, создающие магнитные потоки по осям α и β соответственно. Суммарный вектор тока статора Is создает сонаправленый ему магнитный поток статора. Т.е. по сути Is символизирует внешний магнит, который мы подносили к компасу, но созданный электромагнитами – катушками с током.
На рисунке ротор расположен в произвольном положении, но из этого положения ротор будет стремиться повернуться согласно магнитному потоку статора, т.е. по вектору Is (положение ротора в этом случае показано пунктирной линией). Соответственно, если подать ток только в фазу α, скажем, Iα = 1А, ротор встанет горизонтально, а если в β, вертикально, а если приложить Iβ = -1А то перевернется на 180 градусов. Если запитать ток Iα по закону синуса, а Iβ по закону косинуса от времени, то будет создано вращающееся магнитное поле. Ротор будет следовать за ним и крутиться (как стрелка компаса следует за вращением магнита руками). Это базовый принцип работы синхронной машины, в данном случае двухфазной с одной парой плюсов.
Давайте нарисуем график момента двигателя в зависимости от углового положения вала ротора и вектора тока Is статора – угловую характеристику синхронного двигателя. Эта зависимость синусоидальная (Рисунок 2).
![](https://habrastorage.org/r/w1560/files/301/a78/839/301a78839f98437faeae2407dbcbc6eb.png)
Рисунок 2. Угловая характеристика синхронной машины (здесь есть некоторая историческая путаница со знаками момента и угла, из-за чего часто рисуют характеристику перевернутой относительно горизонтальной оси).
Чтобы получить этот график на практике, можно поставить на вал ротора датчик вращающего момента, затем включить любой вектор тока, например, просто подать ток в фазу α. Ротор повернется в соответствующее положение, которое нужно принять за ноль. Потом через датчик момента «руками» нужно поворачивать ротор, фиксируя на графике в каждой точке угол θ, на который повернули, и момент, который показал датчик. Т.е. нужно растягивать «магнитную пружину» двигателя через датчик момента. Самый большой момент окажется при угле в 90 градусов от вектора тока (от начала). Амплитуда получившегося максимального момента Ммакс пропорциональна амплитуде приложенного вектора тока. Будет приложен 1А, получим, скажем, Ммакс = 1 Н∙м (ньютон*метр, единица измерения вращающего момента), если подадим 2А, получим Ммакс = 2 Н∙м.
Из этой характеристики следует, что двигатель развивает наибольший момент, когда ротор находится под 90° к вектору тока. Так как мы при создании системы управления на микроконтроллере хотим получить от двигателя наибольший момент при минимуме потерь, а потери, в первую очередь, это ток в обмотках, то рациональнее всего ставить вектор тока всегда под 90° к магнитному полю ротора, т.е. перпендикулярно магниту на рисунке 1. Нужно поменять всё наоборот – не ротор едет к задаваемому нами вектору тока, а мы задаем вектор тока всегда под 90° к ротору, как бы он там не вращался, т.е. «прибить» вектор тока к ротору. Регулировать же момент двигателя будем амплитудой тока. Чем больше амплитуда – тем выше момент. А частота вращения, частота тока в обмотках это уже «не наше» дело – какая получится, как ротор будет вращаться, так и будет – мы управляем моментом на валу. Как ни странно, именно это и называется векторным управлением – когда мы управляем вектором тока статора так, чтобы он был под 90° к магнитному полю ротора. Хотя некоторые учебники дают более широкие определения, вплоть до такого, что векторным управлением называют вообще любые законы управления, где задействованы «вектора», но обычно под векторным управлением понимается именно приведенный выше способ управления.
Но как векторное управления достигается на практике? Очевидно, для начала понадобится знать положение ротора, чтобы было относительно чего отмерять 90°. Это проще всего сделать установив, собственно, датчик положения на вал ротора. Потом нужно разобраться, как создать вектор тока, поддерживая желаемые токи в фазах α и β. На двигатель-то мы прикладываем напряжение, а не ток… Но раз мы хотим что-то поддерживать, то нужно это измерять. Поэтому для векторного управления понадобятся датчики токов фаз. Далее нужно собрать структуру векторного управления в виде программы на микроконтроллере, которая будет делать всё остальное. Чтобы такое объяснение не было похоже на инструкцию «как нарисовать сову», давайте продолжим погружение.
Поддерживать ток микроконтроллером можно использовав программный ПИ (пропорционально-интегральный) регулятор тока и ШИМ. Например, структура с регулятором тока для одной фазы α показана ниже (Рисунок 3).
![](https://habrastorage.org/r/w1560/files/1c0/53f/e89/1c053fe89bc048be8a86b6c4d6e1b7e2.png)
Рисунок 3. Замкнутая по току структура управления для одной фазы
Здесь задание тока iα_зад – некая константа, тот ток, который мы хотим поддерживать для этой фазы, например 1А. Задание поступает на сумматор регулятора тока, раскрытая структура которого показана выше. Если читатель не знает, как работает ПИ-регулятор – то увы и ах. Могу лишь посоветовать что-то из этого. Регулятор тока на выходе задает напряжение фазы Uα. Напряжение поступает на блок ШИМ, который рассчитывает задания скважностей (уставок сравнения) для таймеров ШИМ микроконтроллера, формирующих ШИМ на мостовом инверторе из четырех ключей, чтобы сформировать это Uα. Алгоритм может быть разный, например, для положительного напряжения ШИМим правой стойкой пропорционально заданию напряжения, на левой замкнут нижний ключ, для отрицательного ШИМим левой, на правой замкнут нижний. Не забываем добавить мёртвое время! В итоге такая структура делает программный «источник тока» за счет источника напряжения: мы задаем нужное нам значение iα_зад, а данная структура с определенным быстродействием его реализует.
Дальше, возможно, некоторые читатели уже подумали, что до векторной структуры управления осталось дело за малым – нужно поставить два регулятора тока, на каждую фазу по регулятору, и формировать на них задание в зависимости от угла с датчика положения ротора (ДПР), т.е. сделать что-то типа такой структуры (Рисунок 4):
![](https://habrastorage.org/r/w1560/files/ac5/6b4/ca2/ac56b4ca23964937a14beaf8219e57b8.png)
Рисунок 4. Неправильная (наивная) структура векторного управления
Так делать нельзя. При вращении ротора переменные iα_зад и iβ_зад будут синусоидальными, т.е. задание на регуляторы тока будет всё время меняться. Быстродействие регулятора не бесконечно, поэтому при изменении задания он не мгновенно его отрабатывает. Если задание постоянно менять, то регулятор будет всё время его догонять, никогда не достигая. И с ростом скорости вращения двигателя отставание реального тока от заданного будет всё больше и больше, пока желаемый угол в 90° между током и магнитом ротора совсем не перестанет на него быть похожим, а векторное управление не перестанет быть таковым. Поэтому делают по-другому. Правильная структура следующая (Рисунок 5):
![](https://habrastorage.org/r/w1560/files/4e6/791/161/4e67911616a04c64875f91178e7129ae.png)
Рисунок 5. Структура векторного датчикового управления для двухфазной синхронной машины
Здесь добавились два блока – БКП_1 и БКП_2: блоки координатных преобразований. Они делают очень простую вещь: поворачивают вектор на входе на заданный угол. Причем БПК_1 поворачивает на +ϴ, а БКП_2 на -ϴ. Это вся разница между ними. В иностранной литературе их называют преобразованиями Парка (Park transformation). БКП_2 делает преобразование координат для токов: от неподвижных осей α и β, привязанных к статору двигателя, к вращающимся осям d и q, привязанных к ротору двигателя (используя для этого угол положения ротора ϴ). А БКП_1 делает обратное преобразование, от задания напряжения по осям d и q делает переход к осям α и β. Формул для преобразования координат не привожу, но они простые и очень легко ищутся. Собственно, в них нет ничего сложнее школьной геометрии (Рисунок 6):
![](https://habrastorage.org/r/w1560/files/888/4ab/db6/8884abdb62c0460095270be428d8341a.png)
Рисунок 6. Координатные преобразования из неподвижных осей α и β, привязанных к статору двигателя, к вращающимся осям осям d и q, привязанных к ротору
То есть вместо «вращения» задания регуляторов (как было в прошлой структуре), вращаются их входы и выходы, а сами регуляторы работают в статическом режиме: токи d, q и выходы регуляторов в установившемся режиме постоянны. Оси d и q вращаются вместе с ротором (так их вращает сигнал с датчика положения ротора), при этом регулятор оси q регулирует как раз тот ток, который в начале статьи я называл «перпендикулярным полю ротора», то есть это моментообразующий ток, а ток d сонаправлен с «магнитом ротора», поэтому он нам не нужен и мы задаём его равным нулю. Такая структура избавлена от недостатка первой структуры – регуляторы токов даже не знают, что что-то где-то крутится. Они работают в статическом режиме: отрегулировали каждый свой ток, вышли на заданное напряжение – и всё, как ротор от них не убегай, они про это даже не узнают: всю работу по повороту делают блоки координатных преобразований.
Приведенная выше структура действительно работает и используется в современных электроприводах. Только в ней не хватает целой кучи мелких «улучшалок», без которых её уже не принято делать, типа компенсации перекрестных связей, разных ограничений, ослабления поля и т.п. Но базовый принцип именно такой.
А если нужно регулировать не момент привода, а всё-таки скорость (по правильному угловую скорость, частоту вращения)? Ну тогда ставим еще один ПИ-регулятор – регулятор скорости (РС). На вход подаем задание скорости, а на выходе имеем задание момента. Так как ток оси q пропорционален моменту, то можно для упрощения выход регулятора скорости подать сразу на вход регулятора тока оси q, вот так (Рисунок 7):
![](https://habrastorage.org/r/w1560/files/791/39a/8a4/79139a8a4eba4bd996d6963201691ad9.png)
Рисунок 7. Регулятор скорости для векторного управления
Здесь ЗИ – задатчик интенсивности, плавно изменяет свой выход, чтобы двигатель разгонялся с нужным темпом, а не гнал на полном токе до задания скорости. Текущая частота вращения ω взята из обработчика датчика положения ротора, так как ω это производная от углового положения ϴ. Ну или можно просто время между импульсами датчика засекать…
Как сделать тоже самое для трехфазного двигателя? Ну, собственно, ничего особенного, добавляем еще один блок и меняем модуль ШИМ (Рисунок 8).
![](https://habrastorage.org/r/w1560/files/4a9/4c9/8f2/4a94c98f2ea74766b161d062eb6db9d6.png)
Рисунок 8. Структура векторного датчикового управления для трехфазной синхронной машины
Трехфазные токи, точно так же как и двухфазные, служат для одной цели – создать вектор тока статора Is, направленный в нужную сторону и имеющий нужную амплитуду. Поэтому трехфазные токи можно просто пересчитать в двухфазные, а дальше оставить ту же систему управления, что уже была собрана для двухфазной машины. В англоязычной литературе такой «пересчёт» называют преобразованиями Кларк – Clarke transformation (Эдит Кларк – это она), у нас — фазными преобразованиями. В структуре на рисунке 8, соответственно, эта операция производится блоком фазных преобразований. Делаются они опять при помощи курса школьной геометрии (Рисунок 9):
![](https://habrastorage.org/r/w1560/files/394/4de/4b7/3944de4b7fa24d8694935f3393b25db2.png)
Рисунок 9. Фазные преобразования – из трех фаз к двум. Для удобства принимаем равенство амплитуды вектора Is амплитуде тока в фазе
Думаю, комментарии не нужны. Немного слов про ток фазы C. Туда можно не ставить датчик тока, так как три фазы двигателя соединены в звезду, и по закону Кирхгофа всё, что втекло через две фазы, должно вытечь из третьей (если, конечно, у вас в двигателе не пробита изоляция, и половина не утекла куда-то на корпус), поэтому ток фазы C вычисляют как скалярную сумму токов фаз A и B со знаком минус. Хотя третий датчик иногда ставят чтобы снизить погрешность измерений.
Также нужна полная переделка модуля ШИМ. Обычно для трехфазных двигателей используют трехфазный шестиключевой инвертор. На рисунке задание напряжения поступает всё ещё в двухфазных осях. Внутри модуля ШИМ с помощью обратных фазных преобразований можно пересчитать это в напряжения фаз A, B, C, которые надо приложить в этот момент к двигателю. А вот что делать дальше… Возможны варианты. Наивный метод – это задать на каждую стойку инвертора скважность, пропорциональную желаемому напряжению плюс 0.5. Это называется синусоидальной ШИМ. Именно такой метод применил автор в habrahabr.ru/post/128407. В этом методе всё хорошо, кроме того, что таким методом будет недоиспользован инвертор по напряжению – т.е. максимальное напряжение, которое будет получено, окажется меньше, чем вы могли бы получить, если бы использовали более совершенный метод ШИМ.
Посчитаем. Пусть у вас есть классический преобразователь частоты, питающийся от промышленной трехфазной сети 380В 50Гц. Здесь 380В это линейное (между фазами) действующее напряжение. Так как в преобразователе стоит выпрямитель, он выпрямит это напряжение и на шине постоянного тока окажется напряжение, равное амплитудному линейному напряжению, т.е. 380∙√2=540В постоянного напряжения (по крайней мере без нагрузки). Если мы применим синусоидальный алгоритм расчета в модуле ШИМ, то амплитуда максимального фазного напряжения, которое получится у нас сделать, окажется равной половине от напряжения на шине постоянного тока, т.е. 540/2=270В. Пересчитаем в действующее фазное: 270/√2=191В. А теперь в действующее линейное: 191∙√3=330В. Теперь можем сравнить: вошло нам 380В, а вышло 330В… И больше с этим типом ШИМ никак нельзя. Для исправления этой проблемы используется так называемый векторный тип ШИМ. В нем на выходе будут снова 380В (в идеальном случае без учета всех падений напряжения). Метод векторной ШИМ никакого отношения к векторному управлению электродвигателем не имеет. Просто в его обосновании снова используется немного школьной геометрии, поэтому он и называется векторным. Однако его работу на пальцах не объяснить, поэтому отправлю читателя к книжкам (в конце статьи) или к википедии. Могу еще привести картинку, которая немного намекает на разницу в работе синусоидальной и векторной ШИМ (Рисунок 10):
![image](https://habrastorage.org/getpro/geektimes/post_images/cdf/873/bd9/cdf873bd9920d3103a51b3eea08c2a6c.gif)
Рисунок 10. Изменение потенциалов фаз для скалярной и векторной ШИМ
Кстати, а какие датчики положения используются для векторного управления? Чаще всего используются четыре типа датчиков. Это квадратурный инкрементальный энкодер, датчик на основе элементов Холла, абсолютный датчик положения и сельсинный датчик.
Квадратурный энкодер не выдает абсолютного положения ротора – по своим импульсам он позволяет лишь определить, сколько вы проехали, но не куда и откуда (как начало и конец связаны с расположением магнита ротора). Поэтому для векторного управления синхронной машиной сам по себе он не подходит. Немного спасает ситуацию его реперная метка (индекс) – она одна на механический оборот, если до неё доехать, то абсолютное положение становится известно, а от неё можно уже отсчитывать сколько проехали квадратурным сигналом. Но как до этой метки доехать в начале работы? В общем, это не всегда удобно.
Датчик на основе элементов Холла – это грубый датчик. Он выдает всего несколько импульсов на оборот (в зависимости от кол-ва элементов Холла, для трехфазных двигателей их обычно три, т.е. шесть импульсов), позволяя знать положение в абсолютной величине, но с низкой точностью. Точности обычно хватает, чтобы держать угол вектора тока так, чтобы двигатель по крайней мере ехал вперед, а не назад, но момент и токи будут пульсировать. Если двигатель разогнался, то можно начать программно экстраполировать сигнал с датчика по времени – т.е. строить из грубого дискретного угла линейно изменяющийся угол. Это делается на основе предположения, что двигатель вращается с примерно постоянной скоростью, как-то так (Рисунок 11):
![](https://habrastorage.org/r/w1560/files/c04/84a/351/c0484a35184645a18e94dcaa6ce6d196.png)
Рисунок 11. Работа датчика положения на элементах Холла для трехфазной машины и экстраполяция его сигнала
Часто для серводвигателей используется сочетание энкодера и датчика Холла. В этом случае можно сделать единый программный модуль их обработки, убирая недостатки обоих: делать экстраполяцию угла, приведенную выше, но не по времени, а по меткам с энкодера. Т.е. внутри от фронта до фронта датчика Холла работает энкодер, а каждый фронт Холла чётко инициализирует текущее абсолютное угловое положение. В этом случае неоптимальным (не под 90°) окажется лишь первое движение привода, пока он не доехал до какого-нибудь фронта датчика Холла. Отдельную проблему в этом случае представляет обработка неидеальности и того и другого датчика — симметрично и равномерно элементы Холла редко кто располагает…
В еще более дорогих применениях используют абсолютный датчик положения с цифровым интерфейсом (абсолютный энкодер), который сразу выдает абсолютное положение и позволяет не испытывать описанных выше проблем.
Если в электродвигателе очень жарко, а также когда требуется повышенная точность измерения угла, используют «аналоговый» сельсинный датчик (резольвер, вращающийся трансформатор). Это маленькая электрическая машина, используемая как датчик. Представьте, что в рассмотренной нами синхронной машине на рисунке 1 вместо магнитов стоит еще одна катушка, на которую мы подаем высокочастотный сигнал. Если ротор стоит горизонтально, то сигнал наведется только в катушку статора фазы α, если вертикально – то только в β, если перевернуть его на 180 – то изменится фаза сигнала, а в промежуточных положениях наводится и туда и сюда по закону синуса/косинуса. Соответственно, измеряя амплитуду сигнала в двух катушках, по соотношению этой амплитуды и по фазовому сдвигу можно также определять положение. Установив такую машину как датчик к основной, можно узнавать положение ротора.
Есть еще много экзотических датчиков положения, особенно для сверхвысокоточных применений, например, для изготовления электронных чипов. Там в ход идут уже любые физические явления, чтобы только узнать положение наиболее точно. Их рассматривать не будем.
Как вы поняли, векторное управление достаточно требовательное – и датчиков положения ему наставь, и датчиков тока, и ШИМ ему векторную, и микроконтроллер не абы какой, чтобы всю эту математику обсчитывать. Поэтому для простых применений его упрощают. Для начала можно исключить датчик положения, сделав бездатчиковое векторное управление. Для этого используют немного больше математической магии, находящейся в желтом прямоугольнике (Рисунок 12):
![](https://habrastorage.org/r/w1560/files/edb/2fa/a24/edb2faa24d56474b82bb16ac6c91602c.png)
Рисунок 12. Структура бездатчикового векторного управления
Наблюдатель – это такой блок, на который подается информация о приложенном к двигателю напряжении (например, из задания на модуль ШИМ) и о токах в двигателе с датчиков. Внутри наблюдателя работает модель электродвигателя, которая, грубо говоря, пытается подстроить свои токи в статоре под измеренные с реального двигателя. Если у неё это получилось, то можно считать, что и положение моделируемого внутри вала ротора тоже совпадает с реальным и им можно пользоваться для нужд векторного управления. Ну это, конечно, совсем упрощённо. Видов наблюдателей таких – не пересчитать. Каждый аспирант по специальности «электропривод» пытается изобрести именно свой, который чем-то лучше других. Основной принцип – отслеживание ЭДС электродвигателя. Поэтому чаще всего бездатчиковая система управления работоспособна только на относительно высокой частоте вращения, где ЭДС большая. А также имеет еще ряд недостатков по сравнению с наличием датчика: нужно знать параметры двигателя, быстродействие привода ограничено (если частота вращения резко меняется, наблюдатель может не успеть её отследить и какое-то время «врать», а то и «развалиться» совсем), настройка наблюдателя – это целая процедура, для его качественной работы нужно точно знать напряжение на двигателе, точно измерять его токи и т.п.
Есть и другой вариант упрощения. Например, можно сделать так называемую «автокоммутацию». В этом случае для трехфазного двигателя отказываются от сложного метода ШИМ, отказываются от сложной векторной структуры и начинают просто включать фазы двигателя по датчику положения на элементах Холла, даже иногда без всякого токоограничения. Ток в фазах получается не синусоидальный, а трапецеидальный, прямоугольный или еще более искаженный. Но стараются сделать так, чтобы средний вектор тока был всё равно под 90 градусов к «магниту ротора» выбором момента включения фаз. При этом, включая фазу под напряжение, неизвестно, когда же в фазе двигателя нарастет ток. На низкой частоте вращения он это делает быстрее, на высокой, где мешает ЭДС машины, медленнее, еще темп нарастания тока зависит от индуктивности двигателя и т.п. Поэтому, даже включая фазы точно в нужный момент времени, совсем не факт, что средний вектор тока окажется в нужном месте и с нужной фазой – он может как опережать, так и запаздывать относительно оптимальных 90 градусов. Поэтому в таких системах вводят настройку «опережения коммутации» – по сути просто время, насколько раньше нужно на фазу двигателя подавать напряжение, чтобы в итоге фаза вектора тока получилась более близка к 90 градусам. По-простому это называют «настройка таймингов». Так как ток в электродвигателе при автокоммутации не синусоидальный, то, если взять рассмотренную выше синусоидальную машину и управлять ей таким вот образом, момент на валу будет пульсировать. Поэтому в двигателях, предназначенных для автокоммутации, часто специальным образом меняют магнитную геометрию ротора и статора, чтобы они стали более подходящими к такому типу управления: ЭДС таких машин делают трапецеидальной, благодаря чему в режиме автокоммутации они работают лучше. Синхронные машины, оптимизированные для автокоммутации, получили название бесколлекторных двигателей постоянного тока (БДПТ) или по-английски BLDC (Brushless Direct Current Motor). Режим автокоммутации также часто называют вентильным режимом, а двигатели с ним работающие – вентильные. Но это всё просто разные названия, ничем не влияющие на суть (но матёрые электроприводчики часто страдают СПГС в вопросах, связанных с этими названиями). Есть неплохое видео, иллюстрирующее принцип работы таких машин. На нем показан обращенный двигатель, где ротор снаружи, а статор внутри:
А вот здесь есть курс статей по таким двигателям и аппаратной части системы управления.
Можно пойти даже на еще большее упрощение. Коммутировать обмотки так, чтобы одна фаза всё время оказывалась «свободна» и к ней не прикладывался ШИМ. Тогда в ней можно измерять ЭДС (наведенное в катушке фазы напряжение), и, когда это напряжение переходит через ноль, использовать это как сигнал датчика положения ротора, потому что фаза этого наведенного напряжения зависит как раз от положения ротора. Получается бездатчиковая автокоммутация, что широко используется в различных простеньких приводах, например, в «регуляторах» для пропеллеров авиамоделей. При этом надо помнить, что ЭДС машины появляется только на относительно высокой частоте вращения, поэтому для старта такие системы управления просто не спеша перебирают фазы, надеясь, что ротор двигателя будет следовать за подаваемым током. Как только ЭДС появилась, включается режим автокоммутации. Поэтому бездатчиковая система (такая простая, да и сложная чаще всего тоже) не подходит для задач, где двигатель должен уметь развивать момент на околонулевых частотах вращения, например, для тягового привода автомобиля (или его модели), сервопривода какого-то механизма и т.п. Зато бездатчиковая система с успехом подходит для насосов и вентиляторов, где как раз и применяется.
Но иногда делают даже и еще большее упрощение. Можно совсем отказаться от микроконтроллера, ключей, датчиков положения и прочего, осуществляя переключение фаз специальным механическим коммутатором (Рисунок 13):
![](https://habrastorage.org/r/w1560/files/04a/fbd/529/04afbd529381442596e86f3ed637cb71.png)
Рисунок 13. Механический коммутатор для переключения обмоток
При вращении ротор сам переключает свои части обмоток, меняя приложенное к ним напряжение, при этом ток в роторе протекает переменный. Коммутатор располагают таким образом, чтобы магнитный поток ротора и статора снова оказывался близким к 90 градусам, дабы достичь максимума момента. Такие двигателипо наивности называют двигателями постоянного тока, но совершенно незаслуженно: внутри-то, после коллектора, ток всё равно переменный!
Все электрические машины работают схожим образом. В теории электропривода даже существует понятие «обобщенная электрическая машина», к которой сводят работу других. Показанные в статье объяснения «на пальцах» никоим образом не могут служить практическим руководством к написанию кода микроконтроллера. В статье рассмотрен хорошо если один процент информации, которая требуется для реализации настоящего векторного управления. Чтобы сделать что-то на практике, нужно, во-первых, знать ТАУ, хотя бы на уровне понимания, как работает ПИ-регулятор. Потом нужно всё-таки изучить математическое описание как синхронной машины, так и синтеза векторного управления. Также изучить векторную ШИМ, узнать, что такое пары полюсов, познакомиться с типами обмоток машин и прочее. Это можно сделать в свежей книге «Анучин А. С. Системы управления электроприводов. МЭИ, 2015», а также в «Калачев Ю. Н. Векторное регулирование (заметки практика)». Следует предостеречь читателя от погружения в формулы «старых» учебников по приводу, где основной упор сделан на рассмотрение характеристик электродвигателей при питании напрямую от трехфазной промышленной сети, без всяких микроконтроллеров и датчиков положения. Поведение двигателей в этом случае описывается сложными формулами и зависимостями, но для задачи векторного управления они почти никакой пользы не несут (если только изучить для саморазвития). Особенно следует с осторожностью относиться к рекомендациям старых учебников, где, например, сказано, что синхронная машина не должна работать на максимуме своего момента, так как там работа неустойчива и грозит опрокидыванием – для векторного управления всё это «вредные советы».
На каком микроконтроллере можно сделать полноценное векторное управление, читайте, например, в нашей статье Новый отечественный motor-control микроконтроллер К1921ВК01Т ОАО «НИИЭТ», а как это отлаживать в статье Способы отладки ПО микроконтроллеров в электроприводе. Также заходите на наш сайт: там, в частности, выложено двазанудных видео, где показано на практике, как настроить ПИ-регулятор тока, а также как работает замкнутая по току и векторная бездатчиковая структура управления. Кроме того, можно приобрести отладочный комплект с готовой датчиковой векторной структурой управления на отечественном микроконтроллере.
Продолжение статьи, где рассказано про асинхронные двигатели здесь.
P.S.
У специалистов прошу прощения за не совсем корректное обращение с некоторыми терминами, в частности с терминами «поток», «потокосцепление», «магнитное поле» и другими – простота требует жертв…
— Держать ток под 90 градусов.
![](https://habrastorage.org/files/195/6cf/ada/1956cfada38d479f951f57ac8a4cc775.png)
Принцип работы синхронной машины
Рассмотрим принцип работы самого простого двигателя переменного тока – синхронной машины с постоянными магнитами. Удобный пример – компас: его магнитная стрелка представляет из себя ротор синхронной машины, а магнитное поле Земли – магнитное поле статора. Без внешней нагрузки (а в компасе её нет, если не считать трение и жидкость, гасящую колебания стрелки) ротор всегда ориентируется по полю статора. Если мы будем держать компас и вращать под ним Землю, то стрелка будет крутиться вслед, совершая работу по перемешиванию жидкости внутри компаса. Но есть и чуть более простой способ – можно взять внешний магнит, например, в виде стержня с полюсами на концах, поле которого значительно сильнее магнитного поля Земли, поднести его к компасу сверху и вращать магнит. Стрелка будет двигаться вслед за вращающимся магнитным полем. В настоящем синхронном двигателе поле статора создается электромагнитами – катушками с током. Схемы обмоток там сложные, но принцип один – они создают статором магнитное поле, направленное в нужную сторону и имеющее нужную амплитуду. Посмотрим на следующий рисунок (Рисунок 1). В центре изображен магнит – ротор синхронного двигателя («стрелка» компаса), а по бокам два электромагнита – катушки, создающие каждая свое магнитное поле, одна в вертикальной оси, другая в горизонтальной.
![](https://habrastorage.org/files/1c0/67b/c0d/1c067bc0d3854a68a00c71b5c347bea8.png)
Рисунок 1. Принцип действия синхронной электрической машины
Магнитный поток катушки пропорционален току в ней (в первом приближении). Нас будет интересовать магнитный поток от статора в том месте, где расположен ротор, т.е. в центре рисунка (краевыми эффектами, рассеянием и всем прочим пренебрегаем). Магнитные потоки двух перпендикулярно расположенных катушек векторно складываются, образуя для взаимодействия с ротором один общий поток. Но так как поток пропорционален току в катушке, удобно рисовать непосредственно вектора токов, сонаправив их с потоком. На рисунке показаны некоторые токи Iα и Iβ, создающие магнитные потоки по осям α и β соответственно. Суммарный вектор тока статора Is создает сонаправленый ему магнитный поток статора. Т.е. по сути Is символизирует внешний магнит, который мы подносили к компасу, но созданный электромагнитами – катушками с током.
На рисунке ротор расположен в произвольном положении, но из этого положения ротор будет стремиться повернуться согласно магнитному потоку статора, т.е. по вектору Is (положение ротора в этом случае показано пунктирной линией). Соответственно, если подать ток только в фазу α, скажем, Iα = 1А, ротор встанет горизонтально, а если в β, вертикально, а если приложить Iβ = -1А то перевернется на 180 градусов. Если запитать ток Iα по закону синуса, а Iβ по закону косинуса от времени, то будет создано вращающееся магнитное поле. Ротор будет следовать за ним и крутиться (как стрелка компаса следует за вращением магнита руками). Это базовый принцип работы синхронной машины, в данном случае двухфазной с одной парой плюсов.
Давайте нарисуем график момента двигателя в зависимости от углового положения вала ротора и вектора тока Is статора – угловую характеристику синхронного двигателя. Эта зависимость синусоидальная (Рисунок 2).
![](https://habrastorage.org/files/301/a78/839/301a78839f98437faeae2407dbcbc6eb.png)
Рисунок 2. Угловая характеристика синхронной машины (здесь есть некоторая историческая путаница со знаками момента и угла, из-за чего часто рисуют характеристику перевернутой относительно горизонтальной оси).
Чтобы получить этот график на практике, можно поставить на вал ротора датчик вращающего момента, затем включить любой вектор тока, например, просто подать ток в фазу α. Ротор повернется в соответствующее положение, которое нужно принять за ноль. Потом через датчик момента «руками» нужно поворачивать ротор, фиксируя на графике в каждой точке угол θ, на который повернули, и момент, который показал датчик. Т.е. нужно растягивать «магнитную пружину» двигателя через датчик момента. Самый большой момент окажется при угле в 90 градусов от вектора тока (от начала). Амплитуда получившегося максимального момента Ммакс пропорциональна амплитуде приложенного вектора тока. Будет приложен 1А, получим, скажем, Ммакс = 1 Н∙м (ньютон*метр, единица измерения вращающего момента), если подадим 2А, получим Ммакс = 2 Н∙м.
Из этой характеристики следует, что двигатель развивает наибольший момент, когда ротор находится под 90° к вектору тока. Так как мы при создании системы управления на микроконтроллере хотим получить от двигателя наибольший момент при минимуме потерь, а потери, в первую очередь, это ток в обмотках, то рациональнее всего ставить вектор тока всегда под 90° к магнитному полю ротора, т.е. перпендикулярно магниту на рисунке 1. Нужно поменять всё наоборот – не ротор едет к задаваемому нами вектору тока, а мы задаем вектор тока всегда под 90° к ротору, как бы он там не вращался, т.е. «прибить» вектор тока к ротору. Регулировать же момент двигателя будем амплитудой тока. Чем больше амплитуда – тем выше момент. А частота вращения, частота тока в обмотках это уже «не наше» дело – какая получится, как ротор будет вращаться, так и будет – мы управляем моментом на валу. Как ни странно, именно это и называется векторным управлением – когда мы управляем вектором тока статора так, чтобы он был под 90° к магнитному полю ротора. Хотя некоторые учебники дают более широкие определения, вплоть до такого, что векторным управлением называют вообще любые законы управления, где задействованы «вектора», но обычно под векторным управлением понимается именно приведенный выше способ управления.
Строим структуру векторного управления
Но как векторное управления достигается на практике? Очевидно, для начала понадобится знать положение ротора, чтобы было относительно чего отмерять 90°. Это проще всего сделать установив, собственно, датчик положения на вал ротора. Потом нужно разобраться, как создать вектор тока, поддерживая желаемые токи в фазах α и β. На двигатель-то мы прикладываем напряжение, а не ток… Но раз мы хотим что-то поддерживать, то нужно это измерять. Поэтому для векторного управления понадобятся датчики токов фаз. Далее нужно собрать структуру векторного управления в виде программы на микроконтроллере, которая будет делать всё остальное. Чтобы такое объяснение не было похоже на инструкцию «как нарисовать сову», давайте продолжим погружение.
Поддерживать ток микроконтроллером можно использовав программный ПИ (пропорционально-интегральный) регулятор тока и ШИМ. Например, структура с регулятором тока для одной фазы α показана ниже (Рисунок 3).
![](https://habrastorage.org/files/1c0/53f/e89/1c053fe89bc048be8a86b6c4d6e1b7e2.png)
Рисунок 3. Замкнутая по току структура управления для одной фазы
Здесь задание тока iα_зад – некая константа, тот ток, который мы хотим поддерживать для этой фазы, например 1А. Задание поступает на сумматор регулятора тока, раскрытая структура которого показана выше. Если читатель не знает, как работает ПИ-регулятор – то увы и ах. Могу лишь посоветовать что-то из этого. Регулятор тока на выходе задает напряжение фазы Uα. Напряжение поступает на блок ШИМ, который рассчитывает задания скважностей (уставок сравнения) для таймеров ШИМ микроконтроллера, формирующих ШИМ на мостовом инверторе из четырех ключей, чтобы сформировать это Uα. Алгоритм может быть разный, например, для положительного напряжения ШИМим правой стойкой пропорционально заданию напряжения, на левой замкнут нижний ключ, для отрицательного ШИМим левой, на правой замкнут нижний. Не забываем добавить мёртвое время! В итоге такая структура делает программный «источник тока» за счет источника напряжения: мы задаем нужное нам значение iα_зад, а данная структура с определенным быстродействием его реализует.
Дальше, возможно, некоторые читатели уже подумали, что до векторной структуры управления осталось дело за малым – нужно поставить два регулятора тока, на каждую фазу по регулятору, и формировать на них задание в зависимости от угла с датчика положения ротора (ДПР), т.е. сделать что-то типа такой структуры (Рисунок 4):
![](https://habrastorage.org/files/ac5/6b4/ca2/ac56b4ca23964937a14beaf8219e57b8.png)
Рисунок 4. Неправильная (наивная) структура векторного управления
Так делать нельзя. При вращении ротора переменные iα_зад и iβ_зад будут синусоидальными, т.е. задание на регуляторы тока будет всё время меняться. Быстродействие регулятора не бесконечно, поэтому при изменении задания он не мгновенно его отрабатывает. Если задание постоянно менять, то регулятор будет всё время его догонять, никогда не достигая. И с ростом скорости вращения двигателя отставание реального тока от заданного будет всё больше и больше, пока желаемый угол в 90° между током и магнитом ротора совсем не перестанет на него быть похожим, а векторное управление не перестанет быть таковым. Поэтому делают по-другому. Правильная структура следующая (Рисунок 5):
![](https://habrastorage.org/files/4e6/791/161/4e67911616a04c64875f91178e7129ae.png)
Рисунок 5. Структура векторного датчикового управления для двухфазной синхронной машины
Здесь добавились два блока – БКП_1 и БКП_2: блоки координатных преобразований. Они делают очень простую вещь: поворачивают вектор на входе на заданный угол. Причем БПК_1 поворачивает на +ϴ, а БКП_2 на -ϴ. Это вся разница между ними. В иностранной литературе их называют преобразованиями Парка (Park transformation). БКП_2 делает преобразование координат для токов: от неподвижных осей α и β, привязанных к статору двигателя, к вращающимся осям d и q, привязанных к ротору двигателя (используя для этого угол положения ротора ϴ). А БКП_1 делает обратное преобразование, от задания напряжения по осям d и q делает переход к осям α и β. Формул для преобразования координат не привожу, но они простые и очень легко ищутся. Собственно, в них нет ничего сложнее школьной геометрии (Рисунок 6):
![](https://habrastorage.org/files/888/4ab/db6/8884abdb62c0460095270be428d8341a.png)
Рисунок 6. Координатные преобразования из неподвижных осей α и β, привязанных к статору двигателя, к вращающимся осям осям d и q, привязанных к ротору
То есть вместо «вращения» задания регуляторов (как было в прошлой структуре), вращаются их входы и выходы, а сами регуляторы работают в статическом режиме: токи d, q и выходы регуляторов в установившемся режиме постоянны. Оси d и q вращаются вместе с ротором (так их вращает сигнал с датчика положения ротора), при этом регулятор оси q регулирует как раз тот ток, который в начале статьи я называл «перпендикулярным полю ротора», то есть это моментообразующий ток, а ток d сонаправлен с «магнитом ротора», поэтому он нам не нужен и мы задаём его равным нулю. Такая структура избавлена от недостатка первой структуры – регуляторы токов даже не знают, что что-то где-то крутится. Они работают в статическом режиме: отрегулировали каждый свой ток, вышли на заданное напряжение – и всё, как ротор от них не убегай, они про это даже не узнают: всю работу по повороту делают блоки координатных преобразований.
Для объяснения «на пальцах» можно привести какую-нибудь аналогию.
Для линейного движения пусть это будет, например, городской автобус. Он всё время то разгоняется, то тормозит, то едет назад и вообще ведёт себя как хочет: это ротор двигателя. Также есть вы на автомобиле рядом, едете параллельно: ваша задача быть ровно посредине автобуса: «держать 90°», вы – это регуляторы тока. Если автобус все время меняет скорость – вы тоже должны соответственно менять скорость и всё время её отслеживать. Но теперь сделаем для вас «векторное управление». Вы залезли внутрь автобуса, встали посередине и держитесь за поручень – как автобус не убегай, вы легко справляетесь с задачей «быть посередине автобуса». Аналогично и регуляторы токов, «катаясь» во вращающихся осях d, q ротора, живут легкой жизнью.
Приведенная выше структура действительно работает и используется в современных электроприводах. Только в ней не хватает целой кучи мелких «улучшалок», без которых её уже не принято делать, типа компенсации перекрестных связей, разных ограничений, ослабления поля и т.п. Но базовый принцип именно такой.
А если нужно регулировать не момент привода, а всё-таки скорость (по правильному угловую скорость, частоту вращения)? Ну тогда ставим еще один ПИ-регулятор – регулятор скорости (РС). На вход подаем задание скорости, а на выходе имеем задание момента. Так как ток оси q пропорционален моменту, то можно для упрощения выход регулятора скорости подать сразу на вход регулятора тока оси q, вот так (Рисунок 7):
![](https://habrastorage.org/files/791/39a/8a4/79139a8a4eba4bd996d6963201691ad9.png)
Рисунок 7. Регулятор скорости для векторного управления
Здесь ЗИ – задатчик интенсивности, плавно изменяет свой выход, чтобы двигатель разгонялся с нужным темпом, а не гнал на полном токе до задания скорости. Текущая частота вращения ω взята из обработчика датчика положения ротора, так как ω это производная от углового положения ϴ. Ну или можно просто время между импульсами датчика засекать…
Как сделать тоже самое для трехфазного двигателя? Ну, собственно, ничего особенного, добавляем еще один блок и меняем модуль ШИМ (Рисунок 8).
![](https://habrastorage.org/files/4a9/4c9/8f2/4a94c98f2ea74766b161d062eb6db9d6.png)
Рисунок 8. Структура векторного датчикового управления для трехфазной синхронной машины
Трехфазные токи, точно так же как и двухфазные, служат для одной цели – создать вектор тока статора Is, направленный в нужную сторону и имеющий нужную амплитуду. Поэтому трехфазные токи можно просто пересчитать в двухфазные, а дальше оставить ту же систему управления, что уже была собрана для двухфазной машины. В англоязычной литературе такой «пересчёт» называют преобразованиями Кларк – Clarke transformation (Эдит Кларк – это она), у нас — фазными преобразованиями. В структуре на рисунке 8, соответственно, эта операция производится блоком фазных преобразований. Делаются они опять при помощи курса школьной геометрии (Рисунок 9):
![](https://habrastorage.org/files/394/4de/4b7/3944de4b7fa24d8694935f3393b25db2.png)
Рисунок 9. Фазные преобразования – из трех фаз к двум. Для удобства принимаем равенство амплитуды вектора Is амплитуде тока в фазе
Думаю, комментарии не нужны. Немного слов про ток фазы C. Туда можно не ставить датчик тока, так как три фазы двигателя соединены в звезду, и по закону Кирхгофа всё, что втекло через две фазы, должно вытечь из третьей (если, конечно, у вас в двигателе не пробита изоляция, и половина не утекла куда-то на корпус), поэтому ток фазы C вычисляют как скалярную сумму токов фаз A и B со знаком минус. Хотя третий датчик иногда ставят чтобы снизить погрешность измерений.
Также нужна полная переделка модуля ШИМ. Обычно для трехфазных двигателей используют трехфазный шестиключевой инвертор. На рисунке задание напряжения поступает всё ещё в двухфазных осях. Внутри модуля ШИМ с помощью обратных фазных преобразований можно пересчитать это в напряжения фаз A, B, C, которые надо приложить в этот момент к двигателю. А вот что делать дальше… Возможны варианты. Наивный метод – это задать на каждую стойку инвертора скважность, пропорциональную желаемому напряжению плюс 0.5. Это называется синусоидальной ШИМ. Именно такой метод применил автор в habrahabr.ru/post/128407. В этом методе всё хорошо, кроме того, что таким методом будет недоиспользован инвертор по напряжению – т.е. максимальное напряжение, которое будет получено, окажется меньше, чем вы могли бы получить, если бы использовали более совершенный метод ШИМ.
Посчитаем. Пусть у вас есть классический преобразователь частоты, питающийся от промышленной трехфазной сети 380В 50Гц. Здесь 380В это линейное (между фазами) действующее напряжение. Так как в преобразователе стоит выпрямитель, он выпрямит это напряжение и на шине постоянного тока окажется напряжение, равное амплитудному линейному напряжению, т.е. 380∙√2=540В постоянного напряжения (по крайней мере без нагрузки). Если мы применим синусоидальный алгоритм расчета в модуле ШИМ, то амплитуда максимального фазного напряжения, которое получится у нас сделать, окажется равной половине от напряжения на шине постоянного тока, т.е. 540/2=270В. Пересчитаем в действующее фазное: 270/√2=191В. А теперь в действующее линейное: 191∙√3=330В. Теперь можем сравнить: вошло нам 380В, а вышло 330В… И больше с этим типом ШИМ никак нельзя. Для исправления этой проблемы используется так называемый векторный тип ШИМ. В нем на выходе будут снова 380В (в идеальном случае без учета всех падений напряжения). Метод векторной ШИМ никакого отношения к векторному управлению электродвигателем не имеет. Просто в его обосновании снова используется немного школьной геометрии, поэтому он и называется векторным. Однако его работу на пальцах не объяснить, поэтому отправлю читателя к книжкам (в конце статьи) или к википедии. Могу еще привести картинку, которая немного намекает на разницу в работе синусоидальной и векторной ШИМ (Рисунок 10):
![image](https://habrastorage.org/getpro/geektimes/post_images/cdf/873/bd9/cdf873bd9920d3103a51b3eea08c2a6c.gif)
Рисунок 10. Изменение потенциалов фаз для скалярной и векторной ШИМ
Виды датчиков положения
Кстати, а какие датчики положения используются для векторного управления? Чаще всего используются четыре типа датчиков. Это квадратурный инкрементальный энкодер, датчик на основе элементов Холла, абсолютный датчик положения и сельсинный датчик.
Квадратурный энкодер не выдает абсолютного положения ротора – по своим импульсам он позволяет лишь определить, сколько вы проехали, но не куда и откуда (как начало и конец связаны с расположением магнита ротора). Поэтому для векторного управления синхронной машиной сам по себе он не подходит. Немного спасает ситуацию его реперная метка (индекс) – она одна на механический оборот, если до неё доехать, то абсолютное положение становится известно, а от неё можно уже отсчитывать сколько проехали квадратурным сигналом. Но как до этой метки доехать в начале работы? В общем, это не всегда удобно.
Датчик на основе элементов Холла – это грубый датчик. Он выдает всего несколько импульсов на оборот (в зависимости от кол-ва элементов Холла, для трехфазных двигателей их обычно три, т.е. шесть импульсов), позволяя знать положение в абсолютной величине, но с низкой точностью. Точности обычно хватает, чтобы держать угол вектора тока так, чтобы двигатель по крайней мере ехал вперед, а не назад, но момент и токи будут пульсировать. Если двигатель разогнался, то можно начать программно экстраполировать сигнал с датчика по времени – т.е. строить из грубого дискретного угла линейно изменяющийся угол. Это делается на основе предположения, что двигатель вращается с примерно постоянной скоростью, как-то так (Рисунок 11):
![](https://habrastorage.org/files/c04/84a/351/c0484a35184645a18e94dcaa6ce6d196.png)
Рисунок 11. Работа датчика положения на элементах Холла для трехфазной машины и экстраполяция его сигнала
Часто для серводвигателей используется сочетание энкодера и датчика Холла. В этом случае можно сделать единый программный модуль их обработки, убирая недостатки обоих: делать экстраполяцию угла, приведенную выше, но не по времени, а по меткам с энкодера. Т.е. внутри от фронта до фронта датчика Холла работает энкодер, а каждый фронт Холла чётко инициализирует текущее абсолютное угловое положение. В этом случае неоптимальным (не под 90°) окажется лишь первое движение привода, пока он не доехал до какого-нибудь фронта датчика Холла. Отдельную проблему в этом случае представляет обработка неидеальности и того и другого датчика — симметрично и равномерно элементы Холла редко кто располагает…
В еще более дорогих применениях используют абсолютный датчик положения с цифровым интерфейсом (абсолютный энкодер), который сразу выдает абсолютное положение и позволяет не испытывать описанных выше проблем.
Если в электродвигателе очень жарко, а также когда требуется повышенная точность измерения угла, используют «аналоговый» сельсинный датчик (резольвер, вращающийся трансформатор). Это маленькая электрическая машина, используемая как датчик. Представьте, что в рассмотренной нами синхронной машине на рисунке 1 вместо магнитов стоит еще одна катушка, на которую мы подаем высокочастотный сигнал. Если ротор стоит горизонтально, то сигнал наведется только в катушку статора фазы α, если вертикально – то только в β, если перевернуть его на 180 – то изменится фаза сигнала, а в промежуточных положениях наводится и туда и сюда по закону синуса/косинуса. Соответственно, измеряя амплитуду сигнала в двух катушках, по соотношению этой амплитуды и по фазовому сдвигу можно также определять положение. Установив такую машину как датчик к основной, можно узнавать положение ротора.
Есть еще много экзотических датчиков положения, особенно для сверхвысокоточных применений, например, для изготовления электронных чипов. Там в ход идут уже любые физические явления, чтобы только узнать положение наиболее точно. Их рассматривать не будем.
Упрощение векторного управления
Как вы поняли, векторное управление достаточно требовательное – и датчиков положения ему наставь, и датчиков тока, и ШИМ ему векторную, и микроконтроллер не абы какой, чтобы всю эту математику обсчитывать. Поэтому для простых применений его упрощают. Для начала можно исключить датчик положения, сделав бездатчиковое векторное управление. Для этого используют немного больше математической магии, находящейся в желтом прямоугольнике (Рисунок 12):
![](https://habrastorage.org/files/edb/2fa/a24/edb2faa24d56474b82bb16ac6c91602c.png)
Рисунок 12. Структура бездатчикового векторного управления
Наблюдатель – это такой блок, на который подается информация о приложенном к двигателю напряжении (например, из задания на модуль ШИМ) и о токах в двигателе с датчиков. Внутри наблюдателя работает модель электродвигателя, которая, грубо говоря, пытается подстроить свои токи в статоре под измеренные с реального двигателя. Если у неё это получилось, то можно считать, что и положение моделируемого внутри вала ротора тоже совпадает с реальным и им можно пользоваться для нужд векторного управления. Ну это, конечно, совсем упрощённо. Видов наблюдателей таких – не пересчитать. Каждый аспирант по специальности «электропривод» пытается изобрести именно свой, который чем-то лучше других. Основной принцип – отслеживание ЭДС электродвигателя. Поэтому чаще всего бездатчиковая система управления работоспособна только на относительно высокой частоте вращения, где ЭДС большая. А также имеет еще ряд недостатков по сравнению с наличием датчика: нужно знать параметры двигателя, быстродействие привода ограничено (если частота вращения резко меняется, наблюдатель может не успеть её отследить и какое-то время «врать», а то и «развалиться» совсем), настройка наблюдателя – это целая процедура, для его качественной работы нужно точно знать напряжение на двигателе, точно измерять его токи и т.п.
Есть и другой вариант упрощения. Например, можно сделать так называемую «автокоммутацию». В этом случае для трехфазного двигателя отказываются от сложного метода ШИМ, отказываются от сложной векторной структуры и начинают просто включать фазы двигателя по датчику положения на элементах Холла, даже иногда без всякого токоограничения. Ток в фазах получается не синусоидальный, а трапецеидальный, прямоугольный или еще более искаженный. Но стараются сделать так, чтобы средний вектор тока был всё равно под 90 градусов к «магниту ротора» выбором момента включения фаз. При этом, включая фазу под напряжение, неизвестно, когда же в фазе двигателя нарастет ток. На низкой частоте вращения он это делает быстрее, на высокой, где мешает ЭДС машины, медленнее, еще темп нарастания тока зависит от индуктивности двигателя и т.п. Поэтому, даже включая фазы точно в нужный момент времени, совсем не факт, что средний вектор тока окажется в нужном месте и с нужной фазой – он может как опережать, так и запаздывать относительно оптимальных 90 градусов. Поэтому в таких системах вводят настройку «опережения коммутации» – по сути просто время, насколько раньше нужно на фазу двигателя подавать напряжение, чтобы в итоге фаза вектора тока получилась более близка к 90 градусам. По-простому это называют «настройка таймингов». Так как ток в электродвигателе при автокоммутации не синусоидальный, то, если взять рассмотренную выше синусоидальную машину и управлять ей таким вот образом, момент на валу будет пульсировать. Поэтому в двигателях, предназначенных для автокоммутации, часто специальным образом меняют магнитную геометрию ротора и статора, чтобы они стали более подходящими к такому типу управления: ЭДС таких машин делают трапецеидальной, благодаря чему в режиме автокоммутации они работают лучше. Синхронные машины, оптимизированные для автокоммутации, получили название бесколлекторных двигателей постоянного тока (БДПТ) или по-английски BLDC (Brushless Direct Current Motor). Режим автокоммутации также часто называют вентильным режимом, а двигатели с ним работающие – вентильные. Но это всё просто разные названия, ничем не влияющие на суть (но матёрые электроприводчики часто страдают СПГС в вопросах, связанных с этими названиями). Есть неплохое видео, иллюстрирующее принцип работы таких машин. На нем показан обращенный двигатель, где ротор снаружи, а статор внутри:
А вот здесь есть курс статей по таким двигателям и аппаратной части системы управления.
Можно пойти даже на еще большее упрощение. Коммутировать обмотки так, чтобы одна фаза всё время оказывалась «свободна» и к ней не прикладывался ШИМ. Тогда в ней можно измерять ЭДС (наведенное в катушке фазы напряжение), и, когда это напряжение переходит через ноль, использовать это как сигнал датчика положения ротора, потому что фаза этого наведенного напряжения зависит как раз от положения ротора. Получается бездатчиковая автокоммутация, что широко используется в различных простеньких приводах, например, в «регуляторах» для пропеллеров авиамоделей. При этом надо помнить, что ЭДС машины появляется только на относительно высокой частоте вращения, поэтому для старта такие системы управления просто не спеша перебирают фазы, надеясь, что ротор двигателя будет следовать за подаваемым током. Как только ЭДС появилась, включается режим автокоммутации. Поэтому бездатчиковая система (такая простая, да и сложная чаще всего тоже) не подходит для задач, где двигатель должен уметь развивать момент на околонулевых частотах вращения, например, для тягового привода автомобиля (или его модели), сервопривода какого-то механизма и т.п. Зато бездатчиковая система с успехом подходит для насосов и вентиляторов, где как раз и применяется.
Но иногда делают даже и еще большее упрощение. Можно совсем отказаться от микроконтроллера, ключей, датчиков положения и прочего, осуществляя переключение фаз специальным механическим коммутатором (Рисунок 13):
![](https://habrastorage.org/files/04a/fbd/529/04afbd529381442596e86f3ed637cb71.png)
Рисунок 13. Механический коммутатор для переключения обмоток
При вращении ротор сам переключает свои части обмоток, меняя приложенное к ним напряжение, при этом ток в роторе протекает переменный. Коммутатор располагают таким образом, чтобы магнитный поток ротора и статора снова оказывался близким к 90 градусам, дабы достичь максимума момента. Такие двигатели
Заключение
Все электрические машины работают схожим образом. В теории электропривода даже существует понятие «обобщенная электрическая машина», к которой сводят работу других. Показанные в статье объяснения «на пальцах» никоим образом не могут служить практическим руководством к написанию кода микроконтроллера. В статье рассмотрен хорошо если один процент информации, которая требуется для реализации настоящего векторного управления. Чтобы сделать что-то на практике, нужно, во-первых, знать ТАУ, хотя бы на уровне понимания, как работает ПИ-регулятор. Потом нужно всё-таки изучить математическое описание как синхронной машины, так и синтеза векторного управления. Также изучить векторную ШИМ, узнать, что такое пары полюсов, познакомиться с типами обмоток машин и прочее. Это можно сделать в свежей книге «Анучин А. С. Системы управления электроприводов. МЭИ, 2015», а также в «Калачев Ю. Н. Векторное регулирование (заметки практика)». Следует предостеречь читателя от погружения в формулы «старых» учебников по приводу, где основной упор сделан на рассмотрение характеристик электродвигателей при питании напрямую от трехфазной промышленной сети, без всяких микроконтроллеров и датчиков положения. Поведение двигателей в этом случае описывается сложными формулами и зависимостями, но для задачи векторного управления они почти никакой пользы не несут (если только изучить для саморазвития). Особенно следует с осторожностью относиться к рекомендациям старых учебников, где, например, сказано, что синхронная машина не должна работать на максимуме своего момента, так как там работа неустойчива и грозит опрокидыванием – для векторного управления всё это «вредные советы».
На каком микроконтроллере можно сделать полноценное векторное управление, читайте, например, в нашей статье Новый отечественный motor-control микроконтроллер К1921ВК01Т ОАО «НИИЭТ», а как это отлаживать в статье Способы отладки ПО микроконтроллеров в электроприводе. Также заходите на наш сайт: там, в частности, выложено два
Продолжение статьи, где рассказано про асинхронные двигатели здесь.
P.S.
У специалистов прошу прощения за не совсем корректное обращение с некоторыми терминами, в частности с терминами «поток», «потокосцепление», «магнитное поле» и другими – простота требует жертв…