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

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

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

Коммутация в бесколлекторном двигателе (БД) осуществляется и контролируется с помощью электроники.

Коммутация в бесколлекторном двигателе

Контроллеры бесколлекторных моторов (ESC регуляторы)

Для управления бесколлекторными моторами используют специальные контроллеры - ESC (Electric speed controller — электронный контроллер скорости) регуляторы/

ESC регуляторы

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

Контроллер бесколлекторного мотора

Подключение к плате Arduino

Схема подключения бесколлекторного двигателя с ESC-регулятором к плате Arduino показана на рис.5. Для подключения регулятора к плате Arduino используется 2 провода:

  • черный – "земля
  • белый – управляющий

Красный провод регулятора является не входом, выходом с напряжением +5В, который можно использовать для питания платы Arduino.

Показания потенциометра будем использовать для управления скоростью мотора.

beskollectornye-motory-05.jpg

Для управления регулятором будем использовать Arduino-библиотеку Servo. Минимальные и максимальные значения управляющего сигнала 800 мксек и 2300 мксек.

// подключение библиотеки
#include <Servo.h>
// создание объекта
Servo motor;
//Пин подключения мотора
int mot_pin = 9;
void setup()
{
// инициализация мотора
motor.attach(mot_pin);
}
void loop()
{
// регулирование потенциометром
int speed=map(analogRead(A0),1023,0,800,2300);
motor.writeMicroseconds(speed);
delay(20);
}

После загрузки скетча на плату Arduino видим что мотор не запускается и не реагирует на повороты потенциометра. Регулятор необходимо откалибровать, чтобы он знал минимальные и максимальное значения. Для этого перед подачей питания на регулятор, выставляем потенциометр в максимальное значение. Подаем питание. Слышим "пиканье" двигателя. Переводим потенциометр в минимальное значение, слышим 3 "пика". Регулятор откалиброван. Теперь поворотом потенциометра можем регулировать скорость двигателя.

Пример использования

В качестве примера настроим автоматическую калибровку ESC-регулятора при запуске скетча Arduino. Нам потребуются следующие компоненты:

  • Плата Arduino Uno – 1
  • Плата прототипирования – 1
  • Мотор бесколлекторный – 1
  • ESC-регулятор – 1
  • Потенциометр 10 кОм – 1
  • Блок питания 12 В – 1
  • Провода

Для калибровки в процедуре setup() производим эмуляцию перевода потенциометра м максимальное и минимальное положение.

// подключение библиотеки
#include <Servo.h>
// создание объекта
Servo motor;
//Пин подключения мотора
int mot_pin = 9;
//Максимальное значение ШИМ 2.3 мс
int max_pwm = 2300;
//Минимальное значени ШИМ 0.8 мс
int min_pwm = 800;
void setup()
{
// запуск последовательного порта
Serial.begin(9600);
// инициализация мотора
motor.attach(mot_pin);
// калибровка
delay(1000);
motor.writeMicroseconds(max_pwm);
delay(2000);
motor.writeMicroseconds(min_pwm);
delay(4000);
}
void loop()
{
// регулирование потенциометром
int speed=map(analogRead(A0),1023,0,800,2300);
motor.writeMicroseconds(speed);
delay(20);
}

После запуска Arduino в процедуре setup() происходит калибровка регулятора, и в процедуре loop() мотор крутится со скоростью, соответствующей положению потенциометра.


Что делать если

Не запускаются моторы

Проверьте подключение моторов к ESC-регулятору, ESC-регулятора к блоку питания и Arduino.
Проведите калибровку ESC-регулятора.


 

Комментарии 0