Бесколлекторные моторы и ESC: подключение к Arduino

Чем бесколлекторный двигатель отличается от щёточного, зачем нужен ESC-регулятор и как откалибровать его с Arduino.
Особенности бесколлекторных двигателей
Бесколлекторные моторы появились как развитие двигателей постоянного тока. Питаются они трёхфазным переменным током, эффективно работают в более широком диапазоне оборотов и имеют более высокий КПД. Щёточного узла, который трётся о ротор и искрит, в них нет, поэтому конструкция проще, а износ практически отсутствует.

По компоновке различают два типа. У inrunner обмотки размещены на внутренней поверхности корпуса, а внутри вращается магнитный ротор. У outrunner обмотки неподвижны и находятся в центре, а вокруг них вращается корпус с постоянными магнитами на внутренней стенке. Переключением обмоток в обоих случаях управляет электроника.

Что делает ESC-регулятор
Для управления применяют контроллер ESC (Electric Speed Controller). Он передаёт энергию постоянного тока от аккумулятора к трёхфазному мотору. Силовыми ключами служат MOSFET-транзисторы, которые открываются и закрываются за доли секунды; если мощности одного ключа мало, несколько ставят параллельно. Поочерёдное включение фаз поддерживает вращение, а следит за переключением микроконтроллер регулятора.


Схема подключения
К плате Arduino регулятор подключается двумя проводами: чёрный идёт на землю, белый является управляющим (в примере он соединён с выводом 9). Красный провод регулятора не вход, а выход +5 В, от него можно питать саму плату. Скорость задаётся потенциометром на аналоговом входе A0.
Управляет регулятором стандартная библиотека Servo. Сигнал меняется в пределах от 800 до 2300 мкс. Скетч считывает потенциометр, функцией map пересчитывает значение в этот диапазон и передаёт его командой motor.writeMicroseconds(speed) с паузой 20 мс.
Калибровка регулятора
Сразу после загрузки скетча мотор не запустится: регулятор ещё не знает границ сигнала. Ручная калибровка выполняется так:
- до подачи питания на регулятор потенциометр выставляют в максимум;
- подают питание, двигатель издаёт писк;
- потенциометр переводят в минимум, звучат три сигнала;
- после этого скорость регулируется поворотом ручки.
Автоматическая калибровка при старте
Чтобы не повторять процедуру вручную, её переносят в setup(). Для макета нужны Arduino Uno, макетная плата, мотор, ESC-регулятор, потенциометр 10 кОм и блок питания 12 В. Скетч имитирует движение ручки: после паузы в 1 секунду выдаёт максимальный сигнал 2300 мкс, через 2 секунды минимальный 800 мкс и ждёт ещё 4 секунды. Затем в loop() мотор вращается со скоростью, соответствующей положению потенциометра.
Если двигатель не запускается, проверяют соединения мотора с регулятором, регулятора с блоком питания и Arduino и повторяют калибровку.