1、 c = 2.9971108 m/s可见,激光测距机的任务就是准确地测定时间间隔t。当不考虑大气中光速的微小变化时,测距精度R主要是由测时精度t确定的 实际脉冲激光测距机中是利用时钟晶体振荡器和脉冲计数器来测定时间间隔t的。时钟晶体振荡器用于产生固定频率的电脉冲振荡,脉冲计数器的作用是对晶振产生的电脉冲个数进行计数。设晶体振荡器产生的电脉冲频率为f,则脉冲间隔fT1=。若从激光脉冲发出时刻脉冲计数器开始计数,到反射光被接收时刻停止计数,设这段时间内脉冲计数器共计得脉冲个数为m,则可计算出被测目标的距离为 相应的测距精度为 可见,脉冲激光测距机的测距精度由晶振的频率决定。常用军用激光测距仪的晶振
2、频率有15MHz、30MHz、75MHz和150MHz等,与其相对应的测距精度分别为l0m、5m、2m和lm。晶振的频率愈高,测距精度就愈高,但随之而来的,不仅是计数器的技术难度增加,而且要求激光脉冲的宽度愈窄,激光器的难度也增加。对脉冲测距系统,计数器的“开门”信号是由取出小部分发射激光脉冲经光电探测器转换成电信号形成的,计数器的“关门”信号则是由目标激光回波到达测距机经光电探测器转换成电信号形成的。这两个信号既可由同一探测器提供,也可用两个探测器提供。脉冲激光测距机由激光器、发射光学系统、接收及瞄准光学系统、取样及回波探测放大系统、计数及显示器和电源几部分组成,如图所示 系统操作人员一旦下
3、达发射激光的命令,激光器发射一束窄激光脉冲,经发射光学系统扩束后射向目标,其中一小部分经取样后启动计数器开始计数。被目标反射回来的激光回波经测距机的接收和瞄准光学系统,聚焦到前面有窄带滤光片的光探测器上。由探测器将其转变为电信号,再经过取样及回波探测放大系统处理后产生“关门”信号用于关闭计数器。由计数器计得的脉冲个数计算出目标距离,再通过显示器显示出来。实验装置包括“激光脉冲发射/接收电路板”和“单片机实验板”。激光脉冲发射/接收电路板原理框图如图2.3所示。图中EPM 3032为CPLD;MAX3656为激光驱动器;MAX3747为限幅放大器;T22为单端信号到差分信号转换芯片;T23为差分
4、信号到单端信号转换芯片;LD为半导体激光器;PD为光电探测器。板子上端的EPM 3032被编程为脉冲发生器,输出重复频率为1KHz,脉冲宽度为48ns的电脉冲信号。此信号经MAX3656放大后驱动LD发光。板子下端的EPM 3032被编程为计数器,对125MHz晶振进行计数。其计数的开门信号来自上端的TX信号,关门信号来自PD的输出。计数器的计数结果采用12位二进制数据输出,对应的时间范围为032.76s。发射/接收模块实物如图2.4所示,TX、RX1、RX2为三个Q9插座。其中,LD的驱动信号由TX口输出;PD接收到的信号由RX输出。该模块通过一个单独的5V电源进行供电。插座J9为计数结果输
5、出管脚,包括12位数据管脚和1位计数指示管脚: 数据管脚的高八位(从第12到5位)分别对应J9的1,3,5,7,9,11,13,15;数据管脚的低四位(从第4到1位)分别对应J9的16,14,12,10。高电平为1,低电平为0; 计数指示管脚为J9的第6位。计数指示为1表示正在计数,0表示计数结束。本实验的内容是搭建并调试一套室内模拟激光脉冲测距系统,实验系统组成框图见图2.5。实验系统主要由激光脉冲发射/接收电路板(其上包括脉冲半导体驱动器、脉冲半导体激光器、光电探测接收系统、计数器)和单片机实验板(其上包括单片机及显示模块)组成。其中,脉冲半导体激光驱动器产生重复频率为1KHz,脉冲宽度为
6、24ns的电脉冲信号驱动半导体激光器工作,同时此脉冲信号作为计数器的开门信号启动计数器开始对高速晶振输出的脉冲个数计数。半导体激光器输出光脉冲耦合到光纤中,经过一定长度的光纤传输后再被光电探测器接收转换成电信号,经过放大后作为计数器的关门信号,使计数器停止计数。此时计数器计到的脉冲个数再乘以晶振的周期即为光脉冲在光纤中传输的时间,此时间乘以光在光纤中的传播速度即为光纤的长度。单片机将计数器的计数值读入,计算出距离值并显示出来。实验系统连接如图2.6所示。将随机携带的20P的排线将实验系统和激光测距系统进行连接,然后分别供电。单片机读取发射/接收模块输出的二进制计数结果,经过计算得到光纤长度,再
7、通过数码管显示出来。三实验结果及程序经过编程、烧录等过程,我组通过实验验收,结果为188.8。针对实验要求,我们进行了如下的程序设计,以求得正确的结果,代码如下:#include /头文件#define uchar unsigned char /两个宏定义 ,只是为了方便#define uint unsigned int uchar code SEG7=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00; /数码管的编码uchar SAV6 = 0xa0,0xa0,0xa0,0xa0;uchar code ACT6=0xfe,0xfd,
8、0xfb,0xf7,0xef,0xdf; /位选的编码void delay(uchar); / 头文件的声明,延时子函数void display();void count(uint) ;uint Get_Data();void main() /主函数 uint Re_Data =Get_Data();count(Get_Data() ; /进行计算,得到想要的数据while(1) /主循环display( ) ; /显示函数; void delay(uchar time) /延时函数,这里的作用不明显,没有调用 while(time0) time- ;void count(uint Con_D
9、ata) SAV0 = Con_Data%10; /计算个位数据 SAV1 = Con_Data/10%10; /计算十位数据SAV2 = Con_Data/100%10; /计算百位数据SAV3 = Con_Data/100/10%10; /计算千位数据void display( ) /显示函数 uchar i = 0; for (i = 0; i4 ;i+ ) /for循环用于进行循环显示if(i=1) P0=SEG7SAVi|0x80;用于显示小数点。 P2 = ACTi; else P0 = SEG7SAVi ; /显示函数的主体 ,P0作为字线输出 /P2作为实验板的位线delay(
10、200) ; /延时函数P0 = 0xff ; /防止出现余辉现象uint Get_Data() uint Last_Data;uchar Data; P3 = 0xff; /P3口置高,这是读取数据的需要 Data = P3 ; /读取P3口数据 Last_Data = Data&0xf0; /获取P3口数据的高四位 Last_Data = Last_Datavoid count(uint Con_Data)SAV0 =4;SAV1 =3;SAV2 =2;SAV3 =1;SAV4 =0;uchar i = 0;for (i = 0;5 ;i+ ) /for循环用于进行循环显示 21P0 =
11、SEG7SAVi ;P2 = ACTi; /P2作为实验板的位线uint Get_Data()P3 = 0xff;Data = P3 ;Last_Data = Data&Last_Data = Last_DataData = P1;Last_Data = Last_Data +Data; Last_Data =Last_Data *16;return Last_Data ;五实验中遇到的问题刚开始时,由于不清楚如何在单片机中显示小数点,于是询问同学,经讨论后得知其原理。实验中遇到的主要问题就是这个。六实验心得与反思通过过去几周的学习,我们对脉冲式激光测距有了一定的认识,掌握了单片机程序的编写、烧录、调试方法,完成了这一实验。我们认为这为我们今后的学习打下了良好的基础。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1