目录
Ⅰ 简介
超声波是由机械振动产生的, 可在不同介质中以不同的速度传播, 具有定向性好、能量集中、传输过程中衰减较小、反射能力较强等优点。超声波传感器可广泛应用于非接触式检测方法,它不受光线、被测物颜色等影响, 对恶劣的工作环境具有一定的适应能力, 因此在水文液位测量、车辆自动导航、物体识别等领域有着广泛的应用。
HC-SR04超声波距离传感器的核心是两个超声波传感器。一个用作发射器,将电信号转换为40 KHz超声波脉冲。接收器监听发射的脉冲。如果接收到它们,它将产生一个输出脉冲,其宽度可用于确定脉冲传播的距离。
Ⅱ 工作原理
当持续时间至少为10 µS(10微秒)的脉冲施加到触发引脚时,一切就开始了。响应于此,传感器以40 KHz发射八个脉冲的声音脉冲。这种8脉冲模式使设备的“超声特征”变得独一无二,从而使接收器能够将发射模式与环境超声噪声区分开。
八个超声波脉冲通过空气传播,远离发射器。同时,回声引脚变为高电平,开始形成回声信号的开始。
如果这些脉冲没有被反射回来,则回波信号将在38毫秒(38毫秒)后超时并返回低电平。因此38 ms的脉冲表示在传感器范围内没有障碍物。
如果这些脉冲被反射回去,则在收到信号后,Echo引脚就会变低。这会产生一个脉冲,其宽度在150 µS至25 mS之间变化,具体取决于接收信号所花费时间。
最后将接收到的脉冲的宽度带入公式中计算转换成物体相距的距离长度。
Ⅲ 使用方法
-
电路原理图
-
超声波时序图
-
接线说明
以Arduino UNO R3为例,超声波传感器的VCC连接板上的5V引脚,GND连接板上的GND引脚,Trig发射引脚连接板上3号引脚,Echo接收引脚连接板上的2号引脚。(Trig和Echo引脚只需要连接数字信号引脚,并在代码前端修改定义对应的连接引脚即可)
Ⅳ 使用注意点
[1]要注意超声波测距传感器的量程,超出量程测量的结果都不准确。
[2]由于超声波测量一次的时间很短,测量一次很有可能出错,所以我们可以多测几次求平均值来进行消抖。
[3]此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则会影响模块的正常工作。
[4]测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响测量的结果。
详细代码:
/******************************************
* 作者:会电焊的ESP32
* 项目:用HC-SR04超声波传感器测量距离
* 难度:@
******************************************/
#define TrigPin 3 //超声波发射引脚
#define EchoPin 2 //超声波接收引脚
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);//发一个10ms的高脉冲去触发TrigPin
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
float distance_mm = pulseIn(EchoPin, HIGH) * 0.1724138; //单位mm
//float distance_cm = pulseIn(EchoPin, HIGH) / 58.0; //单位cm
Serial.println(String("Distance: ") + String(distance_mm) + String(" mm"));
//Serial.println(String("Distance: ") + String(distance_cm) + String(" cm"));
delay(1000);
}