Управление бесколлекторным двигателем постоянного тока
Как известно в коллекторных двигателях постоянного тока коммутация обмоток в нужный момент времени осуществляется с помощью коллекторного узла(якоря). В беcколлекторных двигателях коммутацией управляет электроника. Для определения момента коммутации контроллер может использовать или датчики положения(Датчики Холла) или обратную ЭДС, генерируемую неподключенными обмотками. Датчики положения наиболее часто используются в низкооборотистых(тяговых) двигателях, где пусковой момент существенно варьируется или где требуется его высокое значение, а также где двигатель используется для позиционирования. Управление бесколлекторными двигателями без датчиков используется в тех случаях, когда пусковой момент существенно не изменяется и когда отсутствует необходимость в управлении позиционированием, как, например, в вентиляторах.
На каждой ступени коммутации, обмотка одной фазы подключается к положительному напряжению питания, другая — к отрицательному, а третья — остается неподключенной. Обратная ЭДС неподключенной фазы в результате пересекает ноль при пересечении среднего значения положительного и отрицательного напряжений. Пересечение ноля возникает всегда в центре между двумя коммутациями. На постоянной скорости или медленно изменяющейся скорости период времени от одной коммутации до пересечения нуля и время от пересечения нуля до следующей коммутации равны. Это используется в качестве основы в данной реализации устройства управления без использования датчиков.
Для определения сигналов обратной ЭДС будем использовать метод виртуальной средней точки, для этого меряем напряжение на свободной фазе и сравниваем его со средней точкой. При использовании АЦП требуется некоторое время для преобразования, что снижает производительность, поэтому логичнее использовать аналоговые компараторы, нам ведь не нужно знать точное значение АЦП этого сигнала. Компаратор может генерировать прерывание в момент перехода напряжения через среднюю точку, а также выдавать логический сигнал своего состояния, что нам и будет нужно.
Три ШИМ-канала, OC1A, OC2 и OC1B, управляют верхними ключами(P-канальные MOSFET) мостовой схемы. Это дает возможность управления электрическим током с помощью аппаратных возможностей генерации ШИМ-сигналов при минимальном использовании программных ресурсов. В этом случае управление скоростью выполняется за счет изменения скважности ШИМ-сигнала.
Нижние ключи управляются логическими сигналами, и в нужный момент N-канальные MOSFET подключают обмотку к минусу питания или к линии обратной ЭДС. Ниже представлены таблицы состояний сигналов подаваемых на верхние и нижние ключи, с направлением вращения по часовой и против часовой стрелки.
Управление бесколлекторным двигателем по сигналам обратной ЭДС – понимание процесса
Когда я начал разрабатывать блок управления бесколлекторным двигателем (мотор-колесом), было много вопросов о том, как сопоставить реальный двигатель с абстрактной схемой из трех обмоток и магнитов, на которой, как правило, все объясняют принцип управления бесколлекторными двигателями.
Когда я реализовал управление по датчикам Холла я еще не очень понимал, что происходит в двигателе дальше абстрактных трех обмоток и двух полюсов: почему 120 градусов и почему алгоритм управления именно такой.
Все встало на место, когда я начал разбираться в идее бездатчикового управления бесколлекторным двигателем — понимание процесса, происходящего в реальной железке, помогло разработать аппаратную часть и понять алгоритм управления.
Ниже я постараюсь расписать свой путь к пониманию принципа управления бесколлекторным двигателем постоянного тока.
Для работы бесколлекторного двигателя необходимо чтобы постоянное магнитное поле ротора увлекалось за вращающемся электромагнитным полем статора, как и в обычном ДПТ.
Вращение магнитного поля статора осуществляется коммутацией обмоток с помощью электронного блока управления.
Конструкция бесколлекторного двигателя схожа с конструкцией синхронного двигателя, если подключить бесколлекторный двигатель в трехфазную сеть переменного тока, удовлетворяющую электрическим параметрам двигателя, он будет работать.
Определенная коммутация обмоток бесколлекторного двигателя позволяет управлять им от источника постоянного тока. Чтобы понять, как составить таблицу коммутаций бесколлекторного двигателя необходимо рассмотреть управление синхронной машиной переменного тока.
Синхронная машина
Синхронная машина управляется от трехфазной сети переменного тока. Двигатель имеет 3 электрические обмотки, смещенные между собой на 120 электрических градусов.
Запустив трехфазный двигатель в генераторном режиме, постоянным магнитным полем будет наводиться ЭДС на каждую из обмоток двигателя, обмотки двигателя распределены равномерно, на каждую из фаз будет наводиться синусоидальное напряжение и данные сигналы будут смещены между собой на 1/3 периода (рисунок 1). Форма ЭДС меняется по синусоидальному закону, период синусоиды равен 2П(360), поскольку мы имеем дело с электрическими величинами (ЭДС, напряжение, ток) назовем это электрическими градусами и будем измерять период в них.
При подаче на двигатель трехфазного напряжения в каждый момент времени на каждой обмотке будет некое значение силы тока.

Рисунок 1. Вид сигнала трехфазного источника переменного тока.
Каждая обмотка формирует вектор магнитного поля пропорциональный току на обмотке. Сложив 3 вектора можно получить результирующий вектор магнитного поля. Так как с течением времени ток на обмотках двигателя меняется по синусоидальному закону, меняется величина вектора магнитного поля каждой обмотки, а результирующий суммарный вектор меняет угол поворота, при этом величина данного вектора остается постоянной.

Рисунок 2. Один электрический период трехфазного двигателя.
На рисунке 2 изображен один электрический период трехфазного двигателя, на данном периоде обозначено 3 произвольных момента, чтобы построить в каждом из этих моментов вектора магнитного поля отложим данный период, 360 электрических градусов, на окружности. Разместим 3 обмотки двигателя сдвинутые на 120 электрических градусов относительно друг друга (рисунок 3).

Рисунок 3. Момент 1. Вектора магнитного поля каждой обмотки (слева) и результирующий вектор магнитного поля (справа).
Вдоль каждой из фаз построен вектор магнитного поля, создаваемый обмоткой двигателя. Направление вектора определяется направлением постоянного тока в обмотке, если напряжение, прикладываемое к обмотке положительно, то вектор направлен в противоположную сторону от обмотки, если отрицательное, то вдоль обмотки. Величина вектора пропорциональна величине напряжения на фазе в данный момент.
Чтобы получить результирующий вектор магнитного поля необходимо сложить данные вектора по закону сложения векторов.
Аналогично построение для второго и третьего моментов времени.

Рисунок 4. Момент 2. Вектора магнитного поля каждой обмотки (слева) и результирующий вектор магнитного поля (справа).
Так, с течение времени, результирующий вектор плавно меняет свое направление, на рисунке 5 изображены получившиеся вектора и изображен полный поворот магнитного поля статора за один электрический период.

Рисунок 5. Вид вращающегося магнитного поля формируемого обмотками на статоре двигателя.
За этим вектором электрического магнитного поля увлекается магнитное поле постоянных магнитов ротора в каждый момент времени (рисунок 6).

Рисунок 6. Постоянный магнит (ротор) следует направлению магнитного поля формируемого статором.
Так работает синхронная машина переменного тока.
Имея источник постоянного тока необходимо самостоятельно формировать один электрический период со сменой направлений тока на трех обмотках двигателя. Поскольку бесколлекторный двигатель по конструкции такой же, как синхронный, в генераторном режиме имеет идентичные параметры, необходимо отталкиваться от рисунка 5, где изображено сформированное вращающееся магнитное поле.
Постоянное напряжение
Источник постоянного тока имеет только 2 провода «плюс питания» и «минус питания» это значит, что есть возможность подавать напряжение только на две из трех обмоток. Необходимо аппроксимировать рисунок 5 и выделить все моменты, при которых возможно скоммутировать 2 фазы из трех.
Число перестановок из множества 3 равняется 6, следовательно, имеется 6 вариантов подключения обмоток.
Изобразим возможные варианты коммутаций и выделим последовательность, при которой вектор будет шаг за шагом проворачиваться далее пока не дойдет до конца периода и не начнет сначала.
Электрический период будем отсчитывать от первого вектора.

Рисунок 7. Вид шести векторов магнитного поля которые можно создать от источника постоянного тока коммутацией двух из трех обмоток.
На рисунке 5 видно, что при управлении трехфазным синусоидальным напряжением имеется множество векторов плавно проворачивающихся с течением времени, а при коммутации постоянным током возможно получить вращающееся поле только из 6 векторов, то есть переключение на следующий шаг должно происходить каждые 60 электрических градусов.
Результаты из рисунка 7 сведены в таблицу 1.
Таблица 1. Полученная последовательность коммутаций обмоток двигателя.
| Плюс питания | Минус питания | Обмотка не подключена |
| W | U | V |
| W | V | U |
| U | V | W |
| U | W | V |
| V | W | U |
| V | U | W |
Вид получившегося управляющего сигнала в соответствии с таблицей 1 изображен на рисунке 8. Где -V коммутация на минус источника питания (GND), а +V коммутация на плюс источника питания.

Рисунок 8. Вид управляющих сигналов от источника постоянного тока для бесколлекторного двигателя. Желтый – фаза W, синий – U, красный – V.
Однако реальная картина с фаз двигателя будет похожа на синусоидальный сигнал из рисунка 1. У сигнала образуется трапециевидная форма, так как в моменты, когда обмотка двигателя не подключена, постоянные магниты ротора наводят на нее ЭДС (рисунок 9).

Рисунок 9. Вид сигнала с обмоток бесколлекторного двигателя в рабочем режиме.
На осциллографе это выглядит так:

Рисунок 10. Вид окна осциллографа при измерении одной фазы двигателя.
Конструктивные особенности
Как было сказано ранее за 6 переключений обмоток формируется один электрический период 360 электрических градусов.
Необходимо связать данный период с реальным углом вращения ротора. Двигатели с одной парой полюсов и трехзубым статором применяются крайне редко, двигатели имеют N пар полюсов.
На рисунке 11 изображены модели двигателя с одной парой полюсов и с двумя парами полюсов.

а. б.
Рисунок 11. Модель двигателя с одной (a) и с двумя (б) парами полюсов.
Двигатель с двумя парами полюсов имеет 6 обмоток, каждая из обмоток парная, каждая группа из 3 обмоток смещена между собой на 120 электрических градусов. На рисунке 12б. отложен один период для 6 обмоток. Обмотки U1-U2, V1-V2, W1-W2 соединены между собой и в конструкции представляют 3 провода вывода фаз. Для простоты рисунка не отображены соединения, но следует запомнить, что U1-U2, V1-V2, W1-W2 одно и то же.
На рисунке 12, исходя из данных таблицы 1, изображены вектора для одной и двух пар полюсов.

а. б.
Рисунок 12. Схема векторов магнитного поля для двигателя с одной (a) и с двумя (б) парами полюсов.
На рисунке 13 изображены вектора, созданные 6 коммутациями обмоток двигателя с одной парой полюсов. Ротор состоит из постоянных магнитов, за 6 шагов ротор провернется на 360 механических градусов.
На рисунке обозначены конечные положения ротора, в промежутках между двумя соседними положениями ротор проворачивается от предыдущего к следующему скоммутированному состоянию. Когда ротор достигает данного конечного положения, должно происходить следующее переключение и ротор будет стремиться к новому заданному положению, так чтобы его вектор магнитного поля стал сонаправлен с вектором электромагнитного поля статора.

Рисунок 13. Конечные положения ротора при шестиступенчатой коммутации бесколлекторного двигателя с одной парой полюсов.
В двигателях с N парами полюсов необходимо пройти N электрических периодов для полного механического оборота.
Двигатель с двумя парами полюсов будет иметь два магнита с полюсами S и N, и 6 обмоток (рисунок 14). Каждая группа из 3 обмотки смещены друг относительно друга на 120 электрических градусов.

Рисунок 14. Конечные положения ротора при шестиступенчатой коммутации бесколлекторного двигателя с двумя парами полюсов.
Определение положения ротора бесколлекторного двигателя
Как было сказано ранее для работы двигателя необходимо в нужные моменты времени подключать напряжение на нужные обмотки статора. Подавать напряжение на обмотки двигателя нужно в зависимости от положения ротора, так чтобы магнитное поле статора всегда опережало магнитное поле ротора. Для определения положения ротора двигателя и коммутаций обмоток используют электронный блок управления.
Отслеживание положения ротора возможно несколькими способами:
1. По датчикам Холла
2. По обратной ЭДС
Как правило, датчиками Холла производители оснащают двигатель при выпуске, поэтому это самый распространённый метод управления.
Коммутирование обмоток в соответствии с сигналами обратной ЭДС позволяет отказаться от датчиков встроенных в двигатель и использовать в качестве датчика анализ свободной фазы двигателя, на которую будет наводиться магнитным полем противо-ЭДС.
Управление бесколлекторным двигателем с датчиками Холла
Чтобы коммутировать обмотки в нужные моменты времени необходимо отслеживать положение ротора в электрических градусах. Для этого применяются датчики Холла.
Поскольку имеется 6 состояний вектора магнитного поля необходимо 3 датчика Холла, которые будут представлять один абсолютный датчик положения с трехбитным выходом. Датчики Холла устанавливаются также как обмотки, смещенные между собой на 120 электрических градусов. Это позволяет использовать магниты ротора в качестве воздействующего элемента датчика.

Рисунок 15. Сигналы с датчиков Холла за один электрический оборот двигателя.
Для вращения двигателя необходимо чтобы магнитное поле статора опережало магнитное поле ротора, положение, когда вектор магнитного поля ротора сонаправлен с вектором магнитного поля статора является конечным для данной коммутации, именно в этот момент должно происходить переключение на следующую комбинацию, чтобы не давать ротору зависать в стационарном положении.
Cопоставим сигналы с датчиков Холла с комбинацией фаз которые необходимо скоммутировать (таблица 2)
Таблица 2. Сопоставление сигналов датчиков Холла с коммутацией фаз двигателя.
| Положение двигателя | HU(1) | HV(2) | HW(3) | U | V | W |
| 0 | 0 | 0 | 1 | 0 | — | + |
| 1 | 0 | 1 | + | — | 0 | |
| 1 | 0 | 0 | + | 0 | — | |
| 1 | 1 | 0 | 0 | + | — | |
| 0 | 1 | 0 | — | + | 0 | |
| 360/N | 0 | 1 | 1 | — | 0 | + |
При равномерном вращении двигателя с датчиков поступает сигнал смещенный на 1/6 периода, 60 электрических градусов (рисунок 16).

Рисунок 16. Вид сигнала с датчиков Холла.
Управление с помощью сигнала обратной ЭДС
Существуют бесколлекторный двигатели без датчиков положения. Определение положения ротора осуществляется с помощью анализа сигнала ЭДС на свободной фазе двигателя. В каждый момент времени к одной из фаз подключен «+» к другой «-» питания, одна из фаз остается свободной. Вращаясь, магнитное поле ротора наводит ЭДС в свободной обмотке. По мере вращения напряжение на свободной фазе изменяется (рисунок 17).

Рисунок 17. Изменение напряжения на фазе двигателя.
Сигнал с обмотки двигателя разбит на 4 момента:
1. Обмотка подключена к 0
2. Обмотка не подключена (свободная фаза)
3. Обмотка подключена к питающему напряжению
4. Обмотка не подключена (свободная фаза)
Сопоставив сигнал с фаз с управляющим сигналом, видно, что момент перехода на следующее состояние можно детектировать пересечением средней точки (половины питающего напряжения) с фазой, которая в данный момент не подключена (рисунок 18).

Рисунок 18. Сопоставление управляющего сигнала с сигналом на фазах двигателя.
После детектирования пересечения необходимо выдержать паузу и включать следующее состояние. По данному рисунку составлен алгоритм переключений состояний обмоток (таблица 3).
Таблица 3. Алгоритм переключения обмоток двигателя
| Текущее состояние | U | V | W | Следующее состояние |
| 1 | — | Ожидание пересечения средней точки из + в — | + | 2 |
| 2 | Ожидание пересечения средней точки из — в + | — | + | 3 |
| 3 | + | — | Ожидание пересечения средней точки из + в — | 4 |
| 4 | + | Ожидание пересечения средней точки из — в + | — | 5 |
| 5 | Ожидание пересечения средней точки из + в — | + | — | 6 |
| 6 | — | + | Ожидание пересечения средней точки из — в + | 1 |
Пересечение средней точки проще всего детектировать компаратором, на один вход компаратора подается напряжение средней точки, а на второй текущее напряжение фазы.

Рисунок 19. Детектирование средней точки компаратором.
Компаратор срабатывает в момент перехода напряжения через среднюю точку и генерирует сигнал для микроконтроллера.
Обработка сигнала с фаз двигателя
Однако сигнал с фаз при регулировании скорости ШИМ отличается видом, и имеет импульсный характер (рисунок 21), в таком сигнале невозможно детектировать пересечение со средней точкой.

Рисунок 20. Вид сигнала фазы при регулировании скорости ШИМ.
Поэтому данный сигнал следует отфильтровать RC фильтром чтобы получить огибающую, а так же разделить под требования компаратора. По мере увеличения скважности шим сигнал будет возрастать по амплитуде (рисунок 22).

Рисунок 21. Схема делителя и фильтра сигнала с фазы двигателя.

Рисунок 22. Огибающая сигнала при изменении скважности ШИМ.
Схема со средней точкой

Рисунок 23. Вид виртуальная средней точки. Картинка взята с avislab.com/
С фаз снимаются сигналы через токограничительные резисторы и объединяются, получается вот такая картина:

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

После прохождения сигнала через фильтр колебания сглаживается и получается ровное напряжение относительно которого можно детектировать пересечение обратной ЭДС.

Рисунок 26. Напряжение после делителя и фильтра низких частот.
Средняя точка будет менять свое значение в зависимости от напряжения (скважности ШИМ), так же как и огибающая сигнала.

Полученные сигналы с компараторов заводятся на микроконтроллер, который их обрабатывает по алгоритму выше.
Пока на этом все.
Управление бездатчиковыми бесколлекторными двигателями (Sensorless BLDC)
Существуют бесколлекторный двигатели без каких либо датчиков положения или энкодеров. В таких двигателях определение положения ротора выполняется путем измерения ЭДС на свободной фазе. Мы помним, что в каждый момент времени к одной из фаз подключен «+» к другой «-» питания, одна из фаз остается свободной. Вращаясь, двигатель наводит ЭДС в свободной обмотке. По мере вращения напряжение на свободной фазе изменяется. Измеряя напряжение на свободной фазе, можно определить момент переключения к следующему положению ротора. Обычно определяют момент перехода напряжения на свободной фазе через нулевую точку (половину питающего напряжения). Т.е. нужно отследить момент, когда напряжение на свободной фазе сравняется со средней точкой. Разумеется, для работы этого метода двигатель должен вращаться. Этот метод хорошо работает при сравнительно высоких оборотах двигателя. При низких оборотах наводимая ЭДС может оказаться недостаточной для четкого определения положения ротора. Тем не менее, этот метод применяется. Один из методов определения положения ротора при невращающемся двигателе будет рассмотрен в следующей статье. Способы запуска беcколлекторного бездатчикового двигателя также будут рассматриваться в следующей статье.
Схема со средней точкой
Когда ключи открыты, через фазы протекает ток и средняя точка «привязана» к питающему напряжению. В этот момент на свободной фазе двигателя выполняются измерения. Очевидно, что при разомкнутых ключах, измерение напряжения на свободной фазе не даст результата, поскольку нулевая точка как бы висит в воздухе.
Рис. 1
Виртуальная средняя точка
В большинстве случаев средняя точка недоступна. Т.е. нет возможности физически подключиться к ней без разборки двигателя. Обойти эту ситуацию поможет создание виртуальной средней точки.
Рис. 2
Эта схема очень проста и применяется очень часто, но она имеет свои недостатки. Из за ШИМ напряжение средней точки не постоянно. Оно колеблется в широком диапазоне напряжений. Для того чтобы микроконтроллер смог измерить напряжение, применяются цепи согласования сигналов — делители напряжения и RC-фильтры для сглаживания колебаний.
Рис. 3
Если Ваш двигатель питается напряжением 24 вольта, то в средней точке напряжение может находиться в пределах от 0 до 24 Вольт. Микроконтроллеры обычно имеют предел измерения 5 В. Без схем согласования уровней сигналов не обойтись. Учтите, что повысив напряжение питания двигателя, следует изменить и делители напряжения в цепях согласования. В противном случае напряжение может превысить допустимое и вывести со строя микроконтроллер. Для предотвращения таких ситуаций дополнительно применяют схемы защиты.
Присутствие делителя напряжения ведет к снижению чувствительности на малых оборотах двигателя, а наличие фильтров вносит задержку.
Задержка является причиной погрешностей в определении положения ротора и может стать критичной для управления двигателями на высоких скоростях.
Поскольку схема с виртуальной средней точкой достаточно шумная, можно прибегнуть к другой схеме, где стабильное напряжение средней точки устанавливается отдельно и зависит от питающего напряжения.
Рис. 4
В литературе встречались упоминания о схемах, которые используют измерение третьей гармоники статора. Также есть упоминание о применение высокочастотного сигнала для определения положения ротора. Однако более подробной информации об этом методе сообщить не могу.
Мы будем рассматривать простую схему, в которой стабильное напряжение средней точки устанавливается отдельно.
Алгоритм коммутаций
На свободной фазе нам нужно будет измерять напряжение. Напряжение можно измерять с помощью АЦП и сравнивать со средней точкой. АЦП имеют время преобразования, что вносит погрешность в вычисления. Логичнее использовать компараторы. Нам ведь не обязательно знать значение напряжения. Важно определить сам момент перехода через среднюю точку. Компаратор срабатывает именно в момент перехода напряжения через среднюю точку и может генерировать прерывание для микроконтроллера. Рассмотрим следующую временную диаграмму:
Рис. 6
На первом этапе P1 на фазу V подается «+», минус — на фазу U. При этом напряжение на фазе W начинает расти и в середине периода P1 пересекает нулевую точку — половину напряжения между фазами V и U, т.е. половину питающего напряжения. Как видно из диаграммы, изменение состояния ключей нужно выполнить на половине периода между событием пересечения нулевой точки (ZC). После переключения состояния ключей (этап P2) измерения выполняем на свободной фазе V. Обратите внимание на то, что напряжение на свободной фазе может расти или падать. Это придется учитывать при работе компараторов. Таким образом, наш регулятор должен помнить на каком шаге от P1 до P6 находится, и переходить к следующему состоянию, исходя из расчетов времени, вычисленных между событиями ZC.
Ниже приведена таблица соответствия состояния ключей и свободных фаз для каждого из 6 положений ротора:
| Этап | Питание + | Питание — | Открытые ключи | Измерения на фазе |
| P1 | V | U | SW1, SW5 | W |
| P2 | W | U | SW3, SW5 | V |
| P3 | W | V | SW3, SW4 | U |
| P4 | U | V | SW2, SW4 | W |
| P5 | U | W | SW2, SW6 | V |
| P6 | V | W | SW1, SW6 | U |
Итак, нам понадобится подсчитывать время между ZC. И отмерять время от события ZC до переключения ключей. Это время должно учитывать угол опережения фазы.
Выбор частоты ШИМ
Зачастую в приводах определение положения ротора, измерения тока, напряжения и т.п. синхронизируют с сигналом ШИМ . Т.е. в определенные моменты с периодичностью, зависящей от частоты ШИМ сигнала.
Предположим ситуацию, когда, частота ШИМ 8 кГц, скважность 100% (полный газ), двигатель вращается со скоростью, при которой частота коммутаций тоже равняется 8 кГц. Т.е. от момента переключения ключей до следующего переключения проходит ровно один период ШИМ сигнала. Если скорость вращения возрастёт и частота коммутаций превысит частоту ШИМ, возникнет ситуация, при которой ШИМ сигнал будет удерживать ключи открытыми дольше необходимого и противодействовать вращению двигателя. Кроме того, измерение напряжения на свободной фазе синхронизированы частотой ШИМ сигнала, поэтому нет технической возможности вычислить скорость коммутации выше частоты ШИМ. Другими словами контролер теоретически не сможет управлять двигателем, если тот вращается со скоростью, при которой частота коммутаций превышает частоту ШИМ сигнала. Это только теоретические расчеты. На практике, желательно чтобы частота ШИМ в несколько раз превышала частоту коммутаций.
Например, имеем регулятор с частотой ШИМ 8 кГц, и двигатель с 14 магнитами.
Максимальная теоретически возможная частота вращения вала двигателя будет:
V=(Q/6/(N/2)*60);
Q — частота ШИМ в герцах
6 — количество коммутаций за один электрический оборот
N — количество магнитов
60 — количество секунд в минуте
V=((8000/6/(14/2))*60) = 11428 об/мин.
Двигатель с 28 магнитами:
V=((8000/6/(28/2))*60) = 5714 об/мин.
Т.е. если вам нужно управлять многополюсным двигателем на высоких оборотах, придется использовать регулятор с более высокой частотой ШИМ.
Например, чтобы раскрутить двигатель с 24 магнитами до 10000 об/мин понадобится регулятор с частотой ШИМ не ниже 24кГц. Нужно так же помнить, что чем выше частота ШИМ, тем больше переходных процессов происходит на ключах за единицу времени. Это может привести к увеличению потерь и к увеличению тепловыделения на ключах.
Подключение бесколлекторного электродвигателя постоянного тока (BLDC) к Arduino
В настоящее время наблюдается небывалый интерес к конструированию различных летающих механизмов – дронов, планеров, глайдеров, вертолетов и т.д. Сейчас их можно легко сконструировать самостоятельно благодаря большому количеству материалов по ним в сети интернет. Все эти летающие механизмы используют для своего движения так называемые бесщёточные (бесколлекторные) электродвигатели постоянного тока (BLDC — Brushless DC Motor). Что представляют собой подобные двигатели? Почему именно они сейчас используются в различных летающих дронах? Как правильно купить подобный двигатель и подключить его к микроконтроллеру? Что такое ESC и почему мы будем его использовать? Ответы на все эти вопросы вы найдете в данной статье.

В этой статье мы рассмотрим управление скоростью вращения бессенсорного бесколлекторного электродвигателя постоянного тока A2212/13T (Sensorless BLDC outrunner motor), часто используемого для конструирования дронов, с помощью ESC (Electronic Speed Controller – электронный контроллер скорости) и платы Arduino.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- A2212/13T BLDC Motor (бесколлекторный электродвигатель постоянного тока).
- ESC (20A) (электронный контроллер скорости) (купить на AliExpress).
- Источник питания (12V 20A).
- Потенциометр 10 кОм (купить на AliExpress).
Принцип действия BLDC двигателей
Бесколлекторные электродвигатели постоянного тока (BLDC двигатели) в настоящее время часто используются в потолочных вентиляторах и электрических движущихся транспортных средствах благодаря их плавному вращению. В отличие от других электродвигателей постоянного тока BLDC двигатели подключаются с помощью трех проводов, выходящих из них, при этом каждый провод образует свою собственную фазу, то есть получаем трехфазный мотор.
Хотя BLDC относятся к двигателям постоянного тока они управляются с помощью последовательности импульсов. Для преобразования напряжения постоянного тока в последовательность импульсов и распределения их по трем проводникам используется контроллер ESC (Electronic speed controller). В любой момент времени питание подается только на две фазы, то есть электрический ток заходит в двигатель через одну фазу, и покидает его через другую. Во время этого процесса запитывается катушка внутри двигателя, что приводит к тому, что магниты выравниваются по отношению к запитанной катушке. Затем контроллер ESC подает питание на другие два провода (фазы) и этот процесс смены проводов, на которые подается питание, продолжается непрерывно, что заставляет двигатель вращаться. Скорость вращения двигателя зависит от того как быстро подается энергия на катушку двигателя, а направление вращения – от порядка смены фаз, на которые поочередно подается питание.
Существуют различные типы BLDC двигателей – давайте рассмотрим основные из них. Различают Inrunner и OutRunner BLDC двигатели. В Inrunner двигателях магниты ротора находятся внутри статора с обмотками, а в OutRunner двигателях магниты расположены снаружи и вращаются вокруг неподвижного статора с обмотками. То есть в Inrunner (по этому принципу конструируется большинство двигателей постоянного тока) ось внутри двигателя вращается, а оболочка остается неподвижной. А в OutRunner сам двигатель вращается вокруг оси с катушкой, которая остается неподвижной. OutRunner двигатели особенно удобны для применения в электрических велосипедах, поскольку внешняя оболочка двигателя непосредственно приводит в движение колесо велосипеда, что позволяет обойтись без механизма сцепления. К тому же OutRunner двигатели обеспечивают больший крутящий момент, что делает их также идеальным выбором для применения в электрических движущихся средствах и дронах. Поэтому и в этой статье мы будем рассматривать подключение к платы Arduino двигателя OutRunner типа.

Примечание : существует еще такой тип BLDC двигателей как бесстержневой (coreless), который находит применение в «карманных» дронах. Эти двигатели работают по несколько иным принципам, но рассмотрение принципов их работы выходит за рамки данной статьи.
BLDC двигатели с датчиками (Sensor) и без датчиков (Sensorless). Для BLDC двигателей, которые вращаются плавно, без рывков, необходима обратная связь. Поэтому контроллер ESC должен знать позиции и полюса магнитов ротора чтобы правильно запитывать статор. Эту информацию можно получить двумя способами: первый из них заключается в размещении датчика Холла внутри двигателя. Датчик Холла будет обнаруживать магнит и передавать информацию об этом в контроллер ESC. Этот тип двигателей называется Sensor BLDC (с датчиком) и он находит применение в электрических движущихся транспортных средствах. Второй метод обнаружения позиции магнитов заключается в использовании обратной ЭДС (электродвижущей силы), генерируемой катушками в то время когда магниты пересекают их. Достоинством этого метода является то, что он не требует использования каких либо дополнительных устройств (датчик Холла) – фазовый провод самостоятельно используется в качестве обратной связи благодаря наличию обратной ЭДС. Этот метод используется в двигателе, рассматриваемом в нашей статье, и именно он чаще всего применяется в дронах и других летающих устройствах.
Почему дроны и вертолеты используют именно BLDC двигатели?
Сейчас существует множество различных типов дронов – с двумя лопастями, с четырьмя лопастями и т.д. Но все они используют именно BLDC двигатели. Почему именно их, ведь BLDC двигатели стоят дороже чем обычные электродвигатели постоянного тока?

Существует несколько причин для этого:
- большой крутящий момент, который очень важен для того чтобы оторвать летающее средство от земли;
- эти двигатели доступны в формате OutRunner, что позволяет обойтись без сцепления в конструкции дрона;
- маленький уровень вибраций во время работы, что очень важно для неподвижного зависания дрона в воздухе;
- хорошее соотношение мощности к весу двигателя. Это очень важно для использования на летающих механизмах чтобы все элементы его конструкции имели как можно меньший вес. Обычный двигатель постоянного тока, обеспечивающий такой же крутящий момент как и BLDC двигатель, будет как минимум в два раза тяжелее него.
Зачем нужен контроллер ESC
Как мы уже знаем, для функционирования BLDC двигателей необходим какой-нибудь контроллер, который преобразует напряжение постоянного тока от батарейки в последовательность импульсов, подаваемую в определенном порядке на провода (фазы) двигателя. Этот контроллер называется ESC (Electronic Speed Controller – электронный контроллер скорости). Основной обязанностью данного контроллера является правильная подача питания на провода BLDC двигателя чтобы двигатель вращался в нужном направлении. Это осуществляется с помощью считывания обратной ЭДС (back EMF) с каждого провода и подачи питания на катушку в то время когда магнит пересекает ее. Внутри себя контроллер ESC содержит достаточно много разнообразной электроники и при желании вы можете подробно изучить его устройство по соответствующим материалам в сети интернет. Здесь же мы кратко рассмотрим рассмотрим только основные компоненты его конструкции.

Управление скоростью вращения на основе ШИМ (широтно-импульсной модуляции, в англ. PWM) . Контроллер ESC может управлять скоростью вращения BLDC двигателя при помощи считывания сигнала ШИМ подаваемого на его оранжевый провод. Принцип управления им очень похож на управление сервомоторами. Сигнал ШИМ, подаваемый на контроллер ESC, должен иметь период 20ms, а коэффициент заполнения этого ШИМ сигнала будет определять скорость вращения BLDC двигателя. Поскольку точно такой же принцип используется для управления углом поворотом сервомотора, то для управления BLDC двигателем мы можем использовать библиотеку для управления сервомоторами. Если вы не сталкивались с этим принципом ранее, то вы можете прочитать статью о подключении сервомотора к плате Arduino.
Battery Eliminator Circuit (BEC) – цепь, исключающая батарею . Почти все контроллеры ESC поставляются с этой схемой. Как следует из ее названия, данная схема устраняет потребность в использовании отдельной батареи для питания микроконтроллера, то есть в данном случае нам не понадобится отдельный источник питания для платы Arduino – контроллер ESC сам обеспечит плату Arduino регулируемым напряжением питания +5V. В различных контроллерах ESC используются различные схемы регулировки данного напряжения, но в большинстве случаев распространена схема с линейной регулировкой.
Встроенное ПО . Каждый контроллер ESC содержит в своем ПЗУ встроенную прикладную программу, написанную производителем контроллера. Эта программа во многом определяет логику функционирования контроллера. Наиболее популярными встроенными программами для контролеров ESC являются Traditional, Simon-K и BL-Heli. Эта программа может изменяться пользователем, однако мы в этой статье не будем рассматривать данный вопрос.
Некоторые термины, используемые в тематике BLDC и ESC
При изучении принципов работы BLDC двигателей и контроллеров ESC вы можете столкнуться с некоторыми терминами, используемыми в данной тематике. Кратко рассмотрим основные из этих терминов.
Braking (торможение) – определяет насколько быстро BLDC двигатель может остановить свое вращение. Это особенно актуально для летающих средств (дронов, геликоптеров и т.д.) поскольку они вынуждены часто изменять количество оборотов двигателя в минуту чтобы маневрировать в воздухе.
Soft Start (плавный пуск, старт) – эта способность особенно важна для BLDC двигателей когда вращающий момент от него на исполнительный механизм (колесо, винт и т.д.) передается через механизм передач, обычно состоящий из шестерен. Плавный пуск означает, что двигатель не начнет сразу вращаться с максимальной скоростью, а будет увеличивать свою скорость вращения постепенно независимо от того, с какой скоростью нарастает управляющее воздействие. Плавный пуск значительно снижает износ шестерен, входящих в передаточный механизм.
Motor Direction (направление вращения двигателя) – обычно направление вращения BLDC двигателей не изменяется в процессе эксплуатации, однако во время сборки и тестирования работы изделия может потребоваться изменение направления вращения двигателя, обычно это можно сделать просто поменяв местами любые два провода двигателя.
Low Voltage Stop (остановка при низком напряжении питания) . Обычно BLDC двигатели калибруют так, чтобы при одинаковом уровне управляющего воздействия скорость его вращения была постоянной. Однако этого трудно достигнуть потому что со временем напряжение питающей батареи уменьшается. Чтобы предотвратить это обычно контроллеры ESC программируют таким образом чтобы они останавливали работу BLDC двигателя когда напряжение питающей батареи опускается ниже определенной границы. Особенно эта функция полезна при использовании BLDC двигателей в дронах.
Response time (время отклика, время реакции, время ответа) . Означает способность двигателя быстро изменять скорость вращения при изменении управляющего воздействия. Чем меньше время реакции, тем лучше контроль над двигателем.
Advance (движение вперед) . Эта проблема является своеобразной «ахиллесовой пятой» для BLDC двигателей. Все BLDC двигатели имеют хотя бы небольшой подобный баг. Эта проблема вызвана тем, что когда катушка статора запитана ротор движется вперед поскольку на нем есть постоянный магнит. И когда управляющее напряжение с этой катушки снимают (чтобы подать его на следующую катушку) ротор продвигается вперед немного дальше чем предусмотрено логикой функционирования двигателя. Это нежелательное продвижение двигателя вперед в англоязычной литературе называют “Advance” и оно может приводить к нежелательным вибрациям, нагреву и шуму при работе двигателя. Поэтому хорошие контроллеры ESC стараются по возможности устранить этот эффект в работе BLDC двигателей.
Работа схемы
Схема подключения BLDC двигателя и контроллера ESC к плате Arduino представлена на следующем рисунке.

Как видите, схема достаточно проста. Контроллеру ESC необходим источник питания с напряжением 12V и током как минимум 5A. Для питания схемы можно использовать адаптер или Li-Po батарейку. Три фазы (провода) BLDC двигателя необходимо подсоединить к трем выходным проводам контроллера ESC – неважно в каком порядке.
Предупреждение : у некоторых контроллеров ESC нет выходных проводов, в этом случае вам необходимо будет припаивать провода от BLDC двигателя к контактам контроллера ESC. Обязательно изолируйте эти оголенные места (пайки) с помощью изоляционной ленты потому что через эти провода возможно протекание достаточно больших токов и любое короткое замыкание может привести к повреждению двигателя и контроллера ESC.
Схема BEC (Battery Eliminator circuit) в контроллере ESC будет самостоятельно обеспечивать (регулировать) постоянное напряжение +5V, поэтому его можно непосредственно использовать для питания платы Arduino. Для управления скоростью вращения двигателя в схеме используется потенциометр, подключенный к контакту A0 платы Arduino.
Внешний вид собранной конструкции показан на следующем рисунке.

Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы рассмотрим только его основные фрагменты.
Для управления BLDC двигателем мы будем формировать ШИМ сигнал с частотой 50 Гц и изменяемым от 0 до 100% коэффициентом заполнения. Значение коэффициента заполнения будет управляться с помощью потенциометра. То есть, вращая потенциометр, мы будем управлять скоростью вращения двигателя. Как уже указывалось, управление BLDC двигателем очень похоже на управление сервомотором с помощью ШИМ 50 Гц, поэтому в данном случае мы будем использовать ту же самую библиотеку, которую использовали для управления сервомотором. Если вы начинающий в изучении платформы Arduino, то перед дальнейшим прочтением данной статьи рекомендуем вам изучить принципы формирования ШИМ сигнала в Arduino и подключение сервомотора к плате Arduino.
ШИМ сигнал можно генерировать только на тех цифровых контактах платы Arduino, которые обозначены символом
. В нашей схеме мы будем управлять контроллером ESC с контакта 9 платы Arduino, поэтому следующей командой мы прикрепим контроллер ESC к этому контакту:
