Бесколлекторные моторы появились довольно давно давно и были созданы с целью оптимизации электродвигателей постоянного тока. Бесколлекторные моторы питаются трехфазным переменным током. Они эффективно работают в более широком диапазоне оборотов и имеют более высокий КПД. При этом конструкция двигателя проще, в ней нет щеточного узла, который постоянно трется с ротором и создает искры. Поэтому они практически не изнашиваются.
По конструкции бесколлекторные моторы делятся на две группы: inrunner и outrunner. Двигатели inrunner имеют расположенные по внутренней поверхности корпуса обмотки, и вращающийся внутри магнитный ротор. Двигатели outrunner имеют неподвижные обмотки, внутри двигателя, вокруг которых вращается корпус с помещенными на его внутреннюю стенку постоянными магнитами.
Коммутация в бесколлекторном двигателе (БД) осуществляется и контролируется с помощью электроники.
Контроллеры бесколлекторных моторов (ESC регуляторы)
Для управления бесколлекторными моторами используют специальные контроллеры - ESC (Electric speed controller — электронный контроллер скорости) регуляторы/
Задача контроллера состоит в том, что бы передать энергию постоянного тока от аккумулятора к трехфазному бесколлекторному мотору. Для передачи энергии контроллер использует MOSFETы — силовые ключи, которые могут открываться и закрываться за долю секунды. Если мощности одного ключа недостаточно, используется несколько ключей, включенных параллельно. Попеременное включение/выключение фаз поддерживает вращение мотора. За переключением фаз следит микроконтроллер регулятора.
Подключение к плате Arduino
Схема подключения бесколлекторного двигателя с ESC-регулятором к плате Arduino показана на рис.5. Для подключения регулятора к плате Arduino используется 2 провода:
- черный – "земля
- белый – управляющий
Красный провод регулятора является не входом, выходом с напряжением +5В, который можно использовать для питания платы Arduino.
Показания потенциометра будем использовать для управления скоростью мотора.
Для управления регулятором будем использовать 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-регулятора.