期刊发表网电话

全国热线
022-83699069

基于ARM-Cortex-M4内核的DSP驱动BLDC的一种方法

作者: 发布时间:2020-01-17 16:38:27 阅读: 42 次

摘要:本文主要说明使用ARM-Cortex-M4系列DSP驱动BLDC的一种方法

关键词:ARM-Cortex-M4BLDCDSPMatlab FIR滤波器

一、引言:

BLDC(直流无刷电机)是一种正快速普及的电机,和有刷电机相比它不用电刷来换向而使用电子换向,从而避免了有刷电机的很多缺点。比如:

1、它具有更好的转速-转矩特性

2、它具有快速动态响应

3、效率高

4、寿命长

5、运转噪声低

6、转速高

正是因为无刷电机具有较高的转速等特性,所以一般场合下需要使用处理速度较快的DSP芯片来控制电机。一般使用DSC芯片来实现,比如:TIC2000系列、ADIADSP-2100系列、FreescaleMC56系列、MicrochipdsPIC系列等。

本文介绍的是使用ARM-Cortex-M4内核的处理器来控制BLDC。它是ARM公司最新的基于ARMv7构架一种内核,同时增加了FPU(浮点运算单元)和相应的DSP功能,比如它可以在一个时钟周期内做一次32位的MAC(乘加运算)或者做两条16位的MAC

据说目前市场上最快的基于ARM-Cortex-M4内核的DSP可以跑到204MhzNXP公司的LPC4300系列),这个速度要快于同档次的DSP了(TI公司的TMS320F2808只能跑100MHzTMS320F2818也只有150MHz)。而且它还有浮点运算单元作为协处理器,在性价比上超过相应的DSP

本文主要介绍的是使用基于ARM-Cortex-M4内核的STM32F4x系列DSC控制BLDC的一种方法。根据ST公司的数据手册说明STM32F4x最快主频可以跑到168MHz,对于一般的应用而言,这个已经足够了。

 

二、无传感器控制电机的方法

1. 无传感器控制电机和有传感器控制电机比较

传统的控制BLDC的方法一般是用三霍尔元件控制,这样的好处就是编程比较简单。软件上比较容易实现,只需对霍尔元件进行编码,然后根据霍尔元件的编码确定电机转子位置。但是这里里面有一定的缺点:

① 传感器价格昂贵,除了需要购买传感器以为,还需要在制造期间将传感器安装在电机上,这就增加了安装和接线成本。

② 传感器给电机添加了潜在的故障因素,如果传感器发生故障,则电机也就无法正常工作了。

③ 在某些环境下,使用传感器不符合实际需要。例如,在电机处在浸没的环境中(如压缩机)如使用传感器则传感器可能首先发生故障。

所以基于上述各种各样的原因,在应用中需要使用无传感器控制电机的方法。

这个方法主要优点是硬件电路简单(只需几个电阻而已)无需霍尔元件确定电子转子位置,降低硬件成本。既然无霍尔元件,也就不存在使用中霍尔元件损坏的问题了。

这个方法的缺点就是编程有点麻烦。软件上需要用DSP做数字信号的滤波算法。(这是实现控制无传感器BLDC的一个更本方法)

一般来说实现这种算法有很多种,比如:

① 利用电机反电动势进行数字滤波的择多函数来实现

② 利用电机的每相反电动势进行数字滤波来实现。

这两种方法都是已检测反电动势信号上发生的过零事件为基础的。

只是使用的数字滤波算法不同。

本文只说明第二种数字滤波方法。

反电动势信号去有三个对无传感器控制来说非常重要的特性:

① 速度上升时,反电动势信号的电压幅值也增大

② 速度上升时,反电动势信号的斜率变大。

③ 反电动势信号是以1/2电机驱动电压为中心对称(比如12v电机就以6v为对称中心)

实际情况下,反电动势信号耦合有来自驱动区间的噪声。一般而言电机是由PWM信号驱动的。改变PWM信号的占空比,来改变电压,从而改变电机的转速。由于电机绕组位置非常接近。一个绕组的PWM驱动信号可能耦合到另一个绕组的反电动势信号上(串扰)。由于存在串扰的PWM噪声很难的检测的过零事件

由于反电动势不是一个平滑信号,所以可以利用DSP的数字滤波方法获得与理想信号类似的反电动势信号。该算法的前提是给出一个滤波反电动势信号,当检测到一个事件过零时。DSP启动一个定时器从而设定值开始向下计数,定时器为0时电机绕组换相

有的文献推荐是用IIR算法的数字滤波器,理由是IIR滤波器和FIR滤波器相比IIR滤波器在同样的滤波效果中可以达到比较小的阶数。所以相对FIR滤波器而言IIR滤波器的计算量小。

但是IIR滤波器相对于FIR滤波器也有不足之处。主要如下:

IIR滤波器是非线性相位的:如需要线性相位则需要全通网络来进行相位校正,比较复杂。而FIR滤波器是线性相位的,无需相位校正。群延迟是一个常数。而IIR滤波因为非线性相位,所以群延迟不是常数。

IIR滤波器包含反馈特性:计算需要进行递归,所以设计IIR滤波器是要格外小心,以避免冲激响应的振荡是其不稳定。所以要保证IIR滤波所有的级点都必须在单位圆内,以保证滤波器稳定。而FIR滤波器因为仅仅是一系列输入信号的加权和,所以FIR滤波器总是稳定的。

这里采用FIR滤波器来实现滤波

 

2FIR滤波器的定义:

FIR滤波器的主要特性就是其单位冲击响应是有限长的。假定一个FIR滤波器的冲击响应为。其中L是滤波器的阶数。令表示时刻n的输入信号,则n时刻的输出信号 可以表示为

                    

这个就是FIR滤波器的定义。

 

3FIR滤波器的设计:

FIR滤波器主要有以下几种设计方法:

1FIR滤波器窗函数设计法(这个是最简单的一种FIR滤波器设计方法)

2FIR滤波器更优化设计方法

3FIR滤波器最小二乘设计方法

4FIR滤波器升余弦函数设计方法

假设低通滤波器的参数如下:

① 通带频率 4000Hz

② 阻带频率 5000Hz

③ 采样频率 20000Hz

④ 通带纹波 1db

⑤ 阻带纹波 80db

利用Matlabfdatool工具箱设计该低通滤波器,这里使用Kaiser窗函数设计。

频率响应如图11所示,这是一个101阶的FIR滤波器。

使用通用的FIR滤波器的算法C语言代码如下:

float FIR()

{

float fSum;

fSum=0;

for ( i=0;i<FIRNUMBER;i++ )

{

fSum+=(fXn[i]*fHn[i]);

}

return(fSum);

}

这里数组fHn[i]就是Matlab优化生成的C头文件,FIRNUMBER是滤波器的阶数+1,这里是102

 

三、小结:

本文说明了无传感器BLDC反电动势的数字滤波方法。使用了的FIR滤波器,因为是线性相位,群延迟是直线,所以不像某些文献用IIR滤波器滤波以后还需要进行看群延迟曲线是否满足实际需要,但是这样做的代价是增加了计算的复杂度。

 

四、参考文献

1、 《嵌入式实现系统的DSP软件开发技术》

北京航空航天出版社

【美】Robert Oshaha 著 郑红 刘振强 王鹏 译