Lazy loaded image
🦾电机控制技术
相电流检测与重构
Words 2473Read Time 7 min
2024-12-16
2024-12-16
type
date
slug
category
icon
password

一、电流监测

常见的电流检测方式分三种:
  1. 三电阻方式:程序设计相比单电阻要简单,将三个电阻分别连接至逆变器三个桥臂的下端,在下桥臂打开时进行采样,每次只检测其中两路即可。电压以地电压为中心,正负摆动,因此需要相移电路,并送至运算放大器进行放大。
    1. notion image
      这里有报告未加偏置,导致电流采样错误。
      这里有报告未加偏置,导致电流采样错误。
  1. 单电阻方式:程序相对复杂,只在电源的地端放置一个检测电阻,在特定的时刻采集电流。检测到的电压只有正值,不需要相移电路,只需要一路运算放大器放大处理,节省成本。
    1. notion image
  1. 双电流互感芯片方式:抗干扰能力强,但成本高。任何时刻都可以采集电流。同样,只需要安装两路即可,通过基尔霍夫电流定律,计算出第三相的电流。

1.1 三相电流采样方法

对于三电阻方式电流采样,只有在逆变器下桥臂打开时,电流会流过检流电阻。触发采样时刻为三相控制 PWM 下桥臂(X、Y、Z)打开。使用该方式,ADC模块需支持三个通道同时采样,这样才能确保采样得到的三相相电流是同一时刻的电流,此时才能保证基尔霍夫定律(Iu+Iv+Iw=0)。
三电阻电流采样示意图
三电阻电流采样示意图

1.2 ADC 触发机制

如何保证准确的触发时刻和动态响应?
可以适用 ADC 硬件触发采样功能,配置 TIMER CH4 为 TRGO 输出,触发ADC采样。这样问题就转化为 TIMER CH4 CCR值动态设置。这里说的动态配置,是指FOC控制时,A、B、C 三相占空比、PWM输出控制的CCR值在动态变化,TIMER CH4 CCR值则需要一直大于CCRmax (占空比最大值,可能是A、B、C 任意一项)。
需要限制最大占空比
需要限制最大占空比
三相中占空比最大的相的低电平时间,就是留给我们ADC采样的时间。如果某一相的占空比过大,留给我们的时间已经小于采样时间了,那ADC可能会无法采样到电流,或者在 MOS 开启关闭的附近时间采样,这个时候会采到非常严重的尖峰,此时电流采样已经无法正常进行。因此,需要限制最大占空比
由于电机驱动系统拓扑存在的延迟源,除了死区时间,还有光耦和预驱动器引入的延迟,MOSFET 开关时间,放大器、低通滤波器和 ADC 导致的延迟。当遇到电机噪声过大、效率偏低甚至无法运转等情况,就要考虑电路中的延迟因素导致采样出的电流值不准确
摘自 ⭐⭐FOC 电流采样为什么不准?,详细说明可参考这篇文章。
摘自 ⭐⭐FOC 电流采样为什么不准?,详细说明可参考这篇文章。
这些延迟可以根据下表估计,也可通过示波器采样计算出来。
延迟类型
典型时间
PWM死区时间插入
100ns-2µs
预驱开关延迟
约50ns
放大器延迟
<1µs
ADC延迟
50ns-200ns
上面提到:TIMER CH4 CCR 值则需要一直大于CCRmax(占空比最大值,可能是A、B、C 任意一相),且还需考虑到驱动系统中存在的延迟因素,难道我们要动态记录是 A、B、C 三相CCR值,取最大值,再加上延迟值?
这样做未免太麻烦,可以将 TIMER CH4 CCR 设置为 ARR-偏移值来实现
这里可以计算一下,PWM 频率 15kHz,延迟(死区 3us,其他延迟时间参考下图多种延迟源典型延迟时间,保守估计5us,总延迟8us)和采样时间(STM32F103 最短采样周期为 1.17 us)。因此低电平最少保留 ARR-CCR= 9.17 us/ (1/0.015/ARR) = 9.17 us/ (1/0.015/400) = 55
因为我们的装载值是3500,如果我们设为3500,通道4就会一直处于高电平,没有下降沿也就无法触发ADC。因此我们可以设置成比3500小一点的数,比如3450,但前提是三相最大的装载值不会超过3400左右。不过这里只是打个比方,具体还是要根据自己手上的硬件去细调。
综上,我们可以从如下流程配置来总结ADC触发机制
  1. 配置 timer CH4 为 TRGO 输出
  1. timer 的 TRGO 输出用于硬件触发 ADC 采样
  1. 如果是拥有两个 ADC 模块的可以同时触发进行同时采样
  1. 判断波形的采样位置,修正 CCR4 数据
notion image

1.3 ADC 采样必备知识

⚠️
下面内容针对STM32 F103
输入通道:规则通道(常用)和注入通道(插队规则通道,先完成注入通道,再继续规则通道)
notion image
  • 转换顺序:规则序列寄存器有3个,分别为SQR3、SQR2、SQR1。注入序列寄存器JSQR只有一个,最多支持4个通道。
  • 触发源:ADC_CR2的 ADON 这个位来控制开始和停止触发转换,ADC_CR2的 EXTSEL[2:0] 和 JEXTSEL[2:0] 位来选择触发源,ADC_CR2的 EXTTRIG 和 JEXTTRIG 这两位来控制激活。
    • 注意:ADC3 的规则转换和注入转换的触发源与ADC1/2的有所不同。
      • notion image
    • 注意2:TIM1 的 CH4 通道不能触发ADC的规则采样。
      • notion image
  • 转换时间:ADC 转换时钟经过 PCLK2 分频,最高为14MHz,常用 12MHz。
    • Tconv =采样时间+ 12.5个周期 = 1/12*(1.5+12.5)=1.17us
    • 寄存器 ADC_SMPR1 和 ADC_SMPR2 中的 SMP[2:0] 位设置不同通道采样时间;
  • 数据寄存器:
    • 规则数据寄存器只有一个,多通道转换时会被覆盖,常用DMA模式防止数据覆盖;
    • 注入数据通道对应着自己的寄存器,不会跟规则寄存器那样产生数据覆盖的问题;
    • 规则数据寄存器和注入数据寄存器同样存在对齐问题。
  • 中断
    • 转换结束中断:规则通道转换结束中断,注入转换通道转换结束中断;
    • 模拟看门狗中断:ADC转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断,前提是我们开启了模拟看门狗中断;
    • DMA请求:规则和注入通道转换结束后,除了产生中断外,还可以产生DMA请求,把转换好的数据直接存储在内存里面。要注意的是只有ADC1和ADC3可以产生DMA请求
示例:
拓展:双 ADC 模式说明
共有6种可能的模式:
  • 同步注入模式(ADC_Mode_InjecSimult):注入通道组
    • notion image
  • 同步规则模式(ADC_Mode_RegSimult):规则通道组
    • notion image
  • 快速交叉模式(ADC_Mode_FastInterl):只适用于规则通道组(通常为一个通道)
    • notion image
  • 慢速交叉模式(ADC_Mode_SlowInterl):只适用于规则通道组(通常为一个通道)
    • notion image
  • 交替触发模式(ADC_Mode_AlterTrig):只适用于注入通道组
    • notion image
  • 独立模式(ADC_Mode_Independent):双ADC不同步工作,每个ADC接口独立工作。
还有可以用下列方式组合使用上面的模式:
  • 同步注入模式 + 同步规则模式(ADC_Mode_RegInjecSimult)
    • 注:在混合的规则/注入同步模式中,必须转换具有相同时间长度的序列,或保证触发的间隔比2个序列中较长的序列长,否则当较长序列的转换还未完成时,具有较短序列的ADC转换可能会被重启。
  • 同步规则模式 + 交替触发模式(ADC_Mode_RegSimult_AlterTrig )
    • notion image
  • 同步注入模式 + 交叉模式(ADC_Mode_InjecSimult_FastInterlADC_Mode_InjecSimult_SlowInterl)
    • notion image

1.4 参考文献

  1. foc配置篇——ADC注入组使用定时器触发采样的配置
  1. 【电机控制】FOC的敲门砖---SVPWM的三相正弦波电流采样 - 知乎 (zhihu.com)
上一篇
电机控制原理(六步换相和SVPWM)
下一篇
转子位置与速度信息获取

Comments
Loading...