一,电机的本质
电机旋转的本质是电磁力与磁场的相互作用导致机械转矩的生成,从而将电能转换为机械能。以下是详细的解释:
1. 核心物理原理
(1) 安培力与洛伦兹力
-
载流导体在磁场中受力:当电流通过磁场中的导体时,导体会受到垂直于电流方向和磁场方向的力(即安培力或洛伦兹力)。
-
力的方向:由左手定则判断(左手三指分别表示磁场方向、电流方向和受力方向)。
(2) 力矩的形成
-
若导体绕轴分布,多个导体的受力会形成旋转力矩(Torque),驱动转子转动。
2. 电机旋转的关键要素
(1) 磁场与电流的相互作用
-
定子磁场:由永磁体或通电线圈产生。
-
转子电流:通过电刷、换向器(直流电机)或电磁感应(交流电机)引入转子导体。
-
力的合成:转子导体中的电流与定子磁场相互作用,产生切向力,形成旋转力矩。
(2) 能量转换过程
-
电能 → 磁能 → 机械能:
-
电能通过线圈产生磁场(或直接利用永磁体)。
-
磁场与电流相互作用生成力矩。
-
力矩驱动转子旋转,输出机械能。
-
3. 不同类型电机的旋转机制
(1) 直流电机(有刷电机)
-
换向器作用:通过机械换向器切换转子线圈电流方向,使导体始终在固定磁场方向下受力,维持单向旋转。
-
示例:玩具电机、汽车启动电机。
(2) 交流感应电机(异步电机)
-
旋转磁场:定子三相交流电产生旋转磁场,通过电磁感应在转子中产生感应电流(涡流),形成力矩。
-
滑差:转子转速略低于磁场转速(异步),故名“异步电机”。
-
示例:工业水泵、风扇。
(3) 永磁同步电机(PMSM)
-
定子旋转磁场与转子永磁体同步:定子通入三相交流电生成旋转磁场,吸引转子永磁体同步旋转。
-
无滑差:转子转速严格等于磁场转速(同步)。
-
示例:电动汽车驱动电机、伺服系统。
(4) 步进电机
-
脉冲控制:通过分步切换定子磁场方向,使转子按固定角度(步距角)逐次旋转。
-
开环控制:无需编码器即可精确定位。
-
示例:3D打印机、数控机床。
4. 数学描述:转矩公式
电机的输出转矩(𝑇T)可表示为:
𝑇=𝑘⋅Φ⋅𝐼⋅cos𝜃T=k⋅Φ⋅I⋅cosθ
-
𝑘:电机结构常数
-
Φ:磁场强度
-
𝐼:转子电流
-
𝜃:磁场与电流的相位差
说明:
-
转矩与磁场、电流大小成正比。
-
交流电机中需保持磁场与电流相位同步(如FOC控制)。
5. 直观理解:磁场“追逐”效应
-
定子磁场旋转(交流电机)或转子磁场切换(直流电机)形成动态磁场分布,使转子持续受到不平衡力矩驱动,从而旋转。
-
类比:磁铁吸引转子铁芯,但通过连续切换磁场方向,使转子“追赶”磁场而持续转动。
6. 能量损耗与效率
-
铜损:电流通过绕组电阻发热。
-
铁损:磁场变化导致铁芯涡流和磁滞损耗。
-
机械损耗:轴承摩擦、风阻等。
-
高效设计目标:优化磁场分布、减少涡流、降低电阻。
7. 总结
电机旋转的本质是通过电磁力生成转矩,其核心是:
-
磁场(定子产生)与电流(转子携带)的相互作用。
-
力的方向与分布形成旋转力矩。
-
能量从电能经磁场中介转换为机械能。
关键差异:
-
直流电机依赖机械换向,交流电机依赖旋转磁场或电磁感应,永磁电机利用永磁体简化控制。
理解这一本质,有助于掌握电机控制技术(如FOC)和故障诊断(如转矩不足、过热等)。
二,空间矢量脉宽调制(SVPWM)
SVPWM(Space Vector Pulse Width Modulation)是磁场定向控制(FOC)中的核心技术,用于将逆变器的直流母线电压高效转换为三相交流电压,驱动电机。其核心思想是通过空间电压矢量的合成逼近目标电压波形,具有电压利用率高、谐波损耗低等优势。
1. 基本原理
(1) 电压矢量与逆变器结构
-
三相逆变器由6个开关管(如IGBT或MOSFET)组成,控制上下桥臂的导通与关断,生成三相电压(U、V、W)。
-
开关状态:每个桥臂有2种状态(上管导通/下管导通),共有8种开关组合(对应8个基本电压矢量),包括:
-
6个非零矢量(V0~V5):形成六边形的顶点,幅值为 23𝑈𝑑𝑐32Udc(𝑈𝑑𝑐Udc为直流母线电压)。
-
2个零矢量(V7、V8):位于原点,幅值为0。
-
<div align=center> <img src="https://img-blog.csdnimg.cn/direct/6c5e4d6a8c4d4b0c9a5d6d9e6e4e4e4e.png" width="400" alt="逆变器开关状态与电压矢量"> </div>
(2) 空间矢量合成
-
目标电压矢量(𝑉𝑟𝑒𝑓Vref):由Clarke变换后的αβ坐标系中的参考电压确定。
-
合成方法:通过相邻两个非零矢量(如V1和V2)与零矢量(V0/V7)的时间加权组合,在单个PWM周期内逼近目标矢量。
2. SVPWM实现步骤
(1) 扇区判断
将αβ平面划分为6个扇区(60°间隔),通过参考电压的αβ分量计算其相位角,确定所在扇区。
判断公式:
𝜃=arctan(𝑉𝛽𝑉𝛼)θ=arctan(VαVβ)
根据θ值选择扇区(1~6)。
(2) 矢量作用时间计算
假设目标矢量位于扇区1(V1和V2之间):
-
基本公式(基于伏秒平衡原理):
𝑉𝑟𝑒𝑓⋅𝑇𝑠=𝑉1⋅𝑇1+𝑉2⋅𝑇2+𝑉0⋅𝑇0Vref⋅Ts=V1⋅T1+V2⋅T2+V0⋅T0
其中 𝑇𝑠Ts 为PWM周期,𝑇1T1、𝑇2T2、𝑇0T0 分别为V1、V2、零矢量的作用时间。
-
求解时间:
𝑇1=3𝑇𝑠𝑈𝑑𝑐⋅𝑉𝛽T1=Udc3Ts⋅Vβ𝑇2=3𝑇𝑠𝑈𝑑𝑐⋅(𝑉𝛼−𝑉𝛽3)T2=Udc3Ts⋅(Vα−3Vβ)𝑇0=𝑇𝑠−𝑇1−𝑇2T0=Ts−T1−T2
(3) 矢量切换顺序(以七段式调制为例)
-
目标:减少开关损耗和电压谐波。
-
规则:每次仅改变一相桥臂的开关状态。
示例(扇区1):
𝑉0→𝑉1→𝑉2→𝑉7→𝑉2→𝑉1→𝑉0V0→V1→V2→V7→V2→V1→V0
每相桥臂的PWM占空比通过时间分配确定。
(4) 占空比生成
根据各矢量的作用时间,计算三相桥臂的导通时间:
𝑇𝑎=𝑇𝑠−𝑇1−𝑇22,𝑇𝑏=𝑇𝑎+𝑇1,𝑇𝑐=𝑇𝑏+𝑇2Ta=2Ts−T1−T2,Tb=Ta+T1,Tc=Tb+T2
最终生成三相PWM波形。
3. SVPWM关键特性
(1) 电压利用率
-
SVPWM的直流母线电压利用率比传统SPWM(正弦PWM)高15.47%(最大输出线电压为 𝑈𝑑𝑐Udc,而SPWM为 32𝑈𝑑𝑐23Udc)。
(2) 谐波特性
-
谐波能量集中在高频区域,易于滤波,电机损耗更低。
(3) 实现复杂度
-
需实时计算矢量作用时间和切换顺序,依赖高性能控制器(如DSP)。
4. SVPWM与其他PWM的对比
特性 | SVPWM | SPWM |
---|---|---|
电压利用率 | 高(100%) | 低(86.6%) |
谐波畸变率 | 低 | 较高 |
算法复杂度 | 高 | 低 |
适用场景 | 高性能电机控制 | 简单变频驱动 |
5. 实际应用注意事项
-
过调制处理:当目标矢量超出六边形范围时,需限制幅值或调整调制策略。
-
死区补偿:考虑开关管的死区时间,避免桥臂直通。
-
参数敏感性:依赖准确的电机参数(如电感、电阻)进行矢量计算。
这是以下是使用matlab实现svpwm的三项波形
三.FOC(磁场定向控制)原理总结
1. 核心思想
FOC通过坐标变换将交流电机的三相电流分解为励磁分量(d轴)和转矩分量(q轴),模拟直流电机的控制方式,实现对电机转矩和磁场的独立控制,从而提升动态响应和效率。
2. 关键步骤
-
坐标变换
-
Clarke变换:将三相静止坐标系(ABC)转换为两相静止坐标系(αβ),简化三相交流量为两相。
-
Park变换:将两相静止坐标系(αβ)转换为两相旋转坐标系(dq),使交流量变为直流量,便于控制。
-
-
电流与磁场解耦
-
d轴电流(Id):控制电机磁场强度(通常对永磁同步电机设为0,以最小化铁损)。
-
q轴电流(Iq):直接控制电机输出转矩,与转矩成正比。
-
-
闭环控制
-
电流环(内环):通过PI调节器控制dq轴电流,跟踪给定值。
-
速度/位置环(外环):根据目标转速或位置生成q轴电流参考值。
-
-
逆变换与SVPWM
-
逆Park变换:将dq轴电压转换回αβ坐标系。
-
空间矢量脉宽调制(SVPWM):生成驱动逆变器的PWM信号,高效利用直流母线电压,降低谐波损耗。
-
3. 无传感器技术
-
反电动势估算:通过电机模型和观测器(如滑模观测器、扩展卡尔曼滤波)估算转子位置和速度,无需物理编码器。
-
高频注入法:适用于零速或低速场景,通过注入高频信号检测转子位置。
4. 优势与挑战
-
优势:
-
高动态响应、高效率、低噪音。
-
适用于永磁同步电机(PMSM)、无刷直流电机(BLDC)等。
-
-
挑战:
-
依赖电机参数(如电阻、电感),需参数辨识。
-
计算复杂度高,依赖高性能处理器(如DSP、FPGA)。
-
四.FOC速度-位置-力矩串级PID控制详解
在磁场定向控制(FOC)中,速度-位置-力矩串级PID控制是一种常见的多闭环控制策略,通过分层调节实现高精度运动控制。以下是其核心原理、实现步骤及关键注意事项。
1. 控制结构框图
典型的串级控制结构如下(外环→内环):
位置环 → 速度环 → 力矩环(电流环)
-
位置环:最外层,输出速度指令(𝜔𝑟𝑒𝑓ωref)。
-
速度环:中间层,输出力矩(电流)指令(𝐼𝑞_𝑟𝑒𝑓Iq_ref)。
-
力矩环:最内层,通过FOC控制q轴电流,直接生成SVPWM信号。
2. 各环功能与设计
(1) 力矩环(电流环)
-
作用:快速跟踪q轴电流指令(𝐼𝑞_𝑟𝑒𝑓Iq_ref),实现力矩控制。
-
特点:
-
带宽最高(响应最快,通常 >1 kHz)。
-
直接控制逆变器输出,需高精度电流采样。
-
-
PID设计:
-
P:提升响应速度,过大会导致振荡。
-
I:消除稳态误差,但需限制积分饱和。
-
D:抑制超调,但对噪声敏感(通常不加)。
-
-
传递函数(简化):
𝐺𝑐𝑢𝑟𝑟𝑒𝑛𝑡(𝑠)=𝐾𝑝𝑠+𝐾𝑖𝑠Gcurrent(s)=sKps+Ki
(2) 速度环
-
作用:跟踪位置环输出的速度指令(𝜔𝑟𝑒𝑓ωref),生成q轴电流指令。
-
特点:
-
带宽中等(通常 100~500 Hz)。
-
需抑制负载扰动和惯性变化。
-
-
PID设计:
-
P:决定动态响应。
-
I:消除速度稳态误差(如摩擦补偿)。
-
D:抑制速度超调(需滤波)。
-
-
前馈补偿:可加入加速度前馈(𝐽⋅𝛼𝑟𝑒𝑓J⋅αref)提升响应。
(3) 位置环
-
作用:控制电机最终位置(𝜃𝑟𝑒𝑓θref),输出速度指令。
-
特点:
-
带宽最低(通常 10~50 Hz)。
-
需避免超调(特别是定位场景)。
-
-
PID设计:
-
P:主导位置跟踪。
-
I:消除位置静差(慎用,易振荡)。
-
D:抑制位置超调(常用)。
-
-
梯形/ S曲线规划:平滑位置指令,减少冲击。
3. 参数整定步骤
-
力矩环整定:
-
断开速度环和位置环,仅闭合电流环。
-
阶跃响应调整 𝐾𝑝Kp、𝐾𝑖Ki,目标:快速无静差跟踪。
-
-
速度环整定:
-
闭合电流环,断开位置环。
-
给定速度阶跃信号,调节 𝐾𝑝Kp、𝐾𝑖Ki,目标:抗负载扰动,无超调。
-
-
位置环整定:
-
闭合所有环路,给定位置阶跃信号。
-
调节 𝐾𝑝Kp、𝐾𝑑Kd,目标:定位精准,过渡平稳。
-
5. 实际应用注意事项
-
带宽分离:确保内环带宽 > 外环带宽(至少3~5倍),避免耦合振荡。
-
采样频率:
-
电流环:10~20 kHz(匹配PWM频率)。
-
速度环:1~2 kHz。
-
位置环:100~500 Hz。
-
-
抗干扰措施:
-
电流采样滤波(如移动平均、低通滤波)。
-
速度观测器(如滑模观测器、Kalman滤波)替代编码器微分。
-
-
非线性补偿:
-
静摩擦补偿(速度环)。
-
重力补偿(垂直轴负载)。
-
6. 典型问题与调试
-
问题1:电机振荡或发散。
原因:PID参数过激进或带宽重叠。
解决:降低外环增益,检查内环响应。 -
问题2:定位超调。
原因:位置环微分不足或前馈未启用。
解决:增大 𝐾𝑑Kd,加入加速度前馈。 -
问题3:低速爬行。
原因:静摩擦未补偿或积分饱和。
解决:启用积分限幅,加入摩擦补偿算法。
7. 总结
速度-位置-力矩串级PID是FOC中实现高精度运动控制的核心架构,其关键在于:
-
层级清晰:内环(电流) > 速度 > 外环(位置)。
-
参数协调:带宽逐级降低,避免耦合。
-
工程化细节:抗饱和、滤波、非线性补偿。
五 功能实现
【从零开始实现stm32无刷电机FOC】系列文档:blog.youkuaiyun.com/qq570437459/category_12672491.html
引用以上博主的文章的代码进行修改,修改了一系列主函数,加深对FOC的理解和应用
typedef enum
{
control_type_null, // 不进行控制
control_type_position, // 位置控制
control_type_speed, // 速度控制
control_type_torque, // 力矩控制
control_type_position_speed_torque, // 位置-速度-力矩控制
} motor_control_type;
foc有以上的控制模式,修改的只有主函数代码
一,位置控制--正反转
一般位置控制需要与力矩控制一起操作:
motor_control_context.torque_norm_d = 0;
motor_control_context.torque_norm_q = 0.2;
motor_control_context.type = control_type_torque;
HAL_Delay(1000);
motor_control_context.position = deg2rad(90);
motor_control_context.type = control_type_position;
// 速度模式
// motor_control_context.speed = 30; //每秒转30弧度
// motor_control_context.type = control_type_speed;
//理论讲解以及FOC代码逐步实现讲解请前往查看:https://blog.youkuaiyun.com/qq570437459/category_12672491.html
while (1)
{
//以下为了测试电流采样硬件是否正常
float u_1 = ADC_REFERENCE_VOLT * ((float)HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1) / ((1 << ADC_BITS) - 1));
float u_2 = ADC_REFERENCE_VOLT * ((float)HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1) / ((1 << ADC_BITS) - 1));
printf("%.3f,%.3f,%.3f\n", motor_logic_angle, u_1, u_2);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
- 实验现象为转一会停顿一会
2.速度控制--正反转
- 实验现象为正反转,但是会有一些停顿
3.速度-力矩正反转
- 实验现象为无震动的正反转
- 可运用于制作云台电机
4.速度-力矩-位置串级控制
- 现象为速度从慢到快的转动