Контроллер PMSM/BLDC на Cortex(бюджетный)

Автор Frolikum, 16 Сен. 2016 в 22:47

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

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

Frolikum

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

Пока в качестве ядра f103c8t6.
Драйвер ключей DRV8302.
Думаю семисегментный дисплей на пять разрядов для параметрирования и диагностики на TM1637 и четыре кнопки.

SolarRay

Зачем изобретать с нуля, когда существуют открытые проекты, например вот:
https://endless-sphere.com/forums/viewtopic.php?f=30&t=36602
В нём реализован и синус, и нормальный газ, насчёт экрана не знаю. Там же, есть и другие, ещё где-то на немецком видел, но сейчас не вспомню где.

Frolikum



SolarRay
Благодарю. Познавательно.
Но моя задача не взять готовое а самому разобраться во всех нюансах. Полученный опыт и знания использовать дальше.

se80


Frolikum

se80, спасибо. Видел этот проект. А ссылка на рипозиторий давно в закладках. Приятно что дело движется и люди подтягиваются.

se80

[user]Frolikum[/user], дисплей имхо сильно гиморно - это отдельный проект. для начала можно бт интерфейс и апу на телефон .

Frolikum

Цитата: se80 от 18 Сен. 2016 в 02:17
[user]Frolikum[/user], дисплей имхо сильно гиморно - это отдельный проект. для начала можно бт интерфейс и апу на телефон .

Да, это мне тоже ближе но это всего лишь нюансы которые могут меняться по ходу дела. Если так то уж лучше зарезервировать место под esp модуль. Wi-fi как то посерьёзнее.

Пока за это не переживаю. Я больше за FOC думаю.

se80

[user]Frolikum[/user], foc в vesc уже реализован

Frolikum

После некоторого погружения стали ясны некоторые моменты:
1) На 103 камне хоть и можно но не нужно делать. Нет перспективы на вырост. Прочитал фразу что экономия на контроллере 3-5$ приводит к недо использованию машины стоимостью 70-150$ и решил переехать на stm32f303.
2)Дисплея не будет.
3)Drv8302 как она мне не нравилась все же слишком низковольтная. Хочется большего диапазона по напряжению. Понравились UCC21520 но пока запарки где купить, слишком новый продукт. На Али пока нету. Макет соберу на старичках IR2110.
4) Ну и вытикающий вопрос по измерению токов. Алегровские 712 датчики шумноваты, поэтому посматриваю в сторону шунтов и кого-нибудь из этого списка http://www.ti.com/lsds/ti/sensors/isolated-amplifier-products.page?DCMP=GOOGLE_TI&k_clickid=3d7fb7fe-93cb-4234-801a-26b05748006e&utm_source=GOOGLE&utm_medium=cpc&utm_term=isolation%20amplifier&utm_campaign=HPA_AMP_WW_P_E_ProductsTab&utm_content=3d7fb7fe-93cb-4234-801a-26b05748006e&gclid=Cj0KEQjwp4fABRCer93Klpaki94BEiQAsXJMGvAKSck1M0rV0ppVjIU_QfLtK9uFGZoXdjjUQR2wtfQaAt4c8P8HAQ

Если есть толковые соображения делитесь.

Работа хоть не спешно но идёт. Мотор у меня маленький всего 170Вт но для начала хватит. Пока разрабатываются девбоард с блоком питания.

VVK

Цитата: Frolikum от 15 Окт. 2016 в 23:09
поэтому посматриваю в сторону шунтов
А где шунты брать будете?

Frolikum

Дааа. Этот вопрос забыл внести в предыдущий пост. Шунты понадобятся настоящие. Для маленького движка прикупил smd2512 на 10 мОм но для больших токов не годятся. Этот вопрос пока тоже открыт и поиски ведутся. Возможно что цена качественных шунтов будет сопоставима с датчиками от lem. Надо проработать этот вопрос.

Просто хочется не изменять название топика, а с датчиками от lem контроллер уже не бюджетный :)

Frolikum

Картина по измерению тока такая:
ACS759 на Али 4.46$ за штуку при покупке десятка сразу и мы имеем готовое модульное решение(44,6$ десяток).

Шунт на 200 мкОм и пять ватт на маузере 1,5$ за штуку при покупке в десяток, плюс доставка и обработка заказа(около15$) плюс AMC1200 десяток на али 13,5$ итого мы имеем комплект но ещё с ним надо потанцевать. Питание на высокой стороне организовать и выходной сигнал надо масштабировать, благо f303 имеет усилители так что здесь хоть без дополнительных растрат.(43,5$ за десять комплектов). Тут конечно можно поправку внести что при покупке сотни комплектов они обойдутся вдвое дешевле.

Итак возьму пока ACS759  а там видно будет.

Frolikum

Решил сделать для удобства две платы. Процессорный модуль и Силовой блок. Процессорный модуль, так как его сложно изготовить ЛУТом, разведен и заказан на производстве, а основную плату на которой сетевей блок питания и силовой мост тоже развел и изготавливаю сам. Вот 3D модель силового блока. Из-за радиатора не видно ключи но думаю и так ясно где кто жить будет :)

Frolikum


VVK

Цитата: Frolikum от 15 Нояб. 2016 в 21:12
Уже в железе :-)
Почему трансформаторов 2 шт.? Еще непонятно, куда двигатель и питание подключаются. И датчика тока не вижу...

Frolikum

Трансформатор один и один фильтр по входу. А датчики пока acs759 не прилители решил поставить что есть и в аккурат под радиатором поместился корпус соик8 а в нем acs712 на 20а.
На втором фото если присмотреться то между платой и длинным радиатором корпуса

thrush007

Цитата: Frolikum от 15 Окт. 2016 в 23:09
3)Drv8302 как она мне не нравилась все же слишком низковольтная. Хочется большего диапазона по напряжению. Понравились UCC21520 но пока запарки где купить, слишком новый продукт. На Али пока нету. Макет соберу на старичках IR2110.
4) Ну и вытикающий вопрос по измерению токов. Алегровские 712 датчики шумноваты, поэтому посматриваю в сторону шунтов и кого-нибудь из этого списка http://www.ti.com/lsds/ti/sensors/isolated-amplifier-products.page?DCMP=GOOGLE_TI&k_clickid=3d7fb7fe-93cb-4234-801a-26b05748006e&utm_source=GOOGLE&utm_medium=cpc&utm_term=isolation%20amplifier&utm_campaign=HPA_AMP_WW_P_E_ProductsTab&utm_content=3d7fb7fe-93cb-4234-801a-26b05748006e&gclid=Cj0KEQjwp4fABRCer93Klpaki94BEiQAsXJMGvAKSck1M0rV0ppVjIU_QfLtK9uFGZoXdjjUQR2wtfQaAt4c8P8HAQ

3) Рассмотрите вариант ADuM5230. У них встроенный гальванически развязанный источник питания для верхних ключей.  У UCC21520 этого нет. Но в ADuM5230 нужно делать умощняющий каскад на NPN и PNP. Проблем с этим не вижу, два транзистора в корпусе SOT223, тянущие 3-4 А, много места не займут. С гальванической развязкой поспокойней будет, да и проще перепаять только сгоревший транзистор, чем транзистор, бутстрепный драйвер и микроконтроллер.
4) ACPL-C790 более распространен, чем AMC1200. Вообще, с ограничением тока вопрос непростой. Если порог ограничения тока нужен настраиваемый из прошивки, то придется все эти токи через АЦП затаскивать в микроконтроллер. А если можно жестко токи ограничить, то поставить шунты из нескольких 2512 0.01 Ом между каждым из нижних транзисторов и минусом моста, поставить компараторы для слежения за токами через резисторы и при срабатывании хотя бы одного из компараторов дергать вывод TIM1_BKIN у STM32. Тогда при перегрузке снимутся управляющие сигналы со всех транзисторов.

Frolikum

По поводу ADuM5230 то этот вариант рассматривался. Но отпал в пользу UCC21520 по двум параметрам: Propagation Delay,Minimum Pulse Width. Конечный вариант будет именно на них + dc/dc изолированные типа B1212S-1W.

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

Все усилители, компоратор, АЦП и ЦАП естественно находятся внутри МК.

Пока такая концепция.

thrush007

Цитата: Frolikum от 18 Нояб. 2016 в 23:51
Все усилители, компоратор, АЦП и ЦАП естественно находятся внутри МК.

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

Frolikum

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

D.J.Vova

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

on4ip

А в случае внешнего ротора резольвер какую конструкцию иметь будет? Да и цена револьвера не 2 копейки + мат обработка в самом контроллере.
В жизни все не так, как на самом деле.

Frolikum

Если хочется совсем просто определять положение вала то ещё ничего проще и дешевле чем датчики холла в моторе не придумали. Да положение будет +- но всетаки этого хватит. По поводу резольвера полностью согласен on4ip могу лишь добавить что обработка револьвера требует достаточно хорошего АЦП как по разрядности так и по скорости и не каждый бюджетный МCU сможет таким похвастаться. Да и резольвер не сообщает системе текущий вектор а только положение под которое его надо подстроить, так что без датчиков тока никак.
А по поводу контроллера, то я сейчас собрал маленькую отладочную плату на 500ват где все и планирую обкатывать.

D.J.Vova

Обычно используется спец. микросхема для обработки данных с резольвера, а на микроконтроллер уже готовые данные приходят. Так на электромобилях серийных сделано. Датчики там тоже токовые есть, но я почему всегда думал что они только для защиты стоят ) Наверное я просто не догоняю немного в векторном управлении, т.к. в особенности не вдавался сильно, считая что главное знать точное положение и грузить соответствующие фазы двигателя в нужных пропорциях. Поясните если не сложно в двух словах суть векторного управления без обратной связи по датчикам тока. Разве можно точно по этим сигналам управлять двигателям с приемлемым кпд ? Например я трогаюсь с большой нагрузкой (бардюр пытаюсь переехать с места) И как мне помогут фазные сигналы с шунтов ?

Frolikum

Вот отличная статья где все описано и мне кажется что лучше объяснить у меня просто не получится. Если есть желание то можно разобраться

https://m.geektimes.ru/company/npf_vektor/blog/269486/

D.J.Vova

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

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

Frolikum

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

on4ip

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

D.J.Vova

Для квадрокоптеров и прочих винтовых машин особо и датчики то не нужны, но в этом случае любой китайский ESC будет дешевле чем свой делать ) У меня без проблем работает 7 киловатный мотор с винтом 32*12, а вот если квадрик на котором грязь месить, то там точно без датчиков не обойтись....либо огромный запас по мощности иметь надо. Мне почему то показалась что вы контроллер именно для авто\мото делаете )

on4ip

Ну 7 кВт то копейки) китайские esc не есть показатель в некоторых приложениях даже для вентиляторной нагрузки.
В жизни все не так, как на самом деле.

Frolikum

#30
Хотел посоветоваться со знатоками по вопросу алгоритмики измерения токов. Ясное дело шим будет добавлять мусора в измерения поэтому вопрос в том как его минимизировать. Просто запустить измерения в цикле не лучший вариант. Можно синхронизировать по вершине и нулю счетного регистра шима но тогда получается всего два измерения за период а хотелось больше. Или и этого хватит. Шим 4500 отсчетов 16кГц. Получится 32000 измерений в секунду.

Можно конечно ещё между фронтами двух соседних шимов вставлять измерения так как есть три свободных регистра сравнения но это добавит вычислений на каждом такте шима. Только добавит ли это точности так как они постоянно будут плавать во времени.

Пока в раздумьях.

on4ip

Ну вопрос как быстро ваш алгоритм обсчитае эти измерения. 16 кгц вполне достаточно для работы вектора на 1000 гц. Сможете считать 2 раза за такт шим будет лучше.
В жизни все не так, как на самом деле.

Frolikum

В приводах siemens G120 обсчет происходит 8000 раз в секунду, конечно там и не этот камень но хочется немного по более так как для моего приложения необходима полоса пропускания регулятора минимум 2000 гц

on4ip

А проблема в чем? Мат модель сделали, посчитали регуляторы, посмотрели полосы и устойчивость на разных частотах дискретизации. Микроконтроллеров полно быстрых. Коллеги вектор с  ekf  крутят на 40кгц.
В жизни все не так, как на самом деле.

Frolikum

Пора выложить некоторые обновления. Заказывал производство плат процессорного модуля но из-за праздников они шли почти два месяца и только на этой недели я их получил. Почему было не купить готовые? Не нашёл подходящего варианта, да и своя рубашка ближе к телу. Развел с, как мне кажется, минимальными размерами и минимальной обвязкой. Зато "all pin out", в прямом смысле этого слова. Да и стоимость одного боарда в три раза меньше готового китайского, только самому паять пришлось.

D.J.Vova

Здорово смотрится ! ) А чем процессор центральный паяешь ?

Frolikum

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

Цитата:

На  примере  контура  тока  системы  «широтно-импульсный  преобразователь  –  двигатель  постоянного  тока»  было  показано,  что  если  взять  значение  тока  в  момент  начала  периода  ШИМ  и  в это  же  время  рассчитать  новое  управляющее  воздействие  для  ЭТОГО  периода,  то  с  ПИ-регулятором,  настроенным  на  предельное  быстродействие,  переходный  процесс  заканчивается  за  один  такт  без  перерегулирования.  Если  в  качестве  обратной  связи взять  выборку  с  АЦП,  отстоящую  на  1/8  от  конца  периода,  то  при  тех  же  настройках  ПИрегулятора  получается  такой  же  быстрый  процесс,  однако  из-за  того,  что  точка  измерения тока  не  совпадает  со  средним  значением  тока  на  данном  периоде,  выходная  величина  стабилизируется  с  систематической  ошибкой,  определяемой  формой  тока. Если  же  в  качестве  обратной  связи  для  следующего  периода  ШИМ  брать  средний ток  за  предыдущий  период,  что,  как  правило,  и  делается  в  цифровых  микроконтроллерных системах  управления,  то  быстродействие  снижается  приблизительно  в  два  раза.

Казалось бы вот оно - Эврика. Но я поставил некоторые эксперименты и получил что нехитрые вычисления у ядра занимают 10мкС, что на частоте шим 16кГц(62,5мкС) где-то одна шестая периода. И получается что если даже пренебречь временем работы АЦП то ядро уже даст результат только на оставшиеся пятьшестых. Останавливать таймер на это время? Это кажется неправильным. Короче эксперименты с регулятором тока намечаются те ещё.

TRO

#37
Если частота выборок и время реакции контура плиближается к частоте ШИМ, то для нивелирования непредсказуемо меняющейся (из за биений несинхронности) ошибки, нужно ставить аппаратный аналоговый коммутатор, который будет подключать сигнал от измерителя тока к накопительному конденсатору АЦП, только в малую часть периода ШИМ , синхронно с ШИМ. Например открыватся сразу после закрытия силового транзистора на время 1/10 периода ШИМ (или еще короче). При несинхронной работе АЦП, это может уменьшить ошибку (биений) белее чем на порядок.

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

Frolikum

Этот аналоговый коммутатор уже встроен в штатный АЦП и можно регулировать время захвата аналогового сигнала в довольно широком диапазоне. И так как на каждый из трех токов у меня выделен свой отдельный ацп то ошибки перезаряда этого самого входного конденсатора при смене канала оцифровки быть не должно так как нет переключения с канала на канал. АЦП отцифровывает только один канал. Я немного о другом в прошлом посте.

TRO

[user]Frolikum[/user] Да действительно, когда первый раз читал чуток недопонял.

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

on4ip

А чем не устраивает классическая работа и настройка регулятора тока? У вас какие то супер требования? 
Может синтезировать не просто ПИ регулятор а какого нибудь более высоко порядка с учетом дискртетизации и запаздываний тракта измерений?
В жизни все не так, как на самом деле.

Frolikum

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

on4ip

Сделайте обычный фок, настройте регуляторы на 10 тактов ШИМ или сколько получиться по техническому оптимуму, снимите отклик системы и в матлабе синтезируйте конечно шаговый регулятор, потом сгенерируйте С код регулятора в дискретном виде для МК.
В жизни все не так, как на самом деле.

Frolikum

Поделюсь тем что нашёл. Возможно многие это знают и используют но мне было полезно.

strr

Ребята, есть ли у кого то архив с STM32 FOC v4.2?
На сайте ST в данный момент есть только v4.3 - я по глупости скачал ее и заменил свою скачанную 4.2 на новую 4.3, и теперь очень страдаю, т.к. надо установить под готовый проект именно 4.2 ))
Помогите пожалуйста

Frolikum

Цитата: strr от 06 Фев. 2017 в 21:40
Помогите пожалуйста
Если был бы то с радостью. Мы тут свой велосипед изобретаем :).

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

on4ip

#46
Поищите диссипативное торможение или торможение полем, только нагрев двигателя в данных режимах оного.
Вот обсуждение.
http://electronics.stackexchange.com/questions/264252/non-regenerative-braking-on-a-pmsm-bldc-motor
В жизни все не так, как на самом деле.