电机控制
SV630P 伺服电机驱动器配置上电自动使能
步进电机控制
无刷直流电机控制
PID-C控制示例
BLDC 双环位置控制
RT-Thread中MPU6050使用详解及DMP姿态解算
ICM42688传感器万向节死锁现象
SimpleBGC 代码解读
机械回零策略
使用 STM32F407VET6 进行双电机 FOC 控制方案
FOC电流采集方案总结
本文档使用 MrDoc 发布
-
+
首页
FOC电流采集方案总结
基于之前的讨论,现将FOC(磁场定向控制)中电流采集的完整方案重新总结,重点澄清**PWM中心对齐模式下ADC触发时机的正确配置方法**。 --- ### 一、核心目标 FOC需要实时获取三相定子电流 \(I_u\)、\(I_v\)、\(I_w\),经坐标变换后用于电流闭环控制。**采样精度和采样时刻的准确性**直接影响控制性能。 --- ### 二、硬件方案对比 | 方案 | 原理 | 优点 | 缺点 | 适用场景 | |------|------|------|------|----------| | **三电阻低侧采样** | 每相下桥臂与地之间串联采样电阻,差分运放放大后送ADC | 成本低、电路简单、三相互不干扰 | 采样窗口受占空比限制(需下桥臂导通) | **大多数低压电机控制(推荐)** | | **单电阻母线采样** | 直流母线负端串联单电阻,利用PWM不同状态重构电流 | 节省元器件、PCB面积小 | 算法复杂,低速性能差 | 成本敏感、空间受限的低功率应用 | | **霍尔/磁通门传感器** | 相线上使用隔离式电流传感器 | 宽带宽、隔离、可全时刻采样 | 成本高、体积大 | 高压、大功率、高性能工业驱动 | **本文以最常用的“三电阻低侧采样”方案展开。** --- ### 三、PWM与ADC触发配置(关键修正) #### 1. PWM模式:中心对齐(中央对齐) 中心对齐模式(三角波载波)是SVPWM的基础,能降低谐波、提高直流电压利用率。 #### 2. 采样窗口分析 - **下溢时刻(CNT=0)**:三相下桥臂全部导通,电流流过采样电阻,**可测得真实相电流**。 - **上溢时刻(CNT=ARR)**:三相下桥臂全部关断,采样电阻上无有效电流信号,**不可用于电流采样**。 #### 3. ADC触发方式(重要修正) **常见误区**:设置 `TIM_CounterMode_CenterAligned1` 并不能让更新事件仅在下溢发生。 **事实**:无论中心对齐模式1/2/3,在 `TIMx_RCR = 0` 时,更新事件(UEV)都会在**上溢和下溢时各产生一次**。 **正确做法——实现“仅下溢触发ADC”的三种方案**: | 方案 | 实现方法 | 优点 | 缺点 | |------|----------|------|------| | **方案一:重复计数器** | 设置 `TIMx_RCR = 1`,更新事件每两次溢出发生一次 | 简单,无需额外资源 | 无法区分上/下溢,若上下溢采样条件相同可用 | | **方案二:比较通道触发(推荐)** | 使用空闲比较通道(如CH4),设置 `CCR = 0`,将该通道的OC事件作为TRGO触发ADC | 精确在下溢触发,无冗余中断 | 需占用一个比较通道 | | **方案三:软件判断** | ADC中断中读取 `CNT` 值,判断是否为下溢附近 | 不修改硬件配置 | 浪费一半中断资源,时序有不确定性 | **推荐方案二的配置示例(TIM8)**: ```c // 1. 配置PWM输出通道(CH1~CH3)用于电机控制 // 2. 配置空闲通道CH4为比较输出 TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; // PWM模式2 TIM_OCInitStructure.TIM_Pulse = 0; // CCR = 0 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC4Init(TIM8, &TIM_OCInitStructure); // 3. 设置TRGO源为OC4REF TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_OC4Ref); // 4. ADC触发源选择 TIM8_TRGO ``` --- ### 四、硬件设计要点(三电阻低侧采样) #### 1. 采样电阻 - 阻值:10mΩ 典型值 - 功率:\( I_{peak}^2 \times R \times 裕量\) #### 2. 差分运放 - 将采样电阻两端电压放大至ADC输入范围(0~3.3V) - 常用芯片:INA180、INA240、LMV358 - **偏置**:单电源供电时,输出中点偏置到 \(V_{REF}/2\)(如1.65V),以表示双向电流 - 增益选择: \[ Gain = \frac{V_{REF}/2}{I_{max} \times R_{sense}} \] 例如 \(I_{max}=20A, R=0.01\Omega\),则 \(Gain \approx 8.25\),实际取8或10倍 #### 3. 滤波器 - 运放输入/输出端加RC低通滤波,截止频率约2~4kHz,抑制开关噪声 --- ### 五、软件处理流程 #### 1. ADC配置 - 三通道(U、V、W)规则组,由定时器TRGO触发 - 使能DMA自动存储结果,减少CPU开销 - 转换完成后(DMA半满/全满中断)触发电流环计算 #### 2. 电流计算 ADC原始值(12位)转换: \[ V_{ADC} = \frac{adc}{4095} \times V_{REF} \] \[ I = \frac{V_{ADC} - V_{offset}}{Gain \times R_{sense}} \] 其中 \(V_{offset} = V_{REF}/2\)。 #### 3. 电流环执行时机 - 在下溢触发ADC并完成转换后,立即执行电流环计算 - 计算出的占空比更新值在下一个PWM周期生效(与采样时刻同步) #### 4. 数据校验 三相电流应满足 \(I_u + I_v + I_w \approx 0\),可作为ADC或运放故障的判断依据。 --- ### 六、关键注意事项 | 项目 | 要求 | |------|------| | **采样窗口** | 确保下桥臂导通时间大于ADC采样+转换时间。若占空比过小,需限制最小占空比或增大采样保持时间 | | **运放输出范围** | 峰值电流下运放输出不饱和,且不超出0~3.3V | | **ADC采样时间** | 配置为较长采样周期(如15个ADC时钟),配合外部电容稳定信号 | | **时序同步** | 电流环必须在下一个PWM周期开始前完成计算,否则会产生相位滞后 | | **PCB布局** | 采样电阻和运放靠近下桥臂,差分走线,避免开关噪声耦合 | --- ### 七、方案总结 | 项目 | 推荐配置 | |------|----------| | 硬件拓扑 | 三电阻低侧采样 + 差分运放(偏置VREF/2) | | PWM模式 | 中心对齐(用于SVPWM发波) | | ADC触发 | **比较通道(CCR=0)输出TRGO**,精确在下溢触发 | | 采样频率 | 等于PWM频率(如20kHz) | | 数据处理 | ADC + DMA,在转换完成中断中执行电流环 | | 电流环频率 | 与PWM频率相同,与采样同步 | --- ### 八、补充说明 - 若使用**高侧采样**或**隔离电流传感器**,上下溢时刻均可采样有效电流,此时可采用 `RCR=1` 方案简化触发配置,采样率仍为PWM频率。 - 若资源紧张且PWM频率不高(如10kHz以下),也可在PWM周期中断中直接启动ADC并等待转换完成,但会占用CPU时间。 以上方案经过修正,澄清了中心对齐模式下更新事件的实际行为,并提供了可靠的“仅下溢触发”实现方法,可直接用于STM32F4系列的实际FOC项目开发。
qingkai
2026年3月28日 17:37
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码