Векторное управление BLDC
Записал формы напряжения в двух фазах (трех каналов у моего осцилла нет), в разных масштабах по времени, чтобы было понятно. И еще формы на выходе усилителя шунтов, синхронно с напряжением этой же фазы.
Скважность в обоих каналах почти одинакова потому, что мотор был не нагружен. А вот при замере формы тока я его тормозил, иначе все плоское и виден только шум. Коэффициент для перехода к значению тока около 33 А/в.
Было бы понятнее, если б заполнение ШИМ на фазах было пропущено через ФНЧ. Тогда было бы видно форму напряжения на фазах. Ещё как вариант - выводить это дело через МК самого контроллера. Он же всем заведует и ему виднее что там где творится. Можно в нём всё обработать, зафильтровать, и вывести через отдельные ШИМ каналы. Напряжения и токи ведь интересуют именно на обмотках? А там треугольник обычно, и всё это пересчитывать с фазных нужно…
Вот, к примеру, я отлаживал ФАПЧ, и у меня два канала с регуля идут на звуковую карту в компе:
Вверху сигнал ошибки ФАПЧ (расколбас где-то ±15 градусов), а внизу - как раз сглаженное внутренними фильтрами противоЭДС одной из обмоток. Что на канал выведу - то и покажет. Могу токи сравнить, сигналы ОС, посмотреть как фильтры фазу крутят и т.п. Ну и на компе в саундфордже я могу полноценно посмотреть спектр и понять, какой фильтр лучше подойдёт для сглаживания того же шума ФАПЧ, к примеру, и т.д.
Из того, что я понял по теоретической части: Сперва я хотел прикрутить векторное управление, но не взлетело. Копнул глубже, и остановился на трапеции и своих алгоритмах, которые мне помог разработать симулятор этого мотора (самописный, для отладки алгоритмов в “сферической в вакууме” виртуальной среде).
Почему не взлетело? И какие алгоритмы в итоге выбрали?
Погрешности датчиков тока на эффекте Холаа не мешают? Я пробовал такие, их как акселерометр использовать можно, сигнал зависит от ускорения. Не говорю уже о проводах с током лежащих рядом.
Как я понимаю источников питания на плате контроллера у Вас нет, в угоду габаритам. Делать 12в для затворов необходимости нет, да и драйверов как отдельных элементов на плате тоже нет. Интересно, но мне многое не нравится.
Было бы понятнее, если б заполнение ШИМ на фазах было пропущено через ФНЧ. Тогда было бы видно форму напряжения на фазах. Ещё как вариант - выводить это дело через МК самого контроллера. Он же всем заведует и ему виднее что там где творится. Можно в нём всё обработать, зафильтровать, и вывести через отдельные ШИМ каналы.
Если надо понятнее, то могу на численной модели записать графики. Там они будут чистые, не отягощенные всякими особенностями. А с МК я делаю запись в RAM с необходимой частотой, а потом уже неспешно передаю через USART. Да можно и через DAC вывести, я даже пины на плате для этого предусмотрел, но как-то необходимости пока не было.
Почему не взлетело? И какие алгоритмы в итоге выбрали?
Уже взлетело. Я много чего перепробовал, с разным успехом. Начал с полного моделирования мотора в МК, но там слишком много рекурсий, и видимо модель вышла неустойчивой. К тому же мне не хватило ресурсов STM32F030. Потом уже, когда переписал под другой механизм - обнаружил некоторые ошибки грубые, из-за которых могло не заработать. Пока переписывал - построил виртуальную систему, которая помогла мне отладить код прямо на компе, и вернулся частично к прежней модели, но уже упрощённой. Моделирование показало, что fxpt_atan2() отлично работает и имеет хорошую устойчивость к шуму, но вот форма тока при фазовом сдвиге, относительно противоЭДС, сильно искажается и вносит серьёзные ошибки в вычисление фазы. У меня источник напряжения, не тока. Для нормальной работы следящих систем, регулирующих именно токи через две обмотки (третья работает пассивно) - не хватает скорости работы ОС. Решение так и не нашел. Поэтому я остановился на генераторе трёхфазного напряжения, амплитуда которого регулируется уже более медленной ОС по току. Это если нужно регулировать именно крутящий момент, а не обороты. Ну а ток уже получается какой получается, и дальше я с ним уже работаю как есть. Решил вопрос фильтрацией сигналов с датчиков синхронными RC-фильтрами второго порядка (программными). Чтоб они не искажали результат своей ФЧХ - точно такие же фильтры сглаживают и противоЭДС обмоток. В результате трапеция и всякие “НЁХ” на датчиках тока сглаживаются во что-то синусоподобное, с чем хорошо справляется арктангенс. При синфазных сигналах они вообще вырождаются в синус, и ошибка минимальна. ФАПЧ просто вычитает из фазы тока фазу противоЭДС, поэтому фильтры друг друга компенсируют. При этом следящая система компенсирует и фазовый сдвиг тока из-за индуктивности, идеально согласуя ток с положением ротора. Сложность вся именно в вычислении противоЭДС из комплексного напряжения между фазами…
Дополнительно думаю сглаживать ошибки ФАПЧ фильтром Бесселя 4-го порядка, уже за фазовым детектором (опять же моделирование показало что лучше). Он режет всё что выше частоты генератора, включительно. Вносит задержку в 3.5 периода генератора, поэтому ФАПЧ получается медленный на низких оборотах. Думаю ограничить минимальную частоту среза фильтра, чтоб на малых оборотах было шумно, но зато не тормозило. Пока ещё вожусь. Допишу быструю синхронизацию ФАПЧ с помощью частотомеров, сдвигающих частоту генератора к частоте противоЭДС так, чтоб она сразу оказалась в полосе захвата ФАПЧ и т.д.
Вот, собственно, и вся модель…
Погрешности датчиков тока на эффекте Холаа не мешают?
Вообще шикарные. Проблем пока не заметил. Но мне и не требуется разрешение в 24 бита, так что…
Как я понимаю источников питания на плате контроллера у Вас нет, в угоду габаритам. Делать 12в для затворов необходимости нет, да и драйверов как отдельных элементов на плате тоже нет.
Два питания. Одно 5V, с центральной платы с мозгом. Там общий преобразователь на питание всей требухи стоит. Плодить преобразователи я не стал. Если найду что-то привлекательное - влеплю. Ну и батарея подключается. Тут в этой схеме есть моменты, которые желательно вылизать. На сигнальные линии нужны символические RC фильтры, если выяснится, что захват у МК не имеет адекватного встроенного фильтра дребезга. Ну или как минимум резисторы для защиты сигнальных линий. Ещё верхние ключи в этих DrMOS, возможно, придётся продублировать внешними. Один датчик тока выкинуть можно, арифметика позволяет, но я выкидывать не стал. Решил что с ним преимуществ больше. Избыточность позволяет работать с лёгким клиппингом сигналов, да и шум равномернее. Мне так же не нравится не развязанная с силовой сигнальная масса - повышенные требования к трассировке центральной платы.
Потревожу немного эту тему. По поводу того, для чего планирую использовать контроллер, и причем здесь коптеры. Вот смотрел и выбирать варианты ВМГ и мне на данный момент видится например такой вариант, мотор ML 5010 300KV, проп 2055, питание 8S-12S.
Контроллер-регулятор будет четвертой ревизии, ожидаемые параметры:
- одноплатный 45мм x 45мм;
- вес 20-30г без конденсаторов и проводов;
- номинальный ток (+30°C) 50А;
- предел по напряжению питания 40-50в.
Уже давно сделал трассировку новой платы, но не решаюсь пока заказывать, думаю и ищу недостатки.
Меньше габариты/вес не получаются. В соответствии с ними подбираю другие параметры. Цена получается большой, все компоненты выбраны по характеристикам без учета цены, pcb еще 6 слоев со слепыми переходными.
Дальше, есть еще софтверная часть, которую в очередной раз переписываю, на этот раз упрощаю и выбрасываю например оценку формы ЭДС (она работает нестабильно и пользы от нее немного). Здесь назревает некоторая проблема. Каким параметром ВМГ надо управлять? Сейчас есть возможность управлять током (т.е. моментом) или скоростью. В обоих случаях это регулирование конкретной величины измеряемой в некоторых единицах, это не throttle от 0 до 100 %.
Итоговая задача управлять тягой, но при этом винт с неизменяемым шагом, изменять можно только скорость. А на тягу влияет как минимум воздушная скорость движения винта, которую можно оценить по потребляемой мотором мощности для поддержания заданных оборотов. Появляется такая идея, что надо управлять мощностью, чтобы приблизиться к регулированию именно тяги. Но как это хорошо сделать чтобы не проиграть в скорости переходных процессов, я пока не знаю.
Вот из-за таких идей и хочется свой контроллер мотора, с которого можно спрашивать все интересные параметры, а не только выдавать в него заданный throttle.
Полетный контроллер еще хочется сделать.
Для начала непонятна задача , что потребовалось делать свой пк и рег с нуля.
По мощности, создается впечатление, что нет понимания как работает коптер. Или коптер не нужен?
6 слоев со слепыми переходными
6 слоев конечно хорошо с точки зрения компактности и качества разводки, но имеет смысл делать например для большого количества мелких регулей, где сама плата будет минимальных размеров и можно будет вместить много таких в один стандартный заказ. А для себя или для попробовать выйдет очень дорого и/или долго. Все же для тестов и разработки лучше обходиться минимумом слоев.
в принципе пока еще есть смысл делат ьсамодельные регуляторы класса “высоковольтные”.
для 10 -15 банок липо.
подобные регуляторы могут быть востребованы в электротранспорте (электровелосипеды, электроскутеры мини-электромобили)
к примеру регулятор на 14 банок и 80 ампер стоит от 4тр за штуку
предыдущее решение на 2х платах ИМХО было более правильное …
на силовой плате можно использовать материал с толстой медной фольгой , а плате управления с тонкой … это сильно упростит и удешевит изготовление платы , даже если процессорная будет 4х слойной …
драйверы ключей и датчики тока можно вынести на процессорную плату , на силовой оставить только ключи и измерительные резисторы …
в принципе пока еще есть смысл делать самодельные регуляторы класса “высоковольтные”.
для 10 -15 банок липо.
не только высоковольтные …
эти регули нужны там где на малых оборотах (от нуля) требуется высокий крутящий момент , а датчиков в моторе нет …
конкретно для коптеров особого смысла в них не вижу , а вот для транспорта будет интересно …
Каким параметром ВМГ надо управлять? Сейчас есть возможность управлять током (т.е. моментом) или скоростью. В обоих случаях это регулирование конкретной величины измеряемой в некоторых единицах, это не throttle от 0 до 100 %.
Итоговая задача управлять тягой, но при этом винт с неизменяемым шагом, изменять можно только скорость. А на тягу влияет как минимум воздушная скорость движения винта, которую можно оценить по потребляемой мотором мощности для поддержания заданных оборотов. Появляется такая идея, что надо управлять мощностью, чтобы приблизиться к регулированию именно тяги. Но как это хорошо сделать чтобы не проиграть в скорости переходных процессов, я пока не знаю.
И даже более точная фраза
я пока не знаю.
Она точнее всего отражает суть проблемы.
Столько потрачено времени, столько проделано работы (уже и объяснять пытались не раз), а нет самого главного - понимания того, что требуется получить (как должно работать).
Вообще-то с этого всегда надо начинать. Т.е. делаются эксперименты на уже готовых или на макетах.
Понимается суть задачи.
Ищутся пути решения.
Создаются макеты.
Проверяется как выполняется задача, выявляются ошибки, просчеты.
Если выясняется, что решение неверное, то все по новой.
Если правильно, то отрабатывается готовый образец.
А у Вас. Все наоборот. Правда в Вашу защиту можно сказать, что такое часто у нас - увидели красивое слово, годится не годится не важно, оно же где-то рядом, значит можно использовать, тем более за бугром все юзают, а значит (только поэтому) это самое правильное решение. Такое характерно для начальников. Им как туземцам главное чтобы “блестело”, а грамотное решение не блестит, а значит на него не получишь денег.
В результате на выходе получается, что вроде работает, но пользователи только плюются на такие создания. Т.к. заставляют работать только на этом, а работать невозможно.
Но Вы же не начальник.
Да, я описал длительный процесс. Хочется быстро. Но, зачастую именно так быстрее получается требуемый результат.
главное чтобы “блестело”
В конце концов любой продукт должен блестеть. Иначе здесь быстро найдутся “умники”, скажущие, что у китайцев блестит лучше.
В конце концов любой продукт должен блестеть.
Ну да, в конце тоже надо, иначе как продашь. Но это отдельный вопрос. Я то сейчас про начальный этап.
Мне всегда было обидно за народ, который имея хорошее образование (познания) в какой-то области и не обладая умениями решать задачу в целом тратят зря время и силы. Когда можно было просто сделать первичный анализ и не проверять все решения подряд.
В данном случае напрашивается не понимание, что делает ПК в коптерах, а что делает рег и что от них требуется.
Да, конечно любой опыт хорошо. И вполне возможно, что полученный результат пригодится, но скорее в области отличной от коптеров.
Мне всегда было обидно за народ, который имея хорошее образование (познания) в какой-то области и не обладая умениями решать задачу в целом тратят зря время и силы. Когда можно было просто сделать первичный анализ и не проверять все решения подряд.
В данном случае напрашивается не понимание, что делает ПК в коптерах, а что делает рег и что от них требуется.
Интересно было бы узнать ваше понимание, что должен делать регулятор а что пк. А по мощности что не так?
в принципе пока еще есть смысл делат ьсамодельные регуляторы класса “высоковольтные”.
для 10 -15 банок липо.
подобные регуляторы могут быть востребованы в электротранспорте (электровелосипеды, электроскутеры мини-электромобили)
к примеру регулятор на 14 банок и 80 ампер стоит от 4тр за штуку
Это отдельно надо делать. То что есть не HV.
предыдущее решение на 2х платах ИМХО было более правильное …
на силовой плате можно использовать материал с толстой медной фольгой , а плате управления с тонкой … это сильно упростит и удешевит изготовление платы , даже если процессорная будет 4х слойной …
драйверы ключей и датчики тока можно вынести на процессорную плату , на силовой оставить только ключи и измерительные резисторы …
Возможно. Сложности тоже есть, громоздко получается. На больший ток я думаю да, нужно силовую часть на отдельную плату, которые можно было бы параллелить.
Интересно было бы узнать ваше понимание, что должен делать регулятор а что пк. А по мощности что не так?
Упрощенно для понимания.
ПК отвечает за удержание 3д позиции и перемещение в 3д координатах (перемещение можно даже считать производным удержания). И здесь ПК главный, а рег с ВМГ исполнители. Думать должен только ПК, а те исполнять.
Ну регу еще достается задача следить, чтоб мотор исполнял команду.
Что там с мощностью ПК сам разберется с помощью своих датчиков.
Все, что по мощности требуется, так это чтобы ее хватило у рега с ВМГ и желательно с запасом (и чем больше, тем лучше, конечно в рамках разумного).
Т.е. от рега требуется, чтобы он держал/менял обороты мотора по команде.
При работе на фиксированный винт мотор работает по винтовой характеристике. Это когда тяга (мощность) меняется при изменении оборотов. Естественно на разных скоростях она меняется, но ПК все равно будет сравнивать тягу через положение, так что знать истинную мощность ни к чему.
Отсюда следует, что чем точнее удержание оборотов регом, тем точнее удержание тяги (мощности) ВМГ. А значит ПК меньше работы на корректировку тяги. А так на сегодня ПК больше трудится, чтобы компенсировать неточный рег с помощью ПИДов. Совсем без контроля оборотов никто не делает, иначе ПК вообще не сможет работать. Но упрощать не всегда есть хорошо. Невозможно одну погрешность компенсировать точностью и скоростью в другом месте.
При работе по нагрузочной характеристике (с ВИШ) еще проще. Надо строго держать одни обороты как бы не менялась нагрузка.
Удержание позиции вала как у сервы это уже другая задача. И мешать все в одну кучу конечно можно, но все же стоит различать задачи.
Упрощенно для понимания.
…
Ну это известный вариант, управлять скоростью в регуляторе, а остальное в ПК. Только простые ESC например задают заполнение ШИМ а не скорость, а ток при этом гуляет как хочет в зависимости от нагрузки, и это не контролируется, что тоже мне не нравится.
Да и всякие другие параметры полезно принимать от регулятора в ПК, все те же обороты и ток (или мощность). Как минимум, чтобы диагностировать неполадки перед стартом.
Вот по поводу диагностики, так же пытаюсь делать в своем контроллере. Добавил делитель напряжения с фаз, можно будет делать тест, что выходные транзисторы целы и мотор подключен.
Так по мощности то что? Я думал дело в том, что для той ВМГ, что я назвал мой регулятор получается слишком тяжелый (~20г), большой и по току запас еще будет.
Удержание позиции вала как у сервы это уже другая задача. И мешать все в одну кучу конечно можно, но все же стоит различать задачи.
Да я не знаю кто мешает, я только сказал, что возможность есть. Да и характеристики получаются слабые у такой бездатчиковой сервы (нет достаточной точности и жесткого удержания позиции с высокой точностью), нужен или датчик положения/скорости или редуктор.
подобные регуляторы могут быть востребованы в электротранспорте (электровелосипеды, электроскутеры мини-электромобили) к примеру регулятор на 14 банок и 80 ампер стоит от 4тр за штуку
На это вот я даже не рассчитываю, что смогу сделать дешевле, даже если представить, что будет производство 1000+ штук. Кстати надо будет посчитать, что стоимость какая у меня получается. Приблизительно, эти образцы обходятся не менее 10тр, без монтажа, паяю сам по 1-2 шт.
а ток при этом гуляет как хочет в зависимости от нагрузки
Ток потребления в существующих гуляет не как хочешь, а строго в соответствии с нагрузкой.
Нагрузка дрейфует и ток также плывет. Конечно под запись точнее можно было бы сказать кто раньше начинает, но пока только глазами.
По началу своих тестов у меня было даже подозрение на китайский сервотестер, что дает плавающий сигнал.
Но когда сделал свой цифровой тестер с шагом 1 мкс и 1000 шагов на весь диапазон газа, то окончательно убедился в вине самого рега.
Да и всякие другие параметры полезно принимать от регулятора в ПК, все те же обороты и ток (или мощность). Как минимум, чтобы диагностировать неполадки перед стартом.
Принимать надо с определенной погрешностью, а не плюс минус километр. Толку от неопределенности.
Диагностировать перед стартом можно и существующие (при небольшой доработке), только надо знать как, чтоб дописать еще и программу.
Приблизительно, эти образцы обходятся не менее 10тр, без монтажа, паяю сам по 1-2 шт.
Посчитал цены поэлементно, получается 8469 + еще цена PCB. Из этого ~4500 это транзисторы и драйверы затворов. Дальше по цене идут усилители, МК и преобразователи питания.
Добрый день.
Готов поучаствовать материально в развитии проекта. Мне нужны контроллеры мощностью 2 кВт на напряжение питания 300 Вольт. В качестве силовой части готовые IPM модули планирую. Если на основе вашей прошивки сделаете, готов оплатить честно труд. Нужно 20 контроллеров.
Роман, чота не компилится
CC hal/adc.c
make: arm-none-eabi-gcc: Command not found
Makefile:70: recipe for target ‘/tmp/pmc/hal/adc.o’ failed
make: *** [/tmp/pmc/hal/adc.o] Error 127
и плата с ошибкой
“конфликт медных полигонов: медный полигон перекрывает другие дорожки в этом слое”
К стати транзисторы подешевле
www.terraelectronica.ru/product/1369965
И если кто делать соберется можно скооперироваться, 100 плат 11000 (по 110 р получается)
alexeykozin а по ссылке регулятор как понимать, 6-14s это нужно умножить на 3.7в получается питание 22.2-51.8 вольт?
А почему именно li-po? От автомобильного не будет работать? И как он синхронизируется? Датчиками или бездатчиковый? Есть опыт использования?
Чота это все сомнения вызывает, те векторные регуляторы что на алибабе встречаются меньшей мощности, а цена в р-не 10000.
Наверное какой нибудь кривой костыль который на низких оборотах вообще крутить не будет, или момент куриный будет, что думаете?
А вообще Роман молодец, очень интересный регулятор сделал, для дрона он наверное избыточен, а вот для мотор-колес самое оно, там где китайский с педалями ехать будет, этот на том же моторе сам заедет.
И для сервопривода тоже пойдет, только с экодером конечно. На мой взляд это будет лучший вариант для чпу фрезера чем китайские шаговые двигатели
Роман, чота не компилится
Переделываю, сейчас все сломано, можно собрать только старые ревизии. По датам посмотрите прошлый год. Планирую в ближайшее время это решить, зимой было мало времени.
В результате, в том числе, будет упрощено использование кода управления мотором в другом окружении (как библиотеки), хотя это всегда было не сложно.
и плата с ошибкой
Это не должно, разные версии KiCad? у меня 4.0.7. Протолкнул все мелкие изменения в схеме и плате в репозиторий, посмотрите еще раз.
И если кто делать соберется можно скооперироваться, 100 плат 11000 (по 110 р получается)
Будет интерес, я все лишние платы и бесплатно могу раздать. Из-за того, что 6 слоев и особый стек, надо будет большую заготовку заказывать.
Не в kiCad смотрю, easyeda.com вот они платы делают, у них там есть свой kiCad встроенный, посмотрите, удобно. Вот мануал можно глянуть если регится не охота docs.easyeda.com/en/Simulation/…/index.html
Зачем большую заготовку, 50х50 6 слоев 100 штук по 110 р получаются (там калькулятор есть посмотреть можно). Просто 1 штука 2500 стоит, 10 шт 5000, а 100 шт 11000. Вагодно сразу 100 заказать.
Да, и такое пожелание от юзера- сделать несколько версий платы. В частности кроме миниатюрной летающей, еще сухопутную, к которой можно радиатор прикрутить. И сразу 200 А а то и больше. А такие конкуренты ужо совсем другие деньги стоят ru.aliexpress.com/item/…/32818917152.html?algo_exp…
Да еще, нашел описание про эти реги, они на FOC.
из
FOC это более высокий кпд и меньше акустического шума, но это зависит от многих деталей, и выигрыш обычно не слишком велик. Главная причина лишь в том, что мне векторное управление нравится больше, чем 6-ти шаговое.
можно сделать вывод что они 6 ти шаговые? Тогда это ни айс, это значит что момент у них будет процентов 60-70 от возможного.
Будет интерес, я все лишние платы и бесплатно могу раздать. Из-за того, что 6 слоев и особый стек, надо будет большую заготовку заказывать.
Итререс есть, тыкать в кетайские регуляторы готовые прошивки и смотреть что получилось не интересно, интересно целенаправленно что то делать.