No Image

St motor control workbench

СОДЕРЖАНИЕ
524 просмотров
12 декабря 2019

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

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

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

Обновленная библиотека управления электродвигателями STM32 FOC PMSM SDK v3.0 теперь поддерживает младшую недорогую линейку микроконтроллеров STM32F100хх «Value Line», что позволяет создавать оптимизированные по ценовому критерию системы. На основе линейки STM32F103хх «Performance Line» с объемами флеш-памяти более 256Кб теперь можно управлять сразу двумя двигателями, что также может быть актуальным в критичных по цене приложениях.

При использовании библиотеки разработчики могут быстро конфигурировать микроконтроллер для управления трехфазными электродвигателями PMSM (Permanent magnet Synchronous Motors) используя алгоритм FOC (Field Oriented Control) для эффективного управления. Функциональность библиотеки обеспечивает управление крутящим моментом и контроля скорости с возможностью переключения режимов «на лету». Дополнительным свойством библиотеки является запатентованный алгоритм измерения тока на одном шунте.

STMicroelectronics предоставляет программное обеспечение MC Workbench v1.0.2 — графический инструментарий для конфигурации библиотеки управления электродвигателями, упрощающий задачу построения системы. Для управления электроприводом предлагается оценочный набор STM3210B-MCKIT, на основе линейки микроконтроллеров STM32F103xx «Performance Line»

Управление PMSM с помощью STM32

Изложенный ниже материал основан на документации AVR447 от фирмы Atmel. Пример управления PMSM двигателем с тремя датчиками Холла для микроконтроллера STM32 базируется на информации, изложенной в этой документации.

Существует некоторая путаница в терминологии связанной с бесколлекторными двигателями. Само понятие “бесколлекторный двигатель” – весьма обширное и включает в себя несколько групп двигателей, в том числе и бесколлекторные двигатели с постоянными магнитами. Далее подразумевается бесколлекторные двигатели с постоянными магнитами.

В большинстве литературных источников двигатели с постоянными магнитами разделены на две категории по форме обратной ЭДС. Обратная ЭДС может быть трапецивидной или синусоидальной. Хотя терминология в литературе иногда противоречива, в большинстве случаев считается, что бесколлекторный двигатель постоянного тока (BLDC) имеют трапецивидную обратную ЭДС, а синхронный двигатель с постоянными магнитами (PMSM) имеет синусоидальную обратную ЭДС. И BLDC и PMSM могут возбуждаться синусоидальными токами.

Конструктивные отличия PMSM и BLDC Motors

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

Ожидаемый эффект

Если BLDC двигатель возбуждать синусоидальными токами, ожидается увеличение момента на валу, снижение вибрации, снижение шума, увеличение максимальных оборотов. Почему так происходит? Вспомним, как работает система управления BLDC двигателем. Для его управления используется блочная коммутация (block commutation). Т.е. При достижении определенного положения ротора происходит коммутация (напряжение подается на определенные обмотки) и магнитное поле статора смещается и остается неподвижным до момента следующей коммутации пока ротор не провернется до определенного положения. Таким образом, магнитное поле статора вращается не плавно, а шагами. Это доступно продемонстрировано на этом фрагменте видео.

Наглядно это можно объяснить с помощью двух магнитов. Магнит статора как бы тянет к себе ротор. При этом магнит статора перемещается скачками и ждет пока ротор приблизиться, потом совершает следующий скачок. При этом в момент скачка дистанция между магнитами увеличивается, а их магнитное взаимодействие снижается, а при приближении магнитное взаимодействие увеличивается. Из-за этого и получаются пульсации момента. Если сделать движение более равномерным, выдерживая между “магнитами” постоянную дистанцию, усилие между магнитами пульсировать не будет, и движение будет происходить с меньшими потерями. Благодаря синусоидальному возбуждению, и достигается плавность вращения магнитного поля статора, что и дает эффект.

Как генерировать синусоиду?

Возникает вопрос, как получить трехфазную синусоиду с управляемой частотой и амплитудой? Чтобы управлять трехфазным двигателем с помощью синусоидальных токов, для каждой фазы требуется генерировать независимые напряжения. Это делается с помощью трех полумостов, по одному на каждый вывод двигателя. Каждый полумост состоит из двух ключей (верхний и нижний), обычно это MOSFET транзисторы.

Для генерации определенного уровня напряжения используется ШИМ (PWM). В зависимости от скважности ШИМ можно управлять средним напряжением Vout. Но форма сигнала Vout будет повторять сигнал ШИМ, т.е. будет прямоугольной как ШИМ сигнал, а не гладкой. Если это напряжение подать на низкочастотный фильтр, то на выходе фильтра будет напряжение пропорциональное коэффициенту заполнения ШИМ верхнего ключа. Управляя скважностью ШИМ можно получить произвольную форму напряжения на выходе, в том числе и требуемое напряжение синусоидальной формы.

По некоторым причинам, в устройствах управления двигателем не используют фильтры низких частот. Во-первых, сам двигатель действует как фильтр. Индуктивность и сопротивление обмоток двигателя создают RL фильтр. К тому же механическая инерция двигателя и нагрузка создают “механический” фильтр низких частот. При достаточно большой частоте PWM, флуктуации скорости ротора будут абсолютно не значительные. Во-вторых, Протекание тока через низкочастотный фильтр, например RC-фильтр, привело бы к существенным потерям мощности на самом фильтре.

Поскольку при генерации PWM используется комплементарная работа двух ключей (верхнего и нижнего) нужно учесть тот факт, что для закрытия ключа требуется некоторое время. Поэтому нужно выключать открытый ключ, и через некоторое время, необходимое для его закрытия, открывать комплементарный ключ. Это время получило термин Dead-time. У микроконтроллера STM32 этот вопрос решает таймер, который занимается генерацией PWM.

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

Читайте также:  Датчик перехода через ноль

Генерировать синусоиды для каждой фазы – это прямой метод, но есть более эффективный способ. Мы будем генерировать три синусоидальных напряжения вывод-вывод (дифференциальное напряжение между двумя выводами) со сдвигом фазы на 120 градусов между ними. Таблицы 3-1 3-2 показывают, как этого можно достичь, не делая полные синусоиды для каждого вывода двигателя.

На рисунке 3-3 наглядно изображен этот алгоритм в сравнении с блочной коммутацией (как для BLDC).

У такого подхода есть два преимущества:
1) максимальная амплитуда сгенерированного напряжения выше, чем при генерации чистой синусоиды на каждой фазе. Как следствие получим более высокий вращающий момент и скорость.
2) Каждый вывод двигателя треть времени подключен к земле, что сокращает потери мощности на коммутацию.

При создании таблицы значений нужно найти компромисс между объемом таблицы и скоростью работы с ней. Поскольку форма волны одинакова для всех трех фаз, и отличается только сдвигом на 120 градусов, то можно сохранять в таблице только одну волну и использовать ее для расчета всех трех выходных напряжений. Однако, для сокращения времени на вычисления, принято решение сохранить в таблице значения для всех трех фаз. Так обеспечивается наиболее быстрая обработка данных. Используемая в примере таблица «синусов» имеет 192 значения для каждой фазы. Т.е. генерируемый сигнал будет разбит на секции и меть ступенчатую форму.

Этого вполне достаточно. При необходимости Вы можете скорректировать таблицу.

Таким образом, за один электрический оборот нам придется 192 раза вычислять и изменять значение PWM для каждой из трех фаз.

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

Датчики положения и их использование

Было бы идеально, если датчик положения ротора мог в любой момент информировать микроконтроллер о текущем положении ротора. В данном случае мы не имеем такой возможности. Три датчика Холла изменяют свое состояние 6 раз за один электрический оборот. Между этими событиями положение ротора достоверно не известно. Для определения текущего положения ротора между срабатываниями датчиков, мы вынуждены производить вычисления с учетом текущей скорости вращения ротора.

Определение скорости вращения

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

Фазовая подстройка

Удобнее всего фазовую подстройку выполнять, когда контроллер точно знает реальное положение ротора. В случае с тремя датчиками Холла – это момент изменения состояния датчиков. Именно в этот момент можно узнать точный угол ротора. Подстройка выполняется путем коррекции индекса положения в таблице выходных значений (в таблице синусов).

Блочная коммутация

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

Управление углом опережением коммутации

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

Программная реализация для STM32F103

Генерация PWM (TIM1)

Как и в предыдущем примере таймер TIM1 занимается генерированием PWM сигналов для 6 ключей. Так же TIM1 обеспечивает Dead-Time и отключает выходы таймера, генерирующие PWM сигналы, при перегрузке по току. Сигнал о перегрузке по току подается на вход таймера TIM1_BKIN.

Генерирование выходного напряжения (синусоид) (TIM4)

Генерирование выходных напряжений заданной формы для трех фаз двигателя выполняется путем изменения скважности PWM. В таблице PMSM_SINTABLE храниться 192 значений. Т.е. за один электрический оборот нужно 192 раза изменять скважность PWM для каждой из трех фаз. Таймер TIM4 отмеряет требуемое время и вызывает обработчик прерывания TIM4_IRQHandler, где и выполняются необходимые вычисления и установка новых значений PWM для всех трех фаз, и выполняется приращение индекса положения в таблице синусов PMSM_SinTableIndex.

Определение скорости вращения (TIM3)

Для того чтобы сообщить таймеру TIM4 необходимое время, нужно знать с какой скоростью вращается ротор. Таймер TIM3 используется для определения скорости вращения. Таймеры TIM3 и TIM4 тактируются одинаково. Это упрощает работу с ними. Таймер TIM4 должен “шагать” по таблице синусов (PMSM_SINTABLE) с такой скоростью, чтобы пройти все 192 пункта таблицы за один полный электрический оборот.

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

Читайте также:  Динозавр из фетра выкройка

Поскольку датчики положения изменяют свое состояние 6 раз за электрический оборот, мы можем измерять время необходимое для прохождения не полного оборота, а 1/6 оборота. И делить значение счетчика на 32 (192/6=32). Таким образом, измерение скорости будет выполняться 6 раз за один электрический оборот.

Датчики холла (EXTI9_5_IRQ)

Сигналы датчиков Холла генерируют прерывания. Обработчик прерывания определяет текущее актуальное положение ротора, считывает данные с таймера TIM3, корректирует скорость работы TIM4, и выполняет фазовую подстройку путем смещения индекса положения в таблице синусов PMSM_SinTableIndex. Поскольку частота вращения ротора изменяется, работа таймера TIM4 может вызывать смещение выходного напряжения по фазе. Т.е. выходная синусоида будет отставать или опережать актуальное положение ротора. Для устранения этого эффекта применяется фазовая подстройка. Поскольку в момент изменения состояния датчиков Холла мы точно знаем актуальное положение ротора, можно скорректировать текущее положение в таблице синусов путем коррекции PMSM_SinTableIndex. Соответствие данных датчиков Холла и положение в таблице синусов определено в таблицах PMSM_STATE_TABLE_INDEX_FORWARD и PMSM_STATE_TABLE_INDEX_BACKWARD для прямого и обратного направления вращения ротора.

Структурная схема

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

Примечание: Вопросы проектирования силовой части регулятора в этой статье не рассматриваются. Статья затрагивает лишь вопросы программной реализации управления PMSM. Пример принципиальной схема силовой части будет рассмотрен отдельно.

Видео

BLDC Motors и PMSM. Выводы

Возбуждение бесколлекторного двигателя с постоянными магнитами синусоидальными токами имеет несомненные преимущества. И позволяет повысить эффективность работы двигателя. Коррекция угла опережения (timing), позволяет находить компромисс между максимальным моментом на валу и скоростью вращения ротора.

Смотри также ВИДЕО:

Бесколлекторные моторы “на пальцах”

Что такое бесколлекторные моторы и как управлять бесколлекторными моторами:

The concepts of the new FOC are the same of the old one (see below explanations), change the implementations that now use HAL/LL libraries and there is a good integration in CUBE-MX.

Now there are two release of SW that are:
X-CUBE-MCSDK – STM32 Motor Control Software Development Kit.
Ready to use on all STM32, some part of it (Cordic, MTPA, ecc) are pre compiled.
X-CUBE-MCSDK-FUL – STM32 Motor Control Software Development Kit (MCSDK) – FULL source code – Registration and approbation needed for download

Last but not least there is also the:
ST-MC-SUITE -> FIND EVERYTHING YOU NEED IN ONE PLACE
ST-MC-SUITE lets users gather tutorials and documentation, store project setups (hardware and software), get links to download software solutions including the newly updated X-CUBE-MCSDK package.

We suggest you to read the below manuals:

We suggest to see this training (is on YouTube)
The SW is here.

During this training session, you will learn how to:

  • Characterize a 3-phase BLDC motor with the Motor Profiler
  • Get started with motor control development using the new SDK v5.x
  • Integrate your motor control design into the rest of your project using STM32CubeMX and the TrueSTUDIO® for STM32 />

X-NUCLEO-IHM09M1 is a motor control connector that provides an easy way to evaluate motor control solutions for three-phase motors by adapting the STM32 Nucleo board with an external ST motor control power board, thanks to ST morpho and motor control connector. The 34-pin motor control connector is compatible with all major ST motor control power boards, requiring an external digital section (MCU) to drive a three-phase motor. The DAC connector supports user code development and testing with easy access to the MCU peripherals. A LED is available for fault condition signaling or status indication.

FOC – old version that use the Standard Libraries.
Please, for new project use the new FOC Motor Control see above.

ST’s STM32 offers the performance of the industry-standard Cortex®-M core at the service of vector (or field-oriented) control (FOC) algorithms, widely used in high-performance drives.

The STM32 PMSM FOC SDK(STSW-STM32100), which includes the PMSM FOC FW library and ST MC Workbench, allows the user to evaluate the STM32 performance in applications driving single or dual Field Oriented Control of 3-phase Permanent Magnet motors (PMSM, BLDC).

STM32 PMSM FOC SDK is part of ST’s motor control ecosystem which offers a wide range of hardware and software solutions for motor control applications.
ST MC Workbench is a PC software which reduces the design effort and time in the STM32 PMSM FOC firmware library configuration.
The user, through a graphical user interface (GUI), generates all parameter header files which configure the library according to the application needs and can in real time monitor and change some variables of the algorithm.

  • Single/Dual simultaneous vector control (FOC).
  • Motor Profiler and one Touch Tuning for a fast startup of unknown motors.
  • Current reading topologies supported:
    1 shunt resistor;
    3 shunt resistors;
    2 ICS (isolated current sensor).
  • Speed/position sensors (Encoder and Hall) as well as sensorless operation (State observer, High frequency Injection HFI, On-the-Fly startup for fans) are supported.
    Speed and torque control.
  • Wide range of STM32 microcontrollers supported, the full list is detailed in RN0085, available on www.st.com.
  • Full customization and real time communication through PC software ST MC Workbench:
    New project creation starting from the board.
  • Motor control algorithms implemented for specific applications like Maximum Torque Per Ampere (MTPA), Flux Weakening and more.
  • Firmware ANSI C, MISRA compliant.

Introduction

A generic motor controller kit is show below.

  • The FOC SW/FW is here (STSW-STM32100), this package contain the:
  • ST MC Workbench (PC GUI configuration and monitor tool)
  • All the SW that is necessary for STM32xxx MCU
Читайте также:  Горячий клей без пистолета
  • The Inverter Board must be chosen to meet the motor characteristics.
    See here the STEVAL-IHMxxx. See also here.
  • ST MC Workbench is a PC software which reduces the design effort and time in the STM32 PMSM FOC firmware library configuration.
    The user, through a graphical user interface (GUI), generates all parameter header files which configure the library according to the application needs and can in real time monitor and change some variables of the algorithm.

    Introduction to motors topology

    A tutorial on the electrical motors is here.

    Introduction to FOC

    How to convert RPM to the Frequency of the sinusoidal current that must be generated for each phase, considering the number of pole pairs

    Suppose to have a 3 phase motor

    Suppose to have 20000 rpm, this means 20000 laps (mechanical) per minute
    and suppose that the motor is a 4 pole pairs.

    The formula for calculate the mechanical frequency (MF) is:
    MF = rpm/60
    20000 rpm ==> laps (mechanical) per minute ==> 20000/60 = 333.33 per second (mechanical frequency)

    To calculate the electrical frequency (Hz) is necessary multiplied the mechanical frequency by the number of pole pairs.
    Hz = MF x Number_of_Pole
    333.33 x 4 = 1333.33 Hz
    This is the frequency of the sinusoid of current that must be generated for each phase.
    But…
    The sinusoid must be (Nyquist) at least twice but as we know it is not enough… we say that takes at least 10-12 times, (most bigger is, the better is) to get an accurate reconstruction of the curve… the PWM frequency is our sampling frequency (in the case in which the vector control is done every period of PWM).
    So the PWM frequency is:
    Fpwm >= 1333.33 * 12 = 16 KHz
    Consider that 16 KHz is the minimum conditions.
    If it is possible the suggestion is: go up in frequency but take care the switching losses.

    Tutorial and Technical and MKT presentation

    • NUCLEO FOC KIT
    • Motor Contro v.4 – Technical and MKT presentation
    • Motor Control Solution Eval Boards
    • ST solutions for efficient motor control
    • Electric motors >RESERVED files
      The below DOC and FW are only for SILICA customers.
      If you is SILICA customer, please ask methe password.
      Please specify your Name, CITY, COUNTRY and your contact in SILICA
      If you are STM customers, please contact STM office.

    • STM32 – How to use FOC ver.4.2
    • STM32_3phase_FOC_PSM_MC_library_Tutorial_v4.1.0 (Italian version)
    • STM32_3phase PMSM MC library in deep explanation (MC_Library400_Training)
    • STM32_3phase_FOC_PSM_MC_library_Tutorial_v4.0.0
    • Training FOC 4.0 and Analog – Catania Luglio 2014
    • Motor Control v.2.1.200(Beta) – ACIM and PMSMNO LONGER AVAILABLE
    • V/F motor controlNO LONGER AVAILABLE
    • V/F ver.alfa1 for STM33F3xx see here the V/F in action
    • V/F ver.1.1.0 for STM32F3xx

    • FOC 4.0
      Only for SILICA customers
      The Ref.Cod. is: STM32_FOC_SDK_4.0.0_Confidential_140630
      IMPORTANT NOTE
      At the moment, this SW is only for SILICA customers.
      If you are SILICA customer send me an email and ask me:
      STM32_FOC_SDK_4.0.0_Confidential_140630
      Please specify your Name, CITY, COUNTRY and your contact in SILICA.
      If you are STM customer please contact directly your local office of STM.

    • Training FOC 4.0 and Analog – Catania Luglio 2014
      Only for SILICA customers
      The Ref.Cod. is: Training Motor control Catania 2014
      IMPORTANT NOTE
      At the moment, this SW is only for SILICA customers.
      If you are SILICA customer send me an email and ask me:
      Training Motor control Catania 2014
      Please specify your Name, CITY, COUNTRY and your contact in SILICA.
      If you are STM customer please contact directly your local office of STM.

    • Motor Control v.2.0 – ACIM and PMSM – NO LONGER AVAILABLE
      Only for SILICA customers
      The Ref.Cod. is: Motor Control v.2.1.200(Beta) – ACIM and PMSM
      IMPORTANT NOTE
      At the moment, this SW is only for SILICA customers.
      If you are SILICA customer send me an email and ask me:
      Motor Control v.2.1.200(Beta) – ACIM and PMSM
      Please specify your Name, CITY, COUNTRY and your contact in SILICA.
      If you are STM customer please contact directly your local office of STM.

    How to create a KIT for develop a Motor Control SW

    For make a kit for develop a motor control software follow the steps below.

    • Install the FOC sw:
      STSW-STM32100 – STM32 PMSM FOC Software Development Kit – MC library (UM1052) on your PC.
    • Choose a STM32 in according with the image below.
      Take in consideration this parameters (see yellow boxes):
    • Max FOC frequency
    • 1 or 3 shunt for monitor the current on the motor


    • Now run the FOC sw (see below)

      and choose a STM32 Evaluation Board according on the boards that you see in the image below.
      For example if you are decide that for your application is necessary an STM32F4 you have the possibility to choose the STM3240G-EVAL (see the red box below).


      In the colon: Power Board
      There is also a suggester Power Stage evaboard.
      NOTE:
      The characteristic is that in the STM32 board and also in the Power Stage board there is the rectangular connector for connect this two boards together.
    • Now you must choose a Power Stage eveboard according with the characteristics of your motor.
      STM release a lot of power stage boards, some are shown below.


    • A tipical HW KIT must be similart to the image below
    Комментировать
    524 просмотров
    Комментариев нет, будьте первым кто его оставит

    Это интересно
    Adblock detector