3.23 超声波测距
实验现象:
串口输出超声波模块和格挡物体之间的距离,单位为 cm
理论学习:
- 超声波测距原理:
- 采用 trig 触发测距,给至少 10us 的高电平信号;
- 模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
- 有信号返回,通过 echo 输出高电平, 高电平持续的时间就是距离的 2 倍;
- 超声波从发射到返回的时间.测试距离=(高电平时间*声速(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