超声波测距模块及HCSR04简单介绍
超声波测距模块(Ultrasonic Distance Sensor)是用来测量距离的一种产品。
超声波测距模块有好多种类型,在Arduino实验项目中,普遍使用HC-SR04。HC-SR04广泛应用于机器人避障、液位检测、智能家居等领域。
HC-SR04基本参数:
- 工作电压:5V DC(兼容3.3V逻辑电平)
- 测距范围:2cm ~ 400cm(部分新版HC-SR04测距可达600cm)
- 测距精度:3mm(最高可达0.1cm±1%)
- 工作频率:40kHz
- 探测角度:≤15度(圆锥形)
测距原理
HCSR04测量距离的大概步骤如下:
- 触发信号:通过控制器给“Trig引脚”发送一个最少10μs的TTL高电平,触发超声波测距模块开始测距。
- 模块通过发射端(标注T-transmission)发出8个40kHz的脉冲信号(超声波)。
- 信号传播:超声波信号在空气中传播,遇到障碍物后反射回来。
- 信号接收:接收端(标注R-reception)捕获反射回来的信号,模块进行处理。
- 回响信号:模块处理的结果变换为,高电平脉冲,其脉冲宽度是超声波信号发出到接收的时间,通过“Echo引脚”输出到控制器。
- 距离计算:通过脉冲宽度(传播时间),结合超声波在空气中的传播速度(在20°C大约为340m/s),使用公式 :S=V×t2S=\frac{{V}\times{t}}{2}S=2V×t,其中S 是距离,V 是声速,t 是时间。
补充说明:
- 超出距离:若距离>400cm,Echo可能输出固定66ms高电平;
- 测量周期:建议≥60ms,避免发射信号干扰回波。
- 物体要求:被测物体面积≥0.5平方米且表面平整,否则影响精度。
- 环境因素:工作温度大约-40~85℃,温度、湿度等会影响声速,需校准。
扩展说明
在数字信号处理和控制系统设计中,Trig和 Echo信号是非常重要的概念:
- Trig触发信号(Trigger Signal):,它通常通过发出一个电平信号,用于控制模块开始操作。
- Echo回响信号(Echo Signal):通常指的是接受模块操作后返回的信号
Arduino项目的使用
引脚定义及接线
- VCC:电源输入(5V)
- Trig:触发控制信号输入(连接到数字引脚,提供高电平脉冲,如D9)
- Echo:回响信号输出(连接到数字引脚,读取高电平脉冲,如D10)
- GND:接地
Arduino项目代码
const int trigPin = 9; // 触发引脚
const int echoPin = 10; // 回声引脚
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// 触发信号:通过Trig引脚发送10μs高电平触发脉冲信号,启动超声波发射
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 测量Echo引脚的高电平持续时间,即超声波往返时间(单位:微秒)
long duration = pulseIn(echoPin, HIGH);
// 计算距离(单位:厘米)
float distance = duration * 0.034 / 2; // 距离(cm)等于高电平持续时间*声速(340m/s → 0.034cm/μs),除以2表示单程距离
// 串口输出结果
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000); // 间隔1秒
}
补充说明
扩展应用
结合蜂鸣器或LED实现倒车雷达(距离越近警报越急促)
如需更复杂的项目(如LCD显示),可参考的I2C LCD1602扩展代码。
超声波测距模块和温度传感器搭配使用减少误差
超声波在不同温度下传播速度不同,所以温度会影响到测量精度,所以有时候会搭配温度传感器(如DS18B20)对现场温度进行测量,并通过软件计算实现波速的温度补偿,使测量误差降低。
将测量的速度数据与温度数据进行一阶拟合得出较为精确的值。
其他超声波测距模块:
parallax ping 超声波测距传感器 28015