王 山,廖 平
(中南大学机电工程学院,湖南长沙 410083)
生活中常需要对移动的物体进行距离测量,设计一种低成本、小型化、精度高、实时性好的测距仪具有重要的意义[1]。激光测距具有着小型化、成本低、精度高、测量速度快的特点被广泛应用,但为了获得更高的测量速度,需要减少ADC采集的周期数与采样点数,此时对测距的精度会造成影响。因此采用单一的方式提高测量速度,不能做到与测量精度兼顾。近年来有学者将硬件补偿法应用到激光测距中,虽然取得了一定的效果,但同时也带来了成本增加、体积增大等缺点[2-4]。
本文提出了基于温度补偿算法的双光路激光测距的方法。硬件系统的控制芯片选用STM32F030C8T6,通过I2C对时钟芯片进行配置,产生2个大于160 MHz的高频信号,一个信号用作激光的调制,另一个信号加在APD雪崩光电二极管的高压信号上,用作混频。当激光发射模块处于内光路时,通过APD混频之后的低频信号是参考信号,当激光发射模块切换为外光路时,经过APD混频的信号是测量信号。然后ADC采集激光接收模块上面一个热敏电阻的电压值,换算为温度值。之后通过FFT进行鉴相,通过温度值对相位进行补偿,最后通过相位差算出距离值。实验结果表明,通过温度对相位进行补偿,在提高测量速度的前提下,仍然可以保持mm级的测量精度[4-5]。
系统的硬件整体方案如图1所示。
图1 硬件系统整体方案图
系统由MCU模块、激光发射单元、频率产生模块、高压模块、激光接收单元等部分组成。当系统打开内光路时,得到的信号是参考信号,通过ADC采集,保存在主控芯片中。系统切换到外光路,得到的信号是测距信号,也通过ADC采集保存在主控芯片中。经过FFT鉴相,根据温度值对相位进行补偿,算出测距信号与参照信号的相位差,最后根据相位差计算距离值[6-8]。
激光发射模块主要由激光管、激光调制电路和激光功率负反馈电路组成。
本文选用激光二极管的型号是HSLD650-5,波长是650 nm,输出功率为7 mW。激光调制电路中,起调制作用的正弦波信号由时钟芯片产生,频率可达160 MHz,经过三极管的放大以后与一个直流信号叠加,该直流信号确保达到激光二极管的开启电流,叠加之后的信号驱动内光路的激光管或外光路的激光管,中间有一个电子开关负责内外光路的切换。激光功率反馈电路的原理如图2所示,当激光管的功率过大时,激光管的功率反馈端的输出电流会增大,然后使R16左端的电压升高,当电压高于R11左端的电压时会使运放的输出拉低,此时激光管关闭,然后激光功率反馈端的电流减小,使R16左端的电压小于R11左端的电压,然后运放的输出又会拉高,此时激光管又会打开,就这样不断反复,使激光功率保持在一个恒定的状态。
图2 激光功率反馈电路图
激光接收模块主要由APD雪崩光电二极管和1个跨阻放大电路组成。
选用的APD为AD230-8,它的有效接收区域是0.04 mm2,接收半径为115 μm,光谱响应最大的是红光波段。它在23 ℃时的响应度如图3所示,可以看出它最高的响应程度的波长在655 nm。所选激光管的波长为650 nm,处于这个范围。
图3 APD响应曲线
跨阻放大电路原理图如图4所示,假设输入的电流为I0,则经过运放输出的电压为
图4 跨阻放大电路原理图
(1)
且放大电路的-3 dB的闭环带宽的计算为
(2)
式中:GBP为稳定的增益带宽积;Cd为光电二极管内部的结电容;Cdiff为差分电容;Ccm为共模寄生电容。
根据所选择的APD型号和运放的型号,可确定上述参数值,然后R1的最佳参数值可以根据输入频率确定。
频率产生模块主要由Si5351时钟芯片产生高频信号,如图5所示,由STM32单片机通过I2C对时钟芯片进行配置,生成2个高频信号,一个用于激光功率的调制,另一个叠加在APD的高压信号上,用作混频。
图5 频率产生模块
APD要想实现快速响应和很大的内部增益,就必须提供一个反向的偏置电压,其中增益与所提供的反向偏置电压的关系为
(3)
式中:G为倍增系数;UR为反向高压;UBR为反向击穿电压;n为与APD材料及注入载流子类型相关指数。
根据式(3)计算得出,当反向偏置电压在120 V左右时,增益值可达到70,因此所设计的高压电路如图6所示。
图6 高压模块
电路原理为一个boost升压电路,MOS管的栅极接由MCU芯片输出的PWM波信号,当MOS管的栅极为高电平时,MOS管导通,此时电流经过F11、L5以及MOS管流入地线。当MOS管的栅极为低电平时,MOS管断开,此时有较大电流由L5经D5分压后流入地线,然后产生一个接近120 V的高压。
系统的下位机软件如图7所示,主要包括PLL控制模块、激光发射模块控制单元、APD高压控制模块、ADC采集模块以及FFT鉴相模块。使用单片机中的定时器生成PWM波,使用I2C通道对时钟芯片进行配置,使用内部的ADC通道对测距信号进行采集,使用串口通讯把算出的距离值发送到PC端。
图7 下位机软件图
软件系统的工作原理为:当MCU芯片收到UART发来的测距指令时,单片机通过I2C通道对Si5351进行配置,产生两路的高频正弦波信号,一路用作激光功率的调制,将高频正弦波信号加载到激光载波上,使激光的输出光强由调制信号确定,与此同时,让流过激光管的直流大于其阈值电流,保证激光管能顺利打开。另一路信号加到APD的高压上,与接收到的回波信号进行电外差混频,得到一个低频信号。由MCU芯片通过定时器输出一个PWM波,经过boost升压电路产生APD所需要的高压,等待接收回波信号。当APD收到回波信号时,将经过滤波放大的信号送到单片机的ADC采集通道,经过ADC采集,FFT鉴相,随后通过温度补偿算法对相位进行补偿,根据算法算出距离值。最后将得到的距离值通过RS485发送到PC端的串口界面进行显示。
通过PLL对Si5351频率进行设置,主要是完成对Si5351芯片里面寄存器的读写进行控制,通过I2C通道对芯片内部寄存器进行设置,输出要求的特定信号。整个配置过程的流程图如图8所示。
图8 Si5351配置流程图
系统正常供电后,首先运行主函数,接着对Si5351芯片进行配置,通过I2C初始化PLL内部的有关寄存器,随后读取内部的信息,如果PLL正在等待,MCU芯片会在对应寄存器的地址空间写入掩码信息,同时鉴别输出信号的状态,如果输出信号处于正常状态,就会选择对应的PLL机型配置,若PLL处于锁定状态,就把要求的频率控制值写进对应的寄存器,同时正确设置R分频器的值,等各项配置都完成后,延时1 ms,然后单片机使能芯片的输出引脚,使两路高频信号都能稳定的输出[9]。
此模块的主要功能是对经过混频后的参考信号和测距信号进行ADC采集。这个模块使用的是单片机内部自带的ADC通道,然后选择它的逐次逼近模式,使能ADC通道。由于混频后的低频信号为10 kHz,故设置的采样频率为50 kHz,将ADC采样的结果存储在寄存器中。同时看门狗模式也需要使能,为了实现信号的再次滤波,需要设置ADC采集的阈值电压。为了让数据的传输更加快速,调试过程中直接使用单片机内部的DMA。
假设x(n)是一个拥有N个数据的离散序列,对x(n)进行离散傅里叶变换得:
(4)
式中:k=0,1,2,3,…,N-1;n=0,1,2,3,…,N-1。
由欧拉变换可得:
(5)
式(5)可表示为
X(k)=Re[X(k)]+jIm[X(k)]
(6)
由式(6)可得测距信号和参考信号相位为
(7)
因此求得测距信号和参考信号得相位差,再通过测距算法求出距离值。
当环境的温度升高时,APD的击穿电压也会增大,若此时提供给APD的偏置高压保持不变,APD的倍增因子会随着温度的变化而变化,然后APD的响应会呈现出一种非线性的状态,最后会影响到整个测距的精度。因此,提出了一种温度补偿算法来解决由温度的变化带来的APD非线性响应问题。
在接收板上放置一个热敏电阻,如图9所示,用于监测环境温度的变化,然后采集热敏电阻的电压进入MCU芯片,再根据采集的电压换算成温度值T。由于APD的电压只取决于温度,因此可以通过温度自动切换APD的电压值。设需要设置的APD电压为V1:
图9 温度测量电路图
(8)
式中:Vrange为APD电压的范围;Tmax为APD温度最高值;T为当前温度值;Vmin为APD电压的最小值。
同时还可以计算出相位的补偿值,设补偿的数值为Y0,则:
Y=K1·T
(9)
Y=Y-K2·T2
(10)
Y0=-Y·K3
(11)
式中:K1为实验测量所得系数,K1=0.226 974;K2为实验测量所得系数,K2=0.004 982 7;K3为相位乘积系数,K3=10。
由相位差的值,加上计算的相位补偿值,得出补偿后的相位差值,最后算出最终的距离值。
在硬件电路的设计及软件代码的编写完成后,进行实验验证。通过减少ADC采样周期数和采样点数提高了采样速度,因此实验主要是验证测距系统的精度。本测距系统采用的RS485串口通讯,通过一个RS485 TO USB转接头与上位机PC相连,测距系统将距离值通过串口发送到上位机PC。将测距系统安装在移动的小车上进行实时测距,实验结果如表1所示,DIST表示距离值,AMP表示测距信号的幅值,VOLT表示APD的高压。
表1 验证本文设计的测距系统精度的实验结果
由实验结果可知,本测距系统的测量实时性好,精度高,在移动的小车上面的测距精度仍然保持在mm级的分辨率,达到了预期的功能要求。
本文提出了一种基于温度补偿算法的双光路激光测距系统。为了提高测量速度,增强测距系统的实时性,减少了ADC采样的周期数和采样点数,同时为了不使测距精度受到损失,采用了一种温度补偿的方式对相位进行补偿,提高了测量精度。本测距系统可应用于实时性和精度要求高的场合。