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

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

Чем бесколлекторный двигатель отличается от щёточного, зачем нужен ESC-регулятор и как откалибровать его с Arduino.

Особенности бесколлекторных двигателей

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

Бесколлекторный мотор

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

Конструкция двигателей inrunner и outrunner

Что делает ESC-регулятор

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

ESC-регуляторы для бесколлекторных моторов
Функциональная схема ESC-регулятора

Схема подключения

К плате 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 и повторяют калибровку.

← Все статьи