基于LabVIEW的多功能滤波器设计Word文档格式.docx
《基于LabVIEW的多功能滤波器设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的多功能滤波器设计Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
1.可以调节滤波器的高、低频截止频率,选择滤波器类型;
2.输入一个公式信号波形(参数可调),可显示滤波前后的信号波形,可对其进行信号频谱等分析。
前面板要求:
1.仪器操作均在前面板进行;
2.仪器操作方便,人性化设计;
3.前面板美观大方。
后面板要求:
1.设计思路简洁;
2.功能完善,达到设计要求;
3.布线合理,便于查看。
【作品提交要求】
1.给出前、后面板设计图;
2.写出设计思路和控件采用理由;
3.写出系统调试测试报告;
4.写出设计心得。
正文
一关于数字滤波器
1.1数字滤波器概述
滤波器是一种使有用频率信号通过同时抑制(或大为衰减)无用频率信号的装置。
工程上常将它用于信号处理、数据传送和抑制干扰等。
数字滤波器是数字信号分析中的重要组成部分,它的输入和输出信号都是离散的,与模拟滤波器相比,它具有准确度和稳定性高,系统函数容易改变,灵活性高等优点,因而数字滤波器在工程中得到了广泛的应用[2]。
数字滤波器有多种分类,按频率特性分类可以分为:
高通、低通、带通、带阻;
按数字滤波器冲激响应的时域特征分类可以分为:
有限冲激响应滤波器(finiteimpulseresponse,FIR)和无限冲激响应滤波器(infiniteimpulseresponse,IIR)。
FIR滤波器的冲击响应h(n)是有限序列,IIR滤波器的冲击响应h(n)是无限序列的。
数字滤波器的差分方程可以用下式表示:
式中,x(n)为输入序列,y(n)为输出序列,ka、kb分别为输出、输入序列的系数。
数字滤波器对应的传递函数为:
当ka不全为0时,为IIR滤波器;
当ka全为0时,为FIR滤波器。
从性能上看,FIR滤波器和IIR滤波器各有优点:
FIR滤波器可以得到严格的线性相位;
但是需要较多的存储器和较长的运算,成本比较高,信号延时也较大。
IIR滤波器可以用较少的阶数获得很高的选择特性,所用存储单元少,运算次数少,效率高的优点;
但是相位是非线性的,且选择性越好其相位非线性越严重[3]。
1.2数字滤波器的传统设计方法
数字滤波器的传统设计过程可归纳为以下三个步骤:
(1)按照实际需要确定滤波器的性能要求。
(2)用一个因果稳定的系统函数(即传递函数)去逼近这个性能要求。
此函数可以分为两类:
即IIR传递函数和FIR传递函数。
(3)用一个有限精度的运算去实现这个传递函数。
FIR滤波器设计实质是确定能满足要求的转移序列或脉冲响应的常数,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
目前,FIR滤波器设计没有封闭的设计公式。
虽然窗函数法对窗口函数可给出计算公式,但计算通带与阻带衰减仍无计算公式。
FIR滤波器的设计只有计算程序可循,因此对计算工具要求较高,不用计算机编程一般很难实现。
IIR滤波器的设计源于模拟滤波器设计,它通过对低通滤波器进行模拟频率变换得到。
常用的IIR滤波器有巴特沃斯滤波器、切比雪夫滤波器、切比雪夫Ⅱ滤波器、椭圆滤波器和贝塞尔滤波器。
目前,IIR滤波器的设计可以借助模拟滤波器的成果,有封闭形式的设计公式,对计算工具的要求不高。
IIR滤波器的设计虽然简单,但脱离不了模拟滤波器的设计模式,主要用于设计低通、高通、带通及带阻滤波器。
而FIR滤波器的设计要灵活得多,尤其是频率采样设计法更易适应各种幅度特性和相位特性的要求。
1.3基于LabVIEW的数字滤波器设计
1)LabVIEW简介
LabVIEW是NI(NationalInstrument,美国国家仪器)公司推出的一种基于G语言的虚拟仪器(virtualinstrument,VI)开发工具。
LabVIEW编程使用图形化语言,它是非计算机专业人员使用的工具,它为设计者提供了一个便捷、轻松的设计环境,因此,LabVIEW在世界范围内的众多领域如航空、航天、通信、电力、汽车、化学等领域得到广泛应用[4]。
LabVIEW有两个基本窗口:
前面板窗口和流程图窗口。
编译环境下显示两个窗口,前面板用于放置控制对象和显示对象,控制对象相当于常规仪器的控制和调节按钮;
前面板用于显示程序运行结果,相当于常规仪器的显示屏幕或指针。
流程图窗口用于编写和显示程序的图形源代码,它相当于语言编程中一行行的语句,它由各种能完成一定功能的模块通过连线连接而成。
当编写的LabVIEW程序调试无误后,可将程序编译成应用程序(EXE文件)。
此时,设计的虚拟仪器可以脱离LabVIEW开发环境,用户只需通过前面板进行控制和观测。
2)LabVIEW中的数字滤波器
利用文本软件设计实现的滤波器在使用过程中往往出现难以调整波形系数,与硬件接口程序复杂,开发周期长等问题。
而使用LabVIEW设计的滤波器不仅设计简单,而且使用起来要比利用文本文件实现的滤波器方便得多。
LabVIEW为设计者提供了FIR和IIR滤波器VI,使用起来非常方便,只需要输入相应的指标参数即可,不需要进行复杂的函数设计和大量的运算。
滤波器VI位于LabVIEW流程图面板的Function>
>
Analyze>
SignalProcessing>
Filters上。
不同滤波器VI滤波时均有各自的特点,因此它们用途各异。
在利用LabVIEW实现滤波功能时,选择合适的滤波器是关键,在选择滤波器时,可参照不同滤波器的特点,考虑滤波的实际要求来选择合适的滤波器[5]。
各种滤波器的特点及选择滤波器的步骤见图1。
图1滤波器选择步骤
二设计原理与方案
2.1信号输入部分:
方案一:
直接采用波形生成或信号生成中的正弦信号及噪声信号组成输入信号。
方案二:
采用的是波形生成中的公式波形,然后加入波形生成中的高斯白噪声。
但在两信号相加后输出频谱时连不上。
因为输入的是二维数组,要加一个转至动态数据的控件,转化为单一波形。
亦可采用信号生成中的高斯白噪声。
方案三:
采用公式信号产生输入信号。
因为要求中是输入一个公式信号波形(参数可调),并且每种方案我都试过,方案三简单些。
因此采用方案三。
2.2滤波器部分:
采用波形调理中的数字IIR滤波器和数字FIR滤波器进行滤波。
采用滤波器中的单个IIR滤波器和FIR滤波器逐次进行滤波。
因为方案一滤波参数设置经常遇到问题,因此采用用方案二。
2.3显示部分:
开始显示了幅度谱和相位谱,观察发现相位谱很乱,便舍弃了只用了幅度谱.
三模块设计
3.1信号输入模块的设计
采用公式信号波形,公式通过字符串编辑不同的公式以便采用。
幅值固定。
频率参数设置FS〉2F,而采样点数N也不宜过大。
3.2滤波器的选用
采用了滤波器中的巴特沃斯滤波器,切比雪夫滤波器,椭圆滤波器,贝塞尔滤波器,加窗FIR滤波器。
3.3滤波环节的设计
采用选择结构逐个用不同的滤波器进行滤波。
滤波参数设置采用簇对其进行控制。
0<
FL<
FH<
FS.
3.4显示模块的设计
采用波形图显示滤波前后的波形及其频谱。
开始采用的是波形图表,因为波形图表会保留来源于此前更新的历史数据,因此图形越来越密,不易观察。
频谱
只采用傅里叶变换显示了幅度谱。
四总体及调试
由于滤波器对信号的分析要求循环进行,而整个过程都希望是认为控制的,因此框图程序里采用了一个While循环结构。
所设计的滤波器可以进行IIR和FIR两种滤波方式,并且要实现滤波器的选择,因此采用了一个实现滤波器的选择,选用了滤波器及滤波方式的枚举。
为了验证所设计滤波器的滤波效果,将混有噪声的正弦信号经IIR滤波器滤波,IIR滤波器选择BUTTERWORTH带通滤波方式,滤波器的参数设置为:
fl=0.125Hz,fh=0.45Hz,采样频率fs=1s。
滤波后噪声得到了有效抑制,滤波效果良好。
以IIR数字滤波器中的几种模拟滤波器原型而言,Butterworth型IIR滤波器具有单调下降的幅频特性;
Chebyshev型幅频特性在通带或者在阻带有波动,可以提高选择性;
而Ellipse其选择性相对前三种是最好的。
譬如
(1)对于公式sin(w*t)+sin(2*w*t)
1.加窗FIR窗:
矩形低通波形图如下:
加窗FIR窗:
矩形高通波形图如下:
其中高通、低通、带通、带阻可以自由选择。
2.IIR椭圆滤波器阶数4低通波形如下:
IIR贝塞尔滤波器阶数4低通波形如下:
在IIR中可以选择多种滤波器功能,如切比雪夫、巴特沃斯等。
(2)对于公式sin(w*t)+rand(10)
1.FIR滤波器矩形窗低通
后面板的程序图
五设计心得
通过这次实验,在调试的过程中我巩固了学过了的滤波器知识,进一步学会了部分数组,簇,傅里叶变换的用法,同时锻炼了实验设计的思维。
在某些问题上,与同学进行某些讨论,更加使得自己对于实验设计的认识加深。
比如:
对于噪声的问题上,很多同学利用噪声发生器来提供噪声。
但噪声的随机性比较大,不利于波形的观察与对比。
于是在最后我们组果断的省去了这个,而是利用公式提供一个具体的噪声,不仅便于观察,而且对于高通、低通的分析比较清晰。
对于波形的刻度归一化问题上,我们组经过调式,发现它与缩放因子有关,只要适当的倍数增加就可以使得,刻度相同。
光理论性的东西是很肤浅的,实践才是最好的验证。
设计任务书
(二)
红外语音介绍机设计
通过查阅资料,能独立进行电子小系统的设计。
2.进一步锻炼电子技术的综合设计能力,并对单片机技术有一个更加全面的了解。
利用SPCE061A或者51单片机设计一个红外语音介绍机。
当顾客停留在介绍机前时,介绍机自动用语音对某个物品能进行详细介绍。
介绍语音能在10秒以上,并且可以随时更改重录,录入的语音可以永久保存在芯片中,不会因为断电原因而丢失。
要求:
1.使用红外传感器元件;
2.使用SPCE061A或者51单片机;
3.电路简单实用。
1.写出详细设计方案和设计电路图;
2.写出系统调试测试报告;
3.写出设计总结。
1、概述
1.1设计背景和意义
随着社会的发展,科技的进步,越来越多的电子产品智能化,这给我们生活和工作带来了很大的方便。
智能化的电子产品在商业中的应用也很广泛,最常见的是各大商店的自动语音介绍机,它不仅给各大店主带来了方便,还减轻了人力资源的利用,所以在科技化的今天我们对红外语音介绍机的设计也变得有必要,这也可以增强我们学生的动手能力
1.2设计目的
1.、锻炼综合运用知识的能力。
2.、进一步锻炼电子技术的综合设计能力,并对单片机技术有一个更加全面的了解。
1.3设计指标与要求
1、使用红外传感器元件;
2、使用SPCE061A或者51单片机;
3、电路简单实用。
2、设计方案及模块介绍
2.1整体思路
当顾客所辐射的红外线在热释电红外传感器的探测元上感应停留三秒以上时,热释电红外传感器将输出电压信号,然后经信号放大电路放大后送入红外传感信号处理器,经处理后向单片机输出高电平。
由单片机控制语音芯片放音介绍商品。
介绍语音在10秒以上。
系统主要由红外采集模块,信号处理模块,录音模块、录音存储模块、语音介绍模块、电源模块组成。
2.2模块介绍
2.2.1红外采集模块:
红外检测电路的功能是由热释电红外探头P288来实现。
它将数据采集、A/D转换、比较判断等功能集成于一体。
2.2.2信号处理模块:
由于热释电红外传感器输出的探测信号电压十分微弱(通常仅有1mV左右),而且是一个变化的信号,同时菲涅尔透镜的作用又使输出信号电压呈脉冲形式(脉冲电压的频率由被测物体的移动速度决定,通常为0.1~10Hz左右),所以应对热释电红外传感器输出的电压信号进行放大。
放大后的信号在送入单片机处理控制之前,采用专用红外传感信号处理器BIS001进行预处理,以供单片机使用。
2.2.3录音模块:
系统采用脱机工作模式下的语音录放系统。
语音录放通过SPCE061A开发板上的设置按键实现。
同时,系统可以实现USB的基本功能:
通过USB设备将存储芯片中的语音文件上传到PC机中,通过软件将语音文件转换成WAV文件,并在PC机中播放出来;
也可以通过USB设备将PC机中的语音文件下载到存储器模组中,通过按键选择播放。
基于单片机的语音录入和播放系统组成如图1所示。
系统机构中语音录音部分是把语音声波信号经过话筒和放大器转换成具有一定幅度的模拟电信号,再转换成计算机能够存贮、处理的数字量信号。
系统语音播放是将存储器中存储的语音数据顺序取出,通过MCU进行D/A转换输出,经过电容滤波后,恢复原始语音波形,通过驱动扬声器放音。
系统中对于语音信号的离散处理是将模拟(连续)的声音波形数字元化(离散化),便于数字计算机进行处理。
而数字音频的处理主要包括采样和量化两个部分。
由于系统采用自带A/D、D/A电路
单片机SPCE061A实现模拟信号与数字信号之间的相互转换,所以开发的主要工作放在语音录入和播放系统程序设计、单片机与存储器模组连接和功能实现以及单片机与USB模组的连接和功能实现。
3.硬件部分
3.1电路图(如下)
BIS0001红外传感器信号处理器的原理框图。
外界元件由使用者根据需要选择。
由图可见BISS0001是由运算放大器、电压比较器和状态控制器、延迟时间定时器、封锁时间定时器及参考电压源等构成的数模混合专用集成电路。
可广泛应用于多种传感器和延时控制器。
各引脚的定义和功能如下:
⏹VDD—工作电源正端。
范围为3~5V。
⏹Vss—工作电源负端。
一般接0V。
⏹IB—运算放大器偏置电流设置端。
经RB接VSS端,RB取值为1M左右。
⏹1IN-—第一级运放放大器的反相输入端。
⏹1IN+—第一级运放放大器的同相输入端。
⏹1OUT—第一级运算放大器的输出端。
⏹2IN-—第二级运算放大器的反相输出端。
⏹2OUT—第二级运算放大器的输出端。
⏹Vc—触发禁止端。
当Vc<VR时禁止触发;
当VC>VR时允许触发。
VR≈0.2VDD。
⏹VRF—参考电压及复位输入端。
一般接VDD。
接“0”时可使定时器复位。
可重复触发和不可重复触发控制端。
当A=“1”时,允许重复触发,当A=“0”时,不可重复触发。
Vo—控制信号输出端。
由Vs上跳边沿触发使Vo从低电平跳变到高电平时为有效触发。
在输出延时间Tx之外和无Vs上跳变时Vo为低电平状态。
RR1RC1—输出延迟时间Tx的调节端。
Tx≈49152R1C1。
RR2RC2—触发封销时间Ti的调节端。
Tx≈24R2C2。
BISS0001芯片的2脚接输出,调试面包板上的电路,当人走近在红外感应范围内是2脚输出为高电平,当人离开时2脚变为低电平
3.2单片机连接
将喇叭电池和SPCE061A单片机连接好,利用下载线将程序下载到单片机内部,然后开始录音,K1开始录音,K3停止录音,K2播放录音,录音做好后将单片机和面包板上的电路连接起来,BISS0001芯片的2号脚输出接到单片机b1,调试整个电路。
4软件部分
C程序:
软件部分参考单片机光盘程序在加一个延时程序
//======================================================
//Theinformationcontainedhereinistheexclusivepropertyof
//SunnnorthTechnologyCo.Andshallnotbedistributed,reproduced,
//ordisclosedinwholeinpartwithoutpriorwrittenpermission.
//(C)COPYRIGHT2003SUNNORTHTECHNOLOGYCO.
//ALLRIGHTSRESERVED
//Theentirenoticeabovemustbereproducedonallauthorizedcopies.
//========================================================
//============================================================
//工程名称:
61_Record
//功能描述:
61板程序示例--简易复读机
//使用61板上的三个按键控制录放音,约可录制20秒的声音
//Key1-录音
//Key2-播放录音
//Key3-停止录/放音
//涉及的库:
CMacro1016.lib
//SacmV26e.lib
//组成文件:
main.c
//Flash.asm,hardware.asm,ISR.asm,Key.asm,sram.asm
//Flash.h,DVR.h,Key.h,SPCE061A.h,DVR.inc,Key.inc,SPCE061A.inc
//硬件连接:
61板自带的三个按键已经连接在IOA0~IOA2上
//维护记录:
2006-8-30v1.0
//===============================================
//文件名称:
主程序以及录音、放音子程序
2006-08-30v1.0
#include"
spce061a.h"
Flash.h"
DVR.h"
Key.h"
#defineSTART_ADDR0xA000//定义录音起始地址
#defineEND_ADDR0xFBFF//定义录音结束地址
#defineP_IOB_Data(volatileunsignedint*)0x7005//定义P_IOB_Data指针,使其指向0x7005的地址单元
#defineP_IOB_Buffer(volatileunsignedint*)0x7006//定义P_IOB_Buffer指针,使其指向0x7006的地址单元
#defineP_IOB_Dir(volatileunsignedint*)0x7007//定义P_IOB_Dir指针,使其指向0x7007的地址单元
#defineP_IOB_Attrib(volatileunsignedint*)0x7008//定义P_IOB_Attrib指针,使其指向0x7008的地址单元
//=============================================================
//语法格式:
voidPlayRecord(void);
//实现功能:
播放录音
//参数:
无
//返回值:
voidPlayRecord()
{
unsignedlongAddr,EndAddr;
unsignedintRet;
SACM_DVR_Initial(0);
//初始化放音
SACM_DVR_InitQueue();
//初始化解码队列
SACM_DVR_InitDecoder(3);
//初始化解码算法,声音由DAC1和DAC2输出
Addr=START_ADDR+1;
EndAddr=Flash_ReadWord(START_ADDR);
//从录音首地址中读出录音结束地址
while
(1)
{
*P_Watchdog_Clear=0x01;
//清看门狗
while(SACM_DVR_TestQueue()!
=1)//如果解码队列未满
{
Ret=Flash_ReadWord(Addr);
//取录音数据
SACM_DVR_FillQueue(Ret);
//填充入解码队列
Addr++;
if(Addr>
EndAddr)break;
}
if((SACM_DVR_Status()&
0x01)==0||Key_Get()==KEY_3)//如果播放完毕或Key3键按下则停止
SACM_DVR_Stop();
//停止播放
break;
else
SACM_DVR_Decoder();
//数据解码
}
}
voidRecord(void);
录制声音
voidRecord(void)
unsig