Все про контроллеры электросамоката | Схема, проверка, ремонт Об электросамокатах | Статьи VoltBikes

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

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

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

<code class="plaintext">//Пины ключей Н-мостов 
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() {
}</code>

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

Вопрос ремонтопригодности

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

Если поломка существенная, проще и дешевле заменить контроллер идентичной или универсальной моделью с подходящими рабочими параметрами. Обычно они рассчитаны на напряжение 24, 36, 48 В и мощность 200–1000 Вт. При желании можно купить набор электронных компонентов и собрать аппаратную часть контроллера самостоятельно. Но проще и безопаснее приобрести готовое изделие.

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

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

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

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

Больше про Хуавей:  Соглашение о подписке и конфиденциальности информации

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

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

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

Печатная плата

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

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

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

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

Применение

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

Принцип работы контроллера

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

Кроме основной задачи, этот контролирующий и управляющий элемент:

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

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

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

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

<code class="plaintext">//Пины ключей Н-мостов 
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);

}</code>

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

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

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

Больше про Хуавей:  Waiting for device - ошибка в adb или fastboot (андроид)

Данная микросхема:

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

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

Схема с MC33035

Печатная плата

Готовый вариант

Схема подключения и распиновка контроллера электросамоката

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

Рассмотрим схему подключения контроллера электросамоката и функции контактов на примере устройства, разработанного для управления трехфазными электромоторами с рабочими параметрами 36 В и 350 Вт. В таблице приведен перечень электрических разъемов контроллера, их назначение и цвета изоляционного покрытия используемых в них проводов.

№ п/п

Назначение

Цвет изоляции

1

Подключение к ручкам тормоза и стоп-сигналу. К общему жгуту проводов подключено 2 разъема.

Черный, желтый, красный.

2

Подсоединение к АКБ.

Черный, красный.

3

Ограничение предельной скорости.

2 белых провода.

4

Подсоединение к датчикам Холла электромотора.

Черный, синий, зеленый, желтый, красный.

5

Подсоединение к системе помощи педалям PAS.

Черный, зеленый, красный.

6

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

Черный, синий, зеленый, красный.

7

Подключение к ручке газа.

Зеленый, черный, красный.

8

Круиз-контроль.

2 синих.

9

Электропитание мотора – используется 3 проводка.

Зеленый, синий, желтый.

Алгоритм подключения и настройки контроллера электросамоката таков:

  1. Гнездо №9 подключаем к силовым проводам с идентичным изоляционным покрытием на электромоторе, а разъем №4 – к соответствующему ему гнезду от управляющих проводков.
  2. В случае применения пульта управления – подсоединяем его к штепселю №6. Если пульта управления нет, подсоединяем замок зажигания к красному и синему проводу гнезда №6.
  3. Ручку газа подсоединяем к штепселю №7, рукоятки тормоза и стоп-сигнал (при его наличии) – к №1.
  4. Чтобы ограничить предельную скорость, замыкаем 2 белых проводка в разъеме №3. Чтобы иметь возможность управлять возможностью ограничения предельной скорости, подключаем к нему двухпозиционный выключатель К-2Р.
  5. Для активации круиз-контроля подключаем кнопку на ручке газа к разъему №8. В дальнейшем для активации этой функции достаточно будет нажать и удержать кнопку на пару секунд, а для отключения – нажать на рукоятку тормоза.
  6. При наличии системы PAS – подсоединяем ее контакты к гнезду №5.
  7. Подключаем к АКБ разъем №2. Не допускаем замыкания черного и красного проводов питания!

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

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

Но чтобы поочерёдно подавать ток на каждую из фаз и менять их полярность, необходимы транзисторы. Ещё нам нужна передача больших токов, высокая скорость переключения и чёткость открытия/закрытия затворов. В данном случае удобнее управлять затворами по напряжению, а не по току.

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

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

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

Больше про Хуавей:  Схема электровелосипеда, комплектация и особенности установки компонентов -в этой статье.

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

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

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

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

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

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

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

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

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

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

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

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

Цикл работы

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

A , A–, B , B–, C , C–

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

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

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

1 Звездаслабоватона троечкухорошо!просто отлично! (1 оценок, среднее: 4,00 из 5)
Загрузка...

Расскажите нам ваше мнение:

Ваш адрес email не будет опубликован.