用Matlab设计的低通数字滤波器.docx
- 文档编号:23215792
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:29
- 大小:1,011.36KB
用Matlab设计的低通数字滤波器.docx
《用Matlab设计的低通数字滤波器.docx》由会员分享,可在线阅读,更多相关《用Matlab设计的低通数字滤波器.docx(29页珍藏版)》请在冰豆网上搜索。
用Matlab设计的低通数字滤波器
指导教师评定成绩:
审定成绩:
XX邮电大学
自动化学院
综合课程设计报告
低通数字滤波器设计
单位(二级学院):
自动化
学生姓名:
专业:
自动化
班级:
0810902
学号:
指导教师:
设计时间:
2012年11月
XX邮电大学自动化学院制
摘要
本次设计以AT89S52单片机为控制器件,利用AD/DA转换芯片构成低通数字滤波器。
首先利用MATLAB根据要求设计低通滤波器模型并在该平台进行初步仿真得到较为理想的效果。
接着利用proteus软件搭建硬件电路,并对编写的程序进行检测;程序检测无误后,再用Protel画出电路图。
首先利用ADC0809将模拟信号转换成数字信号输入单片机,正弦模拟信号由AD9850模块产生,是一般正常的低频正弦波;另一个噪声信号是通过单片机产生的高频脉冲信号。
然后通过滤波程序将采集的数据进行算法滤波,滤波后的数据通过DAC0832输出,将DA0832的输出信号通过一级运放(UA741)转换成电压输出。
最后将运放输出的结果接到示波器上进行显示。
关键字:
AT89C51、DDS、ADC0809、DAC0832、UA741
设计题目
题目与要求
低通滤波器是允许低频讯号通过,而不允许高频讯号通过的滤波器。
本题目要求用单片机(型号任选)制作一个低通数字滤波器,要求:
1.根据确定的采样频率,用MATLAB设计低通滤波器模型以满足不同截止频率需求,并进行仿真;
2.用单片机设计并制作一个低通数字滤波器,实现数据采集、滤波处理、信号输出等功能(包括软、硬件);
3.滤波器能与PC机通信,设计通信协议,实现截止频率参数的调节、原始信号采样数据与滤波后数据的上传;
4.利用高级语言开发工具,设计PC机端的程序,可以调节滤波器参数,接收滤波器上传的原始信号采样数据与滤波后数据,并能绘图、保存;
5.设计几种不同频率、类型的噪声,利用滤波器进行试验,记录实验情况并进行分析、总结;
6.按规定的统一格式设计报告。
第一章MATLAB仿真
1.1方案论证
数字滤波器,按功能分类,可以分成低通、高通、带通、带阻、全通滤波器;按实现的网络结构或单位抽样响应分类:
可以分成无限脉冲响应滤波器(IIR滤波器)、有限脉冲响应滤波器(FIR滤波器)。
FIR滤波器可以对给定的频率特性直接进行设计,而IIR滤波器目前最通用的方法是利用模拟滤波器的设计方法进行设计。
模拟滤波器设计已经有了相当成熟的技术和方法,有完整的设计公式,还有比较完整的图表可以查询,因此我们采用IIR滤波器的设计方法进行本次滤波器的设计。
IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
在参考相关数字滤波器设计的资料后,我们决定采用巴特沃斯滤波器设计方法进行本次数字低通滤波器的设计。
1.2设计方法及原理介绍
在此介绍一下低通滤波器的技术要求:
:
通带截止频率(又称通带上限频率)
:
阻带下限截止频率
:
通带允许的最大衰减
:
阻带允许的最小衰减(
,
的单位dB)
:
通带上限角频率
:
阻带下限角频率
结合相关资料,总结IIR巴特沃斯数字低通滤波器的设计步骤如下:
(1).按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标。
在这里要求在频率小于200Hz的通带内,幅度特性下降小于3dB;在频率大于480Hz的阻带内,衰减大于15dB,采样频率为1200Hz。
(2).根据转换后的技术指标设计模拟低通滤波器
。
因为我们设计的滤波器的冲击响应一般都为实数,所以有
这样,如果我们能由
,
,
,
求出
,那么就容易得到所需要的
。
巴特沃思(Butterworth)滤波器的
为
,其中C为待定常数,N为待定的滤波器阶次。
总结后,巴特沃思滤波器的设计步骤分为以下五步:
A、确定技术指标,求得数字边缘频率:
,
,
B、将数字低通滤波器的技术指标转换为模拟低通滤波器技术指标
用双线性变换法,预畸变公式为
,可得
C、确定滤波器阶数N
,
取N=1。
D、该一阶巴特沃斯归一化模拟低通滤波器的系统函数为:
反归一化后的模拟低通滤波器为:
E、采用双线性变换法转换为数字低通滤波器的系统函数:
脉冲响应不变法设计的滤波器在
附近存在哦率混叠失真,从而使其阻带内不满足指标要求,双线性变换法无频率混叠失真,满足要求,但其存在非线性频率失真,且频率越高,失真越明显。
1.3matlab编程实现
源程序见附件一,在此介绍几个主要命令的使用方法。
(1).[N,wc]=buttord(wp,ws,αp,αs)
用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。
调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:
0≤wp≤1,0≤ws≤1。
1表示数字频率pi。
(2).[z0,p0,k0]=buttap(N)
用于计算N阶巴特沃斯归一化(3dB截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。
(3).[b,a]=zp2tf(z,p,k)
零极点形式的传递函数的转换。
(4).[bt,at]=lp2lp(b,a,Wo)
低通滤波器截止频率变换。
(5).[H,F]=freqz(B,A,N,Fs)
计算数字滤波器的频率响应的函数。
我们在此设定相关参数,通带上限截止频率fp=200Hz;阻带下限截止频率fs=480Hz;通带最大衰减ap=3dB;阻带最小衰减as=15dB;抽样频率Fs=1200Hz。
运行程序得到图1.1。
通过图形,我们可以看出滤波器的低频增益基本是常数1,高频衰减较快,通带上限截止频率、阻带下限截止频率等关键指标均满足设计要求。
1.4Simulink仿真结构图
经过分析,Simulink仿真中应包含如下几个模块:
1.信号发生模块。
采用两个离散的正弦信号发生器,一个用于产生能通过滤波器的理想信号,一个用于产生被滤波器滤除的噪声信号。
2.信号叠加模块。
采用一个简单的加法器就能将噪声信号叠加到理想信号上去。
3.数字低通滤波器模块。
我们采用simulink中自带的digitalfilterdesign,它能够很方便地进行数字滤波器的设计,模拟数字低通滤波器的滤波功能。
4.信号观测模块。
采用示波器模块观察滤波前后波形的变化,从而得出是否有滤波效果。
仿真结论:
当噪声信号频率较高,高于所设计滤波器的截止频率时,滤波器能够较完全地将噪声信号滤除,经滤波器输出的信号与理想信号相差不大;当噪声信号频率较低,低于所设计滤波器的截止频率时,滤波器不能地将噪声信号滤除,经滤波器输出的信号还有大量噪声信号。
第二章硬件设计方案
2.1硬件功能整体设计
1)STC89S52是一款性能相对较低I/O口并不是很多,但是相对较为便宜,性价比相当高,编程比较容易。
2)采用DDS模块产生一个低频并且幅值较大的正弦波,利用单片机产生一个高频且幅值较小的模拟噪声脉冲,两个波形通过自制的加法器得到待滤的信号传送给单片机采集处理。
3)常用并且熟练的转换器中,主要有ADC0809,本身题目要求的截止频率不高,程序相对较为简单,价格合适,性价比比较好。
4)波形显示过程中,将滤波后的信号通过AD0832转换为模拟信号输出,再经过一级运放(UA741)将电流型输出转换为电压输出,输出信号通过示波器显示出来。
根据以上的方案选择我们的设计思路基本成熟,通过讨论得到以下的思路方框图2.1:
图2.1硬件功能框图
整体思路描述:
首先给定的信号从A/D转换器的I/O口进入,经过模数转换之后得到成为单片机所能识别的二进制信号再经P0接口输入单片机,根据事先存储在单片机内的程序依次对应,接着通过D/A转换器,转换成模拟信号,由于D/A转换器所得的信号为电流信号,所以需通过UA741运算放大器,将所得的电流信号转换成电压信号,最后在示波器上显示出波形。
2.2单片机最小系统
单片机内部具有一个高增益反相放大器,用于构成振荡器。
通常在引脚XTAL1和XTAL2跨接石晶体和两个补偿电容构成自激振荡器,系统时钟电路结构如图3.3所示,可以根据情况选择6MHz、8MHz或12MHz等频率的石英晶体,补偿电容通常选用20—30PF左右的瓷片电容。
单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。
上电复位要求接通电源上,自动实现复位操作。
手动复位要求的电源接通下,在单片机运行期间,用按钮开关操作使单片机复位。
复位电路结构图2.2所示。
上电自动复位通过电容充电来实现。
手动按键复位是通过按键将电阻与VCC接通来实现。
图2.2单片机最小系统
2.3ADC0809和74HC74
8位逐次逼近式A/D转换器ADC0809内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前应用最广泛的8位通用A/D芯片,内部结构:
ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
74HC74是一块分频芯片,由于单片机的ALE端口输出的频率为4MHZ的方波,相对于ADC0809,频率太大我们需要进行分频,结合常用的分频芯片我们采用的是74HC74进行4分频得到500KHZ的方波作为ADC0809的转换频率。
工作过程:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
2.4DAC0832和UA741
功能:
将波形样值得编码转换成模拟值,完成波形的输出。
由一片DAC0832和UA741运放组成。
DAC0832是一个具有两个输入数据寄存器的8位DAC。
目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。
另一类芯片内没有数据寄存器,输出信号随数据输入线的状态的变化而变化,因此不能直接与微型计算机接口,必须通过并行口与微型计算机接口。
DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,股不需要外加电路。
DAC0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以用运算放大器UA741实现。
单片机向DAC0832发送数字编码,产生不同的输出。
先利用采样定理对各种波形进行抽样,然后把各种采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表的方法依次取出,经过D/A转换后输出就可以得到波形。
假如N个点构成波形的一个周期,则DAC0832输出N个样点值后,样值点形成运动轨迹,即,一个周期。
重复输出N个点后,成为第二个周期。
利用单片机的晶振控制输出周期的速度,也就是控制输出的波形的频率
图2.5数/模转换模块
2.5串口部分
串行接口SerialInterface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。
串行通讯的特点是:
数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。
串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
2.6DDS部分
2.6.1DDS概述
直接数字式频率综合器DDS,实际上是一种分频器:
通过编程频率控制字来分频系统时钟以产生所需要的频率。
DDS是产生高精度、快速变换频率、输出波形失真小的优先选用技术。
DDS以稳定度高的参考时钟为参考源,通过精密的相位累加器和数字信号处理,通过高速D/A变换器产生所需的数字波形(通常是正弦波形),这个数字波经过一个模拟滤波器后,得到最终的模拟信号波形。
DDS有两个突出特点:
一方面,DDS工作在数字域,一旦更新频率控制字,输出的频率就相应改变,其跳频速率高:
另一方面,由于频率控制字的宽度宽,频率分辨率高。
2.6.2DDS工作原理
DDS的基本原理是利用采样定理,通过查表法产生波形。
DDS的结构有很多种,其基本的电路原理可用图2.6.1来表示。
图2.6.1电路原理
相位累加器由N位加法器与N位累加寄存器级联构成。
每来一个时钟脉冲fs,加法器将频率控制字k与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。
累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。
这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。
由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。
用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。
波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。
低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。
DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。
AD9850是AD公司生产的最高时钟为125MHz、采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能模数变换器(DAC)和高速比较器3部分构成,能实现全数字编程控制的频率合成。
AD9850内含可编程DDS系统和高速比较器,可实现全数字编程控制的频率合成。
可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N一般为24~32。
每来一个外部参考时钟,相位寄存器便以步长M递加。
相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。
正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°X围的一个相位点。
查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC输出模拟量。
相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相应地正弦查询表
每经过一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。
输出的正弦波频率fout=M*fc/2的N次方,fc为外部参考时钟频率。
AD9850采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10位后输入到DAC,DAC再输出两个互补的电流。
DAC满量程输出电流通过一个外接电阻RSET调节,典型值3.9千欧。
将DAC的输出经低通滤波后接到AD9850内部的高速比较器上即可直接输出方波。
在125MHz的时钟下,32位频率控制字可使AD9850输出频率分辨率达0.0291Hz。
下图为DDS模块图形。
图2.6.2DDS模块
第三章软件设计
3.1单片机软件设计
单片机的采样程序设计,ADC0809采集转换完成的状态信号(EOC)置位后我们有三种方式可以将数据正确的送给单片机(定时传送方式,查询方式,外部中断方式),但结合我们的需要,我们选择的是定时器中断采集以便可以通过上位机改变单片机的采样频率,满足不同截止频率的滤波需求。
最初的方案选择中我们通过资料发现算法滤波的方式很多,我们选用一阶巴特沃斯滤波器,传递函数为
,因此本设计采用均值滤波,均值滤波就是通过对信号多次的采样再求其平均值,随着采样次数的增加提高信号的分辨率和降低干扰量的影响。
均值滤波的公式为:
式中:
为第i次采样时的滤波器输入;n为采样次数,Y为取均值后滤波器的输出。
在均值滤波中,采样次数与运算量、存储空间是矛盾的。
在一定X围内,采样次数n越大。
均值滤波的效果越好;但n越大,运算量和存储空间开销就越大。
因此,我们要综合考虑三者的关系,选择合适的n的值。
图3.1软件流程图
3.2PC机通信软件设计
单片机与PC机通信我们采用的的串口通信。
通信原理主要依据是串口中断实现下位机与PC机及时通信的,PC机发送给下位机的数据,单片机通过串口中断从缓冲寄存器中读取数据并赋值给下位机软件滤波的参数,实现PC机对截止频率的控制。
单片机要将滤波后的数据上传给PC机通过单片机的串口发送,上位机我们采用串口调试助手接收并显示接收到得数据。
图3.2串口程序流程图
第四章心得体会
此次课程设计我组选择的题目是设计低通数字滤波器,在和指导老师进行探讨后,我们首先进行了分工,我主要负责硬件的设计、Proteus电路图的绘制。
我组每周闲暇的时候在一起讨论,分析系统的软件和硬件设计,大家都积极参与。
我们首先进行了系统设计的设计讨论,在详细了解控制对象和控制要求后确定系统总体方案,分工以后经过和设计软件的同学讨论开始进行硬件设备的选择,经过老师的提醒我们注意了硬件选择时的字长、速度、内存容量、中断能力、外围接口、变送器以及选择执行机构。
经过探讨以后,我们开始进行Proteus仿真图的绘制,虽然这时对整体硬件的结构已经有所认识,但是在绘制仿真图的过程中还是遇到了不少的问题。
于是我又开始系统的学习Proteus以及protel软件,经过老师的指导和与同学的探讨和请教,我们最终顺利的完成了硬件电路图的设计。
这次课程设计给我带来了很大的收获,让我学到了很多,不仅掌握了简单的电子电路的设计与制作,也掌握了一些芯片的原理与作用。
在制作电路时,我深深体会到连接电路时一定要认真仔细,而且要确保每条导线接触良好。
在接电路之前,一定要把电路的原理搞清楚,通过查资料把电路中的每个元器件的作用弄明白和把每个芯片的管脚的功能弄清楚,明白每个元器件的各个管脚与它哪里相对应,其实最主要的是要搞清楚元器件与元器件之间的连接关系,它们接在一起可以实现哪些功能。
在电路设计中,我觉得电路检查是非常重要的一步,从中我们可以学到很多东西,可以提高自己发现问题解决问题的能力,使自己的动手能力有一定的提高。
此次课程设计使我进一步掌握了电子电路的测量方法和调试方法,可以独立解决设计与调试过程中出现的一些问题,能够正确选用元器件与材料,并查阅各种有关手册和正确拟写设计报告。
通过此次电子电路设计才知道自己学的很多知识都是很不扎实的,这次设计不仅拓展了自己电路方面的相关知识,更重要的是锻炼了实践的能力。
参考文献
[1]X毅刚,彭喜元,董继成.单片机原理及应用[M].高等教育,2003.12
[2]杨素行.模拟电子技术基础简明教程[M].高等教育,2007.05
[3]杜刚.电路设计与制版protel应用教程.清华大学.2006
[4]赵晶编著.电路设计与制版protel99高级应用.人民邮电.2000.11
附件1:
方波源程序
#include
#include
#defineuintunsignedint//定义unsignedint为uint
#defineucharunsignedchar
uintjishu=0;
sbittime_c=P2^1;
voidmain()
{
TMOD=0x22;
TH0=256-10;
TL0=256-10;
EA=1;//总中断打开
ET0=1;//定时器中断打开
TR0=1;
while
(1)
{
//P2=P1;
}
}
voidcaiyan()interrupt1
{jishu++;
if(jishu==5*5)///周期5毫秒
{
time_c=~time_c;
jishu=0;
}
}
附件2:
DDS正弦信号模块
#include
#include
#include
sbitad9850_w_clk=P2^2;//P2.2口接ad9850的w_clk脚/PIN7
sbitad9850_fq_up=P2^1;//P2.1口接ad9850的fq_up脚/PIN8
sbitad9850_rest=P2^0;//P2.0口接ad9850的rest脚/PIN12
sbitad9850_bit_data=P1^7;//P1.7口接ad9850的D7脚/PIN25
//P1为8位数据口
//***************************************************//
//ad9850复位(并口模式)//
//---------------------------------------------------//
voidad9850_reset()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
}
//***************************************************//
//ad9850复位(并口模式)//
//---------------------------------------------------//
voidad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
//w_clk信号
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
//fq_up信号
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
//***************************************************//
//向ad9850中写命令与数据(并口)//
//---------------------------------------------------//
voidad9850_wr_parrel(unsignedcharw0,doublefrequence)
{
unsignedcharw;
longinty;
doublex;
//计算频率的HEX值
x=4294967295/125;//适合125M晶振
//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz!
!
!
freq
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 设计 数字滤波器
![提示](https://static.bdocx.com/images/bang_tan.gif)