跳到主要内容

RCWL-9610超声波测距

一、本例程实现功能

通过 US-015 或 RCWL-9610 超声波测距传感器模块测量障碍物离传感器的距离,通过 print() 函数在电脑串口调试终端打印输出距离(单位:毫米)。

US-015 已停产,可用 RCWL-9610 或其他品牌的替代,只要原理相同即可。

二、超声波测距模块介绍以及原理

**模块介绍:**US-015是目前市场上分辨率高,重复测量一致性较好的超声波测距模块。US-015的分辨率可达1mm,测距精度高;重复测量一致性好,测距稳定可靠。US-015超声波测距模块可实现2cm~4m的非接触测距功能,供电电压为5V,工作电流为2.2mA。US-015是US-020模块的升级版本,和US-020模块完全兼容。

**测距原理:**测距时,超声波传感器 会发出8个40KHZ的超声波脉冲 ,然后Core会自动计算脉冲的回波时间,然后结合声音在空气介质中的速度(15℃ 340米/秒)即可计算出距离。

三、接线图

layout

四、材料清单

名称推荐购买链接(或者您可以自己制作)模块/芯片硬件资料下载
US-015传感器模块US-015传感器模块购买链接下载地址
声明:这里推荐的购买链接仅供参考,您完全可以去其他商家或渠道购买,只要功能相似即可,如果需要更低的成本建议自己开发硬件模块或定制。

product1

product2

五、完整代码

--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--配置超声波传感器开始工作,固定占用Core的D4,D5引脚,每隔100ms左右可输出一个测量结果
LIB_US015Config()
--开始大循环
while(GC(1) == true)
do
--每隔200ms查询一次传感器是否出数
LIB_DelayMs(200)
flag, distance = LIB_US015GetDistance()
if flag == 1 then
--打印测量距离(mm)
print(string.format("distance:%dmm", distance))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

六、代码运行结果

当传感器离墙面40cm左右时,电脑串口调试终端上显示的距离值(mm)内容如下图:

result1

result2

六、影响测距精确度的因素

  1. 传输介质

    最理想的情况是在干燥无风的空气介质中测量,如果空气潮湿或不均匀会对测量结果有一定的影响

  2. 被测物体平整度

    被测的物体如果表面越平整,测量结果就越准确且稳定

  3. 环境温度

    当环境温度发生变化时,声波的传输速度也会相应的发生变化,所以会导致测量准确性发生一点变化。下图是温度和声波速度的关系(V=331+0.6xT):

    sound_v

注意:Core中计算距离所用的声波速度为15℃,340m/s的参数,所以当环境温度不同于15℃时测量的距离和实际距离会发生一点变化。如果您的系统支持测量环境温度的话,就可以按照上面的公式计算出当前环境温度下的声波速度和标准340m/s的比例值,最后用这个比例值简单的修正一下Core输出的距离值即可。