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

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

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

服务程序(ISR)来完成的,整个应用程序的主函数main()主要负责初始化计数器中断,并处理其它应用。整个程序的流程图如图3所示。

本算法的C语言代码(附录A)经过AVR-GCC编译器的编译后,“.text”段只有310个字节,大大节省了单片机的flash空间。
一种基于AVR单片机的工频干扰滤除快速算法
6 基于VMLAB的滤波系统仿真实现

VMLAB的全称为:Visual Micro Lab。它针对AVR系列单片机和ST62系列单片机设计,是一个单片机的虚拟原型框架,可以提供给用户一个真正意义上的虚拟微控制器(MCU)设计实验室。它具有强大的多窗口、多文件的编辑器,微控制器的集成开发环境,拥有一系列的集成开发工具,图形界面的调试器,混合模式的模拟-数字电路仿真器,代码质量检测器等。基于MCU,它可以仿真出包括模拟元器件在内的更多外围设备,并具有交互式器件模拟仿真功能。

假设有用信号2V大小的直流信号,工频干扰是峰峰值为1V,频率为50Hz的正弦波,建立单片机AD的输入信号表示形式如下:

2+0.5 sin(2π×50×t)

VMLAB通过工程文件来管理和控制各种仿真信息、硬件连接以及显示I/O电压波形等。根据本算法的特点,采用Atmega16作为目标单片机,时钟选为8MHz,建立工程文件。恰当设置OCR0等存储,使计数器比较匹配中断的时间间隔约为2ms,这样AD的采样频率Fs近似认为等于500Hz。经过仿真,对比结果如表3。

表3 Fs=500Hz时仿真结果对比

a DA输出纹波峰峰值 衰减幅度 DA输出均值 收敛时间 0.8 0.36V -8.8dB 1.99V 约为100ms 0.85 0.28V -11.1dB 1.99V 约为120ms 0.9 0.2V -14dB 1.98V 约为145ms 0.95 0.1V -20dB 1.95V 约为210ms

从表3可以看出:随着α的增大,算法收敛的时间变长,同时50Hz对应的衰减幅度增加,衰减的幅度值和理论推导基本一致。另外,当a=0.95时,DA输出的均值变小。这主要是进行循环迭代运算时,需要将16位的变量转化为8位表示形式所导致的。在有用信号失真较小的情况下,为使滤波器达到降低工频干扰的最佳效果,必须恰当选择a值。经过以上的仿真试验可以发现,当a=0.9时,衰减幅度、DA输出均值和算法收敛时间表现比较均衡,可以作为一般情况下的选择值。
一种基于AVR单片机的工频干扰滤除快速算法
    将VMLAB中虚拟示波器的显示数据导出到一个*.cvs文件中,用matlab读出这些数据,并画出不同a值对应的输出响应,如图4。从图4可以清晰看出不同a值下算法的性能变化的大致走向。

将AD的采样间隔设置为4ms,对应的采样频率Fs就变为250Hz,其它条件不变。通过VMLAB进行仿真,对比结果如表4、图5。

表4 Fs=250Hz时不同a值仿真结果对比

a DA输出纹波峰峰值 衰减幅度 DA输出均值 收敛时间 0.8 0.20V -14.0dB 1.98V 约为220ms 0.85 0.16V -15.9dB 1.98V 约为240ms 0.9 0.14V -17.1dB 1.97V 约为270ms 0.95 0.06V -24.4dB 1.95V 大于500ms

对比Fs=500Hz的情况,随着采样频率Fs降低,50Hz频率的幅度衰减值会逐渐增加。这主要是因为随着采样频率降低,低通滤波器的截至频率fc也随之降低,相应的滤波器在50Hz处的衰减也就越来越低。根据奈奎斯特低通采样

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

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

★相关文章: