无传感器磁场定向控制
1.
简介
随着技术的跟新换代,
电机的控制也在不断的更新进步。
磁场定向控制
(Field
Oriented Control,FOC)也越来越多的被应用在电动½、风扇、洗衣机、空调等
家用电器产品。
相比较传统的方波控制,FOC 控制降½了½矩脉动,从而消除了½矩脉动所
产生的噪声,降½了电机发热,同时提高了系统效率,增大了最大½矩。
本应用笔记讨论了½用
JMT1808R
控制芯片对无刷直流电机
(Brushless
Direct
Current Motor, BLDC)进行无感 FOC
的算法控制。
2.
½用
JMT1808R
控制器进行电机控制
2.1. JMT1808R
芯片特点
MCU+DSP
双核处理器架构;
自主
DSP
处理器,自定义
DSP
指令集,运算½力强;
内½
CORDIC:
支持正/½弦、反/正切、模的计算;
2
个独立
PWM,
每个
PWM
具有
3
路互补+1 路独立通道,
支持正交解码,
支持霍尔传感器解码;
集成
2
个独立的
ADC
和
PGA;
通信接口:SPI 总线、
I2C
总线、
UART
总线接口;
73MHz
系统时钟。
2.2.
应用重点
本应用笔记的目的在于说明½用
JMT1808R
控制器,
以½件的方式实现电机
的
FOC
控制。
实现
BLDC
电机的矢量控制;
½½和速度估算算法可避免½用½½传感器;
FOC
算法由
DSP
汇编代码实现,
控制环周期为
24.4us,
PWM
可至
40KHz;
应用程序需要
72
字节的内部
RAM
和
210
字节的外部
RAM;
应用程序需要
6876
字节的
FLASH
空间。
3.
系统概述
如下图
1
所示,
在电机½上没有安装½½传感器,而是½用了½自感系数的
分流电阻(逆变器的一部分)来测量电机上的电流。逆变器电路带有电流检测和
故障生成电路可防止整个系统受到过电流损坏。
PWM0H
三相逆变器
PWM0L
PWM1H
PWM1L
PWM2H
PWM2L
M
JMT1808R
AN0
AN1
PC0
IA
IB
IBUS
POT
内部比较器进行比较
启动/停止
复½
SW2
速度给定
GPIO
GPIO
SW1
图
1
系统概述
图
2
说明了(1)采用双电阻采样对
ia ib
进行采样;
(2)过流保护电路。具
½硬件电路见章节
9
所示。
图
2
双电阻采样及过流保护电路
4.
磁场定性控制
4.1.
如½理解磁场定向控制
磁场定向控制又称矢量控制,
就是将交流电机空间磁场矢量的方向½为坐标
½的基准方向,
通过坐标变换将电机定子电流正交分解为与磁场方向一致的励磁
电流分量和与磁场方向垂直的½矩电流分量,
然后就可以像直流电机一样对励磁
电流分量和½矩电流分量分别进行控制。
4.2.
矢量控制综述
如下图
3
所示,矢量控制过程总结如下:
1)
测量
3
相定子电流,得到
ia
和
ib
的值。通过以下公式计算出
ic:
ia+ib+ic = 0。
2)
将
3
相电流
ia、ib
和
ic
经过
Clarke
变换得到变量
iα
和
iβ
。从定子角度
来看,iα 和
iβ
是相互正交的时变电流值。
3)
按照控制环上一次迭代计算出的变换角θ ,来旋½
2
½系统½之与½子
磁通对½。iα 和
iβ
变量经过
Park
变换可得
Id
和
Iq。Id
和
Iq
为变换到
旋½坐标系下的正交电流。在稳态条件下,Id 和
Iq
是常量。
4)
误差信号由
Id、Iq
的实际值和各自的参考值进行比较而获得。
Id
的参考值控制½子磁通;
Iq
的参考值控制电机的½矩输出;
误差信号是
PI
控制器的输入;
PI
控制器的输出为
Vd
和
Vq,即要½加到电机上的电压矢量。
5)
估算出新的变换角θ ,其中
Vα
、Vβ 、Iα 和
Iβ
是输入参数。通过新的
变换角度可知道下一个电压矢量½½。
6)
通过½用新的角度θ ,可将
PI
控制器的
Vd
和
Vq
通过
park
逆变换得到
正交电压值
Vα
、Vβ 。
7) Vα
和
Vβ
经过逆
Clarke
变换得到
3
相值
Va、Vb
和
Vc。该 3
相电压值通
过
SVPWM
算法可计算出
PWM
的占空比,以生产所期望的电压矢量。
Park逆变换
WRef
Σ
PI
IQRef
Σ
-
PI
Vq
d, q
Vα
SVPWM
3-phase
Inverter
0
Σ
-
PI
Vd
Vβ
α,β
θ
Iq
iα
ia
d, q
Id
iβ
α,β
ib
α,β
Park变换
Position(
θ
)
Speed(
ω
)
滑模估算器
a,b,c
Clarke变换
MOTOR
图
3
矢量控制框图
5.
坐标变换以及汇编代码
5.1.
Ckarke
变换
Clarke
变换公式:
ia
ib
ic
½
0
i
½
ia
i
½
(
ia
2*
ib
) / 3
汇编代码:
CLARK:
mov r3,
0x49E6
mov dp0,0x2d
// sqrt(1.0/3.0) = 0.577350
mov r0,XDM
mov dp0,0x2e
mov r1,XDM
// Clarke
计算
mov r6,r0
mul
mac
mac
r0,r3
r1,r3
r1,r3
//
从
XDM[0x2d]读取 Ia
到
R0
中
//
从
XDM[0x2e]读取 Ib
到
R1
中
// Ialpha = Ia -> r6
// Ia * sqrt(1.0/3.0)
// Ia * sqrt(1.0/3.0)+
//
读取计算的
Ibeta
到
r7
中
Ib * sqrt(1.0/3.0)
// Ia * sqrt(1.0/3.0)+ 2*Ib * sqrt(1.0/3.0)
movr r7,A
//
保存
Ialpha
和
IBeta
到
XDM
mov dp0,0x30
mov XDM,r6
mov dp0,0x31
mov XDM,r7
//
保存
Ialpha
到
XDM
//
保存
Ibeta
到
XDM
指令总周期数:18
5.2.
Ckarke
逆变换
Clarke
逆变换公式:
Vr
1
½
V
Vr
2
½
(
V
3 *
V
) / 2
Vr
3
½
(
V
3 *
V
) / 2
汇编代码:
CLARKE:
mov r0,
0x6ED9
mov r1,
0xC000
mov dp0,0x25
mov r2,XDM+
mov r3,XDM
// Clarke
逆变换
mov r4,r3
mul r1,r3
mac r0,r2
movr r5,A
mul r1,r3
macn r0,r2
movr r6,A
// r4
为
Vr1
// AccA = -Vbeta/2
// Vr2 = (-Vbeta/2 + sqrt(3)/2 * Valpha)
// r5
为
Vr2
// AccA = -Vbeta/2
// Vr3 = (-Vbeta/2 - sqrt(3)/2 * Valpha)
// r6
为
Vr3
// sqrt(3)/2 in 1.15 format
// -1/2
//
// Valpha ->r2
// Vbeta ->r3
XDM[0x25]
XDM[0x26]
指令总周期数:20
5.3.
Park
变换
评论