超声波模块原理讲解

超声波模块长啥样?

4 个引脚

  • VCC 供电
  • GND 接地
  • Trig 触发(发命令)
  • Echo 回响(听反弹)

还有两个头:

  • 一个发波
  • 一个收波

注意事项:

建议测量周期大于60ms,否则发射信号将会影响回传信号;

不要带电连接,如需要带电连接,需要使GND先连接,否则会影响工作;

测距时,被测物体的面积不少于0.5平方米且尽量平整,否则影响测试结果。

超声波模块工作原理

一共 4 步

① 单片机给 Trig 一个短信号

相当于喊:"准备!发射!"

② 模块立刻发出 8 个超声波脉冲

"咻 ------" 飞出去了。

③ 波碰到障碍物 → 反弹回来

就像皮球撞墙弹回来。

④ 模块收到反弹波 → Echo 脚输出高电平

从发射 → 收到反弹,中间花了多少时间,就是距离!

声音在空气中速度:340 米 / 秒 = 34000 厘米 / 秒

公式:距离 (cm) = 时间 (秒) × 34000 ÷ 2

你代码里:

复制代码
UltraSoundInit();       // 初始化超声波
GetDistanceDelay();     // 测一次距离
distance_cm;           // 得到距离(厘米)

背后干的事:

  1. 给 Trig 发信号
  2. 发超声波
  3. 计时等 Echo 回来
  4. 用时间算出多少 cm
  5. 存到 distance_cm

你代码里:

复制代码
if(distance_cm < 10)  // 距离小于10厘米,认为有障碍物

就是靠这个判断的!


电平变化

① 一开始:全都低电平
  • Trig = 低电平(0)
  • Echo = 低电平(0)

② 单片机给 Trig 一个 10us 高电平

单片机做一件事:

  • 把 Trig 瞬间变成 高电平(1)
  • 保持 10 微秒
  • 再变回 低电平(0)

就像:按一下开关,马上松开。

此时:

  • Trig:0 → 1 → 0
  • Echo:还是 0

③ 模块收到 Trig 信号,立刻:
  • 发出 8 个超声波
  • 同时把 Echo 变成高电平(1)

现在:

  • Trig:0
  • Echo:1

④ 超声波碰到东西反弹回来

模块一收到反弹波:

  • 立刻把 Echo 从 1 → 0

现在:

  • Trig:0
  • Echo:1 → 0
相关推荐
宇努力学习2 年前
013——超声波模块驱动开发(基于I.MX6uLL与SR04)
linux·驱动开发·操作系统·嵌入式·超声波模块