我是靠谱客的博主 动听时光,最近开发中收集的这篇文章主要介绍AD603+MCP4725+STM32-----自动增益控制电路,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为在院赛用过AD603来做低频小信号功率放大器,这段时间没什么事,就来分享一下使用AD603的经验。

AD603简介:AD603是一款低噪声、电压控制型放大器,用于射频(RF)和中频(IF)自动增益控制(AGC)系统。它提供精确的引脚可选增益,90 MHz带宽时增益范围为−11 dB至+31 dB,9 MHz带宽时增益范围为+9 dB至+51 dB。用一个外部电阻便可获得任何中间增益范围。折合到输入的噪声谱密度仅为1.3 nV/√Hz,采用推荐的±5 V电源时功耗为125 mW.............

AD603阻抗匹配:AD603的输入阻抗只有100欧姆,对输入阻抗的匹配问题还有点小问题的可以看看我以前写的一篇文章。我这里推荐电路图如图1.1所示,亲测有效。

AD603的典型电路:AD603是由电压控制增益的,但是我不知道stm32的DA能否驱动AD603,所以我就用MCP4725(12位AD)来驱动,也挺便宜的,大家可以试试哈;增益的表达控制有三种模式,在这里我只写我用到的模式一:增益是由两个芯片的压差来控制的,表达式为:G=40*VG+10dB,其中VG=VPOS-VNEG。我们一般把其中一个引脚的电压固定,只需要控制另外一个脚的电压就可以了,我这里设置的固定电压是1V,所以只需要设置另外一个电压在0.5v~1.5v就可以了。电路图如图1.1所示

图1.1

 

AD603出现的一些问题:

     1:无 论 增 益的范围是多少,AD603的实际的增益都在理论增益的基础上限附加l.07 dB,下限附加-1.07 dB。如带宽为90MH:时,理论上增益范围:-10dB到             30dB,实际的增益为:-11. 07dB到31.07dB。

     2:带 宽 为 9MHz时,如图5,若在管脚5与地之间连一个电阻,有可能得到更高的增益上限,但增益最大不超过60dB

     3:管脚4(COMM)必须与输人信号的地线相连,因为它们之间若有明显的阻抗存在将降低增益的精确度。

     4:AD603驱动的负载阻抗在100欧左右时失真最小。 5:输 出 电 压的幅度与负载电阻有关:

      如外接负载 为500欧姆时,输出电压的幅度为:士2. 5V。 如外 接 负 载 为 100欧姆时,输出电压的幅度为:士1V。

     6:AD603的输人电阻为100欧姆,信号输人时应考虑阻抗匹配。

     7:由于输出管脚为7脚,正、负供电电源为8脚、6脚,所以测量输出时千万要小心,一但将输出端与供电端短路,将对芯片造成永久性损坏。

     8.  AD603超过控制压差,很容易失真,所以多留点富裕空间吧。

AD603的控制DAC:MCP4725代码

//.C文件
#include "MCP4725.h"
#include "delay.h"
#include "bsp_usart.h"
//初始化IIC接口
void MCP4725_Init(void)
{
IIC_Init();
}
//使用快速模式写命令写DAC寄存器
void MCP4725_WriteData_Voltage(u16 Vout)
//电压单位mV
{
u8 temp;
u16 Dn;
Dn = ( 4096 * Vout) / VREF_5V;
temp = (0x0F00 & Dn) >> 8;
//12位数据
IIC_Start();
IIC_Send_Byte(0XC2);
//器件寻址,器件代吗:1100; 地址位A2,A1,A0为 0 , 0 , 1;-> 1100 0010
IIC_Wait_Ack();
IIC_Send_Byte(temp);
IIC_Wait_Ack();
IIC_Send_Byte(Dn);
//将低8位送到DAC寄存器
IIC_Wait_Ack();
IIC_Stop();//产生一个停止条件
delay_ms(10);
}
void MCP4725_WriteData_Digital(u16 data)
//12位数字量
{
u8 data_H=0,data_L=0;
data_H = ( 0x0F00 & data) >> 8;
data_L = 0X00FF & data ;
IIC_Start();
IIC_Send_Byte(0XC0);
//器件寻址,器件代吗:1100; 地址位A2,A1,A0为 0 , 0 , 0;-> 1100 0000
IIC_Wait_Ack();
IIC_Send_Byte(data_H);
IIC_Wait_Ack();
IIC_Send_Byte(data_L);
IIC_Wait_Ack();
IIC_Stop();//产生一个停止条件
delay_ms(10);
}
///.H文件
#ifndef __MCP4725_H
#define __mcp4725_H
#include "myiic.h"
#define VREF_5V
4760
void MCP4725_Init(void);
void MCP4725_WriteData_Digital(u16 data);
void MCP4725_WriteData_Voltage(u16 Vout);
#endif

注释:MCP4725需要用IIC来发送数据,请自行初始化IIC和MCP4725;在主函数里面只需调用MCP4725_WriteData_Digital(votage)函数就可以了,这里的参数votage就是图1.2中的Dn,VDD就是供电3.3或者5V,自己计算吧。

图1.2

 

最后

以上就是动听时光为你收集整理的AD603+MCP4725+STM32-----自动增益控制电路的全部内容,希望文章能够帮你解决AD603+MCP4725+STM32-----自动增益控制电路所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部