FOC原理总结(从电机原理到功能实现)

一,电机的本质

电机旋转的本质是电磁力与磁场的相互作用导致机械转矩的生成,从而将电能转换为机械能。以下是详细的解释:

1. 核心物理原理

(1) 安培力与洛伦兹力
  • 载流导体在磁场中受力:当电流通过磁场中的导体时,导体会受到垂直于电流方向和磁场方向的力(即安培力洛伦兹力)。

  • 力的方向:由左手定则判断(左手三指分别表示磁场方向、电流方向和受力方向)。

(2) 力矩的形成
  • 若导体绕轴分布,多个导体的受力会形成旋转力矩(Torque),驱动转子转动。

2. 电机旋转的关键要素

(1) 磁场与电流的相互作用
  • 定子磁场:由永磁体或通电线圈产生。

  • 转子电流:通过电刷、换向器(直流电机)或电磁感应(交流电机)引入转子导体。

  • 力的合成:转子导体中的电流与定子磁场相互作用,产生切向力,形成旋转力矩。

(2) 能量转换过程
  • 电能 → 磁能 → 机械能

    1. 电能通过线圈产生磁场(或直接利用永磁体)。

    2. 磁场与电流相互作用生成力矩。

    3. 力矩驱动转子旋转,输出机械能。

3. 不同类型电机的旋转机制

(1) 直流电机(有刷电机)
  • 换向器作用:通过机械换向器切换转子线圈电流方向,使导体始终在固定磁场方向下受力,维持单向旋转。

  • 示例:玩具电机、汽车启动电机。

(2) 交流感应电机(异步电机)
  • 旋转磁场:定子三相交流电产生旋转磁场,通过电磁感应在转子中产生感应电流(涡流),形成力矩。

  • 滑差:转子转速略低于磁场转速(异步),故名“异步电机”。

  • 示例:工业水泵、风扇。

(3) 永磁同步电机(PMSM)
  • 定子旋转磁场与转子永磁体同步:定子通入三相交流电生成旋转磁场,吸引转子永磁体同步旋转。

  • 无滑差:转子转速严格等于磁场转速(同步)。

  • 示例:电动汽车驱动电机、伺服系统。

(4) 步进电机
  • 脉冲控制:通过分步切换定子磁场方向,使转子按固定角度(步距角)逐次旋转。

  • 开环控制:无需编码器即可精确定位。

  • 示例:3D打印机、数控机床。

4. 数学描述:转矩公式

电机的输出转矩(𝑇T)可表示为:

𝑇=𝑘⋅Φ⋅𝐼⋅cos⁡𝜃T=k⋅Φ⋅I⋅cosθ

  • 𝑘:电机结构常数

  • Φ:磁场强度

  • 𝐼:转子电流

  • 𝜃:磁场与电流的相位差

说明

  • 转矩与磁场、电流大小成正比。

  • 交流电机中需保持磁场与电流相位同步(如FOC控制)。

5. 直观理解:磁场“追逐”效应

  • 定子磁场旋转(交流电机)或转子磁场切换(直流电机)形成动态磁场分布,使转子持续受到不平衡力矩驱动,从而旋转。

  • 类比:磁铁吸引转子铁芯,但通过连续切换磁场方向,使转子“追赶”磁场而持续转动。

6. 能量损耗与效率

  • 铜损:电流通过绕组电阻发热。

  • 铁损:磁场变化导致铁芯涡流和磁滞损耗。

  • 机械损耗:轴承摩擦、风阻等。

  • 高效设计目标:优化磁场分布、减少涡流、降低电阻。

7. 总结

电机旋转的本质是通过电磁力生成转矩,其核心是:

  1. 磁场(定子产生)与电流(转子携带)的相互作用。

  2. 力的方向与分布形成旋转力矩。

  3. 能量从电能经磁场中介转换为机械能。

关键差异

  • 直流电机依赖机械换向,交流电机依赖旋转磁场或电磁感应,永磁电机利用永磁体简化控制。

理解这一本质,有助于掌握电机控制技术(如FOC)和故障诊断(如转矩不足、过热等)。

二,空间矢量脉宽调制(SVPWM)

SVPWM(Space Vector Pulse Width Modulation)是磁场定向控制(FOC)中的核心技术,用于将逆变器的直流母线电压高效转换为三相交流电压,驱动电机。其核心思想是通过空间电压矢量的合成逼近目标电压波形,具有电压利用率高、谐波损耗低等优势。

1. 基本原理

(1) 电压矢量与逆变器结构
  • 三相逆变器由6个开关管(如IGBT或MOSFET)组成,控制上下桥臂的导通与关断,生成三相电压(U、V、W)。

  • 开关状态:每个桥臂有2种状态(上管导通/下管导通),共有8种开关组合(对应8个基本电压矢量),包括:

    • 6个非零矢量(V0~V5):形成六边形的顶点,幅值为 23𝑈𝑑𝑐32​Udc​(𝑈𝑑𝑐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​=Udc​3​Ts​​⋅Vβ​𝑇2=3𝑇𝑠𝑈𝑑𝑐⋅(𝑉𝛼−𝑉𝛽3)T2​=Udc​3​Ts​​⋅(Vα​−3​Vβ​​)𝑇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𝑈𝑑𝑐23​​Udc​)。

(2) 谐波特性
  • 谐波能量集中在高频区域,易于滤波,电机损耗更低。

(3) 实现复杂度
  • 需实时计算矢量作用时间和切换顺序,依赖高性能控制器(如DSP)。

4. SVPWM与其他PWM的对比

特性SVPWMSPWM
电压利用率高(100%)低(86.6%)
谐波畸变率较高
算法复杂度
适用场景高性能电机控制简单变频驱动
5. 实际应用注意事项
  1. 过调制处理:当目标矢量超出六边形范围时,需限制幅值或调整调制策略。

  2. 死区补偿:考虑开关管的死区时间,避免桥臂直通。

  3. 参数敏感性:依赖准确的电机参数(如电感、电阻)进行矢量计算。

这是以下是使用matlab实现svpwm的三项波形

三.FOC(磁场定向控制)原理总结

1. 核心思想

FOC通过坐标变换将交流电机的三相电流分解为励磁分量(d轴)转矩分量(q轴),模拟直流电机的控制方式,实现对电机转矩和磁场的独立控制,从而提升动态响应和效率。

2. 关键步骤
  1. 坐标变换

    • Clarke变换:将三相静止坐标系(ABC)转换为两相静止坐标系(αβ),简化三相交流量为两相。

    • Park变换:将两相静止坐标系(αβ)转换为两相旋转坐标系(dq),使交流量变为直流量,便于控制。

  2. 电流与磁场解耦

    • d轴电流(Id):控制电机磁场强度(通常对永磁同步电机设为0,以最小化铁损)。

    • q轴电流(Iq):直接控制电机输出转矩,与转矩成正比。

  3. 闭环控制

    • 电流环(内环):通过PI调节器控制dq轴电流,跟踪给定值。

    • 速度/位置环(外环):根据目标转速或位置生成q轴电流参考值。

  4. 逆变换与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)=sKp​s+Ki​​
(2) 速度环
  • 作用:跟踪位置环输出的速度指令(𝜔𝑟𝑒𝑓ωref​),生成q轴电流指令。

  • 特点

    • 带宽中等(通常 100~500 Hz)。

    • 需抑制负载扰动和惯性变化。

  • PID设计

    • P:决定动态响应。

    • I:消除速度稳态误差(如摩擦补偿)。

    • D:抑制速度超调(需滤波)。

  • 前馈补偿:可加入加速度前馈(𝐽⋅𝛼𝑟𝑒𝑓J⋅αref​)提升响应。

(3) 位置环
  • 作用:控制电机最终位置(𝜃𝑟𝑒𝑓θref​),输出速度指令。

  • 特点

    • 带宽最低(通常 10~50 Hz)。

    • 需避免超调(特别是定位场景)。

  • PID设计

    • P:主导位置跟踪。

    • I:消除位置静差(慎用,易振荡)。

    • D:抑制位置超调(常用)。

  • 梯形/ S曲线规划:平滑位置指令,减少冲击。

3. 参数整定步骤
  1. 力矩环整定

    • 断开速度环和位置环,仅闭合电流环。

    • 阶跃响应调整 𝐾𝑝Kp​、𝐾𝑖Ki​,目标:快速无静差跟踪。

  2. 速度环整定

    • 闭合电流环,断开位置环。

    • 给定速度阶跃信号,调节 𝐾𝑝Kp​、𝐾𝑖Ki​,目标:抗负载扰动,无超调。

  3. 位置环整定

    • 闭合所有环路,给定位置阶跃信号。

    • 调节 𝐾𝑝Kp​、𝐾𝑑Kd​,目标:定位精准,过渡平稳。

5. 实际应用注意事项
  1. 带宽分离:确保内环带宽 > 外环带宽(至少3~5倍),避免耦合振荡。

  2. 采样频率

    • 电流环:10~20 kHz(匹配PWM频率)。

    • 速度环:1~2 kHz。

    • 位置环:100~500 Hz。

  3. 抗干扰措施

    • 电流采样滤波(如移动平均、低通滤波)。

    • 速度观测器(如滑模观测器、Kalman滤波)替代编码器微分。

  4. 非线性补偿

    • 静摩擦补偿(速度环)。

    • 重力补偿(垂直轴负载)。

6. 典型问题与调试
  • 问题1:电机振荡或发散。
    原因:PID参数过激进或带宽重叠。
    解决:降低外环增益,检查内环响应。

  • 问题2:定位超调。
    原因:位置环微分不足或前馈未启用。
    解决:增大 𝐾𝑑Kd​,加入加速度前馈。

  • 问题3:低速爬行。
    原因:静摩擦未补偿或积分饱和。
    解决:启用积分限幅,加入摩擦补偿算法。

7. 总结

速度-位置-力矩串级PID是FOC中实现高精度运动控制的核心架构,其关键在于:

  1. 层级清晰:内环(电流) > 速度 > 外环(位置)。

  2. 参数协调:带宽逐级降低,避免耦合。

  3. 工程化细节:抗饱和、滤波、非线性补偿。

五 功能实现

【从零开始实现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.速度-力矩-位置串级控制

  • 现象为速度从慢到快的转动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值