杨秀增+杨仁桓
摘 要: 为了提高超声波的测量精度,利用FPGA技术设计一款高精度超声波测距仪。利用Quartus Ⅱ软件在一片高密度的可编程逻辑门列阵(FPGA)上,设计基于SoPC的硬件系统平台,并利用Nios Ⅱ EDS开发软件开发测量仪的软件系统。利用FPGA内部的硬件资源设计高速度的超声波控制器,采用温度传感器DS18B20测量环境温度,并利用温度修正超声波传播速度。测试表明,利用该方案设计的超声波测距仪具有较高的距离测量精度,有一定的实用推广价值。
关键词: 超声波; 非接觸式测距; 编程逻辑门列阵; Nios Ⅱ; DS18B20
中图分类号: TN919?34; TH85 文献标识码: A 文章编号: 1004?373X(2017)01?0137?03
Abstract: In order to improve the measurement accuracy, a high?precision ultrasonic range finder was designed based on field programmable gate array (FPGA) technology. The hardware system platform based on SoPC was designed on a high?density FPGA by using Quartus Ⅱ software. The Nios Ⅱ EDS development software is used to develop the software system of the range finder. The hardware resource inside FPGA is adopted to design the high?speed ultrasonic controller. The temperature sensor DS18B20 is employed to measure the environment temperature. The temperature is used to correct the ultrasonic propagation velocity. The test results show that the ultrasonic range finder has high range measuring precision, and a certain practical promotion value.
Keywords: ultrasonic; non?contact range finding; FPGA; Nios Ⅱ; DS18B20
0 引 言
超声波测距仪是利用超声波测量距离的一种非接触式距离测量工具[1?2]。因超声波具有定向性好、使用方便、成本低廉、抗干扰能力强等优点,所以超声波测距仪在工业测量、车辆避障[1?4]、安全预警、液位测量[3?4]、机械内部损伤检[3]、车辆自动导航[4]以及机器人等领域得到广泛的应用[1?2]。然而,目前大多数超声波测距仪一般采用MCS?51单片机[5]作为控制器,其测量精度受到定时器的时钟频率的限制[3?5],难以令人满意[1?5]。
针对以上情况,本文利用大规模的FPGA[6?8]采用软硬件协同设计方法,自定义用户IP核技术和温度补偿技术,设计一套基于SoPC[9]的嵌入式高精度超声波距离测量系统。本测试系统具有可靠性高、集成度高、响应速度快、精度高和成本低廉等特点。
1 硬件系统设计
在硬件系统上,本测距仪采用一片高密度的可编程逻辑门列阵(FPGA)作为硬件设计平台,其系统设计框图如图1所示,主要由Nios Ⅱ处理器、Avalon?MM总线、JTAG控制器、UART控制器、EPCS控制器、超声波控制器、LCD控制器、EPCS4存储器、SDRAM控制器、SDRAM存储器、LCD显示器、通用I/O口及HC?SR04超声波收发模块组成。为了实现复杂的控制,在可编程逻辑门列阵(FPGA)中内嵌了一个32位的Nios Ⅱ处理器。Nios Ⅱ处理器是Altera公司提供的32位软核处理器。在系统设计时,设计者根据项目的要求,把Nios Ⅱ软核CPU免费地内嵌在Altera公司生产的FPGA中。SDRAM控制器控制着外围的SDRAM存储器芯片,用于存放数据。JTAG UART控制器能实现程序的下载和在线调试功能;EPSC控制器控制着EPSC存储芯片,用于存储FPGA配制文件;LCD控制器控制着LCD显示器用于显示测得的数据。超声波控制器是根据外部的超声波收发模块的电气特性而设计的用户自定义控制器,其输出引脚TRIG和ECHO与外部的超声波收发模块相连,控制超声波收发模块进行测距。温度对超声波的传播速度影响较大,本系统设计温度补偿电路来提高测量精度。本系统通过PIO与DS18B20数字温度传感器相连。
2 硬件系统设计
2.1 超声波控制器设计
超声波控制器是本系统的核心模块,其设计框图如图2所示,主要由接口单元电路、寄存器组、倍频器、计数器和状态机组成。接口单元电路起着连接Avalon?MM总线和超声波控制器的作用。因为在接口单元电路内部有地址译码器,所以Nios Ⅱ可以通过地址译码器访问控制器中的所有寄存器。倍频器的作用是把50 MHz的系统时钟倍频到100 MHz,从而提高系统的测量精度。状态机控制中各个模块的协调工作通过产生各种时序信号实现。TRIG是超声波收发模块的触发信号;ECHO是超声波反射波接收判断输入信号;ST是计数器启动信号,高电平计数器开始计数;CLR是计数器清零信号,CLR为高电平时对计数器的值清零;H是计数器值,保存控制信号, H为高电平时,计数器的当前值被保存在计数器寄存器中。在超声波控制器中,还定义了三个寄存器,这三个寄存器定义和地址分配情况如表1所示。
2.2 状态机模块设计
状态机模块是超声波控制器的关键模块,其作用是产生各种控制时序。图3为状态机的状态转换图,设有空闲、启动、计数、数据保存和计数器清零五个状态。在加电时,状态机处于空闲状态,一旦Nios Ⅱ软核CPU向控制寄存器写入启动指令时,状态机进入启动状态。在启动状态中,状态机一方面对启动寄存器进行清零操作,另一方面,产生超声波测距启动信号TRIG,启动超声波测距模块产生超声波,这些任务完成之后,状态机进入计数状态。在计数状态中,计数器对100 MHz时钟进行计数,当超声波收发模块收到被障碍物反射回来的超声波时,ECHO变为低电平,计数器停止计数,状态机进入数据保存状态。在数据保存状态中,计数数据被保存在计数寄存器中。数据被保存之后,状态机进入计数器数据清零状态,这时计数器中的值被清零,为下次计数做好准备。
2.3 硬件平台的设计
超声波测距仪的SoPC硬件设计采用的是Altera公司的SoPC Builder开发工具。SoPC Builder是一个功能强大的系统开发工具,嵌入式系统设计师可以利用此工具非常轻松地设计一个基于Nios Ⅱ处理器的片上系统。在SoPC Builder的图形用户界面中,设计者可以把SoPC Builder库中的功能模块添加到系统中,除此之外,SoPC Builder还允许设计者把用户自定义的逻辑单元添加到SoPC Builder库中。利用SoPC Builder开发工具定义的硬件系统见表2,其中,ultrasonc是超声波控制器,是用户自定义的逻辑控制单元。
2.4 温度补偿电路的设计
超声波的传播速度极易受到温度的影响。超声波在常温下的传播速度大约为340 m/s,但当温度发生变化时,超声波的传播速度会发生变化,例如,当温度每升高1 ℃时,超声波的传播速度[10]会增加0.6 m/s,因此,在利用超声波测量距离时,必需考虑温度对超声波传播速度的影响。
3 系统程序的设计
为了让本测试仪正常工作,还需要设计本系统的控制程序。系统程序采用Altera公司的Nios Ⅱ EDS 8.0集成开发环境对系统程序进行开发。图4为本系统程序的算法流程图。程序启动后,首先Nios Ⅱ主程序对系统的有关设备进行初始化操作,例如,LCD液晶屏初始化、温度传感器DS18B20初始化和串口初始化等。
系统初始化完成之后,Nios Ⅱ软核CPU读取DS18B20温度值,获取当前测试环境的温度值。完成温度读取之后,Nios Ⅱ向超聲波控制中的启动寄存器发送启动指令,启动超声波测距模块进行测距, Nios Ⅱ读取状态寄存器的值,了解控制器的工作状态。如果控制器正处于忙工作状态时,控制器延时一段时间,再次读取状态信息,如果了解到控制器正处于“闲”工作状态时,读取计数寄存器中的值,通过式(1)对超声波的传播速度进行修正,再利用修正过的传播速度计算测距并显示距离。
4 验测试结果
为了进一步评估本超声波测距仪的精度,根据以上的设计方法,利用一块高密度的FPGA和超声波收发模块设计了一台试验样机,并对该试验样机进行性能测试。FPGA采用Altera公司生产的EP1C6Q240C8,超声波收发模块采用HC?SR04。表3为试验样机的一组测试结果,从测试结果可以看出,利用本测试测量距离时,除了测量近距离的相对误差在2%之外,测量中长距离的相对误差保持在1%以内,因此,本测试仪具有较高的测量精度。
5 结 语
超声波测距仪是一种非接触式距离测量工具,具有很多优点。本文针对传统单片机超声波测距仪测量误差大的缺点,采用软硬件协同设计方法和自定义用户IP核技术,设计一套基于Nios Ⅱ的高精度超声波距离测量系统,本系统具有可靠性高、集成度高、响应速度快、精度高和成本低廉等优点,因此有一定的实用价值和推广价值。
参考文献
[1] 汪才杰,张大名,张米露.基于FPGA的高精度超声波测距系统的设计[J].微型机与应用,2012,31(17):25?27.
[2] 张攀峰,王玉萍,张健,等.带有温度补偿的超声波测距仪的设计[J].计算机测量与控制,2012,20(6):1717?1720.
[3] 张全禹,苏宝林,李怀亮,等.基于FPGA的超声波测距系统设计与实现[J].电子测试,2014(22):164?165.
[4] 赵海鸣,卜英勇,王纪婵.一种高精度超声波测距系统的研制[J].矿业研究与开发,2006,26(3):62?65.
[5] 张芬,董浩斌,焦彦斌.基于C8051F320单片机的超声波测距仪[J].仪表技术与传感器,2009(12):35?37.
[6] 樊红星,张小超,刘磊,等.基于FPGA的CMOS线阵图像传感器数据采集系统设计[J].现代电子技术,2015,38(14):129?132.
[7] 贾颖焘,顾赵宇,傅其详,等.基于FPGA和DSP的雷达信号脉冲压缩[J].现代电子技术,2015,38(17):13?16.
[8] 陈鹏名,卢振洋,刘嘉,等.基于FPGA的图像与模拟信号同步采集系统[J].现代电子技术,2015,38(19):79?82.
[9] 代俊锋,穆欣.基于SoPC的伺服控制器的方案研究[J].现代电子技术,2015,38(20):150?153.
[10] 赵小强,赵连玉.超声波测距系统中的温度补偿[J].组合机床与自动化加工技术,2008(12):65?68.