1. 课程导入与工程全景

1.1 什么是 FOC(矢量控制)

FOC,全称 Field-Oriented Control,中文叫磁场定向控制,也叫矢量控制。说白了,就是让电机像直流电机一样好控制,但又能保留交流电机结构简单、成本低的优点。

我刚开始接触电机控制时,总觉得这名字很唬人。其实核心思想就一句话:把定子电流分解成两个互相垂直的分量——一个负责产生转矩(交轴 Iq),一个负责产生磁场(直轴 Id)。这两个分量解耦之后,你就能独立控制转矩和磁通,跟控制直流电机一模一样。

为什么会这样?因为三相交流电机的数学模型在静止坐标系下是强耦合、非线性的,直接控制很难。FOC 通过坐标变换,把三相静止坐标系(ABC)先变到两相静止坐标系(αβ),再旋转到与转子磁场同步的旋转坐标系(dq)。在 dq 坐标系下,电流分量就变成了直流量,用 PI 调节器就能轻松搞定。

核心变换路径:

三相静止 ABC → 两相静止 αβ(Clark 变换)→ 两相旋转 dq(Park 变换)

反过来:dq → αβ(逆 Park)→ 三相 PWM 占空比(逆 Clark + SVPWM)

嗯,这里要注意:坐标变换的数学推导虽然看起来复杂,但 TI 的 C2000 系列 DSP 有硬件加速单元,一条指令就能算完 Clark 和 Park 变换。我当年在项目里手算验证时还觉得挺麻烦,后来发现直接用库函数就完事了。

FOC 核心控制框图 三相电流 Clark 变换 Park 变换 PI 调节器 逆 Park SVPWM 三相逆变器 永磁同步电机 反馈:转子位置 θ 用于 Park 变换 速度环输出作为 Iq 参考值

1.2 FOC 相比方波/正弦波驱动的优势

你想想看,方波驱动和正弦波驱动有什么问题?方波驱动在换相时有明显的转矩脉动,电机嗡嗡响,低速时尤其明显。正弦波驱动虽然好一些,但电流波形还是不够理想,效率上不去。

FOC 的优势,我列个表你就清楚了:

对比项 方波驱动 正弦波驱动 FOC 矢量控制
转矩脉动 大(约 15%~30%) 中等(约 5%~10%) 极小(< 3%)
低速性能 差,容易抖动 一般 优秀,可零速带载
效率 低(约 70%~80%) 中等(约 80%~85%) 高(约 90%~95%)
噪音 大 中等 安静
动态响应 慢 中等 快
控制复杂度 低 中等 高(但 DSP 可轻松应对)

我在做工业伺服项目时遇到过一个问题:用方波驱动的方案,电机在 10 RPM 以下根本没法用,一卡一卡的。换成 FOC 之后,同样的电机,0.1 RPM 都能平稳运行。这就是 FOC 的硬实力。

个人经验:如果你做的是风机、水泵这类对动态响应要求不高的应用,正弦波驱动可能够用。但如果你做伺服、机器人、电动汽车,FOC 是绕不开的选择。我建议直接上 FOC,省得后面改方案。

1.3 TI C2000 系列 DSP 在电机控制中的江湖地位

说到电机控制芯片,TI 的 C2000 系列绝对是老大哥。为什么?因为它是专门为实时控制设计的,不是通用 MCU 改过来的。

C2000 的核心优势:

  • 硬件加速单元:三角函数、除法、开方都有专用硬件,一条指令搞定 Clark/Park 变换
  • 高精度 PWM:HRPWM 分辨率可达 150 ps,死区时间可编程
  • 高速 ADC:12 位/16 位,采样速率可达数 MSPS,支持多通道同步采样
  • eQEP/eCAP:专门处理编码器、霍尔传感器信号的硬件模块
  • CLA(控制律加速器):独立于主 CPU 的协处理器,可并行执行控制算法

我记得有一次做高速电机项目,转速 20000 RPM,电周期频率超过 1 kHz。用普通 MCU 根本跑不完 FOC 算法,中断里算完坐标变换就超时了。换成 C2000 之后,同样的算法,CPU 负载才 30% 不到。这就是专用硬件的威力。

避坑指南:我曾经见过有人用 STM32 硬跑 FOC,虽然也能转,但 PWM 频率一高就出问题。C2000 的 PWM 模块有硬件死区插入、故障保护、PWM 斩波等功能,这些在电机控制中非常关键。如果你要做产品级方案,别在 PWM 上省钱。

1.4 本课程使用的硬件平台

本课程选用的是 TI 官方的开发套件:LAUNCHXL-F280049C + BOOSTXL-DRV8323RS。

为什么选这套?

  • F280049C:主频 100 MHz,带 FPU 和 TMU,支持浮点运算,性价比高
  • DRV8323RS:三相栅极驱动器,集成电流检测放大器,支持 1.5 A 峰值驱动电流
  • LaunchPad 生态:BoosterPack 接口,方便扩展,调试器集成在板上

硬件参数一览:

模块 型号 关键参数
主控 DSP TMS320F280049C 100 MHz C28x + FPU + TMU, 256 KB Flash, 100 KB RAM
栅极驱动器 DRV8323RS 三相, 6~60 V, 1.5 A 峰值, 集成电流检测
调试接口 XDS110 板载, USB 供电 + 调试
电机接口 3 相 + 编码器 支持霍尔、QEI、BISS 等

我个人习惯用这套板子做原型验证。原因很简单:开箱即用。USB 一插,Code Composer Studio 就能识别,不用折腾调试器驱动。DRV8323 的电流检测是集成的,省掉了外部运放电路,板子尺寸也小。

小提示:如果你手头没有这套板子,用其他 C2000 开发板 + 驱动板也可以。FOC 算法是通用的,只是引脚配置和初始化代码需要调整。本课程的代码会尽量做到平台无关,方便你移植。