嵌入式开发板学习:超声波

  人们可以听到的声音的频率为2Hz~20KHz,20KHz以上的声音称为超声波 (Ultrasound)。超声波可以在气体、液体及固体中传播,其传播速度不同。

(图)超声波频率分布

  本次实验采用的超声波传感器如下:

超声波测距原理

  超声波测距原理:超声波是一种频率比较高的声音,指向性强.超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。

(图)超声波测距原理

  测距的公式表示为:L=C×T

式中    L 为测量的距离长度;
        C 为超声波在空气中的传播速度;
        T 为测量距离传播的时间差(T 为发射到接收时间数值的一半)。
已知超声波速度C=344m/s (20℃室温)

  超声波传播速度误差超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快,而空气的密度又与温度有着密切的关系。

(图)温度影响

  近似公式为:C=C0+0.607×T℃

式中:C0为零度时的声波速度332m/s;T为实际温度(℃)。

Arduino

ultrasonic.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int Echo = 40;  
int Trig = 42;

void setup()
{
Serial.begin(9600); // 初始化串口
//初始化超声波引脚
pinMode(Trig, OUTPUT); // 定义超声波输出脚
digitalWrite(Trig, LOW);
pinMode(Echo, INPUT); // 定义超声波输入脚
}

void loop()
{
float Fdistance, Distance ;

digitalWrite(Trig, HIGH); // 给触发脚高电平10μs,这里至少是10μs
delayMicroseconds(10);
digitalWrite(Trig, LOW); // 持续给触发脚低电

Fdistance = pulseIn(Echo, HIGH); // 读取高电平时间(单位:微秒)

Fdistance= Fdistance/58.14; //为什么除以58.14等于厘米, Y米=(X秒*344)/2
// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58
Distance = Fdistance;

Serial.print("Distance:"); //输出距离(单位:厘米)
Serial.print(Distance); //显示距离
Serial.println("cm"); //显示

delay(1000);
}

参考

超声波传感器测距方法详解
超声波测距原理与超声测距传感器知识简介

+