- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AGC设计报告
自动增益控制(AGC)设计
摘要和关键词设计任务与要求
1.1设计任务设计一个AGC电路,。1.2技术指标设计指标以及给定条件为:
输入信号: ViP=100mV~1V;
输出信号:VOP=1V~3V;?
ViP=100mV和1V时放大器的频率响应曲线数据)
测试增益控制特性曲线C和Au关系曲线)
系统硬件设计.1系统的总体设计.2单元电路的设计
信号经缓冲器后进入增益放大器AD603,放大后进入峰值测量部分,得出的峰值采样后送入单片机,再由DAC输出给AD603控制放大倍数,实现自动增益控制。
具体原理如下:
当输入电压 0时,D1导通,D2截止,此时A1构成电压跟随器,此电压通过Rf1和R2加到A2的反相端;所以A2的输出电压为:
当输入电压0时,D1截止,D2导通,此时A1为同相放大器,有:
而A2的输出电压为:
综上,电路输出为:
经过精密整流电路后,通过电压跟随器检测峰值。
2.3系统分析与计算
电压控制增益的原理
AD603的基本增益可以用下式算出:
Gain (dB) = 40 VG + 10
其中,VG是差分输入电压,单位是V,Gain是AD603的基本增益,单位是dB。
从此式可以看出,以dB作单位的对数增益和电压之间是线性的关系。由此可以得出,只要单片机进行简单的线性计算就可以控制对数增益,增益步进可以很准确的实现.电原理图附录。
系统软件设计
.1程序总体流程图
3.程序清单#include stdint.h
#include msp430.h
#include user.h
#include math.h
unsigned int index;
float mid,vol,vout=1.75;
float results[];
void ADC12_Init()
{
P6SEL |= BIT7;
//P6SEL |= BIT6;
/* ADC12CTL0 = ADC12ON+ADC12SHT0_2+ADC12SREF_0;
ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2;
ADC12IE=BIT7;
ADC12CTL0 |= ADC12ENC;*/
ADC12CTL0 = ADC12SHT0_2 + ADC12ON;
ADC12CTL2=ADC12RES_2;
ADC12MCTL7 = ADC12INCH_7+ADC12EOS;
ADC12CTL1 = ADC12SHP+ADC12CSTARTADD_7;
ADC12IE = BIT7;
ADC12CTL0 |= ADC12ENC;
P6SEL |= BIT7;
}
void paixu(float *a)
{
int i,j,t;
for(j=0;j9;j++)
for(i=0;i9-j;i++)
if (a[i]a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
void Vol()
{
ADC12CTL0 |= ADC12SC;
__delay_cycles(100000);
index=0;
while(index=8)
{
results[index]=ADC12MEM7;
index++;
}
paixu(results);
mid=(results[4]+results[5]+results[6])/3;
vol=(mid*3.61)/4096;
}
void main(void)
{
// Stop WDT
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
SetVCore(3);
Board_init();
SFRIFG1 = 0;
DAC_Init();
DAC_OUT(7, 2.0);
DAC_OUT(6, 1.75);
__delay_cycles(100000);
ADC12_Init();
while(1)
{
ADC12CTL0 |= ADC12SC;
__delay_cycles(10000);
index=0;
while(index=8)
{
results[index]=ADC12MEM7;
index++;
文档评论(0)