基于ADNS2610的微型飞机速度检测系统设计
度范围。微型飞机使用光流法测速的场合主要是在近地飞行过程中,因此选用的透镜系统的物距应该适合近地飞行时使用。为了节约成本,选用了电脑上常用的一种摄像头上的透镜系统,其焦距为4mm,其物距范围为几厘米到几米,完全能满足要求。该系统透镜与ADNS2610的感光面的距离是可以连续调节的,这样就可以方便地调节成像的清晰度。
在实际使用过程中,透镜与感光面的距离一旦确定就不再改变。这样虽然随着飞机高度的变化,成像清晰度可能会有所改变,但是只要在限定的高度范围内,成像的清晰度是能够保证的,因此不影响测速,并且还能够简化计算过程。
因为图像的最大移动速度为12inch/s以及透镜焦距为4mm,可以推导出测速时微型飞机的最大相对于地面飞行角速度为76.2 rad/s。
4 软件设计
测速软件包括主控芯片的初始化、位移量的读取、速度的计算这几个模块。系统的初始化主要针对控制芯片MSP430F449的相应控制引脚而言,包括设置I/O端口、输出频率、存储区间等。根据ADNS2610的数据手册,在读数据的过程中,在发送完最后一个地址位后,微控制器的SDIO端口必须进入高阻态。这里把MSP430的相应引脚设置为输入状态,可以满足对微控制器的高阻态要求。程序软件设计的总流程图如图4所示。
读数据的过程由微控制器来驱动,时序如图5所示。
每条读数据命令包含2个字节,第1个字节代表地址,最高位为O。在数据传输过程中,SDl0的数据在时钟下降沿被设置,在时钟上升沿被接收。在向ADNS2610传输数据的过程中,时钟脉冲和数据的变化之间有一定的时序关系,如图6所示。在地址位传输结束后,微控制器的SDIO端口必须被设置为高阻态,并且串口的时钟必须要有不小于100μs的延迟,如图7所示(图5中的detail"A")。最后一个数据位传输结束以后,ADNS2610会进入高阻态,这时SCK和SDIO之间的时序关系如图8所示(图5中的detail"B")。根据时序要求可以看出,如果以读取X和Y方向上移动量各1次为1个周期T,那么周期T大于200μs。
向ADNS2610写数据的时序图如图9所示,也是先传送地址位再传送数据位。其中地址位的最高位为1。SCK和SDIO的信号脉冲时序要求如图6所示。需要注意的是,写数据结束以后,必须延时100μs以上才能够进行下一次读或者写操作。
以X轴为例给出速度的计算过程。传感器的分辨率为400 cpi,所以Delta_X的单位为O.0025inch。如果周期T的单位为s,则:
Y轴的速度计算过程和X轴相同。
图像的解析度是400 counts/inch,图像的最大移动速度是12inch/s,因此最大的计数速度是4800counts/s。Delta_X和Delta_y的绝对值最大为127,因此最大的读数周期为0.0265s。
5 调试
调试主要包括硬件调试、软件调试、透镜系统调试3个部分。硬件调试主要考虑硬件之间的连接。为了降低信号线的电感特性,缩短阶跃响应时间,引线SCK和SDIO要尽可能短,并且中间连接的电阻尽量考虑使用贴片电阻。另外MSP430和ADNS要共地,这样它们的高低电平之间才有共同的基准。软件调试分为3个步骤:时序验证、图像读取、读取周期验证。
时序验证是通过示波器来验证SCK信号和SDIO信号的时序,以及地址和数据是否正确。可以通过实现点亮LED灯等功能来验证发送和接收软件的正确性。实验结果证明向ADNS写数据的程序是符合要求的。接下来的调试步骤就是读取图像,以验证读数据程序的正确性,并为调焦做准备。为了方便调试,直接采用光电鼠标的透镜系统和支撑结构。图10是读取到的图像和原始图像的对比,其中图10(a)是利用传感器拍摄的图像,图10(b)是对原始图像扫描后的结果,扫描分辨率是2 400 dpi。使用的透镜像距和物距之比是1:1,因此拍摄的图像和原图的大小也是1:1。传感器的分辨率是400 cpi,图像分辨率是18×18像素,因此图像的大小是(18/400)inch×(18/400)inch,即1.143 mm×1.1 43 mm。
传感器图像的灰度等级成64个等级,0是全黑,63是全白。传感器内置了自动增益电路调整快门值。使得最亮的部分的灰度值在55左右。软件调试的第三步是验证实际读取周期。读取Delta_X和Delta_Y各1次为1个周期,通过示波器来读取这个周期值。
透镜系统的调试主要是调整透镜的中心和传感器感光面之间的距离,以达到系统在几厘米到几米的高度上成像清晰。图11显示了透镜系统调试完成后拍摄的图片和拍摄用的原图,其中图11(a)像距未调好时拍摄的图片,图11(b)是像距调整后传感器拍摄的图片,图11(c)是拍摄用的原图的扫描件,原图在扫描时配上标尺以表明原图的尺寸。
根据地面上实际图形的大小和镜头与地丽的距离,可以计算出传感器感光面与透镜中心的距离,根据此距离,就可以计算出a,再根据前面的公式可以计算出微型机的飞行速度。