打印
[牛人杂谈]

单片机超声波测距原理

[复制链接]
115|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单片机超声波测距是一种常见的非接触式距离测量方法,其原理基于超声波在空气中的传播特性。以下是详细的工作原理和实现步骤:
1. 基本原理
超声波特性:超声波是频率高于20kHz的声波,在空气中以约340m/s的速度传播(常温下)。

测距公式:通过测量超声波从发射到接收的时间差(Δt),计算距离 D:


v:超声波速度(受温度影响,需校准)。

除以2:因超声波往返目标物,时间差为双程距离。


2. 系统组成
单片机(如STM32、51单片机、Arduino):控制时序、计算距离。

超声波模块(如HC-SR04):

发射器:发出40kHz的超声波脉冲。

接收器:检测反射回的超声波。

控制电路:处理信号并输出时间差。

显示模块(可选):如LCD、数码管显示距离。



3. 工作流程
触发信号:

单片机发送一个至少10μs的高电平脉冲到Trig引脚,触发模块发射8个40kHz的超声波脉冲。

超声波发射与反射:

超声波在空气中传播,遇到障碍物后反射。

回波接收:

模块的Echo引脚输出高电平,持续时间为超声波往返时间。

单片机检测Echo高电平持续时间(可通过外部中断或定时器捕获)。

距离计算:

例如,测得
Δt=1ms:



4. 关键注意事项
温度补偿:声速随温度变化,修正公式:

v=331.4+0.6×T(T为摄氏温度)
测量范围:通常2cm~4m(HC-SR04),超出范围可能检测失败。

抗干扰:避免多个超声波模块同时工作,或添加消抖算法。

误差来源:

反射面角度(最好正对被测物)。

软质材料(如布料)可能吸收超声波。


使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2025-5-28 16:17 | 只看该作者
const int trigPin = 2;
const int echoPin = 3;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // 发送触发信号
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // 测量回波时间
  long duration = pulseIn(echoPin, HIGH);
  // 计算距离(cm)
  float distance = duration * 0.034 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(500);
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

2299

帖子

3

粉丝