APP下载

基于LPC1768定时捕获功能的障碍探测系统的设计

2015-07-13张燕

电脑知识与技术 2015年13期

张燕

摘要:本设计介绍了LPC1768的的定时器捕获功能在移动机器人障碍探测中的使用。设计了移动机器人探测周围环境障碍的软硬件,应用超声传感器获取周围的障碍物信息,通过算法计算出障碍物与移动机器人的位置信息,从而获取移动机器人前方障碍信息,为了更好的显示障碍物距离,使用LCD1602实时显示障碍物距离。

关键词:超声传感器;LPC1768;捕获

中图分类号:TP751 文献标识码:A 文章编号:1009-3044(2015)13-0189-03

Abstract: This paper introduces the match function of mocrocontroller LPC1768 and its application to detect obstacles in the mobile robot .both hardware and software of the mobile robot obstacle detection are designed. ultrasonic sensor are used to get around obstacles information. the algorithm is used to calculated the position information between obstacle and mobile robot. in order to better display of obstacle distance, LCD1602 is used to show obstacle distance real-time.

Key words :ultrasonic sensor;LPC1768;capture

随着移动机器人的不断发展, 其应用领域也越来越广泛。由于移动机器人周围环境往往是不可预测的, 对于自主移动机器人,能否感知周围环境的信息直接 决定了移动机器人是否可以自主运行[1]。

目前移动机器人常用的测距方法有超声测距、激光测距、红外测距、微波测距等。其中超声波测距就是利用压电效应将电脉冲与机械谐振产生的超声波相互转化而构成的发射与接收装置,也成为超声波换能器或超声波探头,它包括发送探头和接收探头两部分。通过发射探头将40kHz的电脉冲信号转换为机械谐振而产生超声波,实现将电能转换为机械能的转换,而接收探头则是将超声波引起的机械振动再转换成电脉冲信号[2]。

1 系统组成和结构

本系统主要由LPC1768,超声收发模块,LCD显示模块构成。

LPC1768[3]是NXP 公司推出的基于ARM Cortex-M3 内核的微控制器LPC17XX 系列中的一员。操作频率可达100MHz, 外设组件包含高达512KB 的flash 存储器、4个UART、3个IIC 接口、4个通用定时器等,独立电池供电的超低功耗RTC 和多达70个的通用IO 管脚。

超声收发模块的四根线分别为VCC,GND,

TRIG,Echo,其中VCC接电源,GND 接地,信号线TRIG为控制端,Echo接GPIO口。

LCD显示模块采取IIC串行总线的方式。其中LCD1602的背光电源和供电电源相连接,而后连接至LPC1768的VCC上,由于LCD1602 VCC电源为3.3V,因此只需要连接至LPC1768的3.3V电源即可。LCD的SDA以及 SCL分别连接LPC1768 IIC0的SDA及SCL。为了更好的显

示数据,同时还将超声获取的距离信息通过串口控制台显示在PC的终端上。

2 系统软件的设计

2.1系统总体设计流程

本设计采取P0.0与超声模块控制口trig相连,定期给此端口一个10us以上的高电平来使能超声模块。利用定时器timer0以及捕获的p2.0端口的上升以及下降沿的定时器计数值,获取echo口高电平持续的时间,在中断服务程序中计算出障碍物距离。计算出来的障碍物距离通过LCD1602以及超级终端均可以显示。

2.2 超声传感器模块软件设计

信号线TRIG为控制端,每当我们通过此信号线发送10us以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后Echo检测回波信号[4]。Echo 端输出一高电平, 可根据此高电平的持续时间来计算距离值,具体时序如图4所示。

本设计采取一个GPIO端口P0.0发送10us的高电平信息由于我们需要通过捕获echo端口有无高电平信息 ,以及高电平信息的持续时间,在LPC1768上中断有外部中断以及GPIO中断。由于需要捕获高电平信息,所以考虑采用GPIO中断捕获,LPC1768的GPIO0以及GPIO2允许GPIO中断,本设计采取GPIO2。且高电平信息有一个上升沿以及一个下降沿。因此通过两者的时间差就可以获取高电平时间,而后利用公式:

distance =(th*340)/2

获取距离,其中distance表示的是超声传感器与障碍物之间的距离,th表示的是高电平持续的时间。340m/s为空气中的声速,超声传感器的速度与温度会有一定关系,具体如下表1所示。由表格可见在常温下速度变化不大,因此本设计直接取340m/s。

对于GPIO中断需要捕获上升沿以及下降沿信息,因此需要设置边沿寄存器。设置部分代码如下所示。FIODIR表示方向寄存器,IO2IntEnF为下降沿使能寄存器,而IO2IntEnR上升沿使能寄存器。所有LPC1768的GPIO中断使用的是EINT3外部接口,所以最后使能中断。

LPC_GPIO2->FIODIR&=~(1<<0);

LPC_GPIOINT->IO2IntEnF|=(1<<0);

LPC_GPIOINT->IO2IntEnR|=(1<<0);

NVIC_EnableIRQ(EINT3_IRQn);

对于超声传感器的时间我们采取定时器0计时。通过设置预分频寄存器PR设置定时器计数寄存器TC 计数的时间。而后再每次上升沿以及下降沿的时候去获取一下TC的值,通过两次的TC的值之差以及定时器的时钟计算出高电平的时间。

定时器初始化核心代码为:

LPC_TIM0->CTCR=0; LPC_TIM0->PR=(25000000/20000)-1;

CTCR设置为定时器模式,设置每0.05ms计数一个TC。回波高电平时间点获取。

if(LPC_GPIOINT->IO2IntStatR&(1<<0))

{Rise_time=LPC_TIM0->TC;}

else if(LPC_GPIOINT->IO2IntStatF&(1<<0))

{Fall_time=LPC_TIM0->TC;}

如果p2.0有上升沿的时候,记录此时的定时器的计数值Rise_time,如果P2.0有下降沿的时候记录此时的定时器的计数值Fall_time。

超声传感器探测的障碍与移动机器人的距离为

distance = (( Rise_time-Fall_time)*0.05)*340/2;

2.3 LCD显示模块

本设计使用LPC1768上的IIC0接口,通过串行总线传输数据。首先需要设置IIC的传输模式,中断模式以及时钟频率。对于LPC1768 IIC0的时钟频率有标准模式速率为100M/s,快速模式 400Kbit/s,高速模式3.4Mbit/s.本设计采取标准模式100M/s,实验证明显示数据没有任何问题。而后初始化IIC,初始化LCD,由于我们计算的超声距离为整形数据,需要通过sprintf将其转化为字符类型,再通过LCD1602_DispStr显示距离。其部分代码如下所示。

I2C_InitTypeDef I2C_InitStruct;

I2C_InitStruct.Mode = I2C_MASTER;

I2C_InitStruct.ClockRate = 100000;

I2C_InitStruct.InterruptMode 、

I2C_INTERRUPT_MODE;

I2C0_Init( &I2C_InitStruct );

Init_LCD1602();

sprintf(str,"%d",distance);

LCD1602_DispStr(0,6,str,16);

2.4 串口控制台显示模块

本设计使用LPC1768的uart2作为与PC的超级终端连接的串口。首先初始化串口,设置波特率为115200,8位数据位,1位停止位。输出和输入使用函数指针指向uart2。

UART2_Init(UART_BAUD_115200);

xfunc_out=UART2_SendByte;

xfunc_in=UART2_GetByte;

xfunc_out是一个指向串口2的发送函数的函数指针,xfunc_in一个指向串口2的接收函数的函数指针。使用函数xprintf将超声传感器测出的距离获取的数据显示在超级终端上。

3 上位机串口通信终端软件设计

上位机设计了一款自己的串口通信软件而不是使用超级终端或SecureCRT。软件采取的是Labwindows CVI软件实现串口通信。

1)打开通信串口;2)串口初始化,串口设置串口通信。包括选择串口、波特率、数据位、停止位、奇偶校验参数的设置;3)实现和安装串口通信的回调函数;4)读/写串口的操作;5)关闭通信串口。

本文中使用GetCtrlVal函数获取下拉框中选中的串口,波特率,奇偶校验等信息。使用函数OpenComConfig打开串口端口,使用SetCTSMode禁止硬件握手,使用FlushInQ,FlushOutQ清空接收和发送队列。调用ComRd函数读取LPC1768发过来的串口数据。调用SetCtrlVal函数将数据显示在文本框中。

串口通信界面如下所示。

图5中接收字符串可以接收来自LPC1768发往串口的数据。清空接收框则可以实时清除文本框中显示得超声传感器的数据。数据显示主要是会弹出另一个界面,该界面主要用于超声传感器获取数据的处理,点击退出则终止串口通讯。

4 实验数据结论

4.1 使用LCD1602显示超声传感器数据

实验表明,使用LCD1602能够很好的显示获取的数据。本设计设置超声传感器的测量距离为10cm到2m,超过范围会显示”out of range”。

4.2 使用串口控制台显示超声传感器数据

图7实验为在移动机器人前方有一个固定的障碍物,开始的时候障碍物距离移动机器人为70cm,在机器人前进的过程中距离信息基本能够测出。

5 实验数据小结

本设计设计了使用超声传感器获取了移动机器人前方障碍物信息,试验结果表明一般情况下可以获取障碍物信息。但是超声传感器有其弱点,譬如说镜面反射等情况,未来会考虑使用多传感器结合以更好的获取移动机器人周围的环境信息。

参考文献:

[1] 刘喜昂, 周志宇. 基于多超声传感器的机器人安全避障技术[J]. 测控技术, 2003,23(2):71-73.

[2] 张永枫. 单片机应用实训教程[M]. 北京:清华大学出版社, 2008.

[3] 周立功. ARM 嵌入式系统基础教程[M]. 北京:北京航空航天大学出版社, 2005.

[4] 苗玲玉. 传感器应用基础[M]. 北京:北京机械工业出版社, 2008.