一种便携式的红外测距系统
2011-06-05周凌翱
韦 伟,周凌翱,刘 青
(南京钟山职业技术学院 江苏 南京 210049)
红外测距[1]是一种非直接接触的测量方式,由于其结构简单、抗干扰性强、成本低等优点,在测量测绘上得到广泛的运用。该系统由红外发射接收传感器、A/D转换电路、信号采集处理、数据显示电路等组成,体积小,操作简单,非常适合于近距离的测量应用。本系统形成了一套完整的硬件系统和软件开发平台,便于功能的改造,扩展及其他应用研究。
1 红外测距原理
本控制系统的MCU采用STC公司的STC89LE516RD,它是MCS-51系列的派生产品,在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,最高时钟频率90 MHz,低功耗,可支持(ISP IAP)编程。 红外测距采用GP2Y0A02YK芯片,它采用光学三角测量的方法,测量精度受反射物体的颜色和光线的影响比较小。内部集成了红外接收发射两个模块,感应距离为 20 cm 至 150 cm,宽范围供电(0~7 V),不需要多余的外部接口电路,也不需要额外的处理电路,简化了底层控制器的外围电路,使用方便。感应距离与输出电压的关系如图1所示[2]。
由于在20~150 cm范围内测量距离与输出电压成曲线变化,测量输出电压将其进行A/D转换,对转换后的数字量信息进行归算得到测量的距离,在将其结果用数码管或者上传到PC机进行实时显示。结构图如图2所示。
图1 测量距离与输出电压关系图Fig.1 Measuring distance and output voltage curve
2 AD转换模块设计
图2 系统结构图Fig.2 System structure
AD/DA采用PHILIP的PCF8591芯片,精度为8 bit。有4路A/D转换输入,一路D/A转换输出,既可以作A/D也可以作D/A转换。A/D转换为逐次比较型,采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。通过控制字寄存器对4路模拟量的输入方式进行编程,实现A/D转换功能[3]。原理图如图3所示。ADC的转换公式为:VOUT=(VADJ-VAGND)·256/(VREF-VAGND)。
图3 AD/DA原理图Fig.3 AD/DA schematic
24LC02作为EEPROM,输出信号采用I2C方式与STC89LE516 MCU通信,SDA和SCL分别由是启动和关闭I2C的控制信号[4]。当I2C总线空闲时,SDA和SCL都处于高电平状态。当SCL保持高电平时,一个SDA下降沿表示初始化一个起始条件。当SCL保持高电平时,SDA的一个上升沿表示初始化一个停止条件。起始和停止条件都是由MCU发起的。传输数据开始前,MCU控制24LC02的SDA和SCL发送起始位,传输数据结束时,控制SDA和SCL发送停止位。输出到SDA线上的每个字节必须是8位,每次传输的字节数则不受限制,起始条件后紧跟着地址字节,每个字节必须有一个确认位(ACK),如果 MCU在完成其他功能之前不能传输另一数据的完整字节,24LC02会保持时钟线SCL为低,使其进入等待状态,当MCU准备好接收并释放SCL信号后,数据传输继续进行[5]。
3MCU设计程序算法
1)PCF8591 AD 转换程序
电路上PCF8591的第0通道采集的是GP2Y0A02YK芯片的模拟量。采用KEIL软件环境编写AD转换及传输程序。在主函数中编写读PCF8591第0通道数据的函数如下:
当模拟量信号为3.3 V时,Val返回255,当模拟量信号为0 V时,Val返回0,呈线性的关系,计算得到每伏电压的数值为 77.27。
2)数据归算问题
图1所示测量距离与输出电压关系并不是线性的关系,在20~150 cm范围内测量距离与输出电压近似成二次曲线的关系。用MATLAB编写程序,输入坐标值求解关系式,将图一拟合成如下函数关系式:y=35x2-160x+191(其中x为红外输出电压,y为测量距离值),最后将其归算成距离量。
num=ReadADC(0);//采集第 0 通道的模拟量
x=(num)/77.27;//将 AD 转换的数换算成电压值,以便代入函数。
y=35*x*x-160*x+191.25 ;//归算成距离量(单位为 cm)。
3)测量结果显示
本系统设有3个SEG共阳的数码管,如图4所示,它可以用来显示红外传感器测量的距离量[6]。
图4 SEG显示原理图Fig.4 SEG display schematic
STC89LE516RD的P0口控制3个SEG显示的数值,由于P0口在某一特定的时刻只有一个特定的值,所以如果让P0口控制3个不同的SEG,就需要经过数据锁存器,对数据先进行锁存再送入SEG。锁存器选用74HC574,OE一直为有效,3个 CP 分别用 MCU 的 P2.5 P2.6 P2.7控制, 当 CP 上升沿时锁存数据。经0到9这十个数据按照SEG共阳的接法写成一个有10个成员一维的数组,成员从0到9依次对应于SEG显示的0到9。这样的写法易于SEG显示程序的编写。
4 软件编程
本系统与上位机采用串口通讯[7]的方式,在VC下编程实现红外距离数据的接收。除了红外测距,本开发系统还具有实时报警,继电器开关控制,直流/步进电机正反转等其他模块。在对STC89LE516RD编程时,对各个硬件模块进行了地址上的分配以及命令格式上的定义。如蜂鸣器开为AA01其中AA为通讯测试编码,01为接收距离数据,AA02为关闭接收数据,AA03为继电器吸合,AA04为继电器释放,AA05为直流电机运行,AA06为直流电机停止等。这里定义写入到MCU后,上位机只需将这些命令通过串口发出即可实现对硬件系统的控制。Microsoft公司在WINDOWS中提供了一个串口 通 讯 ActiveX控 件 Communication Control(MSComm),MSComm间接调用Windows API,然后再传递给驱动设备进行处理[8]。将控件加在单文档对话框上再用ClassWizard生成相应的对象,就可以使用其函数如:SetCommPort(指定使用的串口),GetCommPort(得到当前使用的串口),SetPortOpen(打开或关闭串口),GetPortOpen(取得串口状态),GetInPut(读取输入缓冲区),GetOutBufferCount(输出缓冲区中待发送的字符数),SetOutPut(写入输出缓冲区)。设置好MSComm的属性,将以上命令编码通过SetOutPut等函数发出即可。采用MSComm编程控制该系统的界面如图5所示。
图5 红外测距系统上位机界面Fig.5 PC interface of system
图6 测距系统实物图Fig.6 Material object of system
5 结束语
本便携式测距系统完成了一整套软件硬件的系统设计,具有成本低、实用性高、功率小、反映速度快、抗干扰能力强、易于小型化等特点,非常适用于短距离测量、移动机器人避障及红外感应控制等诸多领域。为了避免盲区和提高测量精度,还可以采用多个红外发送接收模块同时工作,得到更准确的数据。
[1]陈昱,杨济民.电脑鼠电路的改进及搜索算法研究 [J].现代电子技术,2011(10):68-70.CHEN Yu,YANG Ji-min.Improvement and search algorithm of micromouse circuit[J].Modern Electronics Technique,2011(10):68-70.
[2]GP2Y0A02YK0F Distance Measuring Sensor Unit Measuring distance:20 to 150cm Analogoutputtype[M].SHARP Corporation,2006.
[3]PCF8591 8-bitA/D and D/A converter [M].Philips Semiconductors,2003
[4]于再兴,陈江.基于C8051F的数据传输系统设计与实现[J].微计算机信息,2008(11):99-101.YU Zai-xing CHEN Jiang.The design and implement of the data transmission system based on C8051F[J].Microcomputer Information,2008(11):99-101.
[5]徐伟,刘建成.基于模拟IIC总线的电压测量系统[J].南京信息工程大学学报:自然科学版,2011,3(1):91-96.XU Wei LIU Jian-cheng.A design of voltage measurement system based on simulated IIC bus[J].Journal of Nanjing University: Information Science & Technology,2011,3(1):91-96.
[6]宋轶群,杜华生.基于PIC16F877的红外测距系统[J].仪表技术,2004(5):48-49.SONG Yi-qun,DU Hua-sheng.Range-measurement infrared system based on PIC16F877[J].Instrumentation Technology,2004(5):48-49.
[7]祝红彬,李伟,刘子骥,等.基于单片机SPI器件的串口控制[J].现代电子技术,2009(24):20-22.ZHU Hong-bin,LI Wei,LIU Zi-ji,et al.Serial port control of SPI devices based on single chip microcomputer[J].Modern Electronics Technique,2009(24):20-22.
[8]胡乃平,赵振.基于VC6.0串口通信动态链接库(DLL)的设计与应用[J].微计算机信息,2007,23(3-3):214-216.HU Nai-ping,ZHAO Zhen.A design and application of serial communications Dynamic Link Library on VC6.0 platform[J].Microcomputer Information,2007,23(3-3):214-216.