3.23 超声波测距

串口输出超声波模块和格挡物体之间的距离,单位为 cm

  • 超声波测距原理:
  1. 采用 trig 触发测距,给至少 10us 的高电平信号;
  2. 模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
  3. 有信号返回,通过 echo 输出高电平, 高电平持续的时间就是距离的 2 倍;
  4. 超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2
  • 测距程序核心代码 pulseIn(pin, value) 函数:读取一个引脚的脉冲(HIGH 或 LOW)。例如,如果 value 是 HIGH,pulseIn()会等待引脚变为 HIGH,开始计时,再等待引脚变 为 LOW 并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数 返回。此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从 10 微秒至 3 分钟。(1 秒=1000 毫秒=1000000 微秒),请注意单位为 us。
  • pin:你要进行脉冲计时的引脚号。
  • value:要读取的脉冲类型,HIGH 或 LOW。


讨论区

这个超声波模块在用的时候我有两个疑惑:1、让超声波探头对一个固定距离连续测量,读数有时会有很大的变化。2、对于某些距离的测量,输出结果是非常荒谬的,不知道你是否遇到过。我感觉超声波测距对被测量的物体也是有一定的要求的,不知道你是否同意。 — 沈金辉 2013/12/02 20:20
经过多次尝试,发现当接受声波的平面与发射器之间角度过小时,读数会出错,可能是未接收到反射的声波,系统直接给出了最长的计时。同理,当物体表面不利于反射声波时,应该也会出现同样的问题。(ps:第一次发讨论,不知道这样格式对不对。。。)—陶鑫 2014/12/17 21:30
浏览到这儿,真是巧啊,这学期刚好听了两位帅哥的课程,收获甚多。 — 高渊 2018/05/17 10:37
  • 3/3/23.txt
  • 最后更改: 2018/05/17 10:39
  • (外部编辑)