Контроллер для детского электромобиля своими руками

Электробайк. Контроллер двигателя своими руками

Как вы уже знаете из прошлых постов, у нас в компании есть DIY-движение. В свободное от работы время коллеги занимаются фрезеровкой печатных плат в домашних условиях, делают тепловизор на FLIR Lepton, а также решают семейные разногласия с помощью 4 контроллеров и 2 умных часов. Продолжим серию увлекательный историй! Сегодня я расскажу, как сделать контроллер к трехфазному двигателю электровелосипеда своими руками. Целью создания такого контроллера было:

  1. Изучение работы трехфазного мотора под управлением контроллера.
  2. Большинство контроллеров для электровелосипедов, представленных на рынке, — китайские. Они хоть и относительно дешевые (около 2.000 руб в зависимости от мощности), но являются неведомой коробкой, в которой неизвестно что происходит. И сразу к ней возникает очень много вопросов — экономично ли она потребляет и распределяет ток, какой у нее запас мощности, почему так сильно перегревается, преждевременно срабатывает защита по току и т.д.

В тоже время на рынке представлены европейские качественные контроллеры для электробайков. Они оснащаются расширенными функциями, работают на разных напряжениях и токах и их можно программировать. Устанавливаются они на сверхмощные электровелосипеды. Но цена у них кусается — 10-20 тыс. рублей.

В итоге я решил пойти своим путем: разобраться в устройстве контроллера, сделать его прототип, а затем попытаться сделать контроллер качественнее китайского контроллера. На текущий момент проект у меня в разработке только и на уровне прототипа, готового варианта пока нет. Буду рад услышать ваши комментарии и советы.

Применение

В электровелосипедах используются трёхфазные бесщёточные электродвигатели с датчиками Холла. Стоит отметить, что применение подобных трёхфазных двигателей достаточно обширно:

  • Бытовая техника
  • Оргтехника
  • Электротранспорт
  • Промышленность

Устройство двигателя

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

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

Конструктивно электродвигатели делятся на два типа: инраннеры и аутраннеры.

У инраннеров магнитные пластины крепятся на вал, а обмотки располагаются на барабане (статоре), в этом случае в движение приводится вал. В случае аутраннера всё наоборот: на валу — фазные обмотки, а в барабане — магнитные пластины. Это приводит в движение барабан.

Так как у велосипеда колесо крепится валом на раму, то здесь применителен тип аутраннера.

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

В двигатель устанавливаются три датчика Холла. Датчики реагируют на магнитное поле, тем самым определяя положение ротора относительно статора двигателя. Устанавливаются с интервалами в 60 или 120 электрических градусов. Эти градусы относятся к электрическому фазному обороту двигателя. Необходимо учитывать, что чем больше в двигателе обмоток на каждую фазу, тем больше происходит электрических оборотов за один физический оборот мотор-колеса.

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

Цикл работы

Чтобы привести в движение трёхфазный двигатель, нужно рассмотреть цикл его работы за электрический оборот. Итак, имеем три фазы — A, B, C. Каждая из фаз получает положительную и отрицательную полярности в определённый момент времени. Поочерёдно по шагам пропускается ток от «плюса» одной фазы к «минусу» другой фазы. В итоге получается шесть шагов = три фазы × две полярности.

Рассмотрим эти шесть шагов цикла. Предположим, что положение ротора установлено в точке первого шага, тогда с датчиков Холла мы получим код вида 101, где 1 — фаза А, 0 — фаза B, 1 — фаза С. Определив по коду положение вала, нужно подать ток на соответствующие фазы с заданными полярностями. В результате вал проворачивается, датчики считывают код нового положения вала — и т. д.

Читайте также:  Колпак для столба забора своими руками

В таблице указаны коды датчиков и смена комбинаций фаз для большинства электродвигателей. Для обратного хода колеса (реверса) достаточно перевернуть знаки полярности фаз наоборот. Принцип работы двигателя довольно прост.

Цикл двигателя представлен в gif-анимации.

Транзисторы и Н-мост

Но чтобы поочерёдно подавать ток на каждую из фаз и менять их полярность, необходимы транзисторы. Ещё нам нужна передача больших токов, высокая скорость переключения и чёткость открытия/закрытия затворов. В данном случае удобнее управлять затворами по напряжению, а не по току. Поэтому оптимальны полевые (MOSFET) транзисторы. Чаще всего их используют в контроллерах. Очень редко можно встретить комбинированный вариант транзисторов.

Для переключения фаз со сменой их полярностей используют классическую схему Н-моста (H-Bridge) из полевых транзисторов.

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

Из схемы видно, что мы не можем включить одновременно верхний и нижний ключ у одной и той же фазы: произойдёт короткое замыкание. Поэтому очень важно быстрое переключение верхних и нижних ключей, чтобы в переходных процессах не появилось замыкание. И чем качественнее и быстрее мы обеспечим переключения, тем меньше у нас будет потерь и нагрева/перегрева транзисторов H-моста.

Для запуска остаётся обеспечить управление затворами ключей H-моста. Для управления H-мостом нужно:

  1. Считать показания датчиков Холла.
  2. Определить, в каком положении какую пару ключей включать.
  3. Передать сигналы на соответствующие затворы транзисторов.

Прототип на Ардуино

Под рукой у меня была Arduino UNO, и я решил собрать контроллер на её основе.

Первым делом я подал на датчики Холла питание 5 вольт от Ардуино (его достаточно для датчиков). Сигнальные провода от датчиков подключил на цифровые пины Ардуино, написав простейшую программу для считывания и обработки сигналов с датчиков.

Затем собрал Н-мост из полевых NPN-транзисторов. Подвёл к мосту независимое питание на 12 вольт. Но при отладке, чтоб убедиться в работоспособности, я подключил напрямую шесть пинов 5V из Ардуино на затворы H-моста. У большинства полевых транзисторов затвор работает на 20 вольт. Так делать нельзя, потому что Н-мост будет плохо работать и перегреваться. Но для кратковременных тестов это пойдёт. Кое-как, с сильными перегревами и страшными звуками, вибрациями и толчками колесо медленно закрутилось. Начало положено.

Мостовые драйверы

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

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

В это же время я наткнулся на два варианта мостовых драйверов:

  • HIP4086
  • IR2101

Что касается HIP4086, то это полноценный мостовой драйвер, предназначенный для трёхфазного электродвигателя. Мне он показался несколько замороченным, и мои попытки использовать его в контроллере не увенчались успехом: он у меня так и не заработал. Углублённо разбираться в причинах не стал.

А взял я IR2101 — полумостовой драйвер, обеспечивающий работу нижнего и верхнего ключей для одной фазы. Несложно догадаться, что таких драйверов нужно три. К слову, драйвер очень прост в использовании, его подключение происходит безболезненно и легко. Получилась такая схема:

И готовый результат

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

Аппаратное прерывание

И тут я понял, в чём дело: Ардуино не успевает обрабатывать показания датчиков Холла! Поэтому необходимо было использовать пины Ардуино с аппаратным прерыванием. Так как у Ардуино УНО таких пинов всего два, а под датчики нужно три пина, надо взять Ардуино Леонардо или Искра Нео, где таких пинов — четыре штуки.

Переписав программу под прерывания и подключив Искру Нео вместо УНО, я повторил испытания.

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

Прототип на базе микросхемы MC33035

Параллельно с разработкой контроллера на Ардуино я рассматривал альтернативные варианты логической части контроллера. И это привело меня к микросхеме MC33035. Это старая разработка от Motorola, сейчас её выпускает ON Semiconductor. Создана специально для мощных трёхфазных двигателей.

Читайте также:  Плиточный клей для теплого пола своими руками

  • Отвечает за всю логическую часть контроллера
  • Считывает показания с датчиков Холла
  • Определяет положения вала
  • Выдаёт сигналы для затворов Н-моста на их драйверы
  • Имеет возможность подключения индикатора ошибок, перегрева
  • Обрабатывает и передает ШИМ-сигнал (PWM)
  • Осуществляет реверс (обратный ход колеса)

Одним словом, микросхема содержит всё необходимое для управления электродвигателем. Её стоимость очень низкая: на Алиэкспрессе — около 50 рублей. Для сборки полноценного контроллера на её основе потребуется микросхема MC33035, полумостовые драйверы и Н-мост из полевых транзисторов. Я также собрал контроллер на этой микросхеме. Работает отлично, стабильно, колесо крутится как надо на различных оборотах. Но функционал микросхемы ограничен, если необходимо наворотить различные функции, вывод на дисплей скорости, одометр, расход батареи, то опять же возникает необходимость дополнительно подключить Ардуино или что-то аналогичное.

Схема с MC33035

Главное преимущество контроллера на базе MC33035 — это простота в использовании. Просто покупаете микросхему, собираете Н-мост, спаиваете всё на плату с небольшой обвязкой — и контроллер готов. Если нужно просто запустить двигатель с ШИМ-сигналом и управлять им — оптимальный вариант.

Контроллер на базе Ардуино — вариант сложнее, понадобится писать логику, обеспечивать дополнительные защиты контроллера. Но для экспериментов, прототипов, дополнительного функционала, использования различных режимов работы двигателя — подходящий вариант. Поэтому я решил пока отложить MC33035 и продолжить работу с Ардуино.

Планы на будущее контроллера

Продолжая работу над контроллером, планирую сделать следующее:

  • IGBT-транзисторы для H-моста вместо полевых транзисторов.
  • Обвязку с защитами по току, перегреву и т. п.
  • Полноценный круиз-контроль с возможностью выставлять необходимую скорость движения.
  • Расходомер. Когда задаётся необходимое расстояние, а контроллер, исходя из этого значения и заряда аккумулятора, дозирует разряд аккумулятора на всём протяжении маршрута так, чтобы зарядки хватило.

Источник

Самодельный электромобиль — всё не так, как думаешь

Всем привет. Учась в университете я собрал маленький электромобильчик, ну или карт. Его фишкой было то, что всё управление электроприводом, включая тормоза было отдано самодельному контроллеру. И именно о том, как я делал этот маленький автомобильчик, и с какими подводными камнями столкнулся при постройке — хотелось бы рассказать в данном материале. Материал не претендует на уникальность, но для меня это был большой и интересный опыт.

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

Основные узлы

Тяговый двигатель — коллекторный универсальный. Может работать как от постоянного, так и от переменного тока. Рабочее напряжение 220 вольт.

Аккумуляторная батарея — 25 свинцово-кислотных ячеек по 6 вольт фирмы Casil, соединённых последовательно, по итогу получаем батарею 150-160 вольт. Она установлена сзади и перемотана синей изолентой, всё как положено 🙂

Двигатель приводил колёса в движение через червячный редуктор с передаточным числом i=10. На фото видно, что двигатель сочленен с редуктором с помощью небольшого валика, он был выточен специально.

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

Контроллер для блока управления

В принципе простой контроллер для электромобиля можно собрать и на «рассыпухе». Но хотелось бы, чтоб была возможность всё красиво настраивать с помощью программы, 21 век всё-таки. Путём долгих высоконаучных рассуждений за ужином я решил, что за основу контроллера стоит взять чип фирмы Microchip — pic16f877a, вот его краткие характеристики:

На тот момент я не очень шарил в электронике, и изначально хотел делать схему до безобразия тупой — двигатель включён или двигатель отключен, но вместо реле поставить транзисторный ключ, дабы ничего не щёлкало и не горело. Но решил, что риск оправдан, я ничего не терял да и просто хотелось сделать что-то стоящее. Так что остановился на связке микроконтроллер + силовой полевой транзистор в качестве ключа. Ручку газа и кнопку реверса вывел на руль.

Особенности схемы

При выборе транзистора я не скупился и выбрал IRFP4227PBF — N-канальный полевой транзистор (открывается положительным импульсом) на напряжение 200 вольт и максимальный ток 130 ампер. Корпус TO-247AC. Но, забегая вперед скажу — я смог сжечь и его.

PWM — что это такое и с чем её едят

Раз я использовал микроконтроллер в связке с полевым транзистором, то грех было не попробовать использование pwm/шим в схеме. Что такое шим? Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью методом пульсирующего включения и выключения прибора. — спасибо Википедии.

Читайте также:  Низкокалорийный десерт своими руками

Достоинство такого способа управления транзистором: он во время работы находится в двух состояниях — либо полностью закрыт, тока нет и ничего не греется, либо он полностью открыт и сопротивление его составляет несколько милиом, соответственно в тепло на самом транзисторе рассеиваются какие-то доли ватта тепла, ну или единицы ватт, схема едва тёплая при таком режиме работы. И такой процесс — отрыть/закрыть происходит тысячи раз в секунду. Это называется частотой шим. Так же есть такая вещь, которая называется «скважность». Переводя на человеческий язык — эта цифра показывает какую долю времени открыт транзистор. Если чуть углубиться — допустим у нас частота ШИМ-синала 1000 герц. Значит транзистор открывается и закрывается 1000 раз за секунду, и процесс переключения между включено и выключено 1/1000 доля секунды. Величина 1/1000 — это период частоты. А с помощью скважности мы показываем какую часть времени от периода транзистор открыт и через него течет ток. Для примера: в программе скважность 255 — это максимальная мощность, 127 — 50%, 0 — транзистор закрыт.

Для генерации такой частоты применялся встроенный в чип «физический» контроллер, хотя есть возможность программной реализации, но в этом случае контроллер только и будет делать, что генерировать на выводе частоту с заданным периодом и скважностью. А с использованием контрллера из переферии МК можно было и генерировать сигнал, и чтоб программа делала что-то ещё.

Чем дальше в лес, тем злее волки — от частоты ШИМ зависит и то, насколько будет эффективно работать электропривод. Я пробовал разные частоты, от 2 до 15 килогерц, каждый раз это менялось программно. Честно говоря особой разницы не успел заметить, но уверен что она есть. К сожалению данных по этому вопросу не удалось получить в достаточном количестве. Единственное, что заметил — с разной частотой пищала машина во время работы. Кстати, если кто-то замечал в метро, электробусах и поездах, что во время старта слышно гул, писк, завывание — это как-раз таки пищат обмотки двигателя из-за работы на частотах контроллера. Очень это заметно на поезде «Ласточка», который по МЦК ходит, во время старта.

Подводные камни в алгоритме работы

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

Выход из ситуации — вводим в программу условие, что перед переключением снимаем нагрузку выкручивая скважность PWM-сигнала на 0, перекидываем реле, и опять включаем мощность на заданный уровень. Именно так и работали тормоза на машине — реверсом. Только хардкор — никаких датчиков и энкодеров, ничего. А вот и фото релюшки, это вроде как реле стартера от жигулей. Если переключать их не под нагрузкой, то вполне работают и с высокими напряжениями, 160 вольт при 15 амперах держали, но допускаю, что контакты грелись ввиду малого сечения.

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

Соединяем контроллер с транзистором правильно

Оставалось только правильно сочленить транзистор с контроллером. Сделал я это несколько не правильно, через оптическую пару, напрямую. Но эта схема прокатывает при работе с низкими напряжениями, при высоких рабочих напряжениях постоянно сгорал затвор транзистора, да и для управления нужен двухтактный драйвер. Нормальная схема приведена ниже. Но тем не менее на один раз схемы с оптической парой хватило, каким-то чудом на тест драйве она работала, а выгорать начала сразу после него. Вот схема «правильного» драйвера, только в моём варианте ещё была развязка оптикой от контроллера. Картинка взята с Drive2:

Несколько интересных моментов

В конце концов получилось то, что на видео

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

UPD: Изменил ошибки в статье, спасибо всем, кто откликнулся

Источник

Оцените статью
Своими руками