实物照片
首先介绍什么是超声波:人耳可以听到的声音频率范围大致为 20Hz ~ 20,000Hz;那么频率超过20,000Hz的声波就称为超声波。
由实物图我们可以看到,左右两侧各有一个类似于喇叭的圆柱体,它们是超声波传感器,是HC-SR04模块的核心,其中一个是发射器,将输入的电信号转换成超声波脉冲发射出去,另一个则充当接收器,接受返回的超声波并产生一个相应的脉冲信号。
我们可以借助下面的代码简单地了解下 HC-SR04 模块的工作原理:
(接线方式:HC-SR04的VCC引脚接到Arduino的5V引脚,GND接GND,Trig引脚接11号引脚,Echo接12号)
int trigPin = 11; //Trig
int echoPin = 12; //Echo
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// The sensor is triggered by a HIGH pulse of 10 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the signal from the sensor: a HIGH pulse whose
// duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
duration = pulseIn(echoPin, HIGH);
// convert the time into a distance
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}
下图是测试过程中串口监视器的显示情况
下面以文字描述它的工作原理(按五个部分来分):
1、触发条件:持续时间>=10us的脉冲;
2、发射超声波:发射器发出40kHz的八个脉冲的超声波(主要是为了区别于环境超声噪音);
3、 接收回声:超声波遇到障碍物反射回来,形成一段低电平的数字信号(所以需要提前将接收引脚设置为高电平);若超出38毫秒则自动返回低电平,表示超声波在这38毫秒内无遇到阻碍(因此HC-SR04模块有一个探测极限值为4米);
4、数据处理:通过返回的低电平信号的宽度(持续时间),可以利用简单的路程-速度-时间关系来计算出超声波测距模块与障碍物之间的距离;
5、数据呈现:将计算的结果输出到串口监视器上;
3208eb5beb