激光脉冲测距实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
激光脉冲测距实验报告
一.实验目的
通过学习激光脉冲测距的工作原理,了解激光脉冲测距
系统的组成,搭建室模拟激光器系统进行正确测距,为今后
的工程设计奠定理论基础和工程实践基础。
二.实验原理
激光脉冲测距与雷达测距在原理上是完全相同的,如图2.1所示。
在测距点激光发射机发射激光脉冲,光脉冲经过光纤到达接收端,并被测距机上的探测系统接收。测出从激光发射时刻到被接收时刻之间的时间间隔t,根据已知光速,即可求出光纤的长度R为
R=/2(2-1)
式中c为光速。真空中的光速是一个精确的物理常数
C1=299792458 m/s
光纤中的平均折射率n为
n=1.45(查阅得知)
故光纤中的光速为
C=299710000
可见,激光测距的任务就是准确地测定时间间隔t。当不考虑光纤中光速的微小变化时,测距精度⊿R主要是由测时精度⊿t确定的
⊿R=C⊿t/2 (2-2)
实际脉冲激光测距机中是利用时钟晶体振荡器和脉冲计数器来测定时间间隔t的。时钟晶体振荡器用于产生固定的频率的电脉冲振荡,脉冲计数器的作用是对晶体产生的电脉冲个数进行计数。设晶体振荡器产生的电脉冲频率为f,则脉冲间隔T=1/f。若从激光脉冲发出时刻脉冲计数器开始计数,到光脉冲被接收时刻停止计数。设这段时间脉冲计数器共计得脉冲个数为m,则可计算出被测光纤的长度为
R=cmT=cm/f=1.6m(2-3)
相应的测距精度为
⊿R =Ct=c/f (2-4)
可见,脉冲激光测距机的测距精度由晶振的频率决定。常用军用激光测距仪的晶振频率有15MHz、30MHz、75MHz和150MHz等,与其相对应的测距精度分别为正负10m、正负5m
、正负2m和正负1m。晶振的频率愈高,测距精度就愈高,
但随之而来的,不仅是计数器的技术难度增加,而且要求激光脉冲的宽度愈窄,激光器的难度也增加。
对脉冲测距系统,计数器的“开门”信号是由取出一小部分发射激光脉冲经光探测器转换成电信号形成的。这两个信号既可由同一探测器提供,也可以用两个探测器提供。
激光脉冲测距机由激光器、发射光学系统、接收及瞄准光学系统、取样及回波探测放大系统、技数及显示器和电源几部分组成,如图2.2所示
系统操作人员一旦下达发射激光命令,激光器发射一束窄激光脉冲,经发射光学系统扩束后射向接收系统,其中一小部分经取样后启动计数器开始计数。激光回波经测距机的接收和瞄准光学系统,聚焦到前面有窄带滤光片的光探测器上。由探测器将其转换成电信号,再经取样及回波探测放大系统处理后产生“关门”信号用于关闭计数器。由计数器计得的脉冲个数计算出光纤得电源计数及显示器激光器长度,再通过显示器显示出来。
三.实验装置
实验装置包括“激光脉冲发射/接收电路板”、电脑和“单片机开放板”。
1.激光脉冲发射/接收电路板组成及工作原理
激光脉冲发射/接收电路板原理框图如图2.3所示。图中EMP3032为CPLD;MAX3656为激光驱动器;MAX3747为限幅放大器;T22为单端信号到分差信号转换芯片;T23为差分信号单短信号转换芯片;LD为半导体激光器;PD为光探测器。板子上端的EMP3032被编程为脉冲发生器,输出重复频率为1KHz,脉冲宽度为48ns的电脉冲信号。此信号经MAX3656放大后驱动LD发光。板子下端的EMP3032被编程为计数器,对125MHz晶振计数器。其计数的开门信号来自上端的TX信号,关门信号来自PD的输出。计数器的计数结果采用12位二进制数据输出,对应时间围为0~32.76us.
图2.3发射/接收模块原理框图
发射/接收模块布局如图2.4所示,TX、RX1、RX2为三个Q9插座。其中,LD的
驱动信号由TX口输出;PD接收到的信号由RX输出。
2.接口管脚说明
插座J9为计数结果输出管脚,包括12位数据管脚和1位计数指示管脚:
•数据管脚的高八位(从第12到5位)分别对应J9
的1、3、5、7、9、11、13、15;
数据管脚的低四位(从第4到11位)分别对应J9的16、14、12、10。高电平为1,低电平为0;
•计数指示管脚为J9的第六位。计数指示为1表示
正在计数,0表示计数结束。
四.实验结果及程序:
#include
#define uchar unsigned char
#define uint unsigned int
uchar code
SEG7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x6f,0x00};//数码管的段选,1为亮,0为灭
uchar SAV[6]={0xa0,0xa0,0xa0,0xa0,0xa0,0xa0};
uchar code ACT[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//数码管位选
void display();
void delay(uchar);
void count(uint);
uint get_Data();
void main()
{
uint re_data=get_Data();
count(get_Data());
while(1)
{
display();
}
}
void delay(uchar time) //延时函数,延时时长等于time*机器周期{
while(time>0)
time--;
}
void count(uint con_data)
{
SAV[0]=con_data%10; //取数据的个位
SAV[1]=con_data/10%10; //取数据的十位
SAV[2]=con_data/100%10; //取数据的百位
SAV[3]=con_data/100/10%10; //取数据的千位
}
void display() //数码管显示函数
{
uchar i=0;
for(i=0;i<4;i++)
{
if(i==1)