Силовая плата для частотника на FSBB30CH60

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

Основные характеристики:
– Полностью готовый силовой модуль: надо только подключить однофазную сеть 220В, электродвигатель и сигналы ШИМ!
– Измеритель тока на основе резестивного шунта для фаз U и V с гальванической развязкой (нужно для векторного управления)
– Низковольтные управляющие сигналы полностью гальванически развязаны: ШИМ, сигнал перегрузки и выходы датчиков тока
– Аппаратная защита от перегрузки
– Аппаратная защита (предотвращение) сквозного тока
– Светодиодики для высокого и управляющего напряжения питания
– Open-hardware проект с Eagle исходниками
Continue reading

Advertisements

FSBB30CH60 evaluation board

Finally, this is tested version for my power stage with smart 3-phase IGBT inverter bridge FSBB30CH60 from Fairchild. It was successfully tested with 1 kW induction motor. Hope, I will able to test it with larger motor with a new heat sink in meantime.

Main features:
– Fully integrated power stage: connect AC means, motor, PWM inputs and it works!
– Shunt current sensors for motor phases U and V (for vector FOC control)
– Control side is fully isolated: optically isolated PWM inputs and analog outputs
– Hardware short-current protection
– Hardware shoot-through current prevention
– LEDs for high voltage and control voltage
– Open hardware project with Eagle CAD sources
Continue reading

Реализация векторного частотного преобразователя для управления асинхронным электродвигателем с применением MATLAB и STM32F4

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

Именно в связи с желанием максимально упростить кодирование, было принято решение использовать MATLAB Embedded Coder для генерации кода на языке Си по модели Simulink.

Векторное управление реализовано по классической схеме в модели EmbeddedFOC.mdl

VFD_Struct

Входы модели:
theta — угловое положение ротора (электрический угол)
enable — если enable=1, то активизируется векторное управление, если enable=0 — то скалярное
I_a, I_b — токи фаз A и B с датчиков (в А)
scalar_freq — задание частоты для скалярного режима (в Гц)
omega_ref — задание частоты для векторного режима (в рад/сек)
i_sd_ref — задание тока намагничивания для векторного режима (в А)
scalar_ampl — амплитуда выходного напряжения для скалярного режима (нормированное значение, от 0 до 1)

Выходы модели:
u_abc — выходы напряжения фаз A,B,C (нормированное значение от -1 до 1)
i_s_dq — ток статора во вращающейся синхронной системе координат (в А)
slip — скорость скольжения
debug — выход для отладочных сигналов

Центральной частью является подсистема в блоке FOC

VFD_FOC

она реализует векторный алгоритм управления токами статора с ориентацией системы координат по полю (field-oriented control). Фактически подсистема состоит из трех ПИ-регуляторов: стабилизатора тока намагничивания i_{sd}, стабилизатора квадратурного тока i_{sq} и стабилизатора механической скорости вращения \omega, вырабатывающего уставку для тока i_{sq}. Получаемые значения напряжений u_{sd},u_{sq} пересчитываются в трехфазные питающие напряжения относительно неподвижной системы координат с помощью инверсных преобразований Парка и Кларка.

Для верификации алгоритма в EmbeddedFOC.mdl созданы две модели:
– pure_SimPowSys_model_scalar.mdl — управление двигателем в скалярном режиме,
– pure_SimPowSys_model_vector.mdl — управление в векторном режиме.

Некоторые технические подробности реализации:
– выбрана одношаговая схема интегрирования (ode1),
– время дискретизации модели — 1 мс,
– арифметика с плавающей точкой единичной точности (float)
– реальная время выполнения одного цикла алгоритма — порядка 150 мкс

В качестве аппаратной платформы выбрана плата STM32F4DISCOVERY, процессор STM32F4 которой позволяет реализовывать сложные численные алгоритмы и содержит всю необходимую периферию. Фрагменты кода для генерации ШИМ и считывания инкрементального энкодера взяты из библиотеки STM32 FOC firwmare libraries v2.0.

Подключение к микроконтроллеру показано на рисунке:

1

К выводу PC1 подключен переменный резистор для изменения уставки скорости. Кнопка User на плате включает векторный режим управления (первоначально после включения работает скалярный режим).

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

1 — +VCCA
2 — -VCCA
3 — U_dc (напряжение, пропорциональное на шине постоянного тока: 0,827 В для 280 В, 0,655 для 223 В)
4 — для датчика температуры (не подключено)
5,6 — I_dc (сигнал с датчика тока на шине постоянного тока)
7,8 — GND,
9 — PWM_H, фаза W,
10 — PWM_L, фаза W,
11 — PWM_H, фаза V,
12 — PWM_L, фаза V,
13 — PWM_H, фаза U,
14 — PWM_L, фаза U,
15 — ключ тормозного резистора, катод оптопары (через резистор)
16 — логический сигнал защиты по току на шине постоянного тока,
17,18 — GND,
19,20 — +5 V,
21 — управление вентилятором (не подключено),
22 — не подключено,
23 — GND_24V
24 — +24V
25 — GND_24V
26 — +24V

В качестве датчиков тока использовались Allegro ACS712 на ток 5A.

Что нужно сделать для того, чтобы настроить плату под конкретное железо:
1. Задать параметры POLE_PAIR_NUM (число пар полюсов двигателя) и ENCODER_PPR (число метод энкодера на оборот) в файле stm32f10x_encoder.c

2. Задать параметр I_MAX — ток, которому соответствует максимальное значение на входе АЦП датчиков тока (файл main.c)

3. Можно отредактировать определение переменной TimerPeriod для настройки частоты ШИМ-а (сейчас используется 5 кГц) — файл main.c

4. В подсистеме Observer [omega_slip] (модель EmbeddedFOC.mdl) во встраиваемой MATLAB-функции вписать постоянную времени ротора двигателя (tau_r), для этого понадобятся значения полной индуктивности ротора (индуктивность намагничивания + собственная индуктивность) и сопротивления ротора

5. В подсистеме FOC (модель EmbeddedFOC.mdl) подобрать параметры ПИ-регуляторов: PID Controller [flux], PID Controller [torque], PID Controller [speed].

6. Сгенерировать код для EmbeddedFOC.mdl (нажать Ctrl+B) в открытой Simulink модели

7. Переместить файлы EmbeddedFOC.c, EmbeddedFOC.h, EmbeddedFOC_data.c, EmbeddedFOC_private.h. EmbeddedFOC_types.h из каталога EmbeddedFOC_ert_rtw (он создается там где лежит EmbeddedFOC.mdl) в папку Matlab в проекте для Keil uVision

Важно еще заметить, что по сгенерированный код модифицирован следующим образом: в файле rtwtypes.h строка
typedef double real_T;
заменена на
typedef float real_T;
что дает использование арифметики с плавающей точкой одинарной точности, поскольку STM32F4 имеет встроенную поддержку только одинарной точности

Наладка производится в следующей последовательности:
1. Запускается вращение двигателя в скалярном режиме (enable = 0).
2. С помощью вывода фазовых токов на два канала ЦАП проверяется, что датчики тока работают правильно и АЦП измеряет.
3. Далее на ЦАП выводятся сигналы токов во вращающейся системе координат i_{sd},i_{sq}, проверяется, что эти сигналы является постоянным (с точностью до шумов АЦП). Если они синусоидальные, то проверяется с тех ли фаз измеряется ток, и нет ли инверсии измеряемого сигнала. Измеренные значения i_{sd},i_{sq} записываются.
4. Проверяется, что в результате измерения сигналов с энкодера выдается положительная механическая скорость вращения.
5. При выключенном вращении двигателя проверяется, что энкодер правильно измеряет угловое положение ротора.
6. В модели отключается выход PID Controller [speed] и в качестве уставки i_{sq} берется значение, полученное в п.3. Также для i_sd_ref берется значение i_{sd} измеренное в п.3.
7. Проверяется стабилизация токов i_{sd},i_{sq}, при необходимости настраиваются ПИ-регуляторы.
8. Подключается обратно PID Controller [speed], настраиваются его коэффициенты для стабилизации скорости.

Все вместе было проверено на мотор-редукторе SEW-Eurodrive DT71C4

SAM_0674

Скачать:
модели для Simulink,
проект для Keil uVision

статья с более связным описанием просходящего

О том как работает частотник

Удивительно, но в русскоязычной литературе нет ни одного человеческого описания того как функционирует частотный преобразователь для управления асинхронным электродвигателем в векторном режиме. Тем не менее, вполне возможно “на пальцах” объяснить принцип работы частотника, что я и попытаюсь сделать.
Далее я буду считать, что электродвигатель имеет одну пару полюсов, исправен и работает в нормальном режиме.  Continue reading