- Цена: $59.99
Сегодня посмотрим на обновлённую версию регулятора оборотов для бесколлекторных моторов Typhoon32 V2 и оценим работу проведённую компанией Airbot по исправлению своих ошибок. Вкратце про прошлую версию.Из-за тонких дорожек на плате, происходил перегрев их и как следствие возгорание, и выход платы из строя подробнее можно узнать тутКраткие характеристики V2: — Питание (LiPo) 3-6s — Поддержка всех протоколов (Оnehot / Multishot / Dshot / PWM) — 32-х битная прошивка (BLHELI32) — Поддержка полной телеметрии — Монтажные отверстия 30.5×30.5mm — Рабочий ток каждого регулятора 35АУлучшения: — Полностью переработана плата — Добавление конденсаторов — Перекомпоновка элементов на платеЧто такое BLHELI32?
Приступим к осмотру посылки и содержимого.
Приходит регулятор в простом почтовом пупырчатом конверте.Внутри находиться регулятор в антистатическом пакете, пакетик с 4 проставками из текстолита и инструкция с распинвокой. Осмотрим сначала нижнюю сторону платы.Как видно пайка хорошая, для каждого регулятора присутствует свой индивидуальный датчик тока(с которого мы можем получать данные).Так же в глаза бросается большое количество конденсаторов, по заявлению производителя их напаяно достаточно, так что установка доп. конденсаторов не нужна. Странное и спорное решение насчёт оголённых участков платы.Зачем сделано не понятно, но опустим это. Видим 4 32-х битных STM процессора на плате. Маркировка — f051k86
Потом идут 4 драйвера ключей. Маркировка — fortior fd6288q Перевернём плату и осмотрим другую её сторону. Как видно все мосфеты собраны в одно место.Моё мнение это только лучше так как минимум дорожек надо вести по плате, выглядит эстетичнее, больше места стало непосредственно для вывода дорожек к которым будут подпаиваться провода моторов. Маркировка мосфетов — QN3109 721 03Q Теперь рассмотрим дорожки! Как видно они стали больше.Так же видно что дорожка не кончается оголённой частью, по бокам есть непосредственно запас ещё! Выглядит внушительно. Если посмотреть как бы в разрез платы, есть ощущение что дорожки примерно утоплены на пол платы.К сожалению камера не смогла чётко показать это, и я могу ошибаться.Но, данный регулятор летает и проблем с дорожками нету, об этом подробнее далее. Небольшие опасения вызывают конденсаторы стоящие на краю платы.Но я на болт накрутил пластиковую гайку и всё прекрасно с запасом встало. Фото установкиПостарался максимально понятно сфоткать Взглянем на инструкцию.На что хочется обратить внимание, это на то что в инструкции стоит рабочее напряжение 3-4s а на сайте 3-6s! Лично я летал на 4s только. Чему я очень обрадовался, так это тому что они добавили в разъём вывод телеметрии!!! Теперь одним «шлейфом» всё соединили и ни какой доп пайки.Но! Если вам нужно Airbot оставил пятаки (SWC) на плате с выводом телеметрии Общий план распиновки и нумерации деталей на плате.Варианты подключение регулятора к ПК
На плате реализована два разъёма для соединения регулятора с мозгом квадрокоптера. 1)Стандартный разъём с подключаемой фишкой и проводами. 2)Разъём для подключения шлейфа, но пока что шлейф купить негде, и нету ПК с таким разъёмом.Безусловно это облегчает вес, но при сильном ударе может всё сломаться, по этому очень спорное решение, но что ж пусть будет.
Предлагаю взглянуть ещё на фото платы и пайки.Есть некоторые элементы которые стоят как бы под углом, но всё припаяно качественно.Но хочу обратить внимание на то, что мне выслали данный регулятор до того как он поступил в продажу, по этому возможно собирался вручную.Доп. фото Насчёт точки на плюсовом контакте… Я так и не понял что это, перетравили плату, не до травили.Но она не сквозная, и буквально как царапина, на работу ни как не влияет.Вес
15.76 грамм
Установка на квадрокоптер
Для корректной установки нам понадобятся текстолитовые проставки которые идут в комплекте.Они кладутся на сторону где распаяны мосфеты, что бы выровнять высоту относительно мосфетов.Потом припаиваются моторы к выводом регуляторов и соединяется кабелем регулятор с ПК!
Настройка телеметрии с регуляторов происходит аналогичным образом как тут, за исключением того что паять провода телеметрии уже не надо.(В середине статьи на которую привёл ссылку расписано подробно о настройке телеметрии.)Настройки регуляторов
Что бы войти в настройки регуляторов нам нужна специальная программа BLHeliSuite32.Скачиваем её, устанавливаем и запускаем.В роли адаптера выступает сам мозг квадрокоптера. После всех манипуляций, подключаем мозг к компьютеру, и подсоединяем батарейку к квадрокоптеру.В окне выбираем нужный нам ком порт и жмём коннект.Для того что бы прочитать настройки регуляторов жмём Read setup. Выскакивает окно о версиях прошивки каждого регулятора и то что с ними всё в порядке. Жмём ок и нам сообщают что настройки 1 регулятора прочитаны, жмём окей и можем приступить к настройке если надо.
Из интересного я бы выделил это тепловую защиту каждого регулятора и защиту по току, то-есть больше указанного значения Ампер регулятор не будет потреблять.Вывод
Отлетал я около 10 аккумуляторов на данном регуляторе.Ни каких сбоев глюков и прочего не было, жарил по полной, было несколько падений.Регулятор выжил ничего не сломалось и не погорело.Все функции работают исправно.Можно уверенно сказать что работа была проделана хорошая и ошибки убрали. На счёт цены.Многие в прошлом обзоре говорили вот 60$ это дорого зачем покупать? Несомненно это не дешёвые регуляторы, но посмотри в сторону других производителей, те же DYS,Littelbee продают регуляторы по таким же ценам, так ещё и на старых процессорах собраны.Не берите эти слова близко к сердцу, это лично моё мнение. Так что регулятор исправен, напайка доп. конденсаторов не нужна, все системы работают исправно.Брать или не брать зависит от вас, информацию я предоставил =)
Полёт и работа телеметрии
Ниже я предлагаю посмотреть на то как работает телеметрия с регуляторов, а потом оценить просто сам полёт на квадрокоптере с данным регулятором.На счёт небольших трясок- это параметры PID до конца не настроены, рама оказалось очень шумной и гироскоп немного трудно справляется с фильтрацией шумов. На первом видео в правой части находится показания оборотов двигателей а чуть ниже температура регуляторов. А тут просто полёт уже с экшен камерой(как оказалось она ещё не очень плотно сидела и немного ёрзала, отсюда лёгкие так скажем вибрации) Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта. Как только я начал заниматся авиамоделизмом, мне сразу стало интересно почему у двигателя три провода, почему он такой маленький и в то же время такой мощный и зачем ему нужен регулятор скорости… Прошло время, и я во всем разобрался. И дальше поставил перед собой задачу сделать своими руками бесколлекторный двигатель.В основу работы любой электрической машины положено явление электромагнитной индукции. Поэтому если в магнитное поле поместить рамку с током, то на неё подействует сила Ампера, которая создаст вращательный момент. Рамка начнет поворачиваться и остановится в положении отсутствия момента, создаваемого силой Ампера.
Любой электрический двигатель состоит из неподвижной части — Статора и подвижной части — Ротора. Для того чтобы началось вращение, нужно по очереди менять направление тока. Эту функцию и выполняет Коллектор (щетки).Бесколлекторный двигатель — это двигатель ПОСТОЯННОГО ТОКА без коллектора, в котором функции коллектора выполняет электроника. (Если у двигателя три провода, это не значит что он работает от трехфазного переменного тока! А работает он от «порций» коротких импульсов постоянного тока, и не хочу вас шокировать, но те же двигатели которые используются в кулерах, тоже бесколлекторные, хоть они и имеют всего два провода питания постоянного тока)(произносится как «инраннер»). Двигатель имеет расположенные по внутренней поверхности корпуса обмотки, и вращающийся внутри магнитный ротор.(произносится как «аутраннер»). Двигатель имеет неподвижные обмотки (внутри) вокруг которых вращается корпус с помещенным на его внутреннюю стенку постоянными магнитами. Для того чтобы бесколлекторный двигатель начал вращаться, напряжение на обмотки двигателя надо подавать синхронно. Синхронизация может быть организованна с использованием внешних датчиков (оптические или датчики холла), так и на основе противоЭДС (бездатчиковый), которая возникает в двигателе при его вращении.Существуют бесколлекторные двигатели без каких либо датчиков положения. В таких двигателях определение положения ротора выполняется путем измерения ЭДС на свободной фазе. Мы помним, что в каждый момент времени к одной из фаз (А) подключен «+» к другой (В) «-» питания, одна из фаз остается свободной. Вращаясь, двигатель наводит ЭДС (т.е. в следствии закона электромагнитной индукции в катушке образуется индукционный ток) в свободной обмотке. По мере вращения напряжение на свободной фазе (С) изменяется. Измеряя напряжение на свободной фазе, можно определить момент переключения к следующему положению ротора.Что бы измерить это напряжение изпользуется метод «виртуальной точки». Суть заключается в том, что, зная сопротивление всех обмоток и начальное напряжение, можно виртуально «переложить провод» в место соединения всех обмоток:Бесколлекторный двигатель без электроники — просто железка, т.к. при отсутствии регулятора, мы не можем просто подключить напряжение на него, чтоб он просто начал нормальное вращение. Регулятор скорости — это довольно сложная система радиокомпонентов, т.к. она должна:1) Определять начальное положение ротора для запуска электродвигателя2) Управлять электродвигателем на низких скоростях3) Разгонять электродвигатель до номинальной (заданной) скорости вращения4) Поддерживать максимальный момент вращенияПринципиальная схема регулятора скорости (вентильная):Бесколлекторные двигатели были придуманы на заре появления электричества, однако систему управления к ним никто не мог сделать. И только с развитием электроники: с появлением мощных полупроводниковых транзисторов и микроконтроллеров, бесколлекторные двигатели стали применятся в быту (первое промышленное использование в 60-х годах).Достоинства:-Частота вращения изменяется в широком диапазоне-Возможность использования во взрывоопасной и агрессивной среде-Большая перегрузочная способность по моменту-Высокие энергетические показатели (КПД более 90 %)-Большой срок службы, высокая надёжность и повышенный ресурс работы за счёт отсутствия скользящих электрических контактовНедостатки:-Относительно сложная система управления двигателем-Высокая стоимость двигателя, обусловленная использованием дорогостоящих материалов в конструкции ротора (магниты, подшипники, валы)Разобравшись с теорией, перейдем к практике: спроектируем и сделаем двигатель для пилотажной модели МХ-2.Список материалов и оборудования:1) Проволока (взятая из старых трансформаторов)2) Магниты (купленные в интернете)3) Статор (барашек)4) Вал5) Подшипники6) Дюралюминий 7) Термоусадка 8) Доспуп к неограниченному техническому хламу9) Доступ к инструментам10) Прямые руки 🙂 1) С самого начала решаем: Для чего делаем двигатель? На что он должен быть рассчитан? В чем мы ограничены? В моем случае: я делаю двигатель для самолета, значит пускай он будет внешнего вращения; рассчитан он должен на то, что он должен выдать 1400 грамм тяги при трех-баночном аккумуляторе; ограничен я в весе и в размере. Однако с чего же начать? Ответ на этот вопрос прост: с самой трудной детали, т.е. с такой детали, которую легче просто найти, а все остальное подгонять под неё. Я так и поступил. После многих неудачных попыток сделать статор из листовой мягкой стали, мне стало понятно, что лучше найти её. Нашел я её в старой видеоголовке от видеорекоудора.2) Обмотка трехфазного бесколлекторного двигателя выполняется изолированным медным проводом, от сечения которого зависит значение силы тока, а значит и мощность двигателя. Незабываем что, чем толще проволока, тем больше оборотов, но слабее крутящий момент. Подбор сечения: 1А — 0.05мм; 15А — 0.33мм; 40А — 0.7мм 3А — 0.11мм; 20А — 0.4мм; 50А — 0.8мм 10А — 0.25мм; 30А — 0.55мм; 60А — 0.95мм 3) Начинаем наматывать на полюса проволоку. Чем больше витков (13) намотано на зуб, тем большее магнитное поле. Чем сильнее поле, тем больший крутящий момент и меньшее количество оборотов. Для получения высоких оборотов, необходимо мотать меньшее количество витков. Но вместе с этим падает и крутящий момент. Для компенсации момента, обычно на мотор подают более высокое напряжение. 4) Дальше выбираем способ соединения обмотки: звездой или треугольником. Соединение звездой дает больший крутящий момент, но меньшее количество оборотов, чем соединение треугольником в 1.73 раз. (впоследствии было выбрано соединение треугольник) 5) Выбираем магниты. Количество полюсов на роторе должно быть четным (14). Форма применяемых магнитов обычно прямоугольная. Размер магнитов зависит от геометрии двигателя и характеристик мотора. Чем сильнее применяемые магниты, тем выше момент силы, развиваемый двигателем на валу. Также чем больше количество полюсов, тем больше момент, но меньше оборотов. Магниты на роторе закрепляются с помощью специального термоклея. Испытания данного двигателя я проводил на созданной мной витномоторной установке, которая позволяет измерить тягу, мощность и обороты двигателя.Чтобы увидеть отличия соединений «звезда» и «треугольник» я соединял по разному обмотки:В итоге получился двигатель соответствующий характеристикам самолета, масса которого 1400 грамм. Характеристики полученного двигателя:Потребляемый ток: 34.1АТок холостого хода: 2.1АСопротивление обмоток: 0.02 ОмКоличество полюсов: 14Обороты: 8400 об/мин Видеоотчет испытания двигателя на самолете… Мягкой посадки 😀Расчет КПД двигателя:Очень хороший показатель… Хотя можно было еще выше добиться…Выводы:1) У бесколлекторных двигателей высокая эффективность и КПД2) Бесколлекторные двигатели компактны3) Бесколлекторные двигатели можно использовать во взрывоопасных средах4) Соединение звездой дает больший крутящий момент, но меньшее количество оборотов в 1.73 раза, чем соединение треугольником.Таким образом, изготовить собственный бесколлекторный мотор для пилотажной модели самолета- задача выполнимаяЕсли у вас есть вопросы или вам что-то не понятно, задавайте мне вопросы в комметариях этой статьи. Удачи всем)Как вы уже знаете из прошлых постов, у нас в компании есть DIY-движение. В свободное от работы время коллеги занимаются фрезеровкой печатных плат в домашних условиях, делают тепловизор на FLIR Lepton, а также решают семейные разногласия с помощью 4 контроллеров и 2 умных часов. Продолжим серию увлекательный историй! Сегодня я расскажу, как сделать контроллер к трехфазному двигателю электровелосипеда своими руками. Целью создания такого контроллера было:
- Изучение работы трехфазного мотора под управлением контроллера.
- Большинство контроллеров для электровелосипедов, представленных на рынке, — китайские. Они хоть и относительно дешевые (около 2.000 руб в зависимости от мощности), но являются неведомой коробкой, в которой неизвестно что происходит. И сразу к ней возникает очень много вопросов — экономично ли она потребляет и распределяет ток, какой у нее запас мощности, почему так сильно перегревается, преждевременно срабатывает защита по току и т.д.
В тоже время на рынке представлены европейские качественные контроллеры для электробайков. Они оснащаются расширенными функциями, работают на разных напряжениях и токах и их можно программировать. Устанавливаются они на сверхмощные электровелосипеды. Но цена у них кусается — 10-20 тыс. рублей.
В итоге я решил пойти своим путем: разобраться в устройстве контроллера, сделать его прототип, а затем попытаться сделать контроллер качественнее китайского контроллера. На текущий момент проект у меня в разработке только и на уровне прототипа, готового варианта пока нет. Буду рад услышать ваши комментарии и советы.
Применение
В электровелосипедах используются трёхфазные бесщёточные электродвигатели с датчиками Холла. Стоит отметить, что применение подобных трёхфазных двигателей достаточно обширно:
- Бытовая техника
- Оргтехника
- Электротранспорт
- Промышленность
Устройство двигателя
Для разработки контроллера необходимо разобраться с принципом работы самого электродвигателя.
Электродвигатель состоит из фазных обмоток, магнитов и датчиков Холла, отслеживающих положение вала двигателя.
Конструктивно электродвигатели делятся на два типа: инраннеры и аутраннеры.
У инраннеров магнитные пластины крепятся на вал, а обмотки располагаются на барабане (статоре), в этом случае в движение приводится вал. В случае аутраннера всё наоборот: на валу — фазные обмотки, а в барабане — магнитные пластины. Это приводит в движение барабан.
Так как у велосипеда колесо крепится валом на раму, то здесь применителен тип аутраннера.
На этой картинке условно представлены три фазы с обмотками, соединёнными между собой. В реальности обмоток намного больше, они располагаются равномерно с чередованием по фазам по окружности двигателя. Чем больше обмоток — тем плавнее, чётче, эластичнее работает двигатель.
В двигатель устанавливаются три датчика Холла. Датчики реагируют на магнитное поле, тем самым определяя положение ротора относительно статора двигателя. Устанавливаются с интервалами в 60 или 120 электрических градусов. Эти градусы относятся к электрическому фазному обороту двигателя. Необходимо учитывать, что чем больше в двигателе обмоток на каждую фазу, тем больше происходит электрических оборотов за один физический оборот мотор-колеса.
Обмотки трёх фаз в большинстве случаев соединяются между собой по двум схемам: звезда и треугольник. В первом случае ток проходит от одной из фаз к другой, во втором — по всем трём фазам в разной степени. Иногда эти две схемы подключения комбинируют в одном двигателе, например в электромобилях. При старте и наборе скорости идёт соединение фаз по звезде: она даёт больший момент при относительно низких оборотах; далее, после набора скорости, происходит переключение на треугольник, в результате количество оборотов увеличивается, когда уже не нужен большой крутящий момент. По сути, получается условно автоматическая коробка передач электродвигателя.
Цикл работы
Чтобы привести в движение трёхфазный двигатель, нужно рассмотреть цикл его работы за электрический оборот. Итак, имеем три фазы — A, B, C. Каждая из фаз получает положительную и отрицательную полярности в определённый момент времени. Поочерёдно по шагам пропускается ток от «плюса» одной фазы к «минусу» другой фазы. В итоге получается шесть шагов = три фазы × две полярности.
A+, A–, B+, B–, C+, C–
Рассмотрим эти шесть шагов цикла. Предположим, что положение ротора установлено в точке первого шага, тогда с датчиков Холла мы получим код вида 101, где 1 — фаза А, 0 — фаза B, 1 — фаза С. Определив по коду положение вала, нужно подать ток на соответствующие фазы с заданными полярностями. В результате вал проворачивается, датчики считывают код нового положения вала — и т. д.
В таблице указаны коды датчиков и смена комбинаций фаз для большинства электродвигателей. Для обратного хода колеса (реверса) достаточно перевернуть знаки полярности фаз наоборот. Принцип работы двигателя довольно прост.
Цикл двигателя представлен в gif-анимации.
Транзисторы и Н-мост
Но чтобы поочерёдно подавать ток на каждую из фаз и менять их полярность, необходимы транзисторы. Ещё нам нужна передача больших токов, высокая скорость переключения и чёткость открытия/закрытия затворов. В данном случае удобнее управлять затворами по напряжению, а не по току. Поэтому оптимальны полевые (MOSFET) транзисторы. Чаще всего их используют в контроллерах. Очень редко можно встретить комбинированный вариант транзисторов.
Для переключения фаз со сменой их полярностей используют классическую схему Н-моста (H-Bridge) из полевых транзисторов.
Он состоит из трёх пар транзисторов. Каждая из пар подключается к соответствующей фазе обмотки двигателя и обеспечивает подачу тока со значением (+ или –). Транзисторы, отвечающие за включение фазы с положительным значением, называют верхними ключами. С отрицательным — нижними. Для каждого шага открывается пара ключей: верхний одной фазы и нижний соседней фазы. В результате ток проходит от одной фазы к другой и приводит электродвигатель в движение.
Из схемы видно, что мы не можем включить одновременно верхний и нижний ключ у одной и той же фазы: произойдёт короткое замыкание. Поэтому очень важно быстрое переключение верхних и нижних ключей, чтобы в переходных процессах не появилось замыкание. И чем качественнее и быстрее мы обеспечим переключения, тем меньше у нас будет потерь и нагрева/перегрева транзисторов H-моста.
Для запуска остаётся обеспечить управление затворами ключей H-моста. Для управления H-мостом нужно:
- Считать показания датчиков Холла.
- Определить, в каком положении какую пару ключей включать.
- Передать сигналы на соответствующие затворы транзисторов.
Прототип на Ардуино
Под рукой у меня была Arduino UNO, и я решил собрать контроллер на её основе.
Первым делом я подал на датчики Холла питание 5 вольт от Ардуино (его достаточно для датчиков). Сигнальные провода от датчиков подключил на цифровые пины Ардуино, написав простейшую программу для считывания и обработки сигналов с датчиков.
//Пины ключей Н-мостов const int TRAplus = 8; const int TRAminus = 9; const int TRBplus = 10; const int TRBminus = 11; const int TRCplus = 12; const int TRCminus = 13; //датчики холла const int HallA = 3; const int HallB = 1; const int HallC = 0; boolean vala; boolean valb; boolean valc; boolean pvala; boolean pvalb; boolean pvalc; int pHall; int turns; void setup() { //Установка пинов ключей на выход pinMode(TRAplus, OUTPUT); pinMode(TRAminus, OUTPUT); pinMode(TRBplus, OUTPUT); pinMode(TRBminus, OUTPUT); pinMode(TRCplus, OUTPUT); pinMode(TRCminus, OUTPUT); //Вывод данных через серийный порт Serial.begin(9600); } void loop() { //Считываем датчики Холла и записываем их значение в val vala = digitalRead(HallA); valb = digitalRead(HallB); valc = digitalRead(HallC); //Счётчик оборотов колеса. Необходима доработка if(vala && !pvala) { if(pHall == HallC) // или HallB в обратную сторону turns++; pHall = HallA; } if(valb && !pvalb) { if(pHall == HallA) // или HallC в обратную сторону turns++; pHall = HallB; } if(valc && !pvalc) { if(pHall == HallB) // или HallA в обратную сторону turns++; pHall = HallC; } digitalWrite(TRAplus, (vala && !valb) ? HIGH : LOW); //если vala==HIGH и valb==LOW, тогда записать HIGH, иначе LOW digitalWrite(TRAminus, (valb && !vala) ? HIGH : LOW); digitalWrite(TRBplus, (valb && !valc) ? HIGH : LOW); digitalWrite(TRBminus, (valc && !valb) ? HIGH : LOW); digitalWrite(TRCplus, (valc && !vala) ? HIGH : LOW); digitalWrite(TRCminus, (vala && !valc) ? HIGH : LOW); pvala = vala; pvalb = valb; pvalc = valc; Serial.print(vala); Serial.print(valb); Serial.println(valc); //Serial.println(turns/3); }
Затем собрал Н-мост из полевых NPN-транзисторов. Подвёл к мосту независимое питание на 12 вольт. Но при отладке, чтоб убедиться в работоспособности, я подключил напрямую шесть пинов 5V из Ардуино на затворы H-моста. У большинства полевых транзисторов затвор работает на 20 вольт. Так делать нельзя, потому что Н-мост будет плохо работать и перегреваться. Но для кратковременных тестов это пойдёт. Кое-как, с сильными перегревами и страшными звуками, вибрациями и толчками колесо медленно закрутилось. Начало положено.
Мостовые драйверы
Далее предстояла работа над напряжением 20 вольт на управление затворами. Для этого существуют мостовые драйверы транзисторов, они обеспечивают стабильные импульсы в 20 вольт на затвор и высокую скорость отклика. Сначала у меня были популярные драйверы для маломощных моторов L293D.
Для управления затворами его достаточно, к тому же их очень просто использовать. Один такой драйвер может обеспечить питанием две пары ключей. Поэтому я взял две штуки L293D. Собрал контроллер с этими драйверами, и колесо начало крутиться существенно плавнее, посторонних звуков стало меньше, нагрев транзисторов уменьшился. Но при увеличении оборотов синхронизация с контроллером пропадала, появлялся посторонний звук, колесо дёргалось, вибрировало и полностью останавливалось.
В это же время я наткнулся на два варианта мостовых драйверов:
- HIP4086
- IR2101
Что касается HIP4086, то это полноценный мостовой драйвер, предназначенный для трёхфазного электродвигателя. Мне он показался несколько замороченным, и мои попытки использовать его в контроллере не увенчались успехом: он у меня так и не заработал. Углублённо разбираться в причинах не стал.
А взял я IR2101 — полумостовой драйвер, обеспечивающий работу нижнего и верхнего ключей для одной фазы. Несложно догадаться, что таких драйверов нужно три. К слову, драйвер очень прост в использовании, его подключение происходит безболезненно и легко. Получилась такая схема:
Печатная плата
И готовый результат
Собрал контроллер с этим драйвером и запустил двигатель. Ситуация с работой электродвигателя кардинально не поменялась, симптомы остались те же, как и в случае с драйвером L293D.
Аппаратное прерывание
И тут я понял, в чём дело: Ардуино не успевает обрабатывать показания датчиков Холла! Поэтому необходимо было использовать пины Ардуино с аппаратным прерыванием. Так как у Ардуино УНО таких пинов всего два, а под датчики нужно три пина, надо взять Ардуино Леонардо или Искра Нео, где таких пинов — четыре штуки.
Переписав программу под прерывания и подключив Искру Нео вместо УНО, я повторил испытания.
//Пины ключей Н-мостов const int TAH = 8; //T — транзистор, А — фаза (синяя), Н — верхний ключ полумоста const int TAL = 9; //T — транзистор, А — фаза (синяя), L — нижний ключ полумоста const int TBH = 10; //T — транзистор, B — фаза (зелёная), H — верхний ключ полумоста const int TBL = 11; //T — транзистор, B — фаза (зелёная), L — нижний ключ полумоста const int TCH = 12; //T — транзистор, C — фаза (жёлтая), H — верхний ключ полумоста const int TCL = 13; //T — транзистор, C — фаза (жёлтая), L — нижний ключ полумоста //------------------------------------------------------------------------------------------------ //датчики холла int HallA = 3; //пин 1 (с прерыванием) int HallB = 1; //пин 2 (с прерыванием) int HallC = 0; //пин 3 (с прерыванием) //------------------------------------------------------------------------------------------------ volatile boolean vala; volatile boolean valb; volatile boolean valc; //------------------------------------------------------------------------------------------------ void setup() { //Установка пинов ключей на выход pinMode(TAH, OUTPUT); pinMode(TAL, OUTPUT); pinMode(TBH, OUTPUT); pinMode(TBL, OUTPUT); pinMode(TCH, OUTPUT); pinMode(TCL, OUTPUT); //Считывание датчиков Холла vala = digitalRead(HallA); valb = digitalRead(HallB); valc = digitalRead(HallC); //Аппаратное прерывание на пинах датчиков Холла attachInterrupt (digitalPinToInterrupt(HallA), changeA, CHANGE); attachInterrupt (digitalPinToInterrupt(HallB), changeB, CHANGE); attachInterrupt (digitalPinToInterrupt(HallC), changeC, CHANGE); //LOW вызывает прерывание, когда на порту LOW //CHANGE прерывание вызывается при смене значения на порту с LOW на HIGH, и наоборот //RISING прерывание вызывается только при смене значения на порту с LOW на HIGH //FALLING прерывание вызывается только при смене значения на порту с HIGH на LOW } void Fases() { digitalWrite(TAH, (vala && !valb) ? HIGH : LOW); digitalWrite(TAL, (valb && !vala) ? HIGH : LOW); digitalWrite(TBH, (valb && !valc) ? HIGH : LOW); digitalWrite(TBL, (valc && !valb) ? HIGH : LOW); digitalWrite(TCH, (valc && !vala) ? HIGH : LOW); digitalWrite(TCL, (vala && !valc) ? HIGH : LOW); void changeA() { vala = digitalRead(HallA); Fases(); } void changeB() { valb = digitalRead(HallB); Fases(); } void changeC() { valc = digitalRead(HallC); Fases(); } void loop() { }
Колесо наконец-то заработало чётко, без вибраций, шумов, отлично стало набирать обороты без рассинхронизации. Прототип оказался жизнеспособным. Но это ещё не полноценный контроллер, поскольку в нём не было обвязки с защитами и обеспечением качественного ШИМ-сигнала.
Прототип на базе микросхемы MC33035
Параллельно с разработкой контроллера на Ардуино я рассматривал альтернативные варианты логической части контроллера. И это привело меня к микросхеме MC33035. Это старая разработка от Motorola, сейчас её выпускает ON Semiconductor. Создана специально для мощных трёхфазных двигателей.
Данная микросхема:
- Отвечает за всю логическую часть контроллера
- Считывает показания с датчиков Холла
- Определяет положения вала
- Выдаёт сигналы для затворов Н-моста на их драйверы
- Имеет возможность подключения индикатора ошибок, перегрева
- Обрабатывает и передает ШИМ-сигнал (PWM)
- Осуществляет реверс (обратный ход колеса)
Одним словом, микросхема содержит всё необходимое для управления электродвигателем. Её стоимость очень низкая: на Алиэкспрессе — около 50 рублей. Для сборки полноценного контроллера на её основе потребуется микросхема MC33035, полумостовые драйверы и Н-мост из полевых транзисторов. Я также собрал контроллер на этой микросхеме. Работает отлично, стабильно, колесо крутится как надо на различных оборотах. Но функционал микросхемы ограничен, если необходимо наворотить различные функции, вывод на дисплей скорости, одометр, расход батареи, то опять же возникает необходимость дополнительно подключить Ардуино или что-то аналогичное.
Схема с MC33035
Печатная плата
Готовый вариант
Итог
Главное преимущество контроллера на базе MC33035 — это простота в использовании. Просто покупаете микросхему, собираете Н-мост, спаиваете всё на плату с небольшой обвязкой — и контроллер готов. Если нужно просто запустить двигатель с ШИМ-сигналом и управлять им — оптимальный вариант.
Контроллер на базе Ардуино — вариант сложнее, понадобится писать логику, обеспечивать дополнительные защиты контроллера. Но для экспериментов, прототипов, дополнительного функционала, использования различных режимов работы двигателя — подходящий вариант. Поэтому я решил пока отложить MC33035 и продолжить работу с Ардуино.
Планы на будущее контроллера
Продолжая работу над контроллером, планирую сделать следующее:
- IGBT-транзисторы для H-моста вместо полевых транзисторов.
- Обвязку с защитами по току, перегреву и т. п.
- Полноценный круиз-контроль с возможностью выставлять необходимую скорость движения.
- Расходомер. Когда задаётся необходимое расстояние, а контроллер, исходя из этого значения и заряда аккумулятора, дозирует разряд аккумулятора на всём протяжении маршрута так, чтобы зарядки хватило.
Используемые источники:
- https://mysku.ru/blog/europe-stores/61076.html
- http://www.parkflyer.ru/blogs/view_entry/7952/
- https://habr.com/post/373397/