热门关键词:

基于ARM―Linux的超声波测距系统设计与实现

  • 该文件为pdf格式
  • 文件大小:239.56KB
  • 浏览次数
  • 发布时间:2014-11-09
文件介绍:

本资料包含pdf文件1个,下载需要1积分

Design and Implementation of Ultrasonic Distance Measure System Based onARM -LinuxHONG Song ,ZHU Long-ying(1.School of Mechanical Engineering,Changzhou University,Changzhou 213016,China;2.School of Automotive Engin-ering,Yancheng Institute of Technology,Yancheng 22405 1,China)Abstract:In order to resolve the problems of ultrasonic distance measure under the ARM-Linux platform,followingthe working principe of ultrasonic and basic method of character device driver written,the ultrasonic modular andtemperature sensor driver program and application program were designed and implemented under the ARM processorand the kernel of Linux2.6.Experimental results show that the measurement data was accurate,stable and real-timeusing temperature compensation method,it has accomplished the suppo of HC-SR04 sensor and DS18B20 sensorunder the ARM-Linux platform,and has been applied in the mobile robot control system,and run to good effect。

Key words:embedded Linux;ARM-processor;temperature compensation;device driver在复杂环境中和-些特殊工作诚中常采用非接触测距的方法 ,激光、毫米波和超声波等是非接触测距中常用的测量介质。超声波测距较前两种而言,具有能耗慢、指向性强、受环境因素影响小等特点 ,被广泛应用于倒车雷达 、管道长度 、机器人避障以及其他工业现场等方面。本文提出了在 Linux系统中用超声波测距的方法测量避障物体 ,并编写了 HC-SR04和 DS18B20传感器驱动程序。在应用程序的配合下实现了精确的距离测量。

1 超声波测距系统原理目前超声波测距常采用回波时间法 ,其方法通过换能器向介质中发射高于 20 kHz以上的声波.途中遇到被测物体后反射回来。若已知声波在介质中收稿 日期 :2012-09-14;修订 日期 :2012-l1-05作者简介:洪松(1981-),男 ,硕士研究生,研究方向为嵌入式在机器人控制方面的应用;朱龙英(1962-),女 ,博士,教授研究方向为机器人数字化设计和制造技术、清扫机器人数字化设计与制造关键技术研究。

自动化与仪表2013。(3) 田传播速度为 ,回波到达时间与发射时间差为t。就可以计算出发射点与发射点间的距离 s:Svt/2,即可算得传感器与反射点的距离d、/ 7 。若s>> ,则 ds。h、s、d的关系如图 1所示。超声波在固态中传播速度最快 ,在气体中传播速度最慢,而且声速与温度有关Il,若温度变化显著,需考虑温度补偿,声速在空气中传播速度与温度的关系为v331.4x、/ 331.40.607T(m/s)式中, 为当时工况的环境温度,单位为℃。

图 1 h、S、d的关系Fig.1 h、s、d relationship2 系统的硬件平台搭建本系统采用 Sangsung公司的 $3C2440A微处理器,其支持 16位 Thumb指令集和32位 ARM指令集的RISC体系架构,主频 400 MHz,最高可达到533 MHz[21。扩展有 256 MB的 NAND FLASH.64 MB的 SDRAM.2 MB的 NOR FLASH,掉电非易失 如图 2所示 ,超声波传感器 TRIG、ECHO分别接于GPG3和 GPG5。GPG3通 过 -个 脉 冲直 接 驱 动CD4049芯片,再由其后的CD4049则对频率信号调理,使超声波传感器产生谐振,GPG5接收信号。温度传感器 DS18B20D的DQ端连接 GPH10引脚 .测量环境的温度 。

囵图 2 搭建硬件平台Fig.2 Building hardware plarform3 系统软件设计3.1 驱动程序设计设备驱动程序是管理外围设备的-段代码,它负责传送数据、控制设备特定类型的物理设备的操作,包括开始和完成I/O操作,检测和处理出现的错误31。驱动针对的对象是存储器和外设,并将其分为字符设备、块设备、网络设备3个基础类。字符设备是指在 I/O传输过程中以字符为单位以串行顺序进行传输的设备。本驱动通过 GPIO以字节方式读写,属于字符设备驱动,该驱动的操作关系如图3所示。

1)完成驱动拈的加载和卸载,设备号的申请。资源的申请和释放;2)完成内核与硬件设备之间的数据交互;3)接收与返回应用层请求的数据;4)检测设备状态和处理设备故障等。

字符设备拈加载 l l拈卸载注册设备 Il创建类并在类中创建设备绑定设备与 file operations填充 file operations成员open Il read l ioctl Il closelI其他函数PIO初始化l 读操作 I1控制操作 l释放资源图 3 设备驱动操作关系Fig.3 Device driver operating relationship3.1.1 超声波设备驱动程序设计超声波传感器通过操作 TRIG引脚 GPG3的-段高电平脉冲,并维持 l0 s以上,即可在发射端产生 8个 40 kHz的脉冲,在 ECHO引脚 GPG5检测到- 个上升沿和-个下降沿的跳变。其字符驱动程序中除了拈到的加载与卸载外,最重要的是填充文件操作fileoperations结构体成员.其中实现文件打开、读写、控制、偏移、关闭等操作 file-operations的结构体格式如下:static struct fileoperations ultrasonicfops f.owner THISMODULE,.open ultrasonic- open,.release : ultrasonic ClOSe。

Automation& Instrumentation 2013(3) .ioetl ultrasonieioct1。

;open函数申请中断资源,初始化 GPG3和GPG5,ioctl函数用 switch选择 GPG3输出高或低电平 ,read函数设置休眠函数 waitevent-inter。

ruptible等待被中断处理函数 interrupt-handler唤醒,之后用 copytouser把获得 GPG5的值返回给应用程序,close函数释放中断资源。

3.1.2 温度设备驱动程序DS18B20是 DALLAS公司推出数字化温度传感器,采用单总线协议,无需其他外部元件,直接将环境温度转化成数字信号。以数字方式串行输出,通 过 GPH10引脚 高低 电平 实 现数 据 的读 写 。

DS18B20的初始化 、写字节 、读字节与引脚状态流程如图 4所示。为了实现温度的控制操作 ,驱动程序中在 read函数中初始化 dsl8b20,写字节 0xcc和 0x44,写字节 0xcc和 0xbe,读字节 ,把 LSB和MSB 中存 储 的 数 据 存 放 到 buf数 组 中 。用copyto-user返回给应用程序。

GPH10为outputGPH100udelay(1)byte>>1GPHlO1GPH10为inputudelay(60)(a)初始化 (b)写字节 (e)读字节图 4 DS18B20操作流程图Fig.4 DS1 8B20 operation flow chart3.2 应用程序设计- 个软件系统由应用程序、库、linux内核、驱动自动化s仪表 2013(3)程序组成 。应用程序通过系统调用接口open,read等函数访问设备文件 ;glibc等其他库根据 open等函数传人的参数执行swi”指令 ,从而引起 CPU异厨入内核,实现了由用户态进入内核态,内核根据这些参数找到相应的驱动程序,返回-个文件句柄给库,再返回给应用程序;应用程序通过 read等系统调用函数通过驱动程序与底层硬件交互。在本程序操作流程如图5所示。

1r打开超声波设备文件 打开温度设备文件申请中断 初始化dsl8b20触发信号 写命令等待上升沿中断 读数据getimeofday(初时间。NULL) copytouser等待下降沿中断 数据处理getimeofday(终时间.NULL) 计算温度 tmp计算时间 utimell 数据处理I 显示距离l图 5 程 序 运行 流 程 图Fig.5 Pr0gram flow chart用open函数打开超声波设备文件,ioctl(超声波设备,高/低电平命令,GPG3)函数控制 GPG3输出的高低电平,read(超声波设备,&value,4)-直等待 GPG5高电平并读取 GPG5的值。当出现低电平向高 电平 跳 变 时 启 动 getimeofday (开 始 时 问 ,NULL)记录出现高电平时的时间.再用 read(超声波设备,&value,4)等待 GPG5低电平,当出现高电平向低电平跳变时便启动 getimeofday(结束时间,NULL)记录出现低电平时的时问。由结束时间和开始时间得出超声波在空气中传播的时间。其获取时问的主要代码如下:stmct timeval start,end;ioctl(ULTRASONICfd,IOCTLLOW,GPG3);usleep(1o);ioctl(ULTRASONIC fd,IOCTL HIGH,GPG3):囝 usleep(15);ioctl(ULTRASONICfd,IOCTLLOW,GPG3);while(1)read(ULTRASONICfd,&value,sizeof(int));if(value1、break;lgetimeofday(&start,NULL);while(1)read(ULTRASONICfd,&value,sizeof(int));if(value:O)break;)getimeofday(&end,NULL);timeuse(1000000"(end.tvsec- start.tvsec)(end.tv usec -start.tv usec));用 open函数打开温度设备文件,read(温度设备,buf,2)读取驱动程序中高低数组中的温度,经过数据处理得到当时环境温度。由获取的时间和温度通过数据处理而得到所测量的距离。

3.3 驱动拈加载与卸载拈的加载方式有静态和动态加载两种,此处采用动态加载方式 ,内核为 linux-2.6.32,交叉编译器 arm-linux-gcc4.4.3,将编译好的ultrasonic.ko和temperatire.ko用 insmod加载进 内核 。在/dev目录下生成两个文件设备节点∩用 rmmod卸载驱动模块。在启动脚本文件 rcS中添加加载拈和执行相应的程序。

测量的数据.测量数据如表 1所示.实际距离是用钢质卷尺测试的。从表 中可以看出误差没有随测量距离增加而增大,由于电路延迟及整形电压的起伏,导致测量距离比实际要大-点,除了极个别数据出现负偏差以外。

表 1 测量结果Tab.1 Measurment results5 结语本文实现了 ARM-Linux下的驱动程序和应用程序的设计,以HC-SR04和 DS18B20为例,实现超声波非接触测距的功能,为提高检测精度采用了温度补偿的方法。该系统已经成功应用于移动机器人避障系统中,且稳定性良好。希望此方案能给其他同类系统的设计提供有益的参考。

正在加载...请等待或刷新页面...
发表评论
验证码 验证码加载失败