news 2026/9/5 9:11:59

超声波传感器实验:从原理到测距实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
超声波传感器实验:从原理到测距实战

1. 引言

超声波传感器是嵌入式开发和机器人项目中非常常见的一种测距传感器。它通过发射超声波并接收回波来测量与障碍物之间的距离,具有成本低、精度较高、不受光线和颜色影响等优点,广泛应用于避障小车、倒车雷达、液位检测等场景。

本篇文章将带你从超声波测距的基本原理出发,结合硬件接线和代码实现,完成一个完整的超声波测距实验,并给出常见问题的排查思路。

2. 超声波测距原理

超声波传感器(以 HC-SR04 为例)的核心工作原理是发射-回波时间差法

其工作流程如下:

  1. 控制端向传感器的 Trig(触发)引脚发送一个持续 10µs 以上的高电平脉冲。
  2. 传感器内部电路发射一串 40kHz 的超声波脉冲,同时将 Echo(回波)引脚置为高电平。
  3. 超声波遇到障碍物后反射回来,被传感器接收。
  4. 传感器将 Echo 引脚拉低,Echo 高电平持续的时间即为超声波往返的总时间 t。
  5. 根据声速 v(空气中约为 340m/s)计算距离:距离 = v × t / 2(除以 2 是因为超声波走了往返两趟)。

注意:声速会随温度变化,常温下近似取 340m/s 即可满足大多数实验需求。

3. 硬件系统框图

整个超声波测距实验的硬件系统由主控模块、传感模块和电源模块三部分组成,其整体结构如下图所示:

Trig 触发信号

Echo 回波信号

串口输出

电源模块
5V / GND

主控模块
Arduino Uno

传感模块
HC-SR04

上位机
串口监视器

各部分的作用如下:

  • 主控模块(Arduino Uno):负责产生触发脉冲、接收回波信号并计算距离,是整个系统的控制核心。
  • 传感模块(HC-SR04):负责发射和接收超声波,将往返时间转换为 Echo 引脚上的高电平持续时间。
  • 电源模块:为传感器提供稳定的 5V 供电,保证测量过程可靠运行。
  • 上位机(串口监视器):接收主控模块发送的距离数据,用于实时观察测量结果。

系统工作时,主控模块向传感器发送触发信号,传感器返回回波信号,主控模块据此计算出距离并通过串口输出到上位机显示,形成完整的测距闭环。

4. 实验代码实现

下面以 Arduino 为例,编写一个简单的超声波测距程序。程序每隔 500ms 测量一次距离,并将结果输出到串口监视器。

// 定义引脚constinttrigPin=9;constintechoPin=10;voidsetup(){Serial.begin(9600);pinMode(trigPin,OUTPUT);pinMode(echoPin,INPUT);}voidloop(){// 清空 Trig 引脚digitalWrite(trigPin,LOW);delayMicroseconds(2);// 发送 10µs 的高电平触发脉冲digitalWrite(trigPin,HIGH);delayMicroseconds(10);digitalWrite(trigPin,LOW);// 读取 Echo 引脚高电平持续时间(单位:微秒)longduration=pulseIn(echoPin,HIGH);// 计算距离(单位:厘米)floatdistance=duration*0.034/2;// 输出到串口Serial.print("Distance: ");Serial.print(distance);Serial.println(" cm");delay(500);}

代码说明:

  • pulseIn(echoPin, HIGH)会阻塞等待 Echo 引脚变为高电平,并返回高电平持续的时间(微秒)。
  • 距离计算公式中,0.034是声速 340m/s 换算成 cm/µs 后的值(34000 cm/s ÷ 1000000 µs/s = 0.034 cm/µs)。
  • 除以 2 是因为超声波往返了两次距离。

5. 实验现象与结果分析

将代码烧录到 Arduino 后,打开串口监视器(波特率 9600),可以看到类似如下的输出:

Distance: 12.34 cm Distance: 12.40 cm Distance: 12.28 cm

当用手或书本在传感器前方来回移动时,串口输出的距离值会随之变化,说明测距功能正常。

5.1 测量误差分析

  • 盲区问题:HC-SR04 存在约 2cm 的测量盲区,距离过近时读数不稳定。
  • 声速受温度影响:温度升高时声速增大,若仍按 340m/s 计算会产生误差。
  • 反射面影响:柔软表面(如布料)会吸收超声波,导致回波减弱甚至丢失。

6. 常见问题与排查

问题现象可能原因解决方法
串口无输出接线错误或代码未烧录成功检查 VCC/GND 接线,重新烧录
距离一直为 0Trig 引脚未正确触发检查触发脉冲宽度是否 ≥10µs
距离读数跳变很大传感器前方有干扰或反射面不平整增加测量取平均,或调整安装角度
近距离测不到超出传感器盲区保持距离 ≥2cm

7. 扩展与进阶

掌握了基础测距后,可以尝试以下进阶玩法:

  • 避障小车:将超声波传感器安装在舵机上,扫描前方障碍物并控制小车转向。
  • 多传感器融合:结合红外传感器或摄像头,提高环境感知的鲁棒性。
  • 温度补偿:使用温度传感器读取环境温度,动态修正声速,提高精度。
  • 液位检测:将传感器朝下安装,测量容器内液面高度。

8. 总结

本文从超声波测距原理出发,完成了 HC-SR04 传感器的硬件接线、Arduino 代码编写和实验现象分析,并整理了常见问题的排查方法。超声波传感器虽然原理简单,但在实际项目中非常实用,是入门嵌入式测距实验的绝佳选择。

希望这篇实验教程对你有所帮助,动手试一试吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 9:11:41

Linux显卡驱动安装全解析:从原理到实践,告别黑屏与版本冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 9:11:27

基于大模型的电商商品资料一致性校验:从规则拆解到落地实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 9:06:33

AI重绘技术如何解决2D游戏素材边缘模糊与锯齿问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 9:06:31

告别传统供电模式!建筑空间直流照明系统优势全解析

绿色建筑、零碳建筑已经成为建筑行业的主流发展方向。建筑照明作为刚需用电系统,想要实现节能降碳,不能只依靠更换节能光源,供电配电体系的革新才是突破口。直流照明系统区别于我们沿用多年的交流照明配电体系,从配电端重构照明供…

作者头像 李华
网站建设 2026/9/5 9:03:37

高性能电机控制MCU选型对比:精度、功耗与实时性如何兼得?

在工业自动化、机器人关节和新能源汽车电驱等应用场景中,电机控制系统的性能边界正在被不断推高。位置反馈精度要求从角度级迈向角秒级,电流环响应时间从百微秒级压缩至微秒级,系统功耗则需要在算力倍增的前提下持续优化。这些相互制约的指标…

作者头像 李华
网站建设 2026/9/5 9:02:31

大模型 Agent 化改造实践:从工具调用到自动化运维

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华