APP下载

基于HC-SR04 模块的高精度超声测距系统

2023-09-17王永彬

科技与创新 2023年17期
关键词:高电平测距超声波

王永彬

(临沂科技职业学院,山东 临沂 276000)

在实际生产和生活中,经常需要对距离(位置)进行测量,以进行距离的直接提示,或者以距离为参量进行其他物理量的计算和控制,比如计算物体的速度。测量距离的方法有很多种,总体上看有直接测量法(如利用尺子测量)和间接测量法(如激光测距、红外线测距、超声波测距等)2 种。由于超声波波束定向指向性强,在介质中传播时能量损耗比较小[1],特别是在空气、水中传播能达到较远的距离,因而适合利用超声波的这一特性进行距离的测量。利用超声波测距的特点是测量过程迅速和方便,并且计算简单,测量精度高,因此被大量应用于工业场合,比如汽车的倒车雷达、移动机器人的位置确认等,都是超声波测距方式的典型应用。

1 超声波测距原理

超声波测距原理是利用超声波换能器的发射装置发出一定频率的超声波,超声波遇到障碍物时就会有反射波反射回来并被接收器接收,利用从发射到接收的往返时间差就可以进行距离测量,这与无线电雷达的测距原理很相似。具体实现过程是:超声波模块的发射器向要进行测距的特定方向发射超声波,在发射开始的瞬间同步开始计时,如果没有障碍物,超声波在空气中会向前自由传播,当途中碰到障碍物阻挡时则会立即被反射回来,当反射波到达接收器时就立即停止计时操作。根据经验值知道超声波在空气中的自由传播速度约为340 m/s,假设计时器记录的超声波发射和接收时间差为t(单位:s),这样就能计算出发射点与障碍物之间的距离S(单位:m),计算公式为S=340×t/2。此外,当测量精度要求较高时,还需要充分考虑到温度对超声波速度的影响,当温度为0 ℃时超声波速度是332 m/s,20 ℃时是344 m/s,30 ℃时是350 m/s,这样就可以根据环境温度进行超声波测距的温度修正。

2 超声波测距硬件电路设计

2.1 核心测距传感器

本系统采用市面上已成熟量产的HC-SR04 型集成超声波传感模块作为核心测距传感器。

模块总体功能介绍:该模块可提供2~450 cm 距离范围的非接触式测量功能,测度距离精确,精度高达3 mm,性能稳定,能与国外的SRF05、SRF02 等超声波测距模块相媲美。模块包括超声波发射器、接收器与控制电路,可广泛应用于距离测量、机器人避障、防盗报警装置等。

工作原理:①给超声波模块通电源。②给脉冲触发引脚(Trig)输入一个维持时间不短于20 μs 的高电平信号。③输入高电平触发信号后,模块会自动发射8个连续的40 kHz 频率的超声波信号,与此同时回波信号(Echo)端的电平同步发生正跳变,即由0 变为1,此时立即同步启动定时器开始计时。④当反射超声波被模块接收到时,回波信号端的电平会发生负跳变,即由1 变为0,此时接着立即停止定时器计数,定时器中保存的这个时间差即为超声波由发射到返回的总时长,它在数值上等于2 倍的被测距离与声速的比值。⑤由于声音在空气中的传播速度典型值为340 m/s,则可间接计算出所测的距离。测试距离=(高电平时间×声速)/2。其中,声速为340 m/s。

典型工作参数如下。

工作电压:DC 5 V。

静态电流:小于2 mA。

工作电流:15 mA。

工作频率:40 kHz。

高电平输出:5 V。

低电平输出:0 V。

感应角度:不大于15°。

探测距离:2~450 cm。

高精度:可达0.3 cm。

该模块是双面贴片封装,对外提供4 个引脚,分别是GND、Echo、Trig、+5 V。GND 为电源地,Echo为接收模块的回波信号输出引脚,Trig 为超声波发射模块的外部触发启动信号输入引脚,+5 V 是工作电源正极。

模块集成了一片单片机,当SR04 模块上的单片机的触发信号输入引脚收到大于10 μs 的启动脉冲后,会发出8 个频率为40 kHz 的脉冲信号,这个电脉冲信号由超声波模块换能器调制转换成超声波音频信号发出后,回波信号输出引脚同时会输出一个高电平。超声波遇到障碍物返回后,回响信号状态发生变化[2],从高电平变为低电平。因此可以根据这个回响信号的高电平维持时间宽度来计算距离,如图1 所示。

图1 超声波测距时序图

根据图1 中回响信号的脉冲宽度,可以获得距离参数。计算公式为:距离=回响信号高电平时间×声速(精度不高直接采用340 m/s)/2。

2.2 主控芯片

本系统采用AT89C4051 单片机作为主控芯片。它采用dip20 引脚的双列直插式封装,具有4K 的程序存储空间,128 字节内部RAM,2 个外中断源,2 个16位定时/计数器,1 个UART 串行口,16 个I/O 引脚,能完全满足控制要求,价格低,性价比高。

单片机P3.7 引脚接到超声波模块的触发信号输入引脚,P3.6 引脚接到回声信号输出引脚,将P1 口作为LCD1602 液晶模块的数据接口,P3.0 引脚作为R/W 读写控制,P3.1 引脚作为R/S 指令/数据选择控制[3]。由于某些使用场合对测距精度要求较高,需要进行测距的实时温度修正,因此可以使用一片Dalas 公司的DS18B20 单总线数字温度传感器进行环境温度的实时测量,这里用P3.3 作为单片机与DS18B20 的单总线接口,最后3 个芯片都需要连接上+5 V 电源和GND。

3 超声波测距系统的软件设计

首先是单片机和超声波模块的初始化,进行本次测距的准备工作。接着由单片机输出一个20 μs 的启动脉冲启动超声波模块的发射,此时模块的Echo 引脚同步输出高电平信号,同时单片机启动定时器开始计时和启动DS18B20 进行实时温度检测,然后程序不断检测查询超声回波信号引脚状态,当接收到回波信号时Echo 引脚变为低电平,单片机立即关闭定时,最后的定时时间t就是超声波经过2 倍被测距离所用的时间,因此实际距离S=(t×340/2)m。

当测量精度要求较高时,还需要充分考虑到温度的不同对于超声波速度的影响[4]。当温度为0 ℃时超声波速度是332 m/s,20 ℃时是344 m/s,30 ℃时是350 m/s,即实际声速v与环境温度Temp大致成线性比例关系。以温度0 ℃时的声速为基准,则实际声速v=(332+Temp×0.6)m/s,故经过温度修正后的实际距离为S=(t×(332+Temp×0.6)/2)m。而用于测距温度修正的温度检测可以利用DS18B20 温度传感芯片实现。

DS18B20 是美信公司的一款温度传感器,单片机可以通过1-Wire 协议与DS18B20 进行通信,最终将温度读出。1-Wire 总线的硬件接口很简单,只需要把DS18B20 的数据引脚和单片机的一个I/O 口接上就可以了。

DS18B20 通过编程,可以实现最高12 位的温度存储值。温度数据是2 个字节,读取数据的时候,先读取到的是低字节的低位。它所表示的温度值中,有小数和整数两部分。把小数和整数部分分离,在合适的位置点上小数点即可。本设计的程序中,保留一位小数位。

经过温度修正后最后得到的测量距离结果,可以通过单片机P1 数据口和P3.0/P3.1 控制端口,将其在液晶模块上实时显示出来,第一行显示环境温度,第二行显示测量的实际距离。

4 超声波测距的精度的进一步优化

在软件实现代码中,检测回响信号脉冲宽度时可以用软件查询的方式,即用代码检测与Echo 引脚连接的单片机P3.6 引脚的电平变化来启动和关闭定时器,从而实现对时间的测量。在要求不高的测量时,这样做完全可以得到让人满意的结果。但如果系统功能扩展得比较复杂(比如进行实时温度补偿、进行蜂鸣声音提示、与上位机数据通信),则系统中还需要开启其他多个中断,而某些中断函数还可能执行较长的时间时,就可能发生这样一种情况:当实际的回响信号变化时,系统正在执行某个耗时较长的中断函数,那么主程序中的检测就只能等待此中断函数执行完后才能继续,于是就可能造成程序检测到回响信号变化的时刻比实际发生的时刻要晚一些,从而会使定时器测得的脉冲宽度值发生较大偏差,进而使计算出的距离发生较大的偏差[5]。

针对此问题,可以通过灵活运用定时器T0 或T1的门控功能来解决。这里利用T0 的门控功能实现高精度的超声波测距。具体实现方法:启用T0 门控功能(TMOD 中相应的GATE 位置1),这时外部中断引脚INT0(P3.2)将起到实际控制T0 启停的作用,即INT0 为1 时T0 启动计数,INT0 为0 时T0 停止计数,这样就不需要编写代码来检测超声波回声信号,而是可以将回声信号连接到INT0 即P3.2 引脚上,让它自动控制T0 启停,从而避免了软件检测时可能产生的偏差,测量精度将大大提高。

5 运行测试结果

将超声波模块通过排线与单片机主控板连接,将液晶模块焊接到与主控板的液晶接口,确认无误后上电,此时液晶模块会显示Test 字样。将超声波模块对准一个不小于0.5 m2的障碍物,按开始测距按钮,超声波发射模块被启动。当发射的超声波被反射回来由接收器接收到时,单片机将测得的距离数据进行计算处理并显示在液晶模块上。例如第一次测量后显示距离为0.205 m,经实际用尺子测量得到的数据为0.200 m,误差为0.5 cm;第二次测量后显示距离为0.396 m,实际用测量距离为0.400 m,误差为0.4 cm;第三次测量后显示距离为0.603 m,实际测量距离为0.600 m,误差为0.3 cm,误差范围在0.3~0.5 cm,测试较为准确,特别是被测试物体表面平整,并且模块入射角度越垂直于被测物体表面时效果更好。

6 结束语

本设计基于单片机和超声波集成传感模块实现对距离的非接触式自动测量,利用量产的成品化的高精度超声波传感器,使系统设计简单高效,大大方便与单片机接口。利用单片机灵活强大的实时控制和数据运算功能,实现测量点与障碍物之间距离的实时测量和修正功能,并在液晶模块上直观显示出来测距结果,还可以根据测量的不同距离范围进行不同频率的声音报警。同时探讨了如何利用温度测量模块进行测距结果的实时温度修正,以及利用单片机定时器的门控定时功能提高测量精度的方法,最大限度地提高测量的准确度。

本系统设计简易,虽然不能测量过远的距离(5 m之外),但规模小,外围电路简单,调试方便,成本低,器件更换维护容易,灵活性高,与被测量物体不需要直接接触,可以广泛应用于多种场合,如汽车倒车防撞提醒、智慧物流运动控制、建筑工地作业安全提示、公共安防中的接近检测、停车场安全检测、工农业现场中的液位测量、工件运动位置测量等,它的推广应用将大大便利人们的生活和提高工农业生产自动化效率,产生良好的经济社会效益。

猜你喜欢

高电平测距超声波
一种基于FPGA的PWM防错输出控制电路
类星体的精准测距
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
基于Niosll高精度超声波流量计的研究
浅谈超声波测距
DM 50KW中波广播发射机欠推动故障分析
PDM 1kW中波广播发射机保护电路分析
蝙蝠的超声波
超声波流量计的研究
超声波流量计在兰干渠上的应用