Векторное управление BLDC

4 months later
alexeykozin

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

первая проба-цель была запустить маленький коптерный моторчик в совершенно безсенсорном режиме тоесть совсем без обратной связи ни эдс, ни токов, ни холов.
посчитал табличку синусов в массив и крутил пвм углы на фазах как 0, 120, 240 градусов с шагом в 1 градус (тупо взял идею от немецкого брашлес гимбал). частоту шим сделал 50кгц

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

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

по прерыванию от любого из холов считываю значение PORTB в один такт (у меня все холы на нем пины 13,14,15 т.е. сдвигая на 13 бит взад я сразу получаю готовый степ холлов)
в массивчике сразу прописаны углы для каждого из шагов хол-сенсоров
как только холы срабатывают я пишу углы в пвмы фаз.
причем как то сразу угадал что ноль холов совпал с нулем электрического угла.
движок стартанул и отлично держит нагрузку,
попробовал развернуть фазу холов относительно электрической на 180 - движок стал крутиться в другую сторону
поигрался с углами опережения и офигел от разных эффектов (но это отдельный разговор) оптимальными оказались именно 0 для вперед и 180 для назад.
мне показалось это странным т.к. фронты импульсов холов для направления назад и направления вперед отличаются на 30 градусов. но работает и фиг с ним, пока забил )

дальше интересно было промежутки между степами холов поделить на 60 градусов, сделал это при помощи таймера, при поступлении сигнала от хола сравниваю число шагов и меняю прескалер так чтобы таймер насчитывал к следующему разу 60 шагов. получилось считает более менее ровно 59-61 выходит.
т.е. я имею положение по холам 0, 60, 120, 180,240, 300 градусов и поправку в диапазоне 0-60 и как сумму значение поворота ротора с точностью до градуса.

после того как я применил поградусное управление первый старт показал что я не угадал с углом опережения, задал теоретический для движения вперед -30 между углом с холов и электрическим градусов и вуаля - все завелось!
но осталась таки мистика почему такая разница у 6-шагового и 360 шагового режима.

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

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

ssilk
alexeykozin:

максимум синус будет в токах фаз?

Скорее всего - да. В самокатно-велосипедных синусных контроллерах в цепи одной из фаз стоит ACS712-30 или аналогичный.

alexeykozin

обычно ставят токовый резистор и микруху спецовый усилок к нему,
даже в китайских гироскутерах на фазах так сделано
ах, да забыл…

есть такая фиговина - гироскутеры, самый ходовой размерчик колес 10-10,5 дюймов, так вот пока зима на авито и подобных живой но помучанный жизнью скутер можно взять от 3тр руб.
а там внутри из полезного
сдвоенный контроллер на который юные дарования написали свою прошивку github.com/NiklasFauth/hoverboard-firmware-hack
два мотор-колеса с холами
10 баночная лион батарея с бмс
зарядное устройство
народ уже прочухал и вовсю пилят самоделки самокаты, самоходные телеги, снегокаты итд. т.к. ценник по цене двух покрышек)

кстати в прошивках юных дарований есть чтение датчиков тока, но дальше похоже эти данные никак не используюся. (я не нашел)
схемка vocke.tv/lib/exe/fetch.php?media=20150722_hoverboa…

alexeykozin

есть такой вопрос к знатокам кода регулей.
у меня есть переменная мощности
перед тем как выдать синусы пвм на фазы я умножаю значение пвм на коэф мощности
при этом когда я игрался с маленьким моторчиком от коптера диапазон мощности на старте 0,7 дает ампер нагрузки. когда раскрутился 0,4 при этом ток 0,2 ампера
но когда я подключил мотор-колесо от гироскутера то при 0.7 не стартует! только еле еле душа в теле. и потребление от источник 0,00А! смотрю двухлучевым на фазах - есть межфазовые периоды когда напруга 20 вольт, а не потребляет и тяги нет. попробовал опустить частоту до 10 кгц, еще хуже. поднял до 100кгц, вроде что то появилось но не существенно.
но как даю большую чем 20% скважность то начинается потребление мотором и тяга! начальное индуктивное сопротивление обмотки? это и есть пресловутая диаграмма “сиськи и треугольники” при управлении блдц?
т.е. минимальный пвм нужно поднять на некоторое значение и пусть будет не синус но что то типа что он хочет?

1 month later
amaora

Похоже остановлюсь на вот такой конструкции, радиатор на обратной стороне платы. Удалось проверить пока до 70А, греется до ~60°C, при этом вся плата обдувалась вентилятором.

Кому нибудь интересно взять регулятор на тест? У меня возможно будет лишний экземпляр.

стал внимательнее перечитывать тему - собственно вопрос ждать красивой осциллограммы по вольтажу не следует? максимум синус будет в токах фаз?

Слишком дорого делать синус в напряжении, пострадают другие параметры. Оставьте это каким нибудь прецизионным приводам где вибрация недопустима, или огромным промышленным двигателям где dU/dt портит изоляцию обмоток. Впрочем, добавить LC-фильтр на выход любого регулятора не сложно.

но как даю большую чем 20% скважность то начинается потребление мотором и тяга! начальное индуктивное сопротивление обмотки? это и есть пресловутая диаграмма “сиськи и треугольники” при управлении блдц?

Из текста сложно понять, что у Вас происходит. Схема ШИМ не должна так проявлять себя, она никак себя не должна проявлять пока не начнете упираться в 100% заполнения.

9 days later
alexeykozin
amaora:

Кому нибудь интересно взять регулятор на тест? У меня возможно будет лишний экземпляр.

очень интересно потестить, нет эталона для сравнения своих регуляторов/прошивок на предмет крутящего момента нагрева и кпд

вот нашел еще одно применение самодельным регуляторам.
radiokot.ru/circuit/digital/security/31/

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

  • у соседа по даче сгорел мотор на воздушном компрессоре (источник воздуха для покраски и плазморезки) 2,2 квт, трехфазник от одной фазы с конденсатором.
    купил новый, но тянет слабо, греется производительность крайне низкая.
    Для эксперимента взял частотник от чпушного шпинделя, настроил - и о чудо производительность компрессора выросла втрое, мотор холодный, на старте плавно разгоняется не перегружая сеть.
    но готовые частотники дороговаты, поэтому мысль - сделать вариант с высоковольтными ключами и прошивой под контроль асинхронного мотора.
    по ссылке выше - неплохое описание принципа и режимов работы
amaora
alexeykozin:

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

Нет, асинхронники это уже совсем не ко мне. Совсем другая схемотехника на такие напряжения и другие методы управления.

очень интересно потестить, нет эталона для сравнения своих регуляторов/прошивок на предмет крутящего момента нагрева и кпд

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