Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Учебное пособие по управлению бесщеточным двигателем Arduino | ESC | BLDC

<основной класс="главный сайт" id="главный">

В этом уроке мы научимся управлять бесколлекторным двигателем с помощью Arduino и ESC. Если вам нужна дополнительная информация о том, как работают двигатели BLDC, вы можете прочитать другую статью или посмотреть следующее видео, в котором объясняется принцип работы бесщеточного двигателя и способы управления им с помощью Arduino и ESC.

Обзор

Для этого примера у меня есть двигатель Outrunner BLDC со следующими характеристиками:он имеет рейтинг KV 1000, он может питаться от 2S, 3S или 4S LiPo батареи и требует 30A ESC. KV для бесщеточного двигателя определяет число оборотов двигателя на вольт без нагрузки.

В этом случае 1000 кВ означает, что, например, если мы поставляем двигатель с 2S LiPo аккумулятором с напряжением 7,4 В, двигатель может развивать максимальную скорость вращения 7,4 умножить на 1000, или это 7400 об/мин.

Бесщеточные двигатели потребляют много энергии, и наиболее распространенным способом их питания является использование аккумуляторов LiPo. Число «S» в литий-полимерном аккумуляторе указывает на количество элементов в аккумуляторе, и каждый элемент имеет напряжение 3,7 В.

В этом примере я буду использовать аккумулятор 3S LiPo с тремя ячейками и напряжением 11,1 В. Таким образом, я могу ожидать, что мой двигатель достигнет максимальной скорости вращения 11 100.

Наконец, вот регулятор на 30 А, который я буду использовать в этом примере и который соответствует требованиям двигателя. С одной стороны ESC имеет три провода, которые управляют тремя фазами двигателя, а с другой стороны у него есть два провода, VCC и GND, для питания.

Также есть еще один набор из трех проводов, выходящих из ESC, и это сигнальная линия, + 5 В и земля. Эта функция ESC называется Battery Eliminator Circuit и, как следует из названия, устраняет необходимость в отдельной батарее для микроконтроллера. При этом регулятор обеспечивает регулируемое напряжение 5 В, которое можно использовать для питания Arduino.

Здесь мы можем заметить, что это соединение на самом деле такое же, как и в серводвигателях.

Таким образом, управлять бесколлекторным двигателем с помощью ESC и Arduino так же просто, как управлять сервоприводом с помощью Arduino. Регуляторы используют тот же тип управляющего сигнала, что и сервоприводы, и это стандартный ШИМ-сигнал с частотой 50 Гц.

Это очень удобно, потому что, например, при сборке радиоуправляемого самолета нам обычно нужны как сервоприводы, так и бесколлекторные двигатели, и таким образом мы можем легко управлять ими с помощью одного и того же типа контроллера.

Итак, используя Arduino, нам просто нужно сгенерировать сигнал ШИМ 50 Гц, и в зависимости от ширины импульса или продолжительности высокого состояния, которая должна варьироваться от 1 миллисекунды до 2 миллисекунд, ESC будет управлять двигателем от минимального до максимального оборотов.

Управление бесщеточным двигателем Arduino — принципиальная схема

Вот принципиальная схема для этого примера. В дополнение к ESC мы будем использовать простой потенциометр для управления скоростью двигателя.

Компоненты, необходимые для этого руководства по Arduino, можно получить по ссылкам ниже:

Код Arduino для управления двигателем BLDC

Код Arduino очень прост, всего несколько строк кода.

/*
        Arduino Brushless Motor Control
     by Dejan, https://howtomechatronics.com
*/

#include <Servo.h>

Servo ESC;     // create servo object to control the ESC

int potValue;  // value from the analog pin

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
}

void loop() {
  potValue = analogRead(A0);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
}Code language: Arduino (arduino)

Описание: Итак, нам нужно определить библиотеку сервоприводов, потому что с помощью библиотеки сервоприводов мы можем легко генерировать ШИМ-сигнал 50 Гц, иначе ШИМ-сигналы, которые генерирует Arduino, имеют разные частоты. Затем нам нужно создать сервообъект для управления ESC и определить переменную для хранения аналогового входа от потенциометра. В разделе настройки с помощью функции attach() мы определяем, к какому выводу Arduino подключен управляющий сигнал регулятора оборотов, а также определяем минимальную и максимальную ширину импульсов ШИМ-сигнала в микросекундах.

В секции цикла сначала мы считываем показания потенциометра, сопоставляем его значение от 0 до 1023 со значением от 0 до 180. Затем с помощью функции write() мы отправляем сигнал на ESC или генерируем ШИМ-сигнал 50 Гц. Значения от 0 до 180 соответствуют значениям от 1000 до 2000 микросекунд, определенным в разделе настройки.

Итак, если мы загрузим этот код в нашу Arduino, а затем запитаем все от батареи, то мы сможем контролировать скорость бесколлекторного двигателя от нуля до максимума с помощью потенциометра.

Тем не менее, есть несколько вещей, которые мы должны отметить здесь. При первоначальном включении двигателя значение сигнала должно быть таким же или ниже минимального значения в 1 миллисекунду. Это называется включением ESC, и двигатель издает подтверждающие звуковые сигналы, чтобы мы знали, что он включен должным образом. В случае, если у нас есть более высокое значение при включении питания, что означает, что у нас есть газ, ESC не запустит двигатель, пока мы не уменьшим газ до правильного минимального значения. Это очень удобно с точки зрения безопасности, потому что мотор не запустится, если мы приподнимем дроссельную заслонку при подаче питания.

Калибровка ESC

Наконец, давайте объясним, как работает калибровка ESC. У каждого ESC есть свои высокие и низкие точки, и они могут незначительно отличаться. Например, нижняя точка может быть 1,2 миллисекунды, а верхняя точка может быть 1,9 миллисекунды. В таком случае наш дроссель не будет ничего делать в течение первых 20%, пока не достигнет минимального значения в 1,2 миллисекунды.

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

Затем, через 2 секунды, мы должны переместить наш потенциометр в положение, в котором мы определяем новую нижнюю точку. Мы снова услышим подтверждающие звуковые сигналы, и на этом мы закончили калибровку ESC. Теперь наш дроссель будет реагировать сразу, и мы сможем управлять мотором в этих новых двух точках.

Это почти все для этого урока. Если вы хотите научиться беспроводному управлению этим бесколлекторным двигателем Arduino, вы можете посмотреть мое предыдущее видео, в котором я собираю RC-передатчик на основе Arduino и объясняю, как с его помощью управлять двигателями BLDC.

Надеюсь, вам понравился этот урок и вы узнали что-то новое. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже и не забудьте проверить мою коллекцию проектов Arduino.


Производственный процесс

  1. Учебное пособие по блокировке RFID для Arduino
  2. Управление монетоприемником с помощью Arduino
  3. Центр управления Arduino
  4. Arduino с Bluetooth для управления светодиодом!
  5. Робот-последователь линии
  6. Управление увлажнителем Arduino
  7. Учебная платформа Arduino
  8. Учебник по Arduino 01:Начало работы
  9. Двигатели и автоматика BLDC
  10. Введение в двигатель BLDC