Контроллер BLDC электродвигателя на базе платы гироскутера, прошивка, исходник.

Автор kor, 07 Фев. 2021 в 16:00

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kor

Написал программу управления  BLDC мотором, используя примеры с сайта:
https://blog.avislab.com/stm32-bldc_ru/
https://blog.avislab.com/stm32-pmsm_ru/
Проект сделан в CooCox 1.7.8 , процессор STM32F103RBT6 , сам контроллер-плата гироскутера (трехплатный вариант). Для управления моторколесом от гироскутера и другими подобными, имеющими такие-же сигналы и градусность с датчиков холлов. Управление пока только одним мотором (левым, где спикер).
Спойлер
Тип управления -блочное пушпульное ( в активной фазе ключуются шим-ом оба транзистора (верхний и нижний) , с модуляцией шим-а внутри блока (к концу блока заполнение шим уменьшается, чтобы убирать "трамплины" фазного тока возникающие в конце блока при обычной блочной коммутации, скрестил блочную и синусную коммутацию).  Программа содержит много комментариев.
  Имеется:
-Накат при полном сбросе курка газа.
-ПИ ограничитель фазного тока. (Честного измерителя фазного тока в схеме гироскутера нет, поэтому он расчитывается из среднего батарейного тока, делением на текущее заполнение ШИМ. )
  Пока нет:
-Защиты от обрыва земляного провода от курка газа.
-нет блокировки от включения при накрученном курке газа.
-нет контроля за напряжением батареи.

Как позже оказалось, в программе много глюков, поэтому она годится лишь как вариант для ознакомления. Далее есть более рабочий вариант.
       Контроллер включается замыканием тумблера (подключается к разъему вместо штатной кнопки включения).
Выход с курка газа через дополнительный токоограничивающий резистор 1...10к, подключается к разъему для гироплаты (около спикера) к 2-му пину (синий провод)(для ориентира первый пин красный +14в, четвертый пин черный общий минус). К нему-же припаивается конденсатор 0,1 мкф, второй вывод конденсатора припаивается на общий ("-"). Максимальное входное напряжение 3.3 в.
+5в и - для питания курка газа можно взять с разъема для Холлов.
  Предлагаю испытать и "допилить" программу до необходимых "хотелок".
Смены вращения мотора тоже пока нет, пока только перекоммутацией проводов от мотора и от Холлов, кто знает какие менять напишите.
Тут говорится что надо на разъеме холлов на моторе поменять местами желтый провод с зеленым, и фазные провода поменять местами синий с зеленым.
Спойлер
Фото платы с подключениями
Спойлер

Исходник и прошивка (первый неудачный вариант 00 )прилагается:
  Величины ограничения фазного тока при тяге и рекуперации, уровни курка газа, скорость замедления при частичном сбросе газа, можно изменять в файле pmsm.h
--------------------------------
Второй вариант проекта и прошивки (01) простая блочная коммутация с накатом, шимятся только верхние ключи.
  Настраивается:
Спойлер
батарейный и фазный токи, нижний порог отключения по напряжению батареи, времена отклика на курок газа, диапазон напряжения с курка газа.
  При аварийном сверхтоке, проседании напряжения батареи ниже порога, а также при включении с не нулевым положением курка газа, срабатывает триггерная защита с загоранием светодиода на плате. Выход из  нее только отключением питания.
  Накат получается автоматически (ибо коммутация односторонняя, не пушпульная, поэтому 3 нижних транзистора будут греться сильнее при большой нагрузке с малыми оборотами).
  Тормоза нет.
Если кто будет тестить, пишите замечания предложения.
Пороект исходник в CooCox и прошивка прилагаются ( вариант 01)
 

i

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

kor

Цитата: i от 07 Фев. 2021 в 18:05Отличное желание поделиться наработками. Если это выложить на github.com или на bitbucket.org
Попробую, просто пока не понял как это делается.

Pau62

Приветствую.
А с какой целью именно так:
Цитата: kor от 07 Фев. 2021 в 16:00в активной фазе ключуются шим-ом оба транзистора (верхний и нижний)
Поэтому и накат половинчатый.
Меня привлекает вот такое управление:
Спойлер




kor

Цитата: Pau62 от 07 Фев. 2021 в 18:47Поэтому и накат половинчатый.
Меня привлекает вот такое управление:
То что у вас на картинке это чистый синус. Я исходно так и делал, все полумосты ключуются пушпульно. Я отказался от синуса ибо увидел в нем только проблемы и недостатки (профита в моменте нет, нужно точно держать оптимальную фазу, эдс мотора должна быть синусоидальной, иначе появляются дополнительные потери (на синусной прошивке контроллер потребляет больше тока на холостом ходу чем блочный при тех- же оборотах.). Поэтому синусное управление я себе не хочу, хочу чтобы ежемоментно работали только 2-е фазы, а треья была отключена (висела в воздухе), тогда никаких проблем с "перетекающими" токами между фазными обмотками и связанными с ними доп потерями.  Жужжание блочного уменьшил с помощью модуляции шима, заодно и форма фазного тока улучшилась.
  По поводу половинчатого наката, накат сейчас полный , при полностью сброшеном газе все транзисторы запираются.
Вот картинка, исходно выдавался пушпульный синус (зеленая картинка). Теперь пушпульные блоки с модуляцией (красным)
Спойлер
Пушпульная коммутация для того чтобы не греть обратные диоды внутри транзисторов.

Pau62

Цитата: kor от 07 Фев. 2021 в 19:01Я исходно так и делал, все полумосты ключуются пушпульно
Я просто не обяснил.
По моей ( ну в общем не совсем моей)  роль нижних ключей - только тянуть к "-".
тогда накат будет и при промежуточном газе.
А в каком режиме общий нагрев будет больше - я не знаю пока.

TRO

Цитата: kor от 07 Фев. 2021 в 19:01(на синусной прошивке контроллер потребляет больше тока на холостом ходу чем блочный при тех- же оборотах.).
На правильном синусе должно быть все наоборот, так как синусное повторяет противоЭДС обмоток. И если синус хуже блочного, то дело не в синусе, а в конкретной реализации.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

edw123

Цитата: kor от 07 Фев. 2021 в 19:01
То что у вас на картинке это чистый синус. Я исходно так и делал, ...
Пушпульная коммутация для того чтобы не греть обратные диоды внутри транзисторов.
Может не совсем грамотно вопрос задаю, но это ведь не векторная модель управления?

kor

Цитата: Pau62 от 07 Фев. 2021 в 19:14По моей ( ну в общем не совсем моей)  роль нижних ключей - только тянуть к "-".
тогда накат будет и при промежуточном газе.
Накат при промежуточном газе будет  если полумосты ключевать не пушпульно а "односторонне", сбрасывать ток самоиндукции через внутренние диоды. Так и сделано в простых китайских контроллерах, не пушпульное ключевание а только верхние ( или нижние) транзисторы ключуются, но я не хочу так делать, не хочу греть диоды.
Рассматривал такой вариант коммутации: пока фазный ток маленький делается "односторонняя" коммутация, диоды сильно греться не будут. Как только фазный ток превышает некий порог-переключаемся на пушпульную коммутацию. Тогда при любом среднем сборсе газа будет полный накат, ибо ток уменьшится и коммутация переключится на "одностороннюю". Но пока не дошли руки до написания такого варианта програмы.
  Сейчас сделано так, что при частичном резком сбросе газа шим  сбрасывается не сазу а постепенно плавно 2-3 секунды (время задается в программе)  и происходит плавное замедление (подобно как сделано в эл самокате Сяоми).
  Реально проверить работу контроллера только не на чем сейчас.

kor

Цитата: TRO от 07 Фев. 2021 в 19:15На правильном синусе должно быть все наоборот, так как синусное повторяет противоЭДС обмоток.
На практике, у кого я спрашивал, потребление синусного варианта было либо больше либо почти равно блочному. (мотор Дензел D4500 например, вообще плохо дружится с синусным контроллером (судя по выложенной эпюре эдс этого мотора сильно далека от синуса). вобщем я пока для себя решил что синус мне не нужен, нет от него никакого профита в применении к электросамокату например)

Pau62

Ну форму ЭДС легко посмотреть. У гироскутерного я не могу на глаз увидеть отличие от моей картинки.

kor

Цитата: Pau62 от 07 Фев. 2021 в 19:44Ну форму ЭДС легко посмотреть. У гироскутерного я не могу на глаз увидеть отличие от моей картинки.
Есть начатый проект синусный с коммутацией как на вашей картинке (верблюжьи горбы), тоже по примерам с Авислаб, я его забросил (ток потребления на холостых был 2 А, против 0,58 А у блочного. Мне подсказывали что фазу надо подстроить точнее,  но я переключился на блочный. Будет время проверю этот синусный проект на работоспособность на железе и выложу, может вы допилите.

kor

Цитата: edw123 от 07 Фев. 2021 в 19:23Может не совсем грамотно вопрос задаю, но это ведь не векторная модель управления?
На картинке это способ формирования синуса, а далее этот синус можно генерить "жестко" привязавшись к моменту переклюбчения холлов (например). Это можно назвать "простым" синусом (не знаю как по научному правильно оно называется).
А можно добавить в программу векторное управление, тогда фаза синуса будет автоматически (с помощью программного векторного ПИД регулирования) поддерживаться оптимальной (сдвиг между фазным током и фазным напряжением будет всегда поддерживаться оптимальным). Я до векторного-синусного управления не дошел, для себя решил что мне хватит блочного (возможно еще введу в него опережение в зависимости от оборотов).

edw123

Цитата: kor от 08 Фев. 2021 в 11:39
...(с помощью программного векторного ПИД регулирования) поддерживаться оптимальной (сдвиг между фазным током и фазным напряжением будет всегда поддерживаться оптимальным). Я до векторного-синусного управления не дошел, для себя решил что мне хватит блочного (возможно еще введу в него опережение в зависимости от оборотов).
Да, я именно про это. Ясно.

Sonar

Цитата: kor от 07 Фев. 2021 в 19:24Как только фазный ток превышает некий порог-переключаемся на пушпульную коммутацию. Тогда при любом среднем сборсе газа будет полный накат, ибо ток уменьшится и коммутация переключится на "одностороннюю".
Только не забудьте про запаздывание измерения тока относительно поданой команды на уменьшение газа. Иначе могут быть заметные рывки. Имею ввиду тот момент, когда измеренное значение тока ещё выше некоего порога, при котором происходит переключение на односторонний ШИМ, а заданный уровень газа уже ниже ЭДС двигателя или вообще нулевой. Это длится очень короткое время, но лучше от этого сразу избавиться :) Я, кстати, в своем контроллере для куги, тоже использую этот метод переключения между двумя вариантами ШИМа, но ориентируясь на батарейный ток.
И ещё. Есть интересный момент, как люди борятся с шумом межфазного переключения при блочной коммутации:

Может есть смысл поиграться с этим начальным импульсом? Я его использую, он реально помогает, но не так сильно, как хотелось бы.
Kugoo S2 blue, 36v 20,8A/h, 2x600W, Prog disp v3.8, Prog drive v1.9 odo: 25405km.
Все материалы по альтернативным контроллерам для Kugoo S2: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

kor

Цитата: kor от 07 Фев. 2021 в 20:04Есть начатый проект синусный с коммутацией как на вашей картинке (верблюжьи горбы), тоже по примерам с Авислаб
Вот его исходник, там только вращение вперед , ток не ограничивается. И три провода обмоток мотора надо подключать к правым выходам на плате (ибо ТИМ1 используется в программе, не менял его на ТИМ8 который работает на левые выходы.) а кабель от холлов оставить на левом разъеме.
Оказалось, как мне и говорил Sonar, в примере с Авислаб исходно неверные данные в массиве с точками коррекции фазы. После корректировки фазы (новые значения в Phase correction table в pmsm.с , пришлось сдвинуть на четверть времени блока, на 8...9 ) ток холостого хода упал до 0,62..0,64 А).
( У блочного 0,58-0,6 А ток хх.)

kor

Цитата: Sonar от 08 Фев. 2021 в 16:10И ещё. Есть интересный момент, как люди борятся с шумом межфазного переключения при блочной коммутации:
Как видно по схеме их токомера, они измеряют мгновенное значение тока (вход токомера не заинтегрирован),  поэтому видимо он ловит все шумы и всплески тока. У вас в схеме как я помню нечто подобное но с использованием пикового детектора на диоде после ОУ.
У гирскутерной же схемы токомер сильно заинтегрирован (стоит RC цепь на входе), поэтому он фактически измеряет средний батарейный ток и не чувствителен к шумам и коротким всплескам. Поэтому вроде-как нет нужды бороться с шумами переключений.
  Далее фазный ток из среднего батарейного расчитывается путем деления на текущее заполнение ШИМ. Медлительность такого токомера компенсируется сглаживанием приходящего с курка газа сигнала, изменение шим программмой всегда происходит "медленно, плавно"  даже при резких перекидках курка газа.
Спойлер

Pau62

Не, у гирика фазный ток измеряется на сопротивлении каналов открытых нижних мосфетов.
Именно по этому у забугорных подельщиков макс. значение ШИМ ограничено, ну там они еще косячат в том смысле, что все измерения АЦП происходят при открытых нижних фетах. Поэтому их прошивки недодают мощи и скорости % на 15.
А, ну должен дополнить, что на каналах фетов истинного значения тока конечно не померить. Да оно им и не надо - для векторного управления и относительные значения годятся, да их можно еще приводить к боле - мене истинным на основе батарейного тока.