Как запустить бесколлекторный двигатель
Перейти к содержимому

Как запустить бесколлекторный двигатель

  • автор:

Запускаем BLDC-моторы: DR-24312-054 и G1911170B (бесколлекторные бесщёточные электродвигатели).

Здравствуйте. Пишу первый блог, сильно не пинайте. Конечно не совсем самоделка, а может кому и пригодиться.
В общем дело было в январе на улице -38, в отпуске, скучно. Давно отдали убитый МФУ xerox phaser 3100 mfp (разбита лампа в печке, нет картриджа, покоцан резиновый вал из термостойкой резины, в общем ремонт дорого, разбираем).
Запчасти в коробку до лучших времен. Два BLDC-мотора DR-24312-054 и G1911170B (бесколлекторные бесщёточные электродвигатели) на запуск.
Что нужно для запуска: БП на два напряжения 24V и 5V нужно для питания генератора и двигателя G1911170B) или через стабилизатор LM7805 или любой подобный, получаем 5V из 24),

генератор импульсов на таймер 555 (есть в продаже на Aliexpress), но мы сами соберем по схеме ниже. Генератор можно применить для проверки тахометра.

Конденсатор С1 100 mf в схеме, меняем приблизительно на 330nf (можете поставить панельку и поэкспериментировать, меняете емкость меняется частота импульсов генератора а на двигателе G1911170B меняется скорость).
И так поехали.
1. двигатель DR-24312-054 (24V Laser Polygon Mirror Motor Driver Board) на контролере LB11870.

Выводы на плате промаркированы
5 +24V
4 GND
3 подключаем наш генератор импульсов.

2. двигатель G1911170B (24 В, 14.2 Вт, 1800-4300 об./мин) на контролере LB11923V есть в продаже на Aliexpress.

Выводы на плате не промаркированы (вид сверху на контролер, 1 начиная с правой стороны)
1 +24V
2 GND
3 +5V
4 и 5 подключаем к нашему генератору импульсов.

Ниже схемы подключения двигателей.

У кого есть идеи, куда применить моторы?

О бесколлекторных низкооборотных двигателях и L6234D.

Ниже речь пойдёт про управление низкооборотными трёхфазными бесколлекторными моторами в статичном режиме с использованием трёхфазного моста L6234.

Но сначала немного теории.

Что такое бесколлекторные моторы?

Как следует из названия, эти моторы у которых отсутствует щёточно-коллекторный узел. На вращающейся части – роторе – расположены постоянные магниты. На неподвижной части – статоре – обмотки электромагнитов. В движение такой мотор приводится изменением тока на разных фазах. Одним из примеров таких моторов являются шаговые двигатели. Изменение электрических фаз приводит к смещению ротора на строго предопределённый угол – один шаг.
Также есть моторы, рассчитанные на постоянное вращение. Например, двухфазные бесколлекторные моторы используются в компьютерных вентиляторах. Трёхфазные моторы используются в моделировании, а также в приводе электрических велосипедов и скутеров.
Отсутствие скользящих контактов щёток позволяет достигать большой мощности и долговечности.

Трёхфазные моторы

Рассмотрим типичный трёхфазный мотор, используемый в авиамоделировании.
Если ротор с магнитами расположен внутри кольца, образованного электромагнитными катушками, то такой мотор называют inrunner, такие моторы чаще используются в автомоделизме. В авиамоделизме популярна обратная компоновка: корпус ротора с кольцом магнитов вращается вокруг статора с электромагнитами (см. рисунок).

Эти моторы также подразделяются по количеству электромагнитов и количеству полюсов. Наиболее распространённая компоновка 12N14P что означает наличие 12 обмоток статора и 14 магнитных полюсов на роторе. Число полюсов всегда кратно 2: ведь полюса бывают только двух типов – северный и южный. Число обмоток кратно трём, поскольку двигатель трёхфазный. На схеме показана намотка обмоток. A B C – намотка соответствующей обмотки в одну сторону, -a -b -c – в противоположную.

В большинстве случаев обмотки соединяются «звездой», как показано на схеме. Подавая попарно на выходы напряжение той или иной полярности, контроллер мотора пробегает полный электрический цикл, состоящий из 6 смен полярностей. За этот цикл ротор проворачивается на два магнитных полюса. То есть, в нашем случае, чтобы мотор совершил один оборот, электрические фазы должны пройти 7 полных циклов.

Трёхфазный мост

Для электрической коммутации используются трёхфазные мосты, представляющие из себя три блока (полумоста), в каждом из которых по два транзистора – на плюс и на минус. Для управления мотором на одном из трёх полумостов выбирается «плюс», на другом «минус», а третий остаётся отключенным. При помощи ШИМ, транзисторы импульсами коммутируют фазу двигателя к выбранной полярности, пока он не провернётся на нужный угол. Затем схема коммутации меняется. Микроконтроллер в плате управления двигателем определяет моменты, когда фазы должны быть переключены. Для этого используются либо установленные на моторе датчики Холла, либо же ЭДС, возникающая в проводе свободной фазы.
Для управления маломощными моторами годится трёхфазный мост L6234.

L6234 представляет собой сборку в одном корпусе трёх полумостов, на двух n-МОП транзисторах каждый, драйверов к ним и схемы подкачки напряжения для верхнего ключа. Каждый полумост управляется значениями на двух входах: один из них выбирает полярность (коммутировать плюс, или минус), а второй включает, или отключает полумост. Для управления высокоскоростными моторами вход включения можно использовать для контроля мощности при помощи ШИМ.

Максимальный ток, на который рассчитана микросхема — 4 Ампера.

Низкоскоростные моторы

Обмотки высокооборотистых моторов наматываются пучком толстой проволки, небольшим числом витков, порядка 10-20. Они обладают очень маленьким сопротивлением постоянному току, сила тока достигает десятков Ампер, и если мотор не вращается, обмотка может перегретсья и перегореть.
Но существует разновидность таких моторов, которые предназначены для работы в статичном положении. Их обмотки наматываются большим числом витков (порядка 100) тонкой проволкой. Подавая различные значения напряжений на входы, можно создать в его обмотках магнитное поле нужной полярности, и тем самым зафиксировать его в нужном положении.

Такие моторы представляют собой промежуточное звено между шаговыми двигателями и высокоскоростными моторами: они позволяют статично фиксировать произвольное положение, но не ограничены определёнными «шагами». Используются, в основном, в стабилизирующих подвесах для видеокамер в аэровидеосъёмке. По-английски такие подвесы называются gimbal (=универсальный шарнир), а моторы так и называют gimbal motor.

Управление gimbal-мотором

Для управления можно использовать тот же самый трёхфазный мост L6234. На входы включения (ENx) подаётся постоянный высокий уровень, то есть все три полумоста постоянно включены. А вот входы выбора полярности (INx) подключаются к ШИМ-выходам микроконтроллера. В микроконтроллерах типа ATmega48/88/168/328 и т.п. можно настроить 6 ШИМ-выходов, а значит, управлять сразу двумя такими моторами.
Очень важно, чтобы все ШИМ выходы работали синфазно. То есть, если каждый ШИМ настроен на одно и то же значение, то переключаться они должны строго одновременно. L6234 позволяет коммутировать на частоте до 50кГц, поэтому, для плавной бесшумной работы, можно смело настраивать ШИМ выходы МК на максимальную частоту. При частоте МК 8 МГц и phase-correct режиме выхода, частота ШИМ составит 15 686 Гц.
Для синхронизации таймеров в ATmega48/88/168/328 можно воспользоваться регистром GTCCR, который остановит счёт таймера. Ниже пример настраивающий все 6 ШИМ выходов синфазно. Timer1 при этом работает в 8-битном режиме:

GTCCR = (1 « TSM) | (1 « PSRASY) | (1 « PSRSYNC); // Блокировка счёта
OCR0A = 0;
OCR0B = 0;
OCR1A = 0;
OCR1B = 0;
OCR2A = 0;
OCR2B = 0;

TCCR0A = 0b10100001;
TCCR0B = 0b00000001;
TCNT0 = 0;

TCCR1A = 0b10100001;
TCCR1B = 0b00000001;
TCNT1 = 0;

TCCR2A = 0b10100001;
TCCR2B = 0b00000001;
TCNT2 = 0;

GTCCR &= ~(1 « TSM); // Разблокировка и одновременный запуск таймеров

Если на все 3 ШИМ выхода, управляющие одним мотором, подаётся одно и то же значение, то, хотя полярность каждого моста быстро меняется почти 16 тысяч раз в секунду, поскольку это происходит одновременно, ток через обмотки не идёт. Но если значение ШИМ хоть одного вывода отличается от остальных, то появляется небольшой промежуток времени, когда разные фазы коммутируются с разной полярностью, и через обмотки идёт ток. Чем больше разница значений ШИМ, тем большую часть времени ток будет идти.
Для того, чтобы зафиксировать мотор в нужном положении, значения ШИМ должны быть пропорциональны синусу, со смещением на треть периода (т.е. на 2/3*Pi).
Иначе говоря, значение ШИМ для i-й (от 0 до 2) фазы мотора можно вычислить по формуле:
PWM(i) = 128 + sin(A+ i * 2 / 3 * Pi) * P
Где P – выдаваемая мощность (до 127), A – электрический угол. Изменяя A можно добиться поворота мотора на определённый угол. Напомню, что изменение электрического угла на полный цикл, приводит к повороту мотора на два магнитных полюса. В схеме с 14 магнитами для целого оборота потребуется 7 циклов смены электрического угла
Если вещественную арифметику заменить на целочисленную, а значения синуса хранить в таблице, то скорости МК вполне хватит на управление такими моторами.

Управляем бесколлекторными двигателями, господа

Привет Хабровчане!
Решил я рассказать «всему свету» о проблеме, с которой столкнулся при постройке своего проекта, и как мне удалось её решить.

А речь сегодня пойдет о бесколлекторных двигателях, о регуляторах хода и как ими управлять.
Что же такое бесколлекторный двигатель, я не буду долго расписывать (сами можете посмотреть Wiki), а скажу в 2х словах, это 3х фазный двигатель постоянного тока.

image

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

Первые проблемы
Были закуплены 2 комплекта двигатель + регулятор, ждал около месяца, пришли.

Мною овладел приступ безудержного веселья по этому поводу, но, к сожалению, это было ненадолго….
Рассмотрев эти чудеса техники я решил подключить их к источнику питания, и тут то первое разочарование, тихий хлопок (как от КЗ) и тишина, светодиоды не горят, писка нет (а он должен быть), только крутится кулер на регуле, беда…
Побежал в ближайший Хобби магазин, и добрый консультант вынес вердикт: сгорел!

Со вторым такая же история, в общем ребята, не повезло, оба бракованные…
Ну хоть кошечка порадовалась:

image

Пришлось раскошелиться и купить у них регулятор по цене обоих комплектов (поджимали сроки).
Купил, подключил, все пищит, горит, работает, прям аж душа радуется! (на фото он выделен):

image

image

Проблема номер два
Теперь настала пора покрутить двигателем.
А покрутить нужно не с сервотестера или аппы радиоуправления, а с микроконтроллера, а точнее вот с такой платки:

Перелопатив тонны сайтов, перечитав сотни форумов и ответов на мой вопрос, так как же управлять этим регулятором я слышать только одно: «…чувак да там простой ШИМ…», «… ШИМ тебе в помощь…».
Ну ШИМ, так ШИМ.
Написал простенькую программу:

#include Servo motor; int mot_pin = 7; //Подключаем левый мотор к пину 7 int js_position = 800; int max_position = 3000; void setup() < motor_teft.attach(mot_pin, js_position, max_position); //Инициальзация мотора >void loop() < motor.write(1800); //Записываем положение и отправляем на регулятор >

Залил, ноль эмоций…

Бился 2 дня, пока не наткнулся на случайный пост, о том, что у регулятора есть защита, и он начинает функционировать только при подаче на его вход ШИМ сигнала 1,5 мс.
Окей, будет сделано.

Дальше я подцепил обыкновенный резистор через АЦП, и опытным путем подобрал крайние значения ШИМ регулятора.
Код получившийся в итоге:

#include Servo motor_teft; Servo motor_right; int mot_pin_left = 7; //Подключаем левый мотор к пину 7 int mot_pin_right = 8; //Подключаем правый мотор к пину 8 int js_position = 1500; //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей int max_position = 2300; //Максимальное значение ШИМ 2.3 мс int min_position = 800; //Минимальное значени ШИМ 0.8 мс int start = 1; //Флаг задержки запуска void setup() < motor_teft.attach(mot_pin_left, js_position, max_position); //Инициальзация левого мотора (порт, начальная позиция, максимальная позиция) . motor_right.attach(mot_pin_right, js_position, max_position); //Инициальзация правого мотора (порт, начальная позиция, максимальная позиция) . >void loop() < //Начальная установка регуляторов в нулевое положение if(start == 1) < motor_teft.write(js_position); motor_right.write(js_position); delay(700); start = 0; >js_position = analogRead(A0); //Считывание положения потенциометра js_position = map(js_position, 0, 1023, 75, 140); //Преобразование положения потенциометра в угол поворота motor_left.write(js_position); //Записываем положение и отправляем на регулятор левого мотора motor_right.write(js_position); //Записываем положение и отправляем на регулятор правого мотора delay(20); //Задержка цикла 20 мс > 

И все заработало.
Теперь все крутиться, шумит, пищит и просто радует.
P.S. Это код для управления сразу 2мя двигателями.

image

И последняя проблема, питание…
Здесь расскажу немного, а именно, от регулятора идет 3 провода:

Центральная колодка, по порядку Черный — минус, Красный — плюс и Белый — провод управления.

И загвоздка в том, что в отличие от сервоприводов, это не входы под питание, а выходы, т.е. питаемся от них.
К чему я это, да к тому, что подключив регулятор как серву, я чуть не спалил порты на ноутбуке, ибо плата в это время была запитана от USB.
Но к счастью у моего старичка сработала защита и все обошлось перезагрузкой…

Спасибо большое за внимание.
Надеюсь мой опыт будет полезен для вас.
До скорых встреч.

Управление щёточными моторами

Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.

Реле

При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние) , прямо как светодиод: blank При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать: blank Купить модуль реле можно на Али:

Мосфет

Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость) . blank Вместо “голого” мосфета можно использовать готовый китайский модуль: blank Купить мосфет модуль можно на Aliexpress:

Реле и мосфет

blank

Если объединить реле и мосфет – получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:

Специальный драйвер

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

Драйвер Vmot Ток (пик) ~Стоимость Aliexpress
L298N 4-50V 1A (2A) 100р Купить
MX1508 2-9.6V 1.5A (2.5A) 20р Купить
TA6586 3-14V 5A (7A) 100р (чип 30р) Купить
L9110S 2.5-12V 0.8A (1.5A) 50р Купить
TB6612 4.5-13.5V 1.2A (3A) 80р Купить
BTS7960 5.5-27V 10A (43A) 300р Купить
Большой 3-36V 10A (30A) 700р Купить

Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:

blankblankblankblankblankblankblank blank

Пины направления управляются при помощи digitalWrite(pin, value) , а PWM – analogWrite(pin, value) . Управление драйвером по двум пинам может быть двух вариантов:

// === первый тип, встречается чаще всего === // вперёд digitalWrite(pinA, 0); analogWrite(pinB, value); // value 0.. 255 // назад digitalWrite(pinA, 1); analogWrite(pinB, 255 - value); // value 0.. 255 // === второй тип, например большой драйвер === // вперёд digitalWrite(pinA, 0); analogWrite(pinB, value); // value 0.. 255 // назад digitalWrite(pinA, 1); analogWrite(pinB, value); // value 0.. 255 // разница в том, что ШИМ не нужно инвертировать как 255 - значение!

Моторы переменного тока

Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.

Библиотеки

У меня есть удобная библиотека для управления мотором – GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:

  • Контроль скорости и направления вращения
  • Работа с ШИМ любого разрешения
  • Программный deadtime
  • Отрицательные скорости
  • Поддержка всех типов драйверов
  • Плавный пуск и изменение скорости
  • Режим “минимальная скважность”

Помехи и защита от них

Индуктивный выброс напряжения

Мотор – это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства. Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:

  • При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
  • При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx ) или диоды Шоттки (например серии 1N58xx).
  • Максимальный ток диода должен быть больше или равен максимальному току мотора.
  • Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
  • В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
  • Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!

Помехи от щёток

blank

Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.

Помехи по питанию, просадка

Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.

Разделение питания

Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.

Экранирование

В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.

Видео

Полезные страницы

  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *