自动增益控制AGC放大器实现方案Word格式文档下载.docx
- 文档编号:21605494
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:9
- 大小:654.87KB
自动增益控制AGC放大器实现方案Word格式文档下载.docx
《自动增益控制AGC放大器实现方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自动增益控制AGC放大器实现方案Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
则流经的总电流
12个选通开关由MSP430的SPI协议控制
若
因此通过单片机输出不同的控制字code的值就可以实现控制增益的目的。
(3)由于运放的输出被抬高了2.5V,因此输出需要经过电容耦合滤除直流分量。
3、PWM波低通滤波部分
PWM波低通滤波
电路构成简单RC低通滤波器,将输出的PWM波转换为直流电压供外部检测用。
输出电压的大小与PWM波的占空比成近似线性关系。
实际电路图:
二、软件部分
程序代码:
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
uchara,T0_time;
uinttemp,adval,adval_t,vref_t,dac_code,D;
floatvref_s;
sbitadwr=P3^6;
sbitadrd=P3^7;
sbitsync=P0^0;
sbitsclk=P0^1;
sbitsdin=P0^2;
sbitpwm=P2^0;
//定时器初始化函数
voidT0_init()
{
TMOD=0x11;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
}
//微妙级延时
voiddelayus(uintus)
uinti;
while(us--)
{
for(i=8;
i>
0;
i--)
;
}
//毫秒延时函数
voiddelayms(uintxms)
uinti,j;
for(i=xms;
for(j=110;
j>
j--);
//AD启动函数
voidstart_ad()
adwr=1;
_nop_();
adwr=0;
//AD读取函数
ucharget_ad()
P1=0xff;
adrd=1;
adrd=0;
adval=P1;
returnadval;
//CODE处理函数
voidd_vout()
if(adval>
vref_t)
dac_code++;
else
dac_code--;
D=4096/dac_code/10;
//占空比
//DAC控制函数
voiddac_spi(uintdac_code)
ucharn;
sync=0;
sclk=1;
for(n=0;
n<
16;
n++)
sclk=1;
dac_code=dac_code<
<
1;
sdin=CY;
sclk=0;
sdin=1;
sync=1;
sclk=0;
delayus(10);
//主函数
voidmain()
ucharad_n;
T0_init();
vref_s=0.5;
dac_code=0x0029;
pwm=0;
vref_t=(int)(vref_s/5.0*256.0);
D=10;
while
(1)
pwm=~pwm;
//PWM波产生部分
if(pwm==0)
a=10-D;
else
a=D;
while(a>
0)
{
for(ad_n=0;
ad_n<
20;
ad_n++)//AD转换、检测部分
{
start_ad();
delayms(10);
temp=get_ad();
if(temp>
=adval_t)
adval_t=temp;
}
dac_spi(dac_code);
//输出code值给DAC7811
delayus(5);
a--;
}
//定时器0中断函数
voidT0_time_interrupt()interrupt1
T0_time++;
if(T0_time>
=5)
T0_time=0;
/*每100ms*/
adval=adval_t;
/*取出幅值*/
d_vout();
/*进行处理*/
adval_t=0;
程序设计思路:
——Adval_t为检测电压的暂存值;
adval为取得的幅值,将其与设定值相比较——程序设计为取输出电压的幅值进行处理。
函数的检测部分,在多个周期的多个点处进行抽样,得到比前一次抽样大的值则给adval_t赋新值,直到中断100ms中断产生则将最后取得的最大值赋给adval进行处理,数据处理的函数为d_vout()
——得到输出电压幅值后,将adval与设定电压幅值相比较(vref_t为转化后的值,与adval直接比较),若adval>
vref_t,说明输出电压幅值应该减小,增益应该减小,相应dac_code应该增大——dac_code++;
反之,dac_code--。
同时通过增益计算占空比。
——每100ms进行的数据处理得到的dac_code,由dac_spi函数输出给DAC7811控制作出相应变化,从而完成一次控制。
——如此循环,直到输出电压与设定电压相符。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动增益控制 AGC 放大器 实现 方案