基于Labwindows/CVI的低通滤波器的设计与实现
本文研究的虚拟低通滤波器可以随时设置滤波器的各项参数,对目标信号能够进行有效滤波,并显示和保存结果。
利用这种方法设计的虚拟滤波器功能强大,使用效率高,灵活简单,可以有效地用于实际应用环境中。
下载论文网 关键词:低通滤波器;Labwindows/CVI;虚拟仪器 中图分类号:TP274 文献识别码:A 文章编号:1001—828X(2015)019—000—02 一、引言 所谓低通滤波器是只能容许低于截止频率的信号通过, 但阻止高于截止频率的信号通过的器件。
低通滤波器在信号传输及各类产品的开发和研制中发挥着关键的作用[1]。
以往的低通滤波器均是硬件产品,当遇到型号不适合或损坏的情况就需要从新更换,这就带来很多麻烦,本文提出了一种基于LabWindows/CVI的低通滤波器及其设计的基本方法。
充分节省的资源,并且可以随意更改参数。
既经济又操作简单,而且可以不断进行改进和更新[2]。
二、虚拟低通滤波器的设计原理 在Labwindows/CVI集成开发环境下,先建立一个工程,一个工程最终有.uir(用户界面文件)、.c(源文件)和自动生成的.h(头文件),.c文件中包含一个main{}或者WinMain{}形式的C语言程序框架及与用户界面资源对应的一些空回调函数,.h文件包含用户界面文件中使用的各种资源的定义[3][4]。
用户界面(GUI)指的是利用用户界面编辑器所创建应用程序的图形。
其中面板、控件、菜单条以及弹出式菜单等都包含在图形用户界面中。
在整个操作过程中,只要把所需控件拖放到面板中相应的位置上就可以了;当用户界面设计好以后,就进行后台程序的编写,主要用C源代码的命令式语句来控制用户界面。
利用代码生成器来生成源文件,控制控件是通过在C程序中操作被指定的控件常量名来控制菜单的。
实际应用中,常用滤波器分为模拟滤波器与数字滤波器两类,本文采用软件Labwindows/CVI实现数字滤波器。
主要研究的是IIR滤波器,在Labwindows/CVI函数类中分为巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器等[5]。
本文所设计的低通滤波器可以随意设置各种滤波器参数,主要参数有采样频率,滤波器类型,衰减系数,上下截止频率和纹波系数等。
同时数值型控件、命令按钮控件和图形控件在此设计中也会被用到等[6]。
Labwindows/CVI中,用IIR滤波器结构构造函数定义 IIRfilterPtr fiIterInformation=AllocIIRfilterPtr(int type, int order); IIR函数子类中实现滤波的过程有很多种,有分解的方式也有一步到位的方式。
一般的步骤为先选定滤波器的类型,然后进行滤波器的设计,最后完成目标信号的有效滤波。
输入参数如下: 名称 类型 说明 type int 滤波器类型为巴特沃斯, 切比雪夫, 椭圆滤波器等。
order int 滤波器的阶次,默认值为3 这里滤波函数可以定义为int status=IIRfiltering (double x[ ],int nx,double a[ ],double y1[ ],int na,double b[ ],double xl[ ],int nb,double y[ ]);所采用的函数系数数组为a和b,根据系数数组与信号采样点之间的关系,依据如下数学模型对信号进行滤波 (1) 三、虚拟低通滤波器的仿真实现 1.仪器面板的创建 工程文件的生成部分是在Labwindows/CVI的一个工程最终有.uir(用户界面文件)、.c(源文件)和自动生成的.h(头文件),.c文件中包含一个main{}或者WinMain{}形式的C语言程序框架及与用户界面资源对应的一些空回调函数,.h文件包含用户界面文件中使用的各种资源的定义。
参数部分设计是在用户界面编辑窗口单击Create→Numeric选择参数控制的图标双击,在Source Code connection→Callback Fuction的编辑框中键入CUTOFF,在LABEL编辑框中键入Untitled control,单击“OK”退出,同样的方法按需设置其他参数。
关于在设计滤波器的类型选择方面,Labwindows/CVI中提供了三个关键的函数。
此三个函数分别为 Bw_LPF(x,n,samplefrequency,cutofffrequency,order,y); Ch_LPF(x,n,samplefrequency,cutofffrequency,ripple,order,y); Elp_LPF(x,n,samplefrequency,cutofffrequency,ripple,attenuation,order,y); 用GetCtrlVal函数获得滤波器中关于衰减系数,纹波系数,阶数,采样函数和截止频率的预设值。
在命令按钮控件的设计中,先单击Create→Command Button→Oblong,在面板上建立命令按钮控件,双击该控件,打开命令控件编辑对话框,在“Label”编辑框中键入“执行”,定义按按钮的标识,在Callback Function的编辑框中键入“zhixing”,定义按钮对应的回调函数名称,同样的方法设置另外一个命令按钮,其回调函数名为“tuichu。
至此系统设计结束,单击用户编辑界面的File→Save,将用户界面文件保存在C:\CVI\Samples\Samples3.uir。
图形显示控件设计是单击Create→Graph→Graph,在面板上建立图形控件,双击图形代件,打开编辑对话框。
在“Constant Name”编辑框中键入“wave,D “Data mode列表框中选择“Discard”,在“Label”编辑框中键入“滤波前图形”,然后按“OK”退出。
采用的预测信号为正弦信号与白噪声信号混合后的叠加信号,信号本身带有毛刺,用本文设计的滤波器对此信号进行滤波,可以看到滤波完成信号与原始信号相比较,明显变得平滑有序,更接近原始正弦信号。
2.编译并调试程序 本文所设计的滤波器的类型可以通过类型选择按钮选择所选的滤波器,滤波器的类型有巴特沃斯滤波器、椭圆滤波器和且比雪夫滤波器,选择不同的滤波器,就得到不同的滤波效果。
通过滤波器的界面显示我们可以看到,叠加了白噪声的信号在经过滤波器以后,明显少了很多高频信号,波形变得教平滑,说明只有低频信号通过,而多数干扰信号(即毛刺)被过滤掉。
图1巴特活斯滤波器滤波效果图 通过仿真结果可以看出,用此软件设计的滤波器效果良好。
有一定的使用价值。
本设计中采用WhiteNoise函数作为干扰信号,如果引入其他干扰信号,同样可以有效地改善滤波效果。
四、结束语 由于Labwindows/CVI很容易设计出各种界面,且所设计的虚拟一起具有高效灵活,成本低、数据处理量大和易于操作等特点。
比传统的滤波器有很多的优势,指引测控技术未来发展的方向。
参考文献: [1]刘君华,白鹏,汤晓君,等.基于lab windows/Cvi的虚拟仪器设计[M].北京:电子工业出版社,2003:98—189. [2]曲丽荣.基于Matlab/Simulink的滤波器设计仿真技术的实现[J].人工智能及识别技术,2007:86—87. [3]李钟慎,洪健.基于改进型Butterwort传递函数的高阶低通滤波器的有源设计[J].电子测量与仪器学报,2008,2:76—89. [4]Paul Scherz,著.林佑国,吴允平,等译.发明者电子设计宝典[M].福建:福建科学技术出版社,2014:132—140. [5][加]赫金,等著.林秩盛,等译.自适应滤波器原理(第四版)[M].北京:电子工业出版社,2006,6:120—131. [6]李腾飞,张辉.基于LabWindows/CVI和Matlab的滤波器设计[J].电子科技,2007,3.