Схема контроллера bldc мотора

Контроллер BLDC

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

Надо бы рассказать, что такое BLDC, чем отличается от PMSM, но я этого делать не буду, название тут ни о чем не говорит, некоторые аппноты утверждают, что последний имеет Sinusouidal Back-EMF вместо Trapezoidal у первого и управляется более эффективно с помощью FOC тогда как для BLDC и метод шести шагов дает хорошую эффективность.

Inrunner и Outrunner думаю все понятно, что такое, ротор внутри статора и ротор вокруг статора, второе дает больший момент при тех же размерах и массе.

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

Это все не слишком важно, с электрической стороны все варианты одинаковы. Хорошо объяснено во множестве аппнотов и на rcgroups, человека с avrfreaks заспамили вопросами и он недавно ответил вот этим.
www.youtube.com/watch?v=4XXB_7kJwbI&context=C32e523cADOEgsToPDskIcc1eAUm5ZgHCW-3sn75GC

Статьи здесь, как перематывать и переклеивать магниты на моторы от cdrom.
www.southernsoaringclub.org.za/

Аппнотов так много, что проще самому найти, самый известный похоже AVR444, где предлагают использовать ADC синхронизированный с PWM.

Схемы управления рассматриваются в том видео. Хотя схема всегда одна, шесть транзисторов, более интересны схемы ШИМ-ления ими, это может влиять на измрение Back-EMF, простой способ ШИМ-ить три верхних или три нижных транзистора. Шести-шаговый цикл тоже везде расписан, две обмотки работают третья свободна, что позволяет измерять ЭДС (EMF) в ней и определять положение ротора.

Управление начинается с либо выравнивания (align) либо определения каким-то образом положения ротора, повторю, что буду говорить только о бездатчиковых вариантах, на rcgroups в крупной и большой теме про BLDC предлагался способ
связанный с измерением `inductive kick`, как и что не знаю, ниже будет ссылка, мне пока хватает простого выравнивания, суть его в том, что на двигатель подается одна из шести фаз на некоторое достаточно длительное время, за которое ротор успевает повернутся и стабилизироваться в известном положении, что позволяет далее начать вращение в нужную сторону.

Следующий шаг разгон (ramp up) без обратной связи (open loop), может быть достаточно одного переключения, может несколько десятков, зависит от мотора и его нагрузки. Здесь увеличивается частота переключения. Примерные числа, конечная скорость 300 RPM и 5% duty cycle.

Ну и целевой замкнутый (closed-loop) режим это подстройка частоты переключения под поведение двигателя, а управление моментом/скоростью производится изменением скважности ШИМ.

Одна из простых для AVR схем измерения Back-EMF. Точнее определения перехода через ноль (Zero Crossing), используется виртуальный ноль, точка соединения сигналов с трех фаз, как замена настоящей точки соединения обмоток, и компараторы для ловли момента ZC.
www.rcgroups.com/forums/attachment.php?attachmentid=1634110

Похоже такая схема пошла вот от сюда и сейчас всякие ESC от HobbyKing используют эту схему и этот код.
http://home.versanet.de/

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

Другой способ это прямое измерение без виртуальной нулевой точки и работа синхронно с PWM, хорошо объяснено вот здесь.
scholar.lib.vt.edu/theses/available/etd-09152003-171904/unrestricted/T.pdf

Можно использовать и компаратор и АЦП, но т.к. выборки делаются синхронно с ШИМ а это редко, то компаратор не даст нужной точности, значения АЦП можно интерполировать и вычислить точное время ZC. Основное преимущество, отсутствие шумов от ШИМ, измерение происходит когда транзисторы открыты PWM ON или когда верхний закрыт PWM OFF. Комплементарный вариант называют active freewheeling когда речь идет об эффективности, это уменьшает потери во время PWM OFF при прохождении тока через диод нижнего транзистора.

Один раз по такой синхронной схеме удалось получить, что-то похожее на нормальный BEMF сигнал.

Но небольшое изменение схемы старта, больше/меньше скважность ШИМ или частота переключений, способ её наращивания, и получается мусор, ротор не синхронизирован с полем статора, хотя вращается при этом хорошо, или выглядит, что хорошо. Следующая картинка немного более зашумлена, но проблема не в этом, наклон не в ту сторону и нет почти-линейного изменения напряжения как должно быть.

А прямо сейчас получается ещё хуже чем на последней картинке, пока нет смысла показывать cвой код, схему, плату и детально рассказывать метод.

Может кто-то знает причины подобных проблем со стартом.

Только начал читать, но кажется это лучшее, что я видел по теме bld.

Источник

Базовая схема для экспериментов с BLDC-моторами (на ATtiny2313)

Представленная ниже схема является основой для экспериментов с bldc-моторами. Для тех, кто не в курсе, BLDC — это одна из разновидностей синхронных моторов, которая используется, например, в винчестерах, сидирумах, дисководах и т.п. (типа таких, как на картинке справа).

Теорию работы синхронных движков в общем виде можно почитать здесь, чуть конкретнее про BLDC — вот здесь.

Схема позволяет организовать необходимое для питания BLDC-моторов трёхфазное напряжение из обычного однофазного (с помощью ШИМ-модуляции).

Никаких специальных возможностей управления работой мотора (по датчикам Холла или по обратной ЭДС обмоток) в этой схеме не предусмотрено. Про различные варианты такого управления мы поговорим позже, а здесь я постараюсь подробно описать исходя из каких соображений и как рассчитываются элементы именно базовой схемы.

Как видите, нам понадобятся: 1 контроллер ATtiny2313, 3 микрухи спаренных полевиков FDS4542 (N- и P-channel в одном восьминогом корпусе), 6 биполярных транзисторов (я использовал FMMT2222 — маленькие биполярнички в корпусах SOT23 c маркировкой 1P), 3 диода (я взял LL4148) и некоторое количество всяких резисторов и кондёров. (их номиналы будут указаны ниже).

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

То есть каждое из плеч можно включать и выключать независимо от другого, что даёт возможность получить на выходе полумоста три разных состояния: Hi — выход полумоста подключен к питанию (верхний полевик открыт, нижний — закрыт), Lo — выход полумоста подключен к общему проводу (верхний полевик закрыт, нижний — открыт) и Z — выход полумоста отключен и от питания, и общего провода (оба полевика закрыты).

Читайте также:  Как сделать винт для лодки с моторами

В принципе, можно получить ещё и четвёртое состояние — когда оба полевика открыты, но в этом случае получится КЗ и один из полевиков просто сгорит. Поэтому такое состояние мы будем считать запрещённым и с ним нам как раз придётся всеми способами бороться.

В схеме предусмотрено отдельное питание для схемы управления (+5В) и для силовой части (+12В), поэтому для верхнего плеча пришлось делать развязку на транзисторах T1, T2. Два транзистора были использованы для того, чтобы умощнить эту развязку и сделать её характеристику симметричной, чтобы она могла не только быстро заряжать, но и разряжать затвор верхнего полевика (то есть это ещё и драйвер).

Нижний полевик управляется без всякого драйвера, напрямую от ноги микроконтроллера.

Резисторы R7, R8 — это необязательные подтяжки, назначение которых — предотвратить самопроизвольные открытия полевиков в тот момент, когда ноги микроконтроллера ещё не настроены на выход и находятся в Z-состоянии (при старте). Соответственно, номиналы этих резисторов не очень важны, они просто должны быть намного больше номиналов резисторов R5 и R6, чтобы не мешать нормальной работе схемы после запуска контроллера. Более того, поскольку нам главное, чтобы полевики оба сразу не открылись (если один откроется — шут с ним), можно оставить только R8. Я так и сделал, — взял номинал резистора R8 равным 10 кОм, а резистор R7 вообще выкинул.

Стоит отметить, что помимо функции подтяжки, R7 может выполнять ещё и функцию борьбы с наводками на линию управления транзистором T2. Ток в этой линии очевидно будет гораздо меньше, чем через R5 и в случае, если такие наводки всё же будут, резистор R7 придётся вернуть (это если вы свою разводку платы будете делать).

Ну что, дальше давайте считать. Исходить будем из двух предпосылок: 1) полевиками нужно рулить максимально быстро, но без фанатизма; 2) высшая математика — удовольствие на любителя (особенно когда есть осциллограф и можно всё проверить на практике). В связи с этими, особой точностью и правильностью я увлекаться не буду, но, по крайней мере, рассчёты позволят на что-то ориентироваться.

Начнём с нижнего полевика (N-канальник). Для максимально быстрого управления этим полевиком нам нужно выжать с ноги микроконтроллера максимальный ток и в то же время эту ногу не поджарить.

Пиковый ток на ногу в документации на ATtiny2313 не указан, поэтому будем исходить из значений, указанных в Absolute maximum ratings — 40 мА. При этом максимальный ток у нас будет протекать в самом начале заряда, когда разность потенциалов на затворе и ножке микроконтроллера максимальна. Таким образом, получается R5=5В/40мА=125 Ом. Ближайшее большее значение стандартного номинала — 150 Ом, но мы возьмём 200 Ом, чтобы был небольшой запас. Максимальный ток при этом получится 5/200=25 мА.

Теперь давайте оценим время переключения нашего полевика с резистором 200 Ом в затворе. Оценить это время можно по формуле t=Qg/I, где Qg — total gate charge (берём из документации на FDS4542), I — ток драйвера (мы возьмём максимальный расчётный зарядный ток, чтобы точно не ошибиться в меньшую сторону). Получаем t=28 нК / 25 мА = 1,12 мкс.

Зачем нам нужно время переключения? Очень просто. Когда мы будем писать программу управления — мы должны будем учитывать, что полевики закрываются не мгновенно и вводить задержки между закрытием полевика в одном плече и открытием полевика в другом плече, во избежание возникновения сквозных токов (когда полевики в обоих плечах приоткрыты).

Переходим к P-канальному полевику. Тут ситуация попроще и ногу контроллера нам нагружать не нужно, зато нужно не спалить биполярные транзисторы и диод.

Резисторы R1 и R3 в обвязке p-канальника — это просто высокоомные подтяжки и их номиналы не должны нас особо сильно волновать, поэтому я для начала взял их по 10 кОм (чтобы токи через них можно было не учитывать) и про них забыл.

Затворные токи здесь определяются резисторами R2 и R4, а сама обвязка работает следующим образом: при открытии транзистора T2 потенциал базы транзистора T1 падает ниже потенциала его эмиттера, T1 закрывается, а затвор полевика разряжается через диод и резистор R4; при закрытии транзистора T2 потенциал базы транзистора T1 растёт быстрее, чем на его эмиттере, что приводит к открытию T1 и резкому заряду затвора через R2.

Сначала разберёмся с зарядом. По документации ток через FMMT2222 может быть до 600 мА, а для LL4148 — до 450 мА импульсный и до 150 постоянный, поэтому ориентироваться будем на диод и возьмём для расчётов, скажем 150 мА (чтобы ничего сильно не грелось). Исходя из этого, получим сопротивление резистора R4 = (12-0,5)В/150мА = 76,6 Ом. Далее аналогично, — возьмём ближайший стандартный номинал больше расчётного — 100 Ом. Пересчитываем обратно в ток, получаем I = 115 мА. Ну что ж, пусть будет так. При этом время заряда можно оценить на уровне t = 36 нК / 115 мА = 313 нс.

Чтобы сильно не заморачиваться, возьмём R2 такого же номинала, как и R4, и будем считать, что время закрытия будет примерно такое же, как и время открытия.

Теперь проверим, насколько правильно мы выбрали R1. Чтобы транзистор T1 нормально открывался, ток базы должен быть не более чем в h21 раз меньше тока коллектора. Ток коллектора у нас 100 мА, h21 (из доки) не менее 35, значит ток базы нам нужен не менее 2,86 мА. А он у нас получается 12В/10кОм = 1,2 мА. Ну, тогда возьмём R1 = 3,3 кОм. В этом случае ток базы = 12/3,3 = 3,6 мА. Так и оставим.

Тот же расчёт проделаем для транзистора T2. Ток коллектора у него такой же, как и у T1, значит ток базы тоже должен быть не менее 2,86 мА. Значит R6 должен иметь номинал менее 5/2,86=1,75 кОм. Возьмём с запасом резистор на 1 кОм.

В итоге получилось: R1=3,3 кОм, R2=R4=100 Ом, R3=10 кОм, R5=200 Ом, R6=1 кОм, R7 мы выкинули, R8=10 кОм. При этом время переключения нижнего полевика мы ожидаем на уровне 1,12 мкс, а верхнего — на уровне 313 нс.

Что у нас осталось? Во-первых, конденсаторы. С1=С2=20 пФ, С3=100 мкФ, С4=0,1 мкФ. При проектировании платы C3,C4 нужно расположить как можно ближе к силовым ногам ключей. Во-вторых, на схеме не полностью показана обвязка микроконтроллера. Нужно подтянуть ногу MCLR к питанию через резистор 1 — 10 кОм, а так же поставить конденсатор 0,1 мкФ между питанием и общим проводом поближе к ножкам контроллера.

Читайте также:  Мотор для снегохода своими руками

Что ж, — собираем и тестим.

Для снятия осциллограмм была написана тестовая программа, в которой транзисторы специально переключались с интервалами гораздо больше расчётных (на случай, если расчёты окажутся слишком кривыми).


Как видите, наши рассчёты дали примерно адекватные результаты, по крайней мере корректировать ничего не нужно.

Простейшая программка для контроллера (пуск / стоп / реверс / изменение питающего напряжения и частоты вращения)

Небольшое видео, демонстрирующее работу устройства

Источник

Подключение бесколлекторного электродвигателя постоянного тока (BLDC) к Arduino

В настоящее время наблюдается небывалый интерес к конструированию различных летающих механизмов – дронов, планеров, глайдеров, вертолетов и т.д. Сейчас их можно легко сконструировать самостоятельно благодаря большому количеству материалов по ним в сети интернет. Все эти летающие механизмы используют для своего движения так называемые бесщёточные (бесколлекторные) электродвигатели постоянного тока (BLDC — Brushless DC Motor). Что представляют собой подобные двигатели? Почему именно они сейчас используются в различных летающих дронах? Как правильно купить подобный двигатель и подключить его к микроконтроллеру? Что такое ESC и почему мы будем его использовать? Ответы на все эти вопросы вы найдете в данной статье.

В этой статье мы рассмотрим управление скоростью вращения бессенсорного бесколлекторного электродвигателя постоянного тока A2212/13T (Sensorless BLDC outrunner motor), часто используемого для конструирования дронов, с помощью ESC (Electronic Speed Controller – электронный контроллер скорости) и платы Arduino.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. A2212/13T BLDC Motor (бесколлекторный электродвигатель постоянного тока).
  3. ESC (20A) (электронный контроллер скорости) (купить на AliExpress).
  4. Источник питания (12V 20A).
  5. Потенциометр 10 кОм (купить на AliExpress).

Принцип действия BLDC двигателей

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

Хотя BLDC относятся к двигателям постоянного тока они управляются с помощью последовательности импульсов. Для преобразования напряжения постоянного тока в последовательность импульсов и распределения их по трем проводникам используется контроллер ESC (Electronic speed controller). В любой момент времени питание подается только на две фазы, то есть электрический ток заходит в двигатель через одну фазу, и покидает его через другую. Во время этого процесса запитывается катушка внутри двигателя, что приводит к тому, что магниты выравниваются по отношению к запитанной катушке. Затем контроллер ESC подает питание на другие два провода (фазы) и этот процесс смены проводов, на которые подается питание, продолжается непрерывно, что заставляет двигатель вращаться. Скорость вращения двигателя зависит от того как быстро подается энергия на катушку двигателя, а направление вращения – от порядка смены фаз, на которые поочередно подается питание.

Существуют различные типы BLDC двигателей – давайте рассмотрим основные из них. Различают Inrunner и OutRunner BLDC двигатели. В Inrunner двигателях магниты ротора находятся внутри статора с обмотками, а в OutRunner двигателях магниты расположены снаружи и вращаются вокруг неподвижного статора с обмотками. То есть в Inrunner (по этому принципу конструируется большинство двигателей постоянного тока) ось внутри двигателя вращается, а оболочка остается неподвижной. А в OutRunner сам двигатель вращается вокруг оси с катушкой, которая остается неподвижной. OutRunner двигатели особенно удобны для применения в электрических велосипедах, поскольку внешняя оболочка двигателя непосредственно приводит в движение колесо велосипеда, что позволяет обойтись без механизма сцепления. К тому же OutRunner двигатели обеспечивают больший крутящий момент, что делает их также идеальным выбором для применения в электрических движущихся средствах и дронах. Поэтому и в этой статье мы будем рассматривать подключение к платы Arduino двигателя OutRunner типа.

Примечание : существует еще такой тип BLDC двигателей как бесстержневой (coreless), который находит применение в «карманных» дронах. Эти двигатели работают по несколько иным принципам, но рассмотрение принципов их работы выходит за рамки данной статьи.

BLDC двигатели с датчиками (Sensor) и без датчиков (Sensorless). Для BLDC двигателей, которые вращаются плавно, без рывков, необходима обратная связь. Поэтому контроллер ESC должен знать позиции и полюса магнитов ротора чтобы правильно запитывать статор. Эту информацию можно получить двумя способами: первый из них заключается в размещении датчика Холла внутри двигателя. Датчик Холла будет обнаруживать магнит и передавать информацию об этом в контроллер ESC. Этот тип двигателей называется Sensor BLDC (с датчиком) и он находит применение в электрических движущихся транспортных средствах. Второй метод обнаружения позиции магнитов заключается в использовании обратной ЭДС (электродвижущей силы), генерируемой катушками в то время когда магниты пересекают их. Достоинством этого метода является то, что он не требует использования каких либо дополнительных устройств (датчик Холла) – фазовый провод самостоятельно используется в качестве обратной связи благодаря наличию обратной ЭДС. Этот метод используется в двигателе, рассматриваемом в нашей статье, и именно он чаще всего применяется в дронах и других летающих устройствах.

Почему дроны и вертолеты используют именно BLDC двигатели?

Сейчас существует множество различных типов дронов – с двумя лопастями, с четырьмя лопастями и т.д. Но все они используют именно BLDC двигатели. Почему именно их, ведь BLDC двигатели стоят дороже чем обычные электродвигатели постоянного тока?

Существует несколько причин для этого:

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

Зачем нужен контроллер ESC

Как мы уже знаем, для функционирования BLDC двигателей необходим какой-нибудь контроллер, который преобразует напряжение постоянного тока от батарейки в последовательность импульсов, подаваемую в определенном порядке на провода (фазы) двигателя. Этот контроллер называется ESC (Electronic Speed Controller – электронный контроллер скорости). Основной обязанностью данного контроллера является правильная подача питания на провода BLDC двигателя чтобы двигатель вращался в нужном направлении. Это осуществляется с помощью считывания обратной ЭДС (back EMF) с каждого провода и подачи питания на катушку в то время когда магнит пересекает ее. Внутри себя контроллер ESC содержит достаточно много разнообразной электроники и при желании вы можете подробно изучить его устройство по соответствующим материалам в сети интернет. Здесь же мы кратко рассмотрим рассмотрим только основные компоненты его конструкции.

Читайте также:  Калина спорт 2 технические характеристики мотора

Управление скоростью вращения на основе ШИМ (широтно-импульсной модуляции, в англ. PWM) . Контроллер ESC может управлять скоростью вращения BLDC двигателя при помощи считывания сигнала ШИМ подаваемого на его оранжевый провод. Принцип управления им очень похож на управление сервомоторами. Сигнал ШИМ, подаваемый на контроллер ESC, должен иметь период 20ms, а коэффициент заполнения этого ШИМ сигнала будет определять скорость вращения BLDC двигателя. Поскольку точно такой же принцип используется для управления углом поворотом сервомотора, то для управления BLDC двигателем мы можем использовать библиотеку для управления сервомоторами. Если вы не сталкивались с этим принципом ранее, то вы можете прочитать статью о подключении сервомотора к плате Arduino.

Battery Eliminator Circuit (BEC) – цепь, исключающая батарею . Почти все контроллеры ESC поставляются с этой схемой. Как следует из ее названия, данная схема устраняет потребность в использовании отдельной батареи для питания микроконтроллера, то есть в данном случае нам не понадобится отдельный источник питания для платы Arduino – контроллер ESC сам обеспечит плату Arduino регулируемым напряжением питания +5V. В различных контроллерах ESC используются различные схемы регулировки данного напряжения, но в большинстве случаев распространена схема с линейной регулировкой.

Встроенное ПО . Каждый контроллер ESC содержит в своем ПЗУ встроенную прикладную программу, написанную производителем контроллера. Эта программа во многом определяет логику функционирования контроллера. Наиболее популярными встроенными программами для контролеров ESC являются Traditional, Simon-K и BL-Heli. Эта программа может изменяться пользователем, однако мы в этой статье не будем рассматривать данный вопрос.

Некоторые термины, используемые в тематике BLDC и ESC

При изучении принципов работы BLDC двигателей и контроллеров ESC вы можете столкнуться с некоторыми терминами, используемыми в данной тематике. Кратко рассмотрим основные из этих терминов.

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

Soft Start (плавный пуск, старт) – эта способность особенно важна для BLDC двигателей когда вращающий момент от него на исполнительный механизм (колесо, винт и т.д.) передается через механизм передач, обычно состоящий из шестерен. Плавный пуск означает, что двигатель не начнет сразу вращаться с максимальной скоростью, а будет увеличивать свою скорость вращения постепенно независимо от того, с какой скоростью нарастает управляющее воздействие. Плавный пуск значительно снижает износ шестерен, входящих в передаточный механизм.

Motor Direction (направление вращения двигателя) – обычно направление вращения BLDC двигателей не изменяется в процессе эксплуатации, однако во время сборки и тестирования работы изделия может потребоваться изменение направления вращения двигателя, обычно это можно сделать просто поменяв местами любые два провода двигателя.

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

Response time (время отклика, время реакции, время ответа) . Означает способность двигателя быстро изменять скорость вращения при изменении управляющего воздействия. Чем меньше время реакции, тем лучше контроль над двигателем.

Advance (движение вперед) . Эта проблема является своеобразной «ахиллесовой пятой» для BLDC двигателей. Все BLDC двигатели имеют хотя бы небольшой подобный баг. Эта проблема вызвана тем, что когда катушка статора запитана ротор движется вперед поскольку на нем есть постоянный магнит. И когда управляющее напряжение с этой катушки снимают (чтобы подать его на следующую катушку) ротор продвигается вперед немного дальше чем предусмотрено логикой функционирования двигателя. Это нежелательное продвижение двигателя вперед в англоязычной литературе называют “Advance” и оно может приводить к нежелательным вибрациям, нагреву и шуму при работе двигателя. Поэтому хорошие контроллеры ESC стараются по возможности устранить этот эффект в работе BLDC двигателей.

Работа схемы

Схема подключения BLDC двигателя и контроллера ESC к плате Arduino представлена на следующем рисунке.

Как видите, схема достаточно проста. Контроллеру ESC необходим источник питания с напряжением 12V и током как минимум 5A. Для питания схемы можно использовать адаптер или Li-Po батарейку. Три фазы (провода) BLDC двигателя необходимо подсоединить к трем выходным проводам контроллера ESC – неважно в каком порядке.

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

Схема BEC (Battery Eliminator circuit) в контроллере ESC будет самостоятельно обеспечивать (регулировать) постоянное напряжение +5V, поэтому его можно непосредственно использовать для питания платы Arduino. Для управления скоростью вращения двигателя в схеме используется потенциометр, подключенный к контакту A0 платы Arduino.

Внешний вид собранной конструкции показан на следующем рисунке.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы рассмотрим только его основные фрагменты.

Для управления BLDC двигателем мы будем формировать ШИМ сигнал с частотой 50 Гц и изменяемым от 0 до 100% коэффициентом заполнения. Значение коэффициента заполнения будет управляться с помощью потенциометра. То есть, вращая потенциометр, мы будем управлять скоростью вращения двигателя. Как уже указывалось, управление BLDC двигателем очень похоже на управление сервомотором с помощью ШИМ 50 Гц, поэтому в данном случае мы будем использовать ту же самую библиотеку, которую использовали для управления сервомотором. Если вы начинающий в изучении платформы Arduino, то перед дальнейшим прочтением данной статьи рекомендуем вам изучить принципы формирования ШИМ сигнала в Arduino и подключение сервомотора к плате Arduino.

ШИМ сигнал можно генерировать только на тех цифровых контактах платы Arduino, которые обозначены символом

. В нашей схеме мы будем управлять контроллером ESC с контакта 9 платы Arduino, поэтому следующей командой мы прикрепим контроллер ESC к этому контакту:

Источник

Поделиться с друзьями