Как управлять бесщеточным мотором с Arduino?

28

Можно ли управлять бесщеточным мотором напрямую с помощью Arduino? Или я должен вернуться к управлению бесщеточным двигателем ESC с импульсами ШИМ?

tuupola
источник
1
Возможно, вы могли бы получить чип драйвера от старого DVD / CD-ROM плеера.
Ларс

Ответы:

10

Вы обязательно должны использовать ESC. Бесщеточные двигатели лучше всего работают при синусоиде (или как можно ближе к синусоиде). Они также требуют довольно точного и сложного набора сигналов. Генерировать правильные формы волн и синхронизацию из Arduino было бы сложно, и если вам это действительно не нужно, вероятно, оно того не стоит. Вы всегда можете организовать управление ESC от вашего Arduino, что даст вам программный контроль плюс эффективность и мощность ESC.

jkopel
источник
Нитпик: Согласно Википедии ( en.wikipedia.org/wiki/brushless_DC_electric_motor ), двигатели BLDC оптимизированы для наилучшей работы, когда они приводятся в действие переключаемым постоянным током: полный положительный, ненаправленный и полный отрицательный. Двигатели переменного тока с постоянными магнитами оптимизированы для наилучшей работы при работе от синусоиды; это единственное существенное различие между ними. Я согласен с вашим выводом: вероятно, стоит использовать готовый ESC, а не разрабатывать его самостоятельно.
Дэвидкари
4
Контроллер на BLCD вполне может использовать ту же атмегу, что и arduino; таким образом, преимущество заключается в том, чтобы передать проблему детализации кому-то другому для решения; и передача низкоуровневой задачи коммутации, чтобы оставить атмегу arduino свободной для задач более высокого уровня.
Крис Страттон
Двигатели BLDC используют по существу прямоугольный привод к катушкам. На стороне пользователя контроллера (ESC) они используют подачу питания постоянного тока плюс любые управляющие сигналы, требуемые ESC. Синусоиды не фигурируют.
Рассел МакМахон
13

На самом деле иногда вы просто должны сделать свой собственный ESC. ESC, продаваемые на рынке, "коммерциализированы" и имеют свои собственные коды управления для таких вещей, как самолеты, вертолеты, автомобили ...

Например, иногда вам нужно иметь двухсторонний регенеративный тормоз. Сзади до остановки и с вперед до остановки. НЕТ RC ESC, который имеет эту функцию. У них либо только один рекуперативный тормоз от переднего до упора, либо их нет. Или вам может понадобиться сенсорный контроллер BLDC, но на рынке есть только несколько сенсорных ESC, и они имеют (то же самое для обычных ESC без датчиков) встроенные функции, которые вам не нужны, и не имеют тех, которые вам абсолютно необходимы !

Разработка вашего собственного ESC является идеальным выбором и намного дешевле, чем самая дешевая за $ 10 с огромной мощностью.

Это правда, что контрольный код и аппаратные средства могут причинять боль, но после некоторого прочтения это всего лишь игрушка.

Здесь есть хорошее руководство о том, как сделать контроллер BLDC с Arduino, используя 6 Mosfets, и некоторые другие вещи, которые вы можете легко найти на сайте Jameco (очень приятно). Здесь я покупаю свои вещи по низкой цене, но spurkfun может быть хорошей альтернативой, если вы не найдете таких датчиков, как гироскопы и т. д.

http://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/

очень приятный и понятный гид Вы можете использовать ЛЮБУЮ мощность от низких до сверхвысоких ESC, используя это руководство и практически любую комбинацию регенеративного тормоза, используя сопротивление, обмотки двигателя или зарядное устройство ...

Использование мосфецов - это просто игрушка, вы можете делать практически все.

Скорее всего, вы не можете очень эффективно управлять этим mosfet с помощью микроконтроллера, такого как плата arduio, который выдает только 5 В, я думаю, и напряжение затвора mosfet для средних напряжений довольно значительно выше в диапазоне 16-30 В. Таким образом, вы должны использовать какой-нибудь другой танзисор, чтобы увеличить напряжение Arduino.

Удачи.

stevenvh
источник
6

Я ходил туда и обратно примерно 30 минут. Я думаю, что вы, вероятно, хотите использовать ESC, если вы просто не делаете это в качестве учебного опыта. Для правильного управления двигателем потребуется больше ресурсов от вашего Arduino, чем я могу себе представить, оправдывая. Кроме того, вы можете ограничить скорость отклика двигателя при опросе АЦП. Я бы не подумал об использовании ESC как оборачивающем, так оно и должно быть.

Скотт Мерфи
источник
4

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

Так что, по крайней мере, вы бы хотели создать трехфазную схему с H-мостами (читай: три «половины H-мостов»), чтобы управлять необходимыми токами, требуя шесть цифровых линий только для управления транзисторами привода.

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

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

JustJeff
источник
3

Я думаю, что это было бы отличным обучающим упражнением, но ESC используют обратную ЭДС для обнаружения вращения, хотя вы можете использовать для этого оптические или магнитные датчики. В основном вы должны сгенерировать 3 фазы переменного тока и активировать / деактивировать их в нужный момент.

Скорость вращения магнитного поля должна быть адаптирована к скорости двигателя, т. Е. Если вы хотите ускориться, поле должно работать немного раньше и быстрее. Вы также можете сломать, делая наоборот.

Для подробного объяснения: http://www.embedded.com/columns/technicalinsights/196701832?_requestid=137540

Для практической работы получите ESC.

ppvi
источник
Сначала я подумал, что ускорение и замедление были выполнены так, как вы описали, путем опережения и отставания. но потом я прочитал, что ускорение в основном определяется напряжением (хотя я не вижу, как это может замедляться). Я чувствую себя немного смущенным. любой из подходов работает на ускорение? есть ли причина предпочитать одно другому или смешивать их? Благодарность!
некромант
2

Вы можете управлять им напрямую с помощью Arduino, если под автомобилем вы не подразумеваете буквальную подачу тока на обмотки - любой MCU был бы слишком слаб для этого. Кроме того, Arduino может потреблять ток, но не может потреблять ток, но для бесщеточного мотора вам понадобятся оба.

Однако, если вы используете очень простую ИС драйвера H-моста в дополнение к Arduino, вы можете реализовать практически все функции ESC. Фактически, в зависимости от приложения вам может даже не потребоваться E * SC *, что означает, что вам может не потребоваться регулирование скорости в замкнутом контуре - если нагрузка не слишком велика, вы можете просто отказаться от простого доверия к двигателю. реагировать синхронно с подачей питания на обмотку, и скорость изменения тока обмотки будет исходить от Arduino. Посмотрите на эту очень простую схему бесщеточного (BLDC) управления двигателем и эскиз Arduino, которые вы можете адаптировать для управления двигателем. Тот основан на SN754410NE четырехканальном H-мосте IC, который максимален в 750 мА, если память служит.

Код не слишком тривиален и использует PWM для плавного вращения, но его не так уж сложно проанализировать, чтобы приспособиться к вашему приложению. Фактический эскиз Arduino для двигателя BLDC находится здесь .

ElectroNick
источник