HC-SR04超声波模块使用记录

HC-SR04超声波模块使用记录

具体使用方法见HC-SR04使用手册,本文重点记录该模块使用中的一些问题,和相应的解决方式。

轮询测量方式

以下描述都是针对用中断方式触发,延时等待Echo高电平,如果超出最大距离,跳出等待循环结束的处理方式。

下面示波器的显示:

  • 通道2:2号超声波的Echo引脚
  • 通道3:1号超声波的Echo引脚
  • 通道4:2号超声波的Trig引脚

一、模块使用中的问题

  1. 在测量过程中,如果测量距离超过量程,程序中可以测得距离为2400cm左右(该距离值并不准确),通过示波器可以看出Echo高电平的持续时间为140ms左右。如下图:

    在这里插入图片描述

  2. 这里的问题表述是基于设定最大距离为100cm,模块对房顶的距离为190cm左右。

    • 如果两个超声波模块朝同一个方向测量,相互之间测量是有干扰的。两个模块之间同时朝一个方向,后面一个测量的模块会明显比前一个模块之间的值小一点。串口显示:1号超声波的距离为99cm,2号超声波的距离为85cm左右。

      下面示波器显示的Echo回响信号的时间,显然是受到的相互的干扰。如果两个信号之间没有干扰,理论上两个超声波Echo(通道3、通道2)高电平的持续时间都应为12ms左右。但是两个持续时间明显没有12ms。但两个实际的持续时间之和为12ms左右。(推测:在1号超声波测量达到极限距离100cm后,跳出等待,开始下发2号超声波的触发信号,超声波2开始发出脉冲信号,1号超声波接收到了2号超声波发出的脉冲信号,所以Echo被拉低了。等到2号超声波在测量过程中恰好收到了,1号超声波发出的脉冲信号碰到房顶反射回来的脉冲信号,故而被拉低了。因此两个测量持续时间之和为12ms)

      在这里插入图片描述

    • 下面描述的是两个超声波也都朝向天花板但2号超声波上边几厘米的位置被遮挡的情况

      推测:二号超声波属于正常测距,但2号超声波的部分脉冲信号被1号超声波的接收端接收到了因此被拉低了

      在这里插入图片描述

    • 下面描述的是两个超声波都朝向天花板,但1号超声波上边几厘米被遮挡的情况

      1号超声波正常测距,因而一号超声波的回响信号也已经结束,此时开启2号超声波测距,不会受到1号的影响因而Echo高电平的持续时间为12ms左右。

      在这里插入图片描述

    上面三种情况的描述,基本可以证明推测的正确性。因此,我们可以得到一个明确的结论:两个超声波模块不能朝相同的方向测距。

  3. 超声波探头和被测面之间的夹角可能会对测量距离产生干扰。

二、应对方法

  1. 不使用超时跳出等待的方式,完全等待回响的高电平信号结束后才开启下一个超声波模块的测量。

    优点:不存在回波信号的干扰问题。

    缺点:如果周围比较空旷(超出量程,单个周期约为140ms)或需要同时处理多个超声波模块时,测量周期会很长,导致无法快速响应。

  2. 以该超声波模块的最大测量量程为最大测量距离,超出该距离则跳出(假设测量最大距离为5m,对应的时间约为30ms)

    优点:基本不存在回波干扰问题。

    缺点:如果需要设定的最大距离小于模块的最大量程,测量周期还是偏长。

    该情况可以具有良好的适用性,可以满足大多数发布频率的需求(假设有6个超声波,发布也可以达到5hz)

  3. 直接设定需要的最大测量距离,超过该设定值则跳出(假设设定值为255cm,对应的时间为15ms)

    优点:可以明显提高测量周期

    缺点:可能有回波干扰问题

    该情况要注意一点,模块要尽量大角度朝不同的方向,防止回波信号对其他模块的测量产生干扰。

三、注意

在编程时一定要注意:如果使用多个超声波模块测量,发送触发信号之间一定要保证一定的时间间隔,该间隔一定要保证当前超声波测量过程进入了中断函数即Echo引脚变为了高电平。从示波器实测从触发信号发出到Echo引脚产生高电平的时间约为470us左右。因此两个超声波信号的触发信号之间要至少保证有470us的延时时间。

在这里插入图片描述

分时测量

通过设定时间片,记录系统运行时间,通过设定时间戳来通过触发标志计算时间进而算出距离

优点:理论上可以支持无限多个模块同时测量,且测量周期和一个的测量周期一致。

缺点:受限于模块之间的朝向,回波干扰等的因素的影响,测量结果有一定的失真。

利用输入捕获测量

该测量方式充分利用了定时器外设与中断的特性,类似于分时测量的效果。

优点:理论上可以支持无限多个模块同时测量,且测量周期和一个的测量周期一致。

利用输入捕获测量

该测量方式充分利用了定时器外设与中断的特性,类似于分时测量的效果。

优点:理论上可以支持无限多个模块同时测量,且测量周期和一个的测量周期一致。

缺点:受限于模块之间的朝向,回波干扰等的因素的影响,测量结果有一定的失真。只有特定的输入捕获引脚才能实现该功能。

发布了48 篇原创文章 · 获赞 78 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/xiaoyuanwuhui/article/details/100782685