1、目录一、设计方案选择31.可控增益放大器部分32.程控滤波器部分4二、系统设计51.系统总设计52.程控放大器电路设计53.低通滤波器电路设计64.高通滤波器电路设计7三、系统软件设计8四、系统测试91.测试仪器92.测试方法与测试数据9五、测试结果分析10六、参考文献11七、附录:111.主要元件清单112.STC98C51控制程序11摘要:本系统由可控增益放大器、程控滤波器组成。可控增益放大器部分以可变增益放大器AD603作为核心器件,使用STC89C51单片机控制12位DAC的输出电压,进而控制AD603增益放大,实现增益范围040dB,步进10dB,实现了输出增益的动态调整;采用集成开
2、关电容滤波器芯片LTC1068构成,通过改变时钟来实现滤波器截止频率1kHz20kHz,步进1kHz。关键词:程控滤波器,AD603,DAC,STC89C51,LTC1068一、 设计方案选择1. 可控增益放大器部分方案一:使用数字电位器和普通运放组成放大电路。通过控制数字电位器来改变放大器的反馈电阻实现可变增益这种方案硬件实现较简单,但限于数字电位器的精度较低、档位有限,这种方案很难实现增益的精确控制,同时数字电位器受信号的带宽限制,在运放环路中会影响整个系统的通频带宽。方案二:采用D/A衰减器实现。利用可编程放大器思想,现将输入的信号放大1000倍,再将其作为D/A的基准电压,这时D/A作
3、为一个程控衰减器。但是由于控制的数字量与所需的增益(dB)不成线性关系而是指数关系,造成增益调节不均匀,精度下降。方案三:采用控制电压与增益成线性关系的可编程增益放大器PGA。可控增益放大器(如AD603)内部由R-2R梯形电阻网络和固定增益放大器构成,加在其梯型网络输入端的信号经衰减后,由固定增益放大器输出,衰减量是由加在增益控制接口参考电压决定;而这个参考电压可通过控制器进行运算并控制D/A芯片输出控制电压得到,从而实现较精确的数控。综上所述,本设计采用方案三,AD603是一款低噪声,精密控制的可变增益放大器,温度稳定性高,最大增益误差为0.5dB,其增益(dB)与控制电压(V)呈线性关系
4、,可以采用DAC来控制放大器的增益。2. 程控滤波器部分方案一:以集成运放为核心的有源RC滤波电路,结构简单,所需元件较少,成本低,且电路输入阻抗高、输出阻抗低,并有专门的设计仿真软件,可以在阻带实现很大的衰减。但这种滤波器的阻容参数固定以后中心频率就不可以再调节,无法实现程控。方案二:采用实时DSP或FPGA数字滤波技术。数字信号处理灵活性大,可以在不增加硬件成本的基础上对信号进行有效滤波,但不适合高增益弱信号检测。要进行高效率的滤波,需要 A/D、D/A具有较高的转换速率,处理器具有较高的运算速度。方案三:采用无源LC滤波器。利用电感和电容可以搭建各种类型的滤波器。参照滤波器设计手册上的相
5、关参数,可以比较容易的设计出理想的滤波器。但是如果要是截止频率可调,只有改变电感和电容的参数,这样设计,硬件将会非常复杂。方案四:采用开关电容滤波器。与数字滤波相比,省去了量化过程,因而具有处理速度快、整体结构简单等优点。开关电容滤波器的滤波特性取决于电容比和时钟频率,只要精确控制时钟频率,便可以精确调节滤波器的中心频率。根据四种方案的特点,选用开关电容滤波器LTC1068作为数控滤波器的核心。采用集成的开关电容滤波器芯片。开关电容滤波器是由MOS开关、MOS电容和MOS运算放大器构成的一种大规模集成电路滤波器。其特点是:(1)当时钟频率一定时,开关电容滤波器的特性仅取决于电容的比值。由于采用
6、了特种工艺,这种电容的比值精度可达0.01,并且具有良好的温度稳定性。(2)当电路结构确定之后,开关电容滤波器的特性仅与时钟频率有关,改变时钟频率即可改变其滤波器特性。(3)开关电容滤波器可直接处理模拟信号,而不必像数字滤波器那样需要AD、DA变换,简化了电路设计,提高了系统的可靠性。集成开关电容滤波器通常内置多种滤波器模块,通过外接少量电阻可以将各种模块配置为高通,低通,带通,带阻等常见形式,由于其滤波器的截止频率由外部时钟决定,只要有一个稳定的外部时钟,滤波器的截止频率是可以保证精度的,同时,为了校准元件误差,可以通过时钟频率的微调,改变滤波器的截止频率。二、 系统设计1. 系统总设计设计
7、并制作程控滤波器,其组成如图所示。放大器增益可设置;低通或高通滤波器通带、截止频率等参数可设置。图:系统总体原理框图前级放大器:0PA642保持信号不失真;压控放大器AD603:实现040dB步进;12位DAC转换芯片LTC6518:控制AD603的增益;主控芯片MCU:STC89C51;时钟电路:LTC6903产生时钟信号,并经OPA694进行缓冲开关电容滤波器LTC1068:即可实现低通、高通滤波,由时钟信号控制截止频率。显示部分:LCD1602作为数据显示2. 程控放大器电路设计本设计将此部分电路分为两级:增益控制部分和电压放大部分。增益控制部分采用AD603通频带最宽的一种接法。电路图
8、如下图所示,设计通频带为90MHz,增益为-10dB+30dB,输入控制电压为-0.5V+0.5V。增益和控制电压的关系为:Au=40VG+10。一级的增益只有40dB,使用两级串联,增益为Au=40VG1+40VG2+20增益范围是:-20dB+60dB,满足题目要求。AD603的输入控制电压VG即是12位DAC数控转换芯片TLC5618的输出电压(TLC5618的基准电压由基准电压源MC1403提供),其中Vref = 0.25V。3. 低通滤波器电路设计题目中要求2fc处放大器与滤波器的总电压增益不大于30dB。因放大器的增益为40dB,所以滤波器在2fc处的衰减A要不小于10dB。但为
9、了保证设计指标的可靠性,本系统将此衰减A定为20dB。滤波器的归一化频率=W/Wc=2fc/fc=2,可以计算出滤波器的最小阶数为:因此本设计的滤波器阶数定为四阶。通过查找巴特沃兹滤波器参数表,可以得到四阶低通函数归一化近似函数为:LTC1068是LINEAR公司的一款开关电容滤波器芯片,其中包含四个通用二阶模块,每个模块都可以配置成高通、低通、带通、带阻等常见形式,滤波器的外部元件参数一旦确定,便可以使用时钟来调节截止频率。LTC1068共有模式1、模式1b、模式2、模式3共四种工作模式,对应不同的滤波特性。经过计算,低通滤波器电路设计采用LTC1068的两级滤波器模块组成四阶巴特沃兹低通滤
10、波器,第一级滤波器的Q=1.3066,第二级滤波器的Q=0.5412,f=20kHz。两级滤波器模块都工作在模式1下的低通模式,根据芯片手册提供的元件参数计算公式计算出外围电阻值,最终电路如图:图:低通滤波器电路4. 高通滤波器电路设计根据频率变换原理,高通滤波器可以转化为低通滤波器的设计。根据低通与高通的S域变换关系,相应的低通滤波器的参数为:设衰减A=20dB,归一化频率=W/Wc=2fc/fc=2。此时低通滤波器的最小阶数为:因此对应的高通滤波器的阶数定为四阶。四阶巴特沃兹低通滤波器的传输函数为:设,根据低通与高通的S域变换关系:THP(s)=TLP(s)|s=wp/s,可得四阶巴特沃兹
11、高通滤波器的传输函数为:高通滤波器电路设计采用LTC1068的两级滤波器模块组成四阶巴特沃兹高通滤波器,经过计算,第一级滤波器的Q=0.5412,第二级滤波器的Q=1.3066,f0=20kHz,两级滤波器模块都工作在模式3下的高通模式,根据滤波器的参数可以计算出每级滤波器对应的外围电阻值,最终设计电路图如图:图:高通滤波器电路三、 系统软件设计本作品软件部分用C语言编写。程序在WindowsXP操作平台下,用keil软件编译并下载到STC89C51单片机中(程序见附录)。软件设计可分为放大器增益控制和滤波器控制两个独立部分。放大器主要是控制放大器增益,滤波器控制主要是类型和截止频率。程控滤波
12、部分流程见下图:开始初始化N按键是否按下Y功能选择设置并控制放大器增益设置并控制滤波器的截止频率四、 系统测试1. 测试仪器测试仪器如下表所示序号仪器名称1双通道示波器2函数信号发生器2. 测试方法与测试数据(1)程控放大器电路测试:用经过校准的信号源在信号输入端加10mV正弦波。在100Hz40kHz频带内,按照一定的频率步进设置测试点,在每个频率测试点以10dB为步进,从0dB到40dB测试七组数据。(2)低通滤波器电路测试::使用信号发生器产生峰峰值为2V的稳定的正弦波信号接到滤波器的输入端,用单片机控制滤波器的截止频率在1kHz20kHz,调节信号发生器的输出频率,使得滤波器输出信号电
13、压为通带内的0.707倍,记录可得实际fc值和2fc处放大器和滤波器的总增益值。并计算相对误差,测试结果如下图所示。(3)高通滤波器电路测试:使用信号发生器产生峰峰值为2V的稳定的正弦波信号接到滤波器的输入端,用单片机控制滤波器的截止频率在1kHz20kHz,调节信号发生器的输出频率,使得滤波器输出信号电压为通带内的0.707倍,记录可得实际fc值和0.5fc处放大器和滤波器的总增益值。并计算相对误差,测试结果如下图所示。五、 测试结果分析(1)放大器在带内幅值的0.707倍时对应的频率为通频带范围。通过调节,在f=100Hz时,输出电压为通频带内幅值的0.707倍,所以fL =100Hz;在
14、f=40kHz时,幅值无衰减,所以fH40kHz;0.4-40kHz误差均小于5%,0.2-0.4kHz误差均小于10%,基本满足设计要求。(2)通过上述测试数据可知,低通滤波器的截止频率在1kHz20kHz间的误差均在3%以内(5%),2fc处的放大器和滤波器总增益最大为18dB(30dB),完全满足扩展要求。(3)使用信号发生器产生峰峰值为2V的稳定的正弦波信号接到滤波器的输入端,用单片机控制滤波器的截止频率在1kHz20kHz,调节信号发生器的输出频率,使得滤波器输出信号电压为通带内的0.707倍,记录可得实际fc值和0.5fc处放大器和滤波器的总增益值。并计算相对误差,测试结果如下图所
15、示。六、 参考文献1 黄智伟.全国大学生电子设计竞赛电路设计M.北京:北京航空航天大学出版社,2006.2 黄智伟.全国大学生电子设计竞赛系统设计M.北京:北京航空航天大学出版社,2006.3 高吉祥.全国大学生电子设计竞赛培训系列教程M.北京:电子工业出版社,2007.4 康华光.电子技术基础模拟部分M.高等教育出版社,1998.5 周惠潮.常用电子元件及典型应用M. 北京:电子工业出版社,2005.七、 附录:1. 主要元件清单序号名称或型号数量备注封装1LTC10682滤波器SOIC2AD6032可控增益放大器SOIC3OPA6421运算放大器SOIC4SCT98C511控制器DIP5M
16、C14031电压基准芯片SOIC6TLC56181DACSOIC7LCD16021显示2. STC98C51控制程序#include #include #define uchar unsigned char#define uint unsigned int#define data P0/液晶数据命令端sbit Au_up = P10;/增益步进sbit Au_down = P11;/增益步退sbit Lp_up = P12;/低通截止频率步进sbit Lp_down = P13;/低通截止频率步退sbit Hp_up = P14;/高通截止频率步进sbit Hp_down = P15;/高通截
17、止频率步退sbit clk = P20;/滤波时钟信号sbit lcdrs = P21;/液晶数据命令选择端sbit wr = P22;/读写选择端sbit lcden = P23;/液晶使能端sbit cs = P24;/DAC片选端,低电平有效sbit sclk = P25;/DAC时钟信号sbit din = P26;/DAC数据输入端口uchar Au = 0, Lp = 1,Hp = 1, temp = 10;uchar code table = 0123456789;uchar code table1 = Au=dB;uchar code table2 = Lp=kHz;uchar
18、 code table3 = Hp=kHz;uint dac_a = 0, 204, 409;uint dac_b = 0, 204, 409;/*延时*/void delayms(uint x)uint i,j;for(i = 0; i x; i+)for(j = 0; j 110; j+);/* DAC模块*/*DAC转换*/void dac_convert(uint digit)uint num;uchar i;sclk = 1;cs = 0;/片选有效for(i = 0; i 16; i+) num = digit & 0x8000;if(num) din = 1;else din =
19、 0;sclk = 0;_nop_();digit = 1;sclk = 1;_nop_();sclk = 1;cs = 1;/片选无效/*DAC输出*/void dac_out(uint out_a, uint out_b)dac_convert(0x5000 | (0x0fff & out_b);/通道a输出dac_convert(0xc000 | (0x0fff & out_a);/通道b输出/*lcd显示模块*/*lcd命令控制*/void write_com(uchar com) lcdrs = 0;data = com;delayms(5);lcden = 1;delayms(5)
20、;lcden = 0;/*lcd数据控制*/void write_data(uchar num)lcdrs = 1;data = num;delayms(5);lcden = 1;delayms(5);lcden = 0;/*lcd初始化*/void init_lcd()wr = 0;lcden = 0; write_com(0x38);/设置16*2显示,5*7点阵,8位数据接口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址加1write_com(0x01);/显示清0/*lcd显示*/void display()uchar i;
21、write_com(0x80);/控制显示的位置for(i = 0; i 5; i+)/增益显示 write_data(table1i);if(i = 2)delayms(5);write_data(tableAu/10);delayms(5);write_data(tableAu%10);delayms(5);write_com(0x80 + 0x40);/控制显示的位置for(i = 0; i 6; i+)/低通截止频率显示 write_data(table2i);if(i = 2)delayms(5);write_data(tableLp/10);delayms(5);write_dat
22、a(tableLp%10);delayms(5);for(i = 0; i 40) Au = 40;while(!Au_up);if(Au_down = 0)/增益步退 delayms(10);if(Au_down = 0) Au -= 10;if(Au 0) Au = 0;while(!Au_down);switch(Au) case 0:dac_out(dac_a0,dac_b0);break;case 10:dac_out(dac_a1,dac_b0);break;case 20:dac_out(dac_a1,dac_b1);break;case 30:dac_out(dac_a2,da
23、c_b1);break;case 40:dac_out(dac_a2,dac_b2);break;if(Lp_up = 0)/低通截止频率步进 delayms(10);if(Lp_up = 0) Lp+;temp-;if(temp 20) Lp = 20;while(!Lp_up);if(Lp_down = 0)/低通截止频率步退 delayms(10);if(Lp_down = 0) Lp-;temp+;if(temp 10) temp = 10;if(Lp 1) Lp = 1;while(!Lp_down);if(Hp_up = 0) /高通截止频率步进delayms(10);if(Hp_
24、up = 0) Hp+;temp-;if(temp 20)Hp = 20; while(!Hp_up); if(Hp_down = 0)/高通截止频率步退 delayms(10);if(Hp_down = 0) Hp-;temp+;if(temp 10) temp = 10;if(Hp 1) Hp = 1;while(!Hp_down); /*时钟初始化*/void init_clock() TMOD = 0x01;/设定时器0为工作方式1TH0 = (65536 - 10000)/256;/设定10ms一次中断TL0 = (65536 - 10000)%256;EA = 1;/开总中断ET0 = 1;/开定时器0中断TR0 = 0;/启动定时器0/*总初始化*/void init()init_lcd(); init_clock();void main()init();while(1)keyscan();display();/*中断服务程序*/void T0_time() interrupt 1 TH0 = (65536 - temp)/256;TL0 = (65536 - temp)%256;clk = clk;