在智能小车的灵动避障中,在自动水龙头感应到你的手掌时,甚至在工厂的自动化生产线上,一种小巧而强大的设备正悄然工作——它就是HC-SR04超声波距离传感器。这款价格亲民、使用简便的测距模块,已成为创客、电子爱好者和工程师实现非接触式距离测量的首选。
超声波的奥秘:HC-SR04如何”看见”距离
HC-SR04的核心工作原理极其巧妙,它利用了声波在空气中传播的特性。当你按下智能手机的拍照键时,这个过程悄然发生:
t),被传感器内部电路精确捕捉到。t转化为一个易于使用的信号。它通过Echo引脚输出一个高电平脉冲,而这个脉冲的宽度(持续时间)正比于测量到的往返时间t。基于此,距离计算变得清晰:
距离 = (声速 × 时间t) / 2
关键点在于声速会随环境温度而变化。常温(约20°C)下声速为343米/秒。将时间t(单位秒)代入公式即可获得目标距离,公式中的除以2是因为t是超声波往返目标的总时间。掌握核心:HC-SR04关键参数与特性
动手实践:HC-SR04与Arduino的经典连接
将HC-SR04接入Arduino是学习测距的第一步:
代码解析:让Arduino读取距离数据
const int trigPin = 2; // 定义Trig引脚连接Arduino D2
const int echoPin = 3; // 定义Echo引脚连接Arduino D3
void setup() {
Serial.begin(9600); // 启动串口通信,用于在电脑串口监视器查看数据
pinMode(trigPin, OUTPUT); // 设置Trig为输出
pinMode(echoPin, INPUT); // 设置Echo为输入
}
void loop() {
// 发送10us高电平脉冲触发测距
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // 核心触发信号
digitalWrite(trigPin, LOW);
// 读取Echo高电平脉冲的持续时间(单位:微秒)
long duration = pulseIn(echoPin, HIGH);
// 计算距离:时间(微秒)转秒需除以1000000,声速343m/s,往返距离除以2
// 换算为厘米:34300 cm/s * (duration / 1000000 s) / 2 = duration * 0.0343 / 2
float distance_cm = duration * 0.0343 / 2;
// 在串口监视器显示距离
Serial.print("距离: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(100); // 控制读取频率
}
项目创意:释放HC-SR04的无限潜能
专家调试技巧:优化你的测量精度
Copyright © 南京凯基特电气有限公司 版权所有
苏ICP备12080292号-5
全国服务电话:025-66098387传真:025-87168200
公司地址:江苏省南京市江宁区科宁路777号申智滙谷9栋101