电机基础知识:PMSM 结构、反电动势与转矩生成
系列:电机控制系列 - 第 2 篇
目标平台:STM32F407ZGT6
阅读时间:25 分钟
前置知识:电路基础、电磁学
前言
很多人一上来就想"直接做 FOC",但只要你调过一次参数,就会发现:
看不懂电机原理,就调不好控制算法。
本篇文章的目标:帮你彻底理解永磁同步电机(PMSM)的工作原理。
不懂数学公式?没关系,我会用图示 + 直觉解释。
读完这篇,你会明白:
- 为什么电机能转动?
- 什么是反电动势?它如何影响控制?
- 转矩是怎么产生的?如何增大转矩?
- 电机参数(Rs、Ld、Lq、ψf)有什么物理意义?
一、电机分类与选择
1.1 直流电机 vs 交流电机
电机分类树
├─ 直流电机
│ ├─ 有刷直流电机(碳刷换向)
│ └─ 无刷直流电机(BLDC,电子换向)
│
└─ 交流电机
├─ 感应电机(异步电机)
│ └─ 笼型、绕线型
│
└─ 同步电机
├─ 电励磁同步电机
└─ 永磁同步电机(PMSM)⭐1.2 为什么选 PMSM?
| 电机类型 | 优点 | 缺点 | 应用场景 |
|---|---|---|---|
| 有刷直流 | 控制简单、成本低 | 碳刷磨损、维护频繁 | 电动玩具、低端工具 |
| BLDC | 无碳刷、寿命长 | 转矩脉动大、噪声 | 电动工具、无人机 |
| PMSM ⭐ | 高效率、高功率密度、低转矩脉动 | 成本稍高 | 电动汽车、工业伺服、机器人 |
PMSM 的核心优势:
- ✅ 效率高(95%+,BLDC 约 85%)
- ✅ 功率密度大(体积小、力大)
- ✅ 转矩脉动小(平稳)
- ✅ 控制精度高(FOC)
本系列文章聚焦 PMSM + FOC 控制。
二、PMSM 结构详解
2.1 整体结构
┌────────────────────────────────┐
│ 定子(Stator) │
│ ┌──────────────────────────┐ │
│ │ ┌────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 转子(Rotor) │ │ │
│ │ │ [永磁体 N-S-N] │ │ │
│ │ │ │ │ │
│ │ └────────────────────┘ │ │
│ │ A+ B+ C+ │ │
│ │ \ | / │ │
│ │ \ | / │ │
│ │ A- B- C- │ │
│ └──────────────────────────┘ │
│ │
└────────────────────────────────┘
定子:三相绕组(A/B/C),通交流电产生旋转磁场
转子:永磁体(N-S-N-S...),跟随旋转磁场转动2.2 定子绕组
三相绕组(A/B/C)
- 空间分布:120° 电角度对称分布
绕组类型:
- 集中绕组:每极一相,简单但谐波大
- 分布绕组:每极多相,复杂但谐波小
极对数(Pole Pairs, P)
- 定义:永磁体 N-S 对数
影响:
- 极对数越多,转速越低(相同频率)
- 极对数越多,转矩越大(相同体积)
公式:
电角度 = 机械角度 × 极对数
转速(rpm) = 60 × 频率(Hz) / 极对数例子:
- 1 极对(2 极):3000 rpm @ 50Hz
- 2 极对(4 极):1500 rpm @ 50Hz
- 4 极对(8 极):750 rpm @ 50Hz
2.3 转子结构
表贴式永磁(SPM)
转子结构(SPM)
┌─────────────┐
│ [N][S][N][S] │ ← 永磁体贴在转子表面
│ 铁芯 │
└─────────────┘
特点:
✅ 结构简单
✅ Ld ≈ Lq(无凸极效应)
❌ 高速时永磁体易脱落内置式永磁(IPM)
转子结构(IPM)
┌─────────────┐
│ ┌─┐ ┌─┐ ┌─┐ │
│ │N│ │S│ │N│ │ ← 永磁体嵌入转子内部
│ └─┘ └─┘ └─┘ │
│ 铁芯 │
└─────────────┘
特点:
✅ 永磁体固定牢靠
✅ Ld < Lq(凸极效应,可利用磁阻转矩)
✅ 高速性能好
❌ 结构复杂、成本高IPM 的优势:磁阻转矩
- SPM:只有永磁转矩
- IPM:永磁转矩 + 磁阻转矩(额外 10-20% 转矩)
三、反电动势(Back-EMF)
3.1 反电动势的物理本质
核心原理:法拉第电磁感应定律
当导体在磁场中运动时,会产生感应电动势:
e = -dψ/dt = -N × dΦ/dt
其中:
- e:感应电动势(V)
- ψ:磁链(Wb)
- Φ:磁通(Wb)
- N:匝数直观理解:
- 转子旋转 → 永磁体磁场切割定子绕组 → 绕组产生感应电动势
- 转速越快 → 反电动势越大
3.2 反电动势波形
正弦波反电动势(PMSM)
反电动势波形(PMSM)
ea(t) = Em × sin(ωt)
eb(t) = Em × sin(ωt - 120°)
ec(t) = Em × sin(ωt + 120°)
其中:
- Em:反电动势幅值 = Ke × ω
- Ke:反电动势系数(V·s/rad)
- ω:角速度(rad/s)
特点:
✅ 正弦波,谐波小
✅ 适合 FOC 控制梯形波反电动势(BLDC)
反电动势波形(BLDC)
ea(t) ≈ 梯形波(120° 平顶)
特点:
❌ 梯形波,谐波大
❌ 适合方波控制(六步换相)
❌ 转矩脉动大3.3 反电动势对控制的影响
电压平衡方程
施加电压 = 反电动势 + 电阻压降 + 电感压降
U = E + I×R + L×(dI/dt)
其中:
- U:施加电压(V)
- E:反电动势(V)= Ke × ω
- I:电流(A)
- R:电阻(Ω)
- L:电感(H)关键结论:
- 低速时:反电动势 E 小,容易控制电流
- 高速时:反电动势 E 大,需要更高电压
- 超过电压极限:无法控制 → 需要弱磁
例子:
电机参数:
- Ke = 0.05 V·s/rad
- 额定转速 = 3000 rpm = 314 rad/s
- 母线电压 = 24V
反电动势 @ 3000 rpm:
E = 0.05 × 314 = 15.7V
可用电压余量:
24V - 15.7V = 8.3V(还有 8.3V 可控)四、转矩生成机制
4.1 转矩的本质:洛伦兹力
洛伦兹力公式:
F = I × L × B
其中:
- F:力(N)
- I:电流(A)
- L:导线长度(m)
- B:磁感应强度(T)
转矩 = 力 × 半径
T = F × r = I × L × B × r直观理解:
- 定子电流产生磁场 → 与转子永磁体相互作用 → 产生转矩
- 电流越大 → 转矩越大
4.2 转矩方程(dq 坐标系)
PMSM 转矩方程:
Te = (3/2) × P × [ψf × iq + (Ld - Lq) × id × iq]
└─────┬─────┘ └──────────┬──────────┘
永磁转矩 磁阻转矩
其中:
- Te:电磁转矩(N·m)
- P:极对数
- ψf:永磁体磁链(Wb)
- id, iq:d 轴、q 轴电流(A)
- Ld, Lq:d 轴、q 轴电感(H)两项转矩的物理意义:
| 转矩项 | 公式 | 物理意义 | 适用电机 |
|---|---|---|---|
| 永磁转矩 | ψf × iq | 永磁体与定子电流相互作用 | SPM、IPM |
| 磁阻转矩 | (Ld-Lq) × id × iq | 磁路磁阻变化产生 | IPM(Ld < Lq) |
4.3 如何增大转矩?
方法 1:增大 iq(q 轴电流)
Te ∝ iq(永磁转矩主导)
✅ 直接有效
❌ 受电流极限限制(热、磁饱和)方法 2:利用磁阻转矩(IPM)
Te 额外增加 (Ld-Lq) × id × iq
当 id < 0 且 iq > 0 时:
- 磁阻转矩为正(增加转矩)
- 这就是 MTPA(最大转矩电流比)的原理方法 3:增加极对数 P
Te ∝ P
✅ 同体积下转矩更大
❌ 转速降低五、电机参数详解
5.1 电气参数
定子电阻(Rs)
- 定义:定子绕组的电阻(Ω)
测量方法:
- 静态测量:万用表测两端(相-相)
- Rs = (R_相相) / 2
影响:
- 电阻大 → 铜损耗大(I²R)→ 发热
- 电阻大 → 低速性能差(电阻压降占比大)
典型值:
- 小功率电机(< 100W):0.1-1Ω
- 中功率电机(100W-1kW):0.01-0.1Ω
- 大功率电机(> 1kW):< 0.01Ω
电感(Ld, Lq)
- Ld:d 轴电感(磁场方向)
- Lq:q 轴电感(垂直磁场方向)
SPM:Ld ≈ Lq(无凸极效应)
IPM:Ld < Lq(凸极效应)
测量方法:
- 静态测量:锁定转子,施加交流电压,测电流
- L = U / (2πf × I)
典型值:
- 小功率电机:0.1-1 mH
- 中功率电机:1-10 mH
- 大功率电机:10-100 mH
永磁体磁链(ψf)
- 定义:永磁体产生的磁链(Wb)
与反电动势的关系:
- ψf = Ke(反电动势系数)
测量方法:
- 空载旋转 → 测反电动势 → 计算磁链
- ψf = E / ω
典型值:
- 小功率电机:0.001-0.01 Wb
- 中功率电机:0.01-0.1 Wb
- 大功率电机:0.1-1 Wb
5.2 机械参数
转动惯量(J)
- 定义:转子旋转惯量(kg·m²)
影响:
- J 大 → 加速慢(惯性大)
- J 小 → 加速快(响应快)
测量方法:
- 自由停机法:测减速曲线
- J = T × t / Δω
典型值:
- 小电机(无人机):1e-6 ~ 1e-5 kg·m²
- 中电机(工业伺服):1e-4 ~ 1e-3 kg·m²
- 大电机(电动汽车):1e-2 ~ 1e-1 kg·m²
粘滞摩擦系数(B)
- 定义:摩擦阻尼(N·m·s/rad)
- 影响:空载时转速衰减
典型值:1e-5 ~ 1e-3 N·m·s/rad
5.3 电机参数表(示例)
典型 1kW PMSM 参数:
电机型号:XXX-1kW-3000rpm
电气参数:
- Rs = 0.15 Ω
- Ld = 2.5 mH
- Lq = 3.5 mH(IPM)
- ψf = 0.08 Wb
- Ke = 0.08 V·s/rad
机械参数:
- J = 5e-4 kg·m²
- B = 1e-4 N·m·s/rad
- P = 4(8 极)
额定参数:
- 额定电压:48V
- 额定电流:20A
- 额定转速:3000 rpm
- 额定转矩:3.2 N·m
- 额定功率:1 kW六、STM32 电机参数测量
6.1 电阻测量(静态)
// 使用万用表或 STM32 ADC 测量
float Motor_Measure_Rs(void) {
// 1. 锁定转子(不转)
// 2. 施加直流电压 U
// 3. 测量电流 I
float U = 5.0f; // 施加 5V
float I = ADC_Read_Current();
float R_phase_phase = U / I; // 相间电阻
float Rs = R_phase_phase / 2; // 单相电阻
return Rs; // Ω
}6.2 电感测量(静态)
// 交流注入法
float Motor_Measure_L(void) {
// 1. 锁定转子
// 2. 施加交流电压(如 1kHz)
// 3. 测量电流幅值和相位
float U_ac = 1.0f; // 1V AC
float f = 1000.0f; // 1kHz
float I_ac = ADC_Read_Current_AC();
// 阻抗 Z = U / I
float Z = U_ac / I_ac;
// Z² = R² + (ωL)²
// L = sqrt(Z² - R²) / ω
float omega = 2.0f * M_PI * f;
float L = sqrtf(Z*Z - Rs*Rs) / omega;
return L; // H
}6.3 磁链测量(动态)
// 空载旋转法
float Motor_Measure_PsiF(float omega) {
// 1. 空载旋转电机(不接负载)
// 2. 测量反电动势 E
// 3. 计算磁链 ψf = E / ω
float E = ADC_Read_BEMF(); // 测反电动势
float psi_f = E / omega;
return psi_f; // Wb
}6.4 惯量测量(自由停机)
// 自由停机法
float Motor_Measure_J(void) {
// 1. 加速到一定转速
// 2. 断电,自由减速
// 3. 记录减速曲线
float omega0 = 3000.0f * 2.0f * M_PI / 60.0f; // 初始转速
uint32_t t_start = HAL_GetTick();
// 等待转速降到 0
while (Encoder_Get_Speed() > 0) {
HAL_Delay(10);
}
uint32_t t_stop = HAL_GetTick();
float t_decay = (t_stop - t_start) / 1000.0f; // 秒
// J = B × t / ln(ω0/ω)
// 简化:J ≈ B × t(假设线性衰减)
float J = B_coeff * t_decay;
return J; // kg·m²
}七、常见问题与解决
7.1 电机不转?
可能原因:
- ❌ 相序错误(A/B/C 接反)
- ❌ 编码器零点未校准
- ❌ 参数错误(Rs、L 测错)
解决方法:
// 1. 检查相序
void Motor_Check_Phase_Sequence(void) {
// 通直流电,观察转子位置
// A+ → B+ → C+ → 转子应顺时针旋转
}
// 2. 校准编码器零点
void Motor_Calibrate_Encoder(void) {
// 通 id > 0,iq = 0
// 转子对齐到 d 轴
// 记录此时编码器读数 → 零点
}7.2 电机抖动?
可能原因:
- ❌ PID 参数不当
- ❌ 死区时间过大
- ❌ 电流采样不准
解决方法:
// 1. 降低 PID 增益
pid.Kp *= 0.5;
pid.Ki *= 0.5;
// 2. 减小死区时间
TIM1->BDTR = (TIM1->BDTR & ~TIM_BDTR_DTG) | (10 << TIM_BDTR_DTG_Pos);
// 3. 重新校准电流
Current_Calibrate();7.3 电机过热?
可能原因:
- ❌ 电流过大(过载)
- ❌ PWM 频率太低(纹波大)
- ❌ 散热不良
解决方法:
// 1. 限制电流
if (fabsf(iq) > 10.0f) {
iq_ref = 10.0f * sign(iq_ref);
}
// 2. 提高 PWM 频率
// 20kHz → 30kHz
TIM1->PSC = 55; // 调整预分频
// 3. 增加散热
// 加散热片、风扇八、总结
8.1 核心要点
PMSM 结构
- 定子:三相绕组(A/B/C)
- 转子:永磁体(SPM/IPM)
- 极对数:决定转速与转矩
反电动势
- 转速越快,反电动势越大
- 限制最高转速
- 需要弱磁控制
转矩生成
- 永磁转矩:ψf × iq
- 磁阻转矩:(Ld-Lq) × id × iq(IPM)
- 电流越大,转矩越大
电机参数
- Rs、Ld、Lq、ψf:电气参数
- J、B:机械参数
- 必须测量准确,否则控制失败
8.2 下一步
下一篇:PWM 与三相逆变桥原理
我们将学习:
- ✅ PWM 调制原理(占空比、频率、死区)
- ✅ 三相全桥逆变器(6 个 MOSFET)
- ✅ STM32 定时器配置(寄存器级)
- ✅ 死区插入与刹车功能
附录:电机参数计算工具
Excel 计算器:
- 输入:反电动势、转速、电流
- 输出:ψf、L、Rs
MATLAB 脚本:
% 电机参数辨识
function [Rs, Ld, Lq, Psi_f] = Identify_Motor_Params(U, I, omega)
Rs = U / I; % 静态电阻
% 交流测试
Z = U_ac / I_ac;
L = sqrt(Z^2 - Rs^2) / (2*pi*f);
% 空载测试
Psi_f = E / omega;
end参考资料
- 《现代永磁同步电机控制原理及 MATLAB 仿真》- 袁雷
- 《交流电机数学模型及调速系统》- 李永东
- TI Application Note: "PMSM Electrical Parameters Measurement"
- ST Application Note: "Field Oriented Control (FOC)"
版权声明:本文采用 CC BY-NC-SA 4.0 协议,欢迎转载,但请注明出处。
更新日志:
- 2026-03-13:发布第 1 版