单片机自动增益放大器

上传人:m**** 文档编号:223420794 上传时间:2023-07-18 格式:DOCX 页数:17 大小:202.64KB
返回 下载 相关 举报
单片机自动增益放大器_第1页
第1页 / 共17页
单片机自动增益放大器_第2页
第2页 / 共17页
单片机自动增益放大器_第3页
第3页 / 共17页
点击查看更多>>
资源描述
动增益放大器摘 要:本系统有四个模块组成:程控放大器,峰值检测,液晶。程控放大器采用 两片AD603接连组成,放大电压增益可达50dB,增益0.2v步进可调,电压增益误差不 大于5%。放大器输出无明显失真。峰值测量采用真有效值采样芯片AD637先进行有效 值采样,然后通过 PCF8951 进行 AD 采样,最后再转换成峰值,液晶采用 LCD1602, 系统以 stc89c51 单片机为控制核心,经测试验证,系统运行稳定,操作方便。关键词:程控放大器,峰值检测,AD采样,单片机。Abstract: This system has three modules: SPC amplifiers, peak detection, liquid crystal. By two AD603 program-controlled amplifier amplification voltage gain one, can gain 1db stepping 0.2v, adjustable, voltage gain error is not more than 5%. Amplifier output without obvious distortion. Measure true RMS peak by sampling AD637 chip on sampling, then PCF8951 through effective sampling, finally to AD convert peak, LCD USES lcd1602 management system with stc8951 SCM as control core and tested, the system runs stably, convenient operation.Key: SPC amplifier Peak detection AD samplingchip SCM1. 方案的论证与比较1.1 设计需求1.1.1 基本要求(1)放大器可以从信号发生器或音乐播放器输入音频信号(5OHz10KHz),输出可以带200Q负载或驱动8Q喇叭(25W)(20分)(2)当输入信号幅度在 10mV5V 间变化时,放大器输出默认值保持在 2V0.2V (有效值)内,波动越小越好。(30分)(3)可以显示输入信号幅度和频率。(10 分)(4)能够在1V3V范围内步进式调节放大器输出幅度,步距02V(15分)(5)能够根据环境噪声调整自动调节放大器输出幅度。(15分)(6)其它发挥设计。(10 分)( 7) 设计报告。( 20 分)1.1.2 发挥部分(1)输出电压步距可通过按键调整:0.2v、0.3v、0.4v;3) 显示当前放大输出。4) 其它。1.2 总体方案方案一:选用结电容小,fT高的晶体管,采用多种补偿法,多级放大加深度负反馈, 以及组合各种组态的放大电路形式,可以组成优质的宽带放大器,而且成本较低。但若 要全部采用晶体管实现题目要求,有一定困难,首先高频晶体管配对困难,不易购买; 其次,理论计算往往与实际电路有一定差距,工作点不容易调整;而且,晶体管参数易 受环境影响,影响系统总体性能。另外,晶体管电路增益调节较为复杂,不易实现题目 要求的增益可调。方案二:使用专用的集成宽带放大器。如TITHS6022、NE592等集成电路。通过外 接少数的元件就可以满足本题目要求,甚至远超过题目要求的带宽和增益的指标,但这 种放大器难以购买,价格较贵,灵活性不够,不易满足题目扩展功能要求。方案三:市面上有多种型号、各具特色的宽频带集成运算放大器。这些集成运算放 大器有的通频带宽,有足够的增益,有的可以输出较高电压,使用方便,有的甚至可以 实现增益可调及 AGC 的功能。总体上硬件的实现和调试较为简单,所以,我们决定采 用多个集成运放级连实现本题目1.3 增益控控制:方案一:利用电阻网络和拨码开关,手动调节增益,可实现增益控制,但硬件 规模较大,控制繁琐且人机界面欠佳,另外,利用电阻网络实现增益调节需使用不同阻 值的高精度电阻,这种电阻价格昂贵且不易购买。方案二:可以用继电器或模拟开关构成电阻网络,由单片机控制以改变信号增益。 这种方案同样存在方案一电阻网络的缺点,同时,如果使用模拟开关,其导通电阻较大, 而且各通道信号会互相干扰,容易影响系统性能。方案三:由单片机、 D/A 转换器和可编程增益放大器 AD603 构成压控放大器。 单片机通过对控制 D/A 输出直流电压来控制 AD603 的内部电阻衰减网络,实现增益调 节。其外围元件少,电路简单,由于AD603带宽最大能达到90MHz,增益范围有40dB, 增益精度在土0.5dB,可精确实现增益控制,可以实现题目发挥部分减小增益步进间隔的 要求。所以本部分采用该方案。1.4 峰值检测:方案一:采用分段逼近式有效值检波电路。该方法示值虽然是被测电压的有效值, 但由于放大器动态范围的限制,对于被测信号会产生一定的波形误差,并且硬件电路搭 接 复 杂 , 且 稳 定 性 能 不 好 。方案二:采用真有效值转换芯片AD637和高速A/D芯片PCF8951测量市电有效值。 将从AD603输出的信号通过AD637转换成直流信号后接入PCF8951,利用单片机读取数 据后进行相应的幅值变换得到峰值。利用集成电路芯片测量精度高,误差小、稳定性好,硬件电路实现简单,可减小硬件体积,所以本部分采用该方案。1.5 处理器选择:通过实验测试我以前买的stc89c51可以满足要求,为了节约成本就选择它为微处理 器2. 系统设计2.1 理论分析与计算本系统以可变增益增益放大器 AD603 为核心,其它各单元电路都是根据 AD603 及题目要求设计。由于题目的发挥部分要求电压的输出范围2V2.5V,对于10mv的小信号,则至少 要将信号放大200倍,而且输入信号的频率范围为10Hz500KHz,故采用两片AD603 对信号进行放大,单片AD603增益公式为:DB = 40 * Vo+ Go;Vo为1、2脚之间的电压,范围为-500mv500mv,Go根据5、7脚的不同连接方 式Go可取10dB,20dB,30dB。本系统将AD603的5脚和7脚相连,单级AD603增益调 整范围为,一10_ 30 dB,带宽为90MHz,两级AD603级联,使得增益可调范围扩大 到一20 dB+ 60 dB。可满足题目要求的电压放大和频率的要求,当AD603的增益为 46dB的时候电压可以放大200倍,当AD603的增益为48dB的时候电压可以放大250 倍.所以只要正确的控制1、2脚之间的电压就能实现电压的不同放大倍数,从而满足题 目要求。2.2 总体设计根据带宽、电压的放大倍数,系统采用两级 AD603 程控增益放大器,增益可达 60dB,能过满足题目的要求,而且AD603能够满足带宽的要求,有效值测量可有多种实 现方案,但选用测量有效值的专用芯片AD637,则电路简洁方便,而且精度较高。由于系 统模块所用IO 口过多,一般51单片机不能够满足需求,故采用功能较强的C8051f020 单片机作为主控机器。通过键盘进行增益和档位的调节,而液晶显示增益和峰值。 系统的整体框图如下:AD603小信号采集与放大AD637有效值检测PCF8951AD转换PCF8951DA转换控制LCD1602 液晶显示屏2.3 单元电路电路模块设计2.3.1 自动增益电路 本系统的自动增益控制功能,实际是由增益控制电路转化而来。在输出级加入 检波电路,检出直流电压送入A/D采样,经单片机计算后控制D/A输出,此电压加 到 AD603 的增益控制端,从而控制 AD603 的增益达到使输出电压恒定的目的。AD603 的简化原理框图如图 2-3-1 所示,它由无源输入衰减器、增益控制界面和 固定增益放大器三部分组成。图中加在梯型网络输入端(VINP)的信号经衰减后,由 固定增益放大器输出,衰减量是由加在增益控制接口的电压决定。增益的调整与其自身 电压值无关,而仅与其差值 VG 有关,由于控制电压 GPOS/GNEG 端的输入电阻高达 50MQ,因而输入电流很小,致使片内控制电路对提供增益控制电压的外电路影响减小。 而且,如果AD603的增益用dB表示,则与控制电压成线性关系,以上特点很适合构成 本题要求的放大器。图 2-1-1GNEG :G4INCONTROLI INTERFACESCAUNGREFERENCEIXTEli s G s 00 p N p V GPRECIS IQ N PASSIVEWPUT ATTENUATORVINF 22R2R2FCMIl M).JB -6J2dB-13jSdB -24.03IB -30JdB-42JMBFIXED GAINAMPLIFIERC44ku4-1RMOL1INAL VALUES(f) FDBK V:mR -2R LADDER NETWORK图2 3 1 AD603原理框图中的“滑动臂”从左到右是可以连接移动的。当VOUT和FDBK两管脚的连接不 同时,其放大器的增益范围也不一样,带宽在9MHz90MHz之间为加大中间级的放大倍数及增益调节范围,我们使用两片AD603级联作为中间级 放大(图2 3 2)o如果将AD603的5脚和7脚相连,单级AD603增益调整范围为, 10_ 30 dB,带宽为90MHz,两级AD603级联,使得增益可调范围扩大到一20 dB + 60 dB。可满足题目要求的电压放大。图 2 3 2 级联 AD603 电路图两级AD603采用+ 5V,5V电源供电,两级的控制端GNEG都接地,另一控制 端GPOS接D/A输出,从而精确地控制AD603的增益。AD603的增益与控制电压成线 性关系,其增益控制端输入电压范围为一500mv+ 500mv,增益调节范围为40dB,当 步进 1dB 时,控制端电压需增大avg=500 - (-500)40= 25mv,由于两级 AD603 由同一电压控制,所以,步进 1dB 的控制电压变化幅度为 25mv/2=12.5mv。由于AD603的控制电压需要比较精确的电压值。我们使用12位的 C8051F020的内部DA,可满足指标要求。另外,通过A/D采样输出信号,由单片机计算后,再去调整D/A输出电压,就 可实现AGC功能,扩大通频带.具体电路如下:2.3.1 峰值检测与 DA/AD 转换峰值检测是利用真有效值芯片AD637先进行有效值采样然后通过PCF8951进行AD 采样把有效值采样回来给单片机,再通过单片机进行数值处理把有效值转换成峰值并计 算增益通过pcf8951DA输出到AD603增益控制端,具体电路如下:2.3.2 功率放大部分:考虑到成本与实际效果功放采用TAD2822来实现,具体电路如下所示:2.3.3 电源部分:本系统运放使用正负 5V 电源给单片机系统工作,为了能给系统提供稳定的电源,对市 电变压后进行整流,滤波,稳压得到系统工作电源。电路如下:此部分电路比较典型,采用通常使用的桥式全波整流,大电容滤波,集成三端固定 稳压片稳压。2.3.3显示部分本系统用LCD1602显示,电路图如下:3. 系统功能测试3.1测试使用仪器一Agilent 33250A 函数信号发生器 Tektronix TDS 2012数字示波器SS7200。32测试结果完整性及结果分析基础部分在以下输入电压(Vpp)和频率下,手动调节输出范围在10mV-5mV10mV/100HzkHz0.1V/10.5V/10kHz0.7V/20kHz0.8V/30kHz1V/50kHz幅 度(V / X)2.112.021.962.021.972.05信号放大和控制部分在制作部分难易程度有很大的差别,所以我们采用分模块 制作方法,信号放大电路中涉及的是低频小信号的处理,所以元件的选定和参数的 确定有很大的难度,关键部分还在于电路元件的布局,如何抑制噪声,防止自激是 电路布局的难点,我们采用了单点接地的方法。控制部分电路调试较为简单。5 结束语本系统有 stc8951 单片机与 AD603、AD637 等模块组成,基本实现了题目基本部分 与发挥部分的要求。参考文献1 单片机原理及应用,陈为:中国石油出版社2 模拟电子技术基础,童诗白著,高等教育出版社3 自动增益放大器百度文库6 附录6.1 附录1集成芯片明细表 1液晶 LCD16022. AD6033. PCF85914. AD6375. TDA28226. STC89516.2 附录2部分参考程序#include #include #include #include#include#define PCF8591 0x90 /PCF8591 地址unsigned char output=2;unsigned int AD,DA; void keyscan(void); void delay(int ms);DAC变换,转化函数bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val) Start_I2c();SendByte(sla); if(ack=0)return(0); SendByte(c);if(ack=0)return(0);SendByte(Val); if(ack=0)return(0); Stop_I2c();return(1);/启动总线/发送器件地址/发送控制字节发送DAC的数值/结束总线/*ADC发送字节命令数据函数*/ bit ISendByte(unsigned char sla,unsigned char c)Start_I2c();SendByte(sla); if(ack=0)return(0); SendByte(c);if(ack=0)return(0);Stop_I2c();return(1);/启动总线/发送器件地址/发送数据/结束总线步进函数函数void keydown(void)P1=0xF0;if(P1!=0xF0)判断按键是否按下如果按钮按下 会拉低P1其中的一个端口keyscan();步距函数void keyscan(void)P1=0xf0; delay(1);switch(P1)case 0xf1: output=output+0.2; break;case 0xf2: output=output+0.3; break;case 0xf4: output=output+0.4; break;case 0xf8: output=output+0.5; break; if(output3)output=1;AGC函数unsigned int AGC(unsigned int ad) DA=(log(output/ad)-2)/4;return DA;ADC读字节数据函数unsigned char IRcvByte(unsigned char sla) unsigned char c;Start_I2c();/启动总线SendByte(sla+1);/发送器件地址if(ack=0)return(0);c=RcvByte();/读取数据0Ack_I2c(1);/发送非就答位Stop_I2c();/结束总线return(c);void delay(int ms) /延时子程序int i;while(ms-)for(i = 0; i 250; i+)_nop_(); /空执行_nop_();_nop_();_nop_();main()unsigned char r;while(1)keydown();ISendByte(PCF8591,0x40);AD=IRcvByte(PCF8591); /ADC0 模数转换1AGC(AD);/增益计算DACconversion(PCF8591,0x40,DA);/dac 数模输出 r=output*1.414;agc1602(output,r) ; /1602显示/* 此 部 分 为 I2C 总 线 的 驱 动 程 序#include#include #include #define NOP()_nop_()/* 定义空指令 */#define _Nop() _nop_()/*定义空指令*/I2C 时钟/I2C 数据/*应答标志位*/sbit SCL=P21; sbit SDA=P20; bit ack;起动总线函数函数原型:功能:void Start_I2c();启动I2C总线,即发送I2C起始条件.void Start_I2c()SDA=1;_Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();_Nop();SDA=0;_Nop();_Nop();_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop();/*发送起始条件的数据信号*/*起始条件建立时间大于47us,延时*/*发送起始信号*/*起始条件锁定时间大于4us*/*钳住I2C总线,准备发送或接收数据*/结束总线函数函数原型:功能:void Stop_I2c();结束I2C总线,即发送I2C结束条件.void Stop_I2c()SDA=0;/*发送结束条件的数据信号*/_Nop(); /*发送结束条件的时钟信号*/SCL=1;/*结束条件建立时间大于4 u s*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;/*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();字节数据发送函数函数原型:功能:void SendByte(UCHAR c);将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作(不应答或非应答都使ack=O)发送数据正常,ack=1; ack=O表示被控器无应答或损坏。void SendByte(unsigned char c) unsigned char BitCnt;for(BitCnt=0;BitCnt8;BitCnt+) /*要传送的数据长度为8位*/ if(cBitCnt)&0x80)SDA=1; /*判断发送位*/ else SDA=0;_Nop();SCL=1;/*置时钟线为高,通知被控器开始接收数据位*/_Nop();_Nop();/*保证时钟高电平周期大于4 u s*/_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop();/*8位发送完后释放数据线,准备接收应答位*/*判断是否接收到应答信号*/SDA=1;_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();if(SDA=1)ack=0; else ack=1;SCL=0;_Nop();_Nop();字节数据接收函数函数原型:功能:UCHAR RcvByte(); 用来接收从器件传来的数据,并判断总线错误(不发应答信号) 发完后请用应答函数应答从机。unsigned char RcvByte() unsigned char retc; unsigned char BitCnt;retc=0;SDA=1;/*置数据线为输入方式*/for(BitCnt=0;BitCnt8;BitCnt+)_Nop();/*置时钟线为低,准备接收数据位*/SCL=0;_Nop();/*时钟低电平周期大于47u s*/_Nop();_Nop();_Nop();_Nop();/*置时钟线为高使数据线上数据有效*/SCL=1;_Nop();_Nop(); retc=retc1;if(SDA=1)retc=retc+1;/*读数据位,接收的数据位放入retc中*/_Nop();_Nop();SCL=0;_Nop();_Nop();return(retc);应答子函数函数原型: void Ack_I2c(bit a);功能:主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)void Ack_I2c(bit a)if(a=0)SDA=0; else SDA=1; _Nop(); _Nop(); _Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop();/*在此发出应答或非应答信号 */*时钟低电平周期大于4 u s*/*清时钟线,钳住I2C总线以便继续接收*/
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!