您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

一种基于AVR单片机的工频干扰滤除快速算法

时间:2007-1-20栏目:电子通信论文

摘要:提出了一种利用数字滤波器滤除工频干扰的快速算法。这种算法从AVR单片机内部硬件乘法器的特点出发,采用分配系统数法进行低通数字滤波器设计。经过VMLAB集成开发环境的仿真验证,算法速度快、代码效率高、滤波效果理想。

    关键词:单片机 定点小数 FIR 工频干扰 分配系数法 VMLAB

工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等。一般可以通过滤波电路消除工频干扰,但这必将增加硬件结构的复杂程度。实际上,还可以采用数字信号处理的相关算法,通过软件滤波器滤除工频干扰。软件滤波算法的采用,无疑会在简化电路结构的同时,使系统的硬件资源得到更加充分的利用,并达到降低产品成本的要求。

AVR单片机是Atmel公司生产的8位精简指令集(RISC)单片机。与同类单片机相比,在运算速度、外设资源、灵活性等方面性能均衡,性价比较高。AVR单片机适合C语言开发,Mega系列AVR单片机还有一个内部硬件乘法器单元。这些特点都为软件滤波器的实现提供了极大的便利。

1 滤波算法

常用的单片机滤波算法包括中值滤波、增色值滤波、滑动平均以及复合滤波算法等。工频干扰的频率范围在50Hz附近,可以采用一个截止频率远低于50Hz的低通滤波器来滤除工频干扰。
(范文先生网www.fwsir.com收集整理)
    假设输入信号x(t),输出信号y(t),则一个RC低通滤波器表达式为:τ[dy(t)]/dt+y(t)=x(t),其中τ为时间常数。

连续时间信号经过采样后成为离散时间信号,低通滤波器的表达式也变为:

τ[y(t)-y(k-1)]/ Δt+y(k)=x(t)     (1)

Δt为采样时间间隔,k为归一化时间。

由(1)式可得:

y(k)=[1/(1+τ/Δt)]x(k)+(τ/Δt)/(1+τ/Δt)[y(k-1)    (2)

令a=(τ/Δt)(1+τ/Δt),代入(2)式,

y(k)=(1-a)·x(k)+a·y(k-1)     (3)

对(3)式进行z变换,可得:

Y(z)=(1-a) ·X(z)+a·z-1·Y(z)

所以系统的传递函数为:

一种基于AVR单片机的工频干扰滤除快速算法

假设采样频率Fs=500Hz,a分别取0.8、0.85、0.9、0.95,代入(4)式,利用matlab画出频率响应曲线,如图1。其中50Hz频率对应的幅度衰减见表1。

表1 50Hz幅度衰减

a 衰减 0.8 -9.4dB 0.85 -11.9dB 0.9 -15.5dB 0.95 -21.6dB

2 定点小数表达方式

为了精确构造数字滤波器,经常要用到浮点数据和系统。在进行浮点数乘法运算时,针对AVR单片机设计的C编译器例如AVR-GCC,需要加入额外的数学库函数进行编译。而这会使编译后程序的代码量增加、处理时间加长、处理器的开销也随之增加。为了更大限度地降低系统开销,提高程序效率,采用定点小数表示形式进行乘法运算是最佳选择。

AVR单片机是一种8位精简指令集(RISC)单片机。其中megaAVR系列内部都带有一个硬

[1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页

★相关文章: