简易锁相放大器的设计.docx

上传人:b****7 文档编号:9464199 上传时间:2023-02-04 格式:DOCX 页数:24 大小:134.14KB
下载 相关 举报
简易锁相放大器的设计.docx_第1页
第1页 / 共24页
简易锁相放大器的设计.docx_第2页
第2页 / 共24页
简易锁相放大器的设计.docx_第3页
第3页 / 共24页
简易锁相放大器的设计.docx_第4页
第4页 / 共24页
简易锁相放大器的设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

简易锁相放大器的设计.docx

《简易锁相放大器的设计.docx》由会员分享,可在线阅读,更多相关《简易锁相放大器的设计.docx(24页珍藏版)》请在冰豆网上搜索。

简易锁相放大器的设计.docx

简易锁相放大器的设计

锁相放大器的原理

锁相放大器L队(Lock.inAmplifier,简称L队)就是利用互相关的原理设计的一种同步相干检测仪。

它是一种对检测信号和参考信号进行相关运算的电子设备。

在测量中,噪声是一种不希望的扰乱信号,它是限制和影响测量仪器的灵敏度的白噪声和1/f噪声的低频噪声。

这些噪声是无法用屏蔽等措施消除的。

为了减少噪声对有用信号的影响,常用窄带滤波器滤除带外噪声,以提高信号的信噪比。

但是,由于一般滤波器的中心频率不稳,而且带宽和中心频率以及滤波器的Q值有关等原因,使它不满足更高的滤除噪声之要求。

根据相关原理,通过乘法器和积分器串联,进行相关运算,除去噪声干扰,实现相敏检波,锁相放大器采用互相关接受技术使仪器抑制噪声的性能提高了好几个数量级。

另外,还可以用斩波技术,把低频以至直流信号变成高频交流信号后进行处理,从而避开了低频噪声的影响。

锁相放大器抑制噪声的性能如下:

国内外生产的锁相放大器的等效噪声带宽厶在103Hz数量级,少数的可以达到4×104Hz,信号带宽2.55×106Hz,可见,仪器具有非常窄的信号和噪声带宽,通常带通滤波器由于Q值的定义,常规滤波器很难达到一些性能。

而锁相放大器被测信号和参考信号是同步的,它不存在频率稳定性问题,所以可以把它看成为一个“跟踪滤波器"。

它的等效Q值由低通滤波器的积分时间常数决定,所以对元件和环境的稳定性要求不高。

研究表明,锁相放大器使信噪比提高一万多倍即信噪比提高了80dB以上。

这足以表明,采用相关技术设计的锁相放大器具有很强的抑制噪声能力。

目前锁相放大器有如下特点:

极高的放大倍数,若有辅助前置放大器,增益可达101l(即220dB),能检测极微弱信号交流输入、直流输出,其直流输出电压正比于输入信号幅度及被测信号与参考信号相位差,满刻度灵敏度达pV、nV甚至于pV量级。

由此可见,锁相放大器具有极强的抗噪声性能。

它和一般的带通放大器不同,输出信号并不是输入信号的放大,而是把交流信号放大并变成相应的直流信号。

因此,这实际上不符合常规放大器的功能。

在国外常把这类仪器称为锁相放大器。

可理解为把待测信号中与参考信号同步的信号放大并检测出来。

因此,将锁相放大器称为“锁定检测仪"或“同步检测仪"或许更为确切。

但目前国内都称为“锁相放大器"或“锁定放大器"。

锁相放大器通常分为模拟锁相放大器和数字锁相放大器,而两种类型的L队各有优缺点。

常用的模拟锁相放大器虽然速度快,但是参数稳定性和灵活性差,且在与微处理器通讯的时候需要转换电路;传统数字锁相放大器一般使用高速ADC对信号进行高速采样,然后使用比较复杂的算法进行锁相运算,这对微处理器的速度要求很高。

为了大幅度提高检测下限和测量灵敏度,不仅要减少测量系统的噪声,而且要能从噪声中提取信号,故采用的新思路,进行相干检测。

其基本思想是:

1)首先使测量系统的主要部分,避开噪声功率密度大的地方,从而使输入噪声较小。

已知在低频区,闪烁噪声可以比自噪声高出数倍、数十倍、甚至数百倍。

因此,要设法使信号不失真的从低频区移出(1/F角以外)。

2)对不同的频率信号,应该设法将其移频至固定中心频率,这样就可以使用固定中心频率,固定频带的BPF。

3)从信号与噪声的特征对比可以看出,信号与多数噪声有频率和相位两个方面的不同。

BPF只是利用频率特征的识别。

因此,如果再利用相位特征的识别,将可把同频率、不同相位的噪声大量排除。

在光学中,对频率和相位都进行区分的方法称为相干法,故这种检测方法叫相干检测,在电子学中,这种检测方法称为锁定相位。

把上述三种设想加以实施,而完成频域信号相干检测的系统,称为锁相放大器(Lock.illAmplifier,简写LIA)。

其框图见图2-1所示。

各部件的功能是:

信号通道把输入信号选频放大(初步滤除噪声)后,输入给相关器:

参考通道在触发信号的同步下,输出相位可调节的、与输入信号同频率的参考波形;相关器对两路信号进行运算,然后对结果处理并输出.

图2-1锁相放大器原理框图

 

研究与分析

3.1参考信号产生的方法比较与选择

参考信号(ReferenceSignal,RS),就是常说的“导频”信号,是由发射端提供给接收端用于信道估计或信道探测的一种已知信号。

要产生一定频率范围的正弦波参考信号主要有三种方法:

通过C51控制MAX038产生正弦波,或通过C51控制DDS产生正弦波,直接由C51产生正弦波。

三者比较起来,由于单片机直接控制输出正弦波,电路简单便于实现,调试容易,所以在本设计中采用单片机来作为产生参考信号的波形发生器。

3.2前端放大器的设计

方案一:

使用可编程运放PGA202,PGA203通过增益的不同组合实现对输入信号范围1uV~100mV的选择性放大,但是编程比较复杂。

方案二:

使用常用运放OPA2335,OPA132的组合通过开关控制实现放大倍数为10,1000,100000的变化,对输入信号范围1uV~100mV分别进行不同选择的放大。

电路设计和使用都比较简单。

两者比较起来,由于后者电路设计和使用都比较简单,所以本设计中采用开关控制对不同信号选择性放大。

3.3移相方法比较与选择

方案一:

数字移相:

数字移相可以在4个象限内进行0~89°的调节,合起来即实现了0~360°的移相,由集成芯片控制频率和相位预制,如用CD4046锁相环组成,但是增加了电路的复杂度,成本也很高;

方案二:

模拟移相:

模拟移相电路采用阻容式移相电路。

优点是电路简单可靠,缺点是相角可调范围只有180°,但是可以通过级联的方式使相移范围达到360°。

两者比较起来,由于后者电路简单可靠,所以本设计中采用模拟移相。

3.4相敏检波器的方法比较与选择

方案一:

集成模拟乘法器:

模拟乘法器调试复杂,价格较高,且要求保证动态范围大,线性好等,较难实现;

方案二:

开关式乘法器:

开关式乘法器具有价格低廉,基本无需调试等优点,是一种较为实用的相敏检波器。

两者比较起来,由于后者具有价格低廉,基本无需调试等优点,所以本设计中采用开关式乘法器。

 

系统设计

4.1总体设计

输入微弱信号经过开关控制运放OPA2335和OPA132的级联实现选择性放大,经过低通滤波器后滤除部分噪声,与参考信号一同进入相敏检波器进行互相关运算,输出信号经过低通滤波器后将交流信号滤掉,只剩下直流信号经过放大后送入AD采样,单片机处理后输出到显示器;参考信号由单片机控制DDS产生,经过移相电路后进入相敏检波器。

 

图4-1锁相发达器的流程图

4.2硬件设计

4.2.1前置放大器的设计:

图4-2-1前置放大器的设计图

如图4-3-1所示:

1,J2,J3为单刀双掷开关,向右接通电路,向左起到了前一级放大出口与下一级入口相连的作用。

三个开关从上到下分别控制着放大倍数为100000倍,1000倍,10倍三个档位,并且每个开关当且仅当在放大自己的倍数时打开,即向右。

在第一级放大电路中,有R4=990KΩ,R3=10KΩ,则其放大倍数为1+R4/R3=100,在第二级放大电路中,其放大倍数同理也为100倍,第三级放大电路中,其放大倍数为10倍。

放大器选用TI公司的OPA2335和OPA132两款运放。

4.2.2移相电路的设计:

图4-2-2移相电路的设计图

在本部分的设计中要求,如图4-2-2。

参考信号的相移是0~360°,通过用一个运放和电阻电容的连接可以实现相角180°的变化,采用两个运放级联的方式使相位可以在360°范围内变化。

由于OPA2335有两个通道,所以在本设计中采用OPA2335的两个通道通过级联达到要求。

其中:

R3=R4=R5=R6=10k,C2=C3=1uF,滑动变阻器的最大阻值为10k,运放采用的是一片OPA2335。

4.2.3相敏检波器的设计:

图4-2-3相敏检波器的设计图

如图4-2-3,经过移相处理后的波形通过比较器后将由原来的正弦波变成方波,产生的方波和输入信号一同经过乘法器将会得到正弦波的负项翻转的波形。

电阻R17为10K,R18为1M是开关时的限流电阻和分压电阻,R14为1M,R20为4.7M,而开关的导通电阻值约几十欧姆,与R14和R20相比很小,降低了开关导通时信号的压降,对于不用的引脚全部接地,以免损坏。

其中:

R10=R11=10K,比较器选用TI的TLC372,乘法开关选用4066。

4.2.4低通滤波器的设计:

图4-2-4低通滤波器的设计图

在低通滤波器电路中,如图4-2-4。

由f=1/2πRC=1.6HZ,其中R1=1M,C=100nF。

用于低通滤波器的运放为OPA2365。

4.3软件设计

单片机控制DDS输出幅度和频率可步进调节的正弦波,再将经过PSD的输出信号进行A/D采样后送入液晶显示,如图4-3所示。

图4-3软件设计流程图

 

系统测试

1.基本功能测试:

信号源产生频率为2kHz,1V的正弦信号,输入信号为2kHz,10uV~10mV。

测试方法:

Ø用单片机产生幅度为1V,2kHz的正弦信号,输入信号为10uV,2kHz通过100000倍的放大后为1V。

Ø用单片机产生幅度为1V,2kHz的正弦信号,输入信号为100uV,2kHz通过1000倍的放大后为0.1V。

Ø用单片机产生幅度为1V,2kHz的正弦信号,输入信号为1mV,2kHz通过1000倍的放大后为1V。

Ø用单片机产生幅度为1V,2kHz的正弦信号,输入信号为10mV,2kHz通过10倍的放大后为0.1V。

输入信号

参考信号

输出信号

幅度

频率

幅度

频率

幅度

10uV

2kHz

1V

2kHz

6.13V

100uV

2kHz

1V

2kHz

0.624V

1mV

2kHz

1V

2kHz

6.12V

10mV

2kHz

1V

2kHz

0.625

表5-1-1测试显示

输入信号

输入电阻(K欧姆)

测试结果(K欧姆)

噪声抑制能力(dB)

10uV

580

570

48

100uV

600

592

48

1mV

620

613

49

10mV

640

435

50

表5-1-2测试分析结果

结果分析:

经过测试可得出输入电阻和我们测量的电阻相差不大,而且抑制噪声的能力都在49db左右,达到了比较稳定的状态。

基本的放大抑制噪声的功能已经具备,为了测试其能否满足较高的要求,我们进行下面的一系列测试。

 

2.频率不同的测试结果与分析

测试方法:

Ø用单片机产生幅度为1V,100Hz的正弦信号,输入信号为1uV,100Hz通过100000倍的放大后为0.1V。

Ø用单片机产生幅度为1V,1kHz的正弦信号,输入信号为100uV,1kHz通过1000倍的放大后为0.1V。

Ø用单片机产生幅度为1V,5kHz的正弦信号,输入信号为1mV,5kHz通过1000倍的放大后为1V。

Ø用单片机产生幅度为1V,10kHz的正弦信号,输入信号为100mV,10kHz通过10倍的放大后为1V。

输入信号

参考信号

输出信号

幅度

频率

幅度

频率

幅度

10uV

2kHz

1V

2kHz

6.13V

100uV

2kHz

1V

2kHz

0.624V

1mV

2kHz

1V

2kHz

6.12V

10mV

2kHz

1V

2kHz

0.625

表5-2-1测试显示

输入信号

输入电阻(K欧姆)

测试结果(K欧姆)

噪声抑制能力(dB)

10uV

580

570

48

100uV

600

592

48

1mV

620

613

49

10mV

640

435

50

表5-2-2测试分析结果

结果分析:

经过测试可得出输入电阻和我们测量的电阻相差不大,而且抑制噪声的能力都在49db左右,达到了比较稳定的状态。

基本的放大抑制噪声的功能已经具备,为了测试其能否满足较高的要求,我们进行下面的一系列测试。

3.10pA电流测量结果对比与分析:

测量方法:

在电路中串联一个1M的精敏电阻,测量其两端的输出电压,由欧姆定律I=V/R可得电流值。

测试结果:

电流值等于23.5pA

结果分析:

由于电流太小,所以在经过测量后有比较大的误差,但是我们的测量结果还是能达到pA级别。

4.测量微小电阻的阻值与分析

测量方法:

串联一个1欧的精敏电阻,测量其两端电压,根据分压公式可得出待测电阻的阻值。

其中待测信号为毫欧级别。

测试结果:

待测电阻的阻值为28毫欧。

图5-4测试电阻阻值

结果分析:

根据图5-1所显示的测试方法可测得微弱电阻阻值。

但由于信号过小,采集输出后有比较大的误差。

5.测量被测信号与参考信号的相位差

测量方法:

调节移相器,使测的直流电平最大和最小,即可测被测信号和参考信号的相位差。

测量结果:

31度、42度、132度

结果分析:

通过测试和实际的相位差相比都是小于的6度范围误差,也是不错的要求了。

但是对精密仪器的要求来说还有很长的路要走。

总之即使有用的信号被淹没在噪声信号里面,即使噪声信号比有用的信号大很多,只要知道有用的信号的频率值,锁相放大器就能准确地测量出这个信号的幅值。

第六章附录

软件设计:

//display.c

//把显示部分的模块全部移到这里,争取完全独立

//主要的两个模块

//在主函数中添加#include"display.h"就可以使用LCM显示函数了

#include"lcd.h"

#include"INTRINS.h"

//*****************************************************************************

//延时程序

//模块输入

//模块输出

//功能说明

voidDelay(UINTunTime)

{

while(unTime--);

}

//*****************************************************************************

 

//*****************************************************************************

//数字转换为字符

//函数输入

//pBuf转换之后的保存结果数组的指针,两个字节

//函数输出

//功能说明

voidIntToChar(UINTcByte,UCHAR*pBuf)

{

pBuf[0]=(UCHAR)(cByte/1000+48);

pBuf[1]=(UCHAR)((cByte%1000)/100+48);

pBuf[2]=(UCHAR)((cByte%1000%100)/10+48);

pBuf[3]=(UCHAR)((cByte%1000%100%10)%10+48);

}

//*****************************************************************************

 

//*****************************************************************************

//发送数据

//模块输入

//模块输出

//功能说明

voidSendByte(unsignedcharcByte)

{

UCHARns=0;

while(ns++<8)

{

//移位,发送一个bit

LCM_SDA=(bit)(cByte&0x80);

_nop_();

_nop_();

_nop_();

LCM_SCL=0;

_nop_();

_nop_();

_nop_();

cByte<<=1;

LCM_SCL=1;

_nop_();

_nop_();

_nop_();

}

return;

}

//*****************************************************************************

//*****************************************************************************

//写入指令或者数据

//模块输入:

cData要写入LCM的数据

//bType数据的种类:

0为指令,1为数据

//模块输出:

//模块说明:

发送一字节的数据或指令(物理实现上是发送的三字节)

//第一字节是让LCM识别是指令还是数据:

0xF8为指令(11111000),0xFA为数据(11111010)

//第二字节为所发送指令或数据的高4位+0000

//第三字节为所发送指令或数据的低4位+0000

voidWriteData(unsignedcharcData,bitbType)

{

UCHARcSendByte;

//发送第一字节

if(bType==0)

cSendByte=0xF8;//发送指令

else

cSendByte=0xFA;//发送数据

SendByte(cSendByte);

Delay(LCM_DELAY_TIME);

//发送第二字节

cSendByte=cData&0xF0;

SendByte(cSendByte);

Delay(LCM_DELAY_TIME);

//发送第三字节

cSendByte=cData<<4;

SendByte(cSendByte);

Delay(LCM_DELAY_TIME);

}

//*****************************************************************************

//*****************************************************************************

//液晶模块初始化

voidInitLCM(void)

{

//为了可靠性,这里内部设置大于40ms

Delay(LCM_POWER_ON);

Delay(LCM_POWER_ON);

 

WriteData(0x30,0);

Delay(LCM_POWER_ON);

WriteData(0x30,0);

Delay(LCM_DELAY_TIME);

WriteData(0x0C,0);

Delay(LCM_DELAY_TIME);

 

WriteData(0x01,0);

Delay(LCM_POWER_ON);

WriteData(0x06,0);

Delay(LCM_DELAY_TIME);

Delay(LCM_POWER_ON);

}

//*****************************************************************************

//*****************************************************************************

//显示模块

//模块输入:

pBuf指向所需显示字符串的指针

//cNum所需显示字符的个数,一个中文字符按两个算

//cAddr字符串在LCM显示的初始地址,如果为0表示不改变当前位置

//模块输出:

//功能说明:

将输入的字符串显示在LCM的指定位置

voidDisplay(UCHAR*pBuf,UCHARcNum,UCHARcAddr)

{

UCHARn;

//判断是否改变当前位置

if(cAddr!

=0&&(cAddr<0x80||cAddr>0xA0))

return;

if(cAddr!

=0)

{

//如果cAddr不为零,则改变按cAddr改变当前位置

WriteData(cAddr,0);

}

for(n=0;n

{

WriteData(pBuf[n],1);

}

}

//*****************************************************************************

//移动LCM的光标

//模块输入:

光标将要移动到的位置

//模块输出:

//模块说明:

将LCM光标移动到指定位置

voidMoveCursor(UCHARcAddr)

{

UCHARn;

//将光标移动到LCM起始地址

WriteData(0x02,0);

n=cAddr-0x80;

while(n--)

{

WriteData(0x14,0);

}

}

 

//*****************************************************************************

//清屏

//模块输入:

//模块输出:

//模块说明:

调用此函数清除LCM上所有显示,并且光标回到起始位置

voidClearLCM(void)

{

WriteData(0x01,0);

//Delay(10000);

}

//*****************************************************************************

//清除某一段数据

voidClearLine(UCHARcStart,UCHARcN)

{

UCHARc=0x20;

UCHARi;

if(cStart>=0x80&&cStart<0xA0)

{

MoveCursor(cStart);

for(i=0;i

Display(&c,1,0);

MoveCursor(cStart);

}

}

//*****************************************************************************

//打开LCM的光标显示

//模块输入:

//模块输出:

//模块说明:

打开LCM的光标

voidOpenCursor(void)

{

WriteData(0x0F,0);

}

//*****************************************************************************

//关闭LCM的光标显示

//模块输入:

//模块输出:

//模块说明:

关闭LCM的光标

voidClose

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1