FOC-управление BLDC и PMSM
Field-Oriented Control управляет током двигателя в системе координат, связанной с магнитным полем ротора. Компонента Iq в основном создаёт момент, а Id управляет магнитным потоком. Это даёт плавный момент, низкий шум и высокую эффективность по сравнению с грубой шестиступенчатой коммутацией, но требует точного измерения токов, угла ротора и выполнения регуляторов в жёстком реальном времени. FOC — не библиотечная кнопка. Результат зависит от инвертора, шунтов, ADC timing, dead time, параметров двигателя, датчика положения и protections. Начинать нужно с требований привода и безопасного стенда.
Соберите паспорт двигателя и нагрузки
Нужны число пар полюсов, фазное сопротивление, индуктивности d/q или приблизительная L, back-EMF/flux linkage, номинальные/пиковые токи, скорость, момент, инерция и температурные пределы. Для нагрузки — профиль момента, ускорение, торможение, возможность обратного вращения и regenerative energy.
Параметры datasheet проверяют измерением, особенно у недорогих моторов. Ошибка числа пар полюсов сразу даст неверный electrical angle. Сопротивление растёт с температурой, а магниты и датчики имеют свои ограничения.
От механического угла к электрическому
Электрический угол равен механическому, умноженному на число пар полюсов, плюс offset датчика. Для encoder/Hall этот offset калибруют: прикладывают известный вектор тока, фиксируют ротор и определяют нулевое положение. Неверный знак или порядок фаз приводит к обратному моменту и большому току.
Угол должен быть доступен к моменту вычисления PWM. Задержка измерения, фильтра и передачи энкодера создаёт phase error, растущий со скоростью. Иногда используют prediction.
Clarke и Park простыми словами
Три фазных тока с суммой около нуля преобразуют Clarke в две неподвижные координаты α/β. Park поворачивает их на электрический угол, получая Id/Iq. PI-регуляторы сравнивают токи с заданиями и формируют Ud/Uq; inverse Park и space-vector PWM переводят напряжения в duty трёх фаз.
Вычисления должны укладываться между ADC sample и обновлением PWM. Аппаратные CORDIC/FMAC, DSP instructions и DMA уменьшают задержку, но важнее детерминированная последовательность.
Один, два или три шунта
Три low-side/inline шунта дают больше наблюдаемости, но стоят дороже и усложняют common-mode. Два шунта позволяют восстановить третий ток по сумме; в некоторых секторах окно измерения сужается. Один DC-link shunt самый экономичный, но требует реконструкции и ограничивает duty/режимы.
Выбирайте по минимальному measurable pulse, скорости ADC и диапазону. Усилитель должен восстановиться после common-mode transient. Kelvin connection, симметричная трассировка и синхронный sampling критичны.
Когда снимать ток
ADC trigger связывают с центром стабильного PWM-интервала, вдали от switching edge и reverse recovery. Blank time учитывает settling усилителя и ringing. При высоком modulation index доступное окно исчезает; firmware должна перестроить sampling либо ограничить voltage vector.
Проверьте реальную временную диаграмму GPIO/ADC/PWM осциллографом. Если samples разных фаз сняты в несопоставимые моменты, текущая реконструкция будет ошибочной даже при точном ADC.
Датчик положения или sensorless observer
Encoder даёт точный угол на низкой скорости и при старте, но добавляет стоимость, кабель и механику. Hall sensors просты, но дают грубый угол; интерполяция улучшает плавность. Resolver устойчив к тяжёлой среде, однако требует excitation и signal conditioning.
Sensorless observer оценивает угол по напряжениям/токам и back-EMF. На нулевой/малой скорости сигнал слаб, поэтому нужен open-loop alignment/startup или high-frequency injection. Для нагрузки, которая должна стартовать под неизвестным моментом, encoder часто надёжнее.
Внутренний и внешние контуры
Current loop самый быстрый; speed loop работает медленнее, position loop — ещё медленнее. Bandwidth разделяют, чтобы контуры не спорили. Сначала настраивают измерение и current PI при заблокированном/контролируемом роторе, затем скорость и положение.
Добавьте anti-windup: когда voltage vector достигает предела DC bus, PI не должен бесконечно накапливать ошибку. Feed-forward и decoupling улучшают динамику, но только после базовой устойчивости.
Dead time и компенсация
Dead time предотвращает сквозной ток, однако искажает среднее фазное напряжение в зависимости от направления тока. На малой скорости это создаёт torque ripple. Компенсация учитывает знак тока и фактические задержки драйвера/ключей.
Значение задают по worst-case propagation delay, температуре и разбросу. Уменьшение до красивой формы тока без проверки shoot-through опасно.
Field weakening и regenerative braking
Выше base speed voltage limit не позволяет поддерживать нужный Iq; отрицательный Id ослабляет поле и расширяет скорость ценой тока и потерь. Ограничения двигателя и inverter должны быть известны. Неправильный field weakening может размагнитить магниты или превысить напряжение.
При торможении энергия возвращается в DC bus. Батарея/БП может не принять её, и напряжение вырастет. Нужны brake resistor, active front end или ограничение deceleration.
Аппаратные защиты
Fast overcurrent comparator должен отключать PWM независимо от firmware. Дополнительно контролируют DC bus OVP/UVP, gate-driver fault, phase short, overtemperature и потерю датчика. Safe torque off, если требуется, проектируется как safety-функция отдельно.
После fault логируют контекст, но повторный запуск разрешают только для безопасных классов. Автоматический retry при заклиненном моторе способен перегреть ключи и обмотку.
Идентификация параметров и версия мотора
Если SDK автоматически измеряет R/L/flux, задайте допустимые диапазоны и проверку результата. Loose rotor, подключённая нагрузка или saturated current sensor могут дать неверную модель. Сохраняйте параметры вместе с точным part number/ревизией двигателя, DC bus и температурой. Замена поставщика под тем же механическим размером требует повторной идентификации.
Для observer определите область устойчивого положения/скорости и правило переключения open-loop→closed-loop. Логируйте angle error, current residual и saturation. Алгоритм должен отказаться от запуска, если параметры вне допуска, а не продолжать с опасным током.
Критерии приёмки привода
Укажите torque/speed ripple, start success при worst-case load, settling, acoustic noise, efficiency и максимальную температуру. Fault tests включают open/short phase, потерю angle sensor, DC bus surge, заблокированный ротор и reversal. При каждом тесте проверяют hardware trip latency и отсутствие превышения SOA ключей. Отдельно подтверждают control-loop timing при включённых коммуникациях/логировании, чтобы отладочная нагрузка не скрывала deadline miss.
Практический запуск
Начните с низкого DC bus и ограниченного лабораторного источника. Проверьте порядок фаз, polarities shunts, encoder direction и offset. Затем замкните current loop с малым заданием, измерьте currents и duty. После устойчивости добавьте speed loop.
Нагрузочные тесты включают старт под моментом, резкое ускорение/торможение, минимальную/максимальную скорость, нагрев обмотки и потерю датчика. Параметры сохраняют с версией конкретного двигателя.
Примеры из каталога ChipBaza
STSPIN32G4 объединяет STM32G4 и трёхфазный gate driver, поддерживая sensored/sensorless FOC с одним, двумя или тремя шунтами. DRV8323HRTAR — пример трёхфазного gate driver Texas Instruments, которому нужен внешний контроллер алгоритма. Это разные уровни интеграции.
Выбор требует проверки bus voltage, gate current, current-shunt amplifiers, protections, package и motor-control SDK. Наличие встроенного MCU не заменяет внешние MOSFET и тепловой расчёт.
Что закрепить в комплекте привода
В одной конфигурации связывают motor MPN/winding, encoder/Hall mapping, power stage, current shunts/offsets, PWM frequency, dead time и regulator/observer parameters. Производственный end-of-line test проверяет phase order, current calibration, angle sensor и короткий controlled spin. Если motor/encoder заменён, параметры не копируют автоматически. Храните firmware+parameter checksum на устройстве и в журнале, чтобы сервис мог восстановить точно квалифицированную пару.
Для каждого комплекта определите допустимые разбросы сопротивления, индуктивности и encoder offset. Выход за диапазон блокирует автоматическую прошивку параметров и отправляет ось на диагностику, а не маскируется более высоким current limit.
Типовые ошибки
- не проверять число пар полюсов и порядок фаз;
- снимать ADC рядом с switching edge;
- выбирать один шунт без оценки измерительных окон;
- запускать sensorless под полной нагрузкой без алгоритма low-speed;
- настраивать speed loop до устойчивого current loop;
- игнорировать anti-windup и voltage saturation;
- не предусматривать путь regenerative energy;
- полагаться на firmware вместо быстрого hardware overcurrent.
Чек-лист FOC-привода
- измерены параметры двигателя и профиль нагрузки;
- откалиброваны current offsets, angle offset и направления;
- ADC синхронизирован с PWM и имеет settling margin;
- current loop укладывается в временной бюджет;
- dead time рассчитан и проверен при температуре;
- реализованы voltage/current/thermal/fault limits;
- регенерация согласована с DC bus;
- стендовые тесты выполнены от низкого напряжения до полной нагрузки.
Источники для технической проверки
Параметры и ограничения сверяйте с актуальной документацией производителя для полного артикула и нужного исполнения.
Следующий шаг
Проверьте артикулы и количество до отправки заявки
Загрузите спецификацию в BOM-сервис или пришлите полный код производителя менеджеру. Если точное совпадение не доказано, позиция останется на ручной проверке.