单电机无感FOC控制DEMO软件
- 项目名称:
6002_PMSM_STO_PLL_V0
- 控制器型号:
ET6039 (ARM Cortex-M7 内核)
- 电机型号:
42JSF6310AS-1000 (PMSM)
- 驱动板型号:
ATK-PD6010B
- 开发板型号:
ETTB-6039PV-V1
- 编译环境:
Keil MDK 5.36 (AC5/AC6), IAR EWARM
- 文档日期:
2026-05-12
一、电机参数
1.1 电气参数
参数名称 |
数值 |
说明 |
|---|---|---|
极对数 (Pole Pairs) |
4 |
转子永磁体极对数 |
定子电阻 (Rs) |
1.02 Ω |
相电阻 |
定子电感 (Ls) |
0.000590 H |
对于表贴式 PMSM 等效于Lq |
额定电流 (Nominal Current) |
9532 |
内部控制单位 (s16A 格式) |
最大转速 |
3000 RPM |
机械转速上限 |
反电势常数 |
4.3 Vrms/kRPM |
线电压有效值每千转 |
消磁电流 (Id_demag) |
-9532 |
内部控制单位 |
电流单位换算公式:
实际电流(A) = (内部控制值 × ADC参考电压) / (65536 × 采样电阻 × 运放增益)
1.2 功率级参数
参数名称 |
数值 |
说明 |
|---|---|---|
额定母线电压 |
24 V |
直流电源电压 |
PWM 频率 |
16000 Hz |
空间矢量PWM载波频率 |
死区时间 (硬件) |
100 ns |
PWM 上下桥臂硬件死区 |
死区时间 (软件设置) |
500 ns |
软件插入的死区时间 |
电流采样拓扑 |
三电阻独立采样 |
三相各用一个采样电阻 |
采样电阻 (Rshunt) |
0.020 Ω |
相电流采样电阻值 |
运放增益 (Amplification Gain) |
6.00 |
电流采样信号放大倍数 |
ADC 参考电压 |
3.30 V |
模数转换器参考电压 |
母线电压分压比 |
0.0400 |
母线电压采样衰减系数 |
1.3 保护阈值
参数名称 |
数值 |
说明 |
|---|---|---|
过压保护阈值 |
60 V |
母线电压超过此值触发保护 |
欠压保护阈值 |
12 V |
母线电压低于此值触发保护 |
过温保护阈值 |
110 ℃ |
功率级温度上限 |
过温保护回差 |
10 ℃ |
温度回落至此差值后恢复 |
二、无感FOC基本控制原理
2.1 FOC (磁场定向控制) 总体架构
本项目实现的是基于**转子磁场定向**的矢量控制(FOC),采用 Id = 0
控制策略。整个控制系统采用**级联双闭环**结构:
外环(速度环): PI 调节器,以 1000 Hz 频率运行于中频任务中。
内环(电流环): Id/Iq 双 PI 调节器,以 16000 Hz (PWM 频率) 运行于高频任务中。
FOC 核心数学变换流程如下:
三相电流 Iabc
│
▼
Clarke 变换 ──→ Iα, Iβ (两相静止坐标系)
│
▼
Park 变换 ──→ Id, Iq (两相旋转坐标系)
│
├── Id PI 控制器 ──→ Vd
├── Iq PI 控制器 ──→ Vq
│
▼
电压圆限幅 (Circle Limitation) ──→ Vd', Vq'
│
▼
逆 Park 变换 ──→ Vα, Vβ (两相静止坐标系)
│
▼
SVPWM 调制 ──→ 三相 PWM 占空比
2.2 无感位置/速度估算:状态观测器 + 锁相环 (STO + PLL)
本项目不使用物理位置传感器(如霍尔、编码器),而是通过**龙伯格状态观测器 (Luenberger State Observer) + 锁相环 (PLL)** 的方法估算转子位置和速度。
基本原理:
1. 在 α-β 静止坐标系下,PMSM 的电压方程可写为:
Vα = Rs·Iα + Ls·(dIα/dt) + Eα
Vβ = Rs·Iβ + Ls·(dIβ/dt) + Eβ
其中 Eα, Eβ 为反电势分量,包含了转子位置和速度信息:
Eα = -ωe·ψf·sin(θe)
Eβ = ωe·ψf·cos(θe)
2. 龙伯格观测器以 Vαβ 和 Iαβ 为输入,实时估算反电势 Eα, Eβ。
观测器的基本原理是比较实际电流与模型估算电流的误差,通过增益矩阵
反馈修正,使估算值收敛到真实值。
3. PLL 从估算的反电势中提取转子电角度 (θe) 和电角速度 (ωe)。
PLL 包含一个 PI 调节器和一个积分器,其控制目标是将 d 轴反电势
分量调节到零(此时估算角度与真实角度对齐)。
观测器参数:
参数名称 |
数值 |
说明 |
|---|---|---|
F1 (缩放因子) |
16384 |
观测器缩放因子1 |
F2 (缩放因子) |
4096 |
观测器缩放因子2 |
GAIN1 |
-23248 |
观测器常数 C2 |
GAIN2 |
18225 |
观测器常数 C4 |
PLL_KP_GAIN |
532 |
PLL 比例增益 |
PLL_KI_GAIN |
23 |
PLL 积分增益 |
观测器最低有效转速 |
580 RPM |
低于此转速观测器不收敛 |
BEMF 一致性容限 |
64 |
反电势幅值-速度一致性参数 |
速度 FIFO 深度 (DPP) |
64 |
速度估算平均窗口大小 |
速度方差阈值 |
0.1% |
速度估算可靠性判定阈值 |
2.3 启动策略:强制旋转启动
由于无感观测器在零速和低速下无法收敛,项目采用三段式**开环强制启动** 策略:
阶段 |
持续时间 |
目标转速 |
目标电流 |
说明 |
|---|---|---|---|---|
Phase 1 (对齐) |
0 ms |
0 RPM |
0 mA |
(跳过,未使用) |
Phase 2 (加速) |
700 ms |
0 RPM |
1429 mA |
注入固定电流建立初始磁场 |
Phase 3 (加速) |
350 ms |
630 RPM |
1668 mA |
观测器从此阶段使能 |
Phase 4 (加速) |
1150 ms |
2700 RPM |
1668 mA |
快速加速至观测器有效范围 |
启动过程中使用**虚拟速度传感器**(开环角度发生器)提供转子角度信息, 当观测器收敛后,通过**过渡斜坡** 平滑切换至闭环 FOC 控制。切换过渡时间为 25 ms。
三、核心控制功能
3.1 任务调度
系统采用两级任务调度机制:
- 高频任务:
运行频率: 16000 Hz (由 PWM 事件触发)
功能: FOC 电流环 (Clarke → Park → PI 电流控制 → 圆形限幅 → 逆 Park → SVPWM)
执行: 电流采样、Id/Iq PI 调节、观测器角度估算、SVPWM 输出
- 中频任务:
运行频率: 1000 Hz (由 Systick 定时器触发)
功能: 速度环 PI 调节、状态机管理、启动序列、观测器收敛判定
执行: 速度平均计算、功率测量、状态转换
3.2 保护功能
系统在安全任务中周期性检测以下保护条件:
过压保护: 母线电压 > 60V → 关闭 PWM 输出
欠压保护: 母线电压 < 12V → 关闭 PWM 输出
过温保护: 功率级温度 > 110℃ → 关闭 PWM 输出
过流保护: 硬件过流检测 → 关闭 PWM 输出
FOC 执行超时: 电流环计算超出 PWM 周期 → 报错
速度反馈故障: 连续 200 次速度测量错误 → 报错
启动失败: 序列超时未完成 → 报错
四、EVB 板电机端口连接
4.1 PWM 输出端口 (6路 PWM — 连接驱动板电机口)
三相 PWM 由 ET6002 的 SRPWM 模块产生,使用三对互补输出通道:
信号名称 |
GPIO |
引脚功能 |
说明 |
|---|---|---|---|
PWM_UH |
GPIO28 |
SRPWM6_A |
U 相上桥臂 PWM |
PWM_UL |
GPIO29 |
SRPWM6_B |
U 相下桥臂 PWM |
PWM_VH |
GPIO14 |
SRPWM7_A |
V 相上桥臂 PWM |
PWM_VL |
GPIO15 |
SRPWM7_B |
V 相下桥臂 PWM |
PWM_WH |
GPIO8 |
SRPWM4_A |
W 相上桥臂 PWM |
PWM_WL |
GPIO9 |
SRPWM4_B |
W 相下桥臂 PWM |
4.2 模拟采样端口 (连接驱动板电流/电压采样)
信号名称 |
ADC |
通道说明 |
说明 |
|---|---|---|---|
I_U 采样 |
ADC0 |
ADC_AMPU_CHX |
U 相电流 (经运放) |
I_V 采样 |
ADC0 |
ADC_AMPV_CHX |
V 相电流 (经运放) |
I_W 采样 |
ADC0 |
ADC_AMPW_CHX |
W 相电流 (经运放) |
I_U 冗余 |
ADC2 |
ADC_AMPU_CHX_C |
U 相电流 (冗余) |
I_V 冗余 |
ADC2 |
ADC_AMPV_CHX_C |
V 相电流 (冗余) |
I_W 冗余 |
ADC2 |
ADC_AMPW_CHX_C |
W 相电流 (冗余) |
Vbus 采样 |
ADC1 |
ADC_VBUS_CHX |
母线电压 |
温度采样 |
ADC0 |
ADC_VTEMP_CHX |
功率级温度 (NTC) |
4.3 控制端口
信号名称 |
GPIO |
方向 |
说明 |
|---|---|---|---|
KEY1 |
GPIO13 |
输入 (低有效) |
加速按键 (+300 RPM/次) |
KEY2 |
GPIO12 |
输入 (低有效) |
减速按键 (-300 RPM/次) |
LED |
GPIO34 |
输出 |
运行状态指示 (闪烁) |
FLAG_A |
GPIO0 |
输出 |
调试标志输出 A |
FLAG_B |
GPIO1 |
输出 |
调试标志输出 B |
SHUTDOWN1 |
GPIO27 |
输出 (高) |
驱动板使能 (高电平有效) |
UART_TX |
GPIO2 |
输出 |
串口通信发送 (115200bps) |
UART_RX |
GPIO25 |
输入 |
串口通信接收 (115200bps) |
4.4 硬件连接说明
无感 FOC 运行只需将 ET6039 EVB 板上电机口通过排线与 ATK-PD6010B 驱动板 连接,并将驱动板与三相 PMSM 电机的 U-V-W 端口及直流电源正确连接即可。 硬件保护触发后,按下驱动板的 SW3ET_RST 可复位控制板。
PWM 信号死区由 SRPWM 硬件死区模块生成,上升沿死区 500ns, 下降沿死区 500ns。同时启用了同级互锁保护功能(PSTP),防止 上下桥臂同时导通。
五、速度调节方法
5.1 按键调节
系统主循环通过按键扫描实现速度调节:
按键 |
步进值 |
范围 |
|---|---|---|
KEY1 |
+300 RPM |
0 → +600 → +900 → … → +3000 RPM |
KEY2 |
-300 RPM |
0 → -600 → -900 → … → -3000 RPM |
正值转速 = 逆时针旋转 (CCW),负值转速 = 顺时针旋转 (CW)
首次按下 KEY1 从 0 → +600 RPM (跳过 +300)
首次按下 KEY2 从 0 → -600 RPM (跳过 -300)
转速达到 3000 或 -3000 后不再增加
按键扫描周期: 100ms (与 LED 闪烁共用延时)
5.2 调试工具调节
可通过以下工具进行在线参数调节和数据监测:
Keil MDK Debug 模式: 通过 J-LINK 或 CMSIS-DAP 仿真器进行 在线调试,直接查看变量值和寄存器状态。
附录:技术术语表
术语 |
说明 |
|---|---|
PMSM |
永磁同步电机 (Permanent Magnet Synchronous Motor) |
FOC |
磁场定向控制 (Field Oriented Control) |
SVPWM |
空间矢量脉宽调制 (Space Vector Pulse Width Modulation) |
STO |
状态观测器 (State Observer) |
PLL |
锁相环 (Phase Locked Loop) |
Clarke 变换 |
三相静止 → 两相静止坐标变换 |
Park 变换 |
两相静止 → 两相旋转坐标变换 |
PI |
比例-积分控制器 |
d-q 轴 |
旋转坐标系:d 轴对齐转子磁场,q 轴正交于 d 轴 |
α-β 轴 |
两相静止坐标系 |
BEMF |
反电动势 (Back Electromotive Force) |
PWM 周期 |
16 kHz → 62.5 μs |
速度环周期 |
1 kHz → 1 ms |
工程固件
ET6039固件 PMSM_SingleMotor_FOC_STO_PLL.hex