simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换


目录

  • 一、原理说明
    • 1.1、电流采样
      • 1.1.1、为什么要采样电流
      • 1.1.2、电流采样方式
        • 1.1.2.1、低侧电流采样
        • 1.1.2.2、高侧电流采样
        • 1.1.2.3、内置电流采样
    • 1.2、电流变换
      • 1.2.1、AD转换
      • 1.2.2、clark变换
      • 1.2.3、Park变换
      • 1.2.4、LPF运算
      • 1.2.5、PID运算
  • 二、电流采样参数设置
    • 2.1、INA240介绍
    • 2.2、电流实际波形
    • 2.3、SimpleFOC V2.0.3 的参数
    • 2.4、PowerShield V0.2 的参数
    • 2.5、SimpleMotor 的参数
  • 三、扭矩模式
    • 3.2.1、电压模式(Voltage mode)
    • 3.2.2、直流模式(DC current mode)
    • 3.2.3、FOC模式(FOC current mode)
    • 3.2.4、三种模式对比
  • 四、硬件介绍
    • 4.1、原理图
    • 4.2、SimpleMotor方案
      • 4.2.1、准备清单
      • 4.2.2、接线
    • 4.3、STM32方案
      • 4.3.1、准备清单
      • 4.3.2、接线
  • 五、程序演示
    • 5.1、力矩模式
    • 5.2、速度模式
    • 5.3、位置模式

?
一、原理说明 1.1、电流采样 1.1.1、为什么要采样电流
??FOC(Field-Oriented Control),即磁场定向控制,磁场大小与绕组中的电流成正比,所以对磁场的控制在程序上就是对电流的控制。前几节的程序并没有使用电流环,而是直接使用电压值,确实可以达到还行的效果。但是这样做有两个问题:
  • 1、不能保证i_d为零,i_q等于目标值,因此电机并不能工作在效率最高的状态,力矩控制也是不准确的。
  • 2、相电压施加在电感上产生相电流,电压和电流有相位差且并不恒定,低速运行时相位差对电机的影响不明显,但是当速度快了或者速度变化率高了以后,相位差的影响就会非常明显。
1.1.2、电流采样方式
??电流采样主要有三种方式:
  • 低侧电流采样
  • 高侧电流采样
  • 内置电流采样
    ?
1.1.2.1、低侧电流采样 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

??低侧电流检测可能是最常见的电流检测技术,主要是因为它既不需要高性能的PWM抑制运放(如内置),也不需要支持高压的运放(如高侧),采样电阻在低侧MOS和GND之间,确保了运放输入端的电压非常低。这种方法的缺点是,必须在下桥臂MOS打开时检测电流,PWM频率通常为20k~50khz,这意味着低侧MOS的开关频率为每秒20k~50k次,因此PWM设置与ADC采集之间的同步非常重要。
?
1.1.2.2、高侧电流采样 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

??高侧电流检测可能是最不常见的电流检测技术,因为它需要支持高压的运放,采样电阻在高侧MOS和直流电源电压之间,使放大器的输入端始终有高电压。 这种方法的另一个缺点和低侧电流采样一样,需要同步PWM和ADC。
?
1.1.2.3、内置电流采样 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

??内置电流检测(InlineCurrentSense)是使用起来最简单但是最精准的技术。 采样电阻串联在电机相线上,检测的电流始终都是电机相电流,因为电感中的电流不会突变,所以无论PWM占空比的状态如何,采样到的电流都是连续稳定的。
??这种方法非常适合Arduino,采样程序变得简单了,这应该是考虑到了MEGA328P微弱的性能以及跨平台时程序的适配。内置电流检测的缺点主要在于芯片,需要比常规放大器更好的PWM抑制功能的高精度双向运放,简单的说就是硬件成本高。
1.2、电流变换 本节增加电流环,主要增加了以下功能,
  • 1、AD转换获取电流值Ia和Ib,
  • 2、通过Clark变换得到Iα和Iβ ,
  • 3、获取电机角度,通过Park变换得到Id和Iq,
  • 4、Id、Iq不能突变,同时为减少干扰,做平滑滤波,
  • 5、Id、Iq与设定值比较,通过PID运算得到Vd 和Vq,
1.2.1、AD转换
??为了与官方代码保持一致,AD转换采用简单的单通道转换模式,主程序循环一次获取一次A/B相的电流。
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

1.2.2、clark变换
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

1.2.3、Park变换
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

??Park变换中的“θ”是电角度,由读出的编码器角度转变而来
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

1.2.4、LPF运算
  • dc_current模式只有 Iq 的LPF运算
  • foc_current模式有 Iq 和 Id 的LPF运算
    官方的LPF运算比较复杂,本人在移植过程中做了简化
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
1.2.5、PID运算
  • dc_current模式只有q轴电流的PID运算
  • foc_current模式有q轴电流和d轴电流两个变量的PID运算
  • 电流环使用 P、I 两个参数。
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片

    ?
二、电流采样参数设置 2.1、INA240介绍
  • INA240有四个型号,INA240A1是20倍放大倍数,INA240A2是50倍放大倍数。
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
  • 电机的电流是正弦波,对于采样的差分信号来说,负半周期为负值,为方便处理,需要叠加上偏置电压以保证全周期的输出为正值。
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
2.2、电流实际波形
  • 下图为电机静止时A/B相运放输出端波形,VCC=3.3V,所以此时电压=1.65V,
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
  • 下图为电机转动时运放输出端波形
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
2.3、SimpleFOC V2.0.3 的参数 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

  • 采样电阻0.01 Ω
  • 运放为INA240A2,放大倍数50
  • 背面需分别短接A0/A2至输出
  • C1_OUT=INA_VCC/2 + 0.01 * I * 50
    • 如果INA_VCC=3.3V,C1_OUT=1.65 + 0.01 * I * 50,电流范围(-3.3A,3.3A)
    • 如果INA_VCC=5.0V,C1_OUT=2.50 + 0.01 * I * 50,电流范围(-5A,5A)
  • B相采样输入在PCB上为走线方便做了反向输入,所以放大倍数需乘以 -1(移植后的代码已经做了处理)。
2.4、PowerShield V0.2 的参数 【simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换】simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

  • 采样电阻0.001 Ω
  • 运放为INA240A2,放大倍数50
  • C1_OUT=1.65 + 0.001 * I * 50,电流范围(-33A,33A)
2.5、SimpleMotor 的参数 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

  • 采样电阻0.001 Ω
  • 运放为INA240A1,放大倍数20
  • C1_OUT=1.65 + 0.001 * I * 20,电流范围(-82.5A,82.5A)
    ?
三、扭矩模式 ??SimpleFOC中有三种扭矩模式:
  • Voltage mode - the simplest one
  • DC current mode - 1xPID controller + 1xLPF
  • FOC current mode - 2xPID controller + 2xLPF filters
3.2.1、电压模式(Voltage mode)
  • 电压模式是之前示例中一直使用的模式,
  • 因为不用采样电流,所以硬件简洁,程序简单,执行速度快,
  • 适合低速电机控制
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
3.2.2、直流模式(DC current mode)
  • 检测电流大小,实现电流环控制
  • 只控制Iq,设置Vd=0,
  • 像控制直流电机一样控制无刷直流电机的电流
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
3.2.3、FOC模式(FOC current mode)
  • 控制Iq和Id,使转子中的磁力与永磁场精确偏移90度,从而确保最大转矩,
  • 唯一真正的转矩控制方法,
  • 保证电机始终工作在高效状态
    simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
    文章图片
3.2.4、三种模式对比 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

?
四、硬件介绍 4.1、原理图 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

4.2、SimpleMotor方案 4.2.1、准备清单
序号 名称 数量
1 SimpleMotor 1
2 带编码器云台电机 1
3 USB转串口 1
4 12V或24V电源 1

带编码器云台电机可以是AS5600,也可以是TLE5012B。
24V电源去掉跳线帽

AS5600电机 购买链接:某宝购买
TLE5012B电机 购买链接:某宝购买
SimpleMotor 购买链接:某宝购买
4.2.2、接线

只展示M1的接线,M2的接线根据原理图自行连接。
?
4.3、STM32方案 4.3.1、准备清单
序号 名称 数量
1 STM32核心板 1
2 SimpleFOCShield V2.0.3 1
3 带编码器的云台电机 1
4 USB转串口 1
5 5V电源 1
6 12V电源 1
7 杜邦线 若干

带编码器云台电机可以是AS5600,也可以是TLE5012B。
AS5600电机 购买链接:某宝购买
TLE5012B电机 购买链接:某宝购买
simpleFOCShield V2.0.3购买链接:某宝购买
4.3.2、接线
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

Shield V2.0.3的背面按照上图短接
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

对照 Shield V2.0.3 的原理图:
STM32核心板 V2.0.3
PA0 5
PA1 9
PA2 6
PB9 8
PA3 A0
PA4 A2
3V3 3V3
GND GND
如果是AS5600编码器,如下
STM32核心板 AS5600电机
PB6 SCL
PB7 SDA
3V3 VCC
GND GND
如果是TLE5012B编码器,如下
STM32核心板 TLE5012电机
PB15 MOSI
PB14 MISO
PB13 SCK
PB8 CSQ
GND GND
3V3 VCC

只展示M1的接线,M2的接线根据原理图自行连接。
?
五、程序演示 simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

注意:voltage_limit最大只能设置为供电电压的 1/√3(12V限制为6.9,24V限制为13.8)。
?
simpleFOC|SimpleFOC移植STM32(五)—— 电流采样及其变换
文章图片

注意:如果检测到的极对数与实际不符,停止继续操作,否则电机会堵转
?
5.1、力矩模式 5.2、速度模式 5.3、位置模式 ?
(待续)
?
?
?
欢迎加入simpleFOC技术交流群:923734429 (入群申请写:CSDN)
?
?
请继续阅读相关文章:
SimpleFOC移植STM32(一)—— 简介
SimpleFOC移植STM32(二)—— 开环控制
SimpleFOC移植STM32(三)—— 角度读取
SimpleFOC移植STM32(四)—— 闭环控制

    推荐阅读