Arduino开发板使用超声波传感器HC-SR04

HC-SR04超声波传感器简介

HC-SR04超声波传感器使用声纳来确定物体的距离,工作原理类似与蝙蝠。它提供出色的非接触范围检测,高精度和稳定的读数,以及易于使用的封装。

测量范围从2厘米到400厘米或1英寸到13英尺。它的工作过程不受太阳光或黑色材料的影响(虽然布料之类的声学软材料很难检测)。它配有超声波发射器和接收器模块。

主要特征

● 电源:+ 5V DC
● 静态电流:<2mA
● 工作电流:15mA
● 有效角度:<15°
● 测距:2厘米 - 400厘米/ 1英寸 - 13英尺
● 分辨率:0.3厘米
● 测量角度:30度
● 触发输入脉冲宽度:10uS
● 尺寸:45mm x 20mm x 15mm

工作过程

1.发射器(触发引脚)发送信号:一段高频声音。
2.当信号遇到一个物体时,它会被反射;
3.然后发射器(回声引脚)接收该信号。
Arduino开发板使用超声波传感器HC-SR04_第1张图片

传感器引脚图

Arduino开发板使用超声波传感器HC-SR04_第2张图片
● VCC:+ 5VDC
● Trig:触发(输入)
● Echo:回声(输出)
● GND:GND

所需的组件

● Arduino UNO开发板
● 超声波传感器(HC-SR04)
● 面包板
● 跳线

原理图

Arduino开发板使用超声波传感器HC-SR04_第3张图片
下表显示了两者之间的连接方式:

超声波传感器HC-SR04 Arduino开发板
VCC 5V
Trig Pin 11
Echo Pin 12
GND GND

代码

将以下代码上传到Arduino IDE。
首先,分别为Trig和echo引脚创建变量,命名为trigPin和echoPin。trig引脚连接到数字引脚11,echo引脚连接到数字引脚12。创建三个long类型的变量:duration、cm和inch。变量duration保存了信号发射和接收之间的时间。 变量cm将以厘米为单位保存距离,而变量inch将以英寸为单位保存距离。

int trigPin = 11; 
int echoPin = 12;
long duration, cm, inches;

在setup()中,我们以波特率9600初始化串口,并将trig引脚设置为输出,将echo引脚设置为输入。

//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

在loop()中,我们通过发送一个10微秒的HIGH脉冲来触发传感器。但是,在此之前,我们给出一个短的低电平脉冲,以确保我们得到一个干净的高脉冲。

digitalWrite(trigPin, LOW);
delayMicroseconds(5000);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10000);
digitalWrite(trigPin, LOW); 

然后,我们读取来自传感器的信号 - 一个HIGH脉冲,其持续时间是从发送信号到接收回波到物体的微秒时间。

duration = pulseIn(echoPin, HIGH);

最后,我们只需要将持续时间转换为距离。我们可以使用以下公式计算距离:
距离=(传播时间/ 2)x声速
声速为:343m / s = 0.0343cm / uS = 1 / 29.1cm / uS
或以英寸为单位:13503.9in / s = 0.0135in / uS = 1 / 74in / uS
我们需要将传播时间除以2,因为我们必须考虑声波被发送,遇到物体,然后返回传感器。

cm = (duration/2) / 29.1;
inches = (duration/2) / 74;

最后,我们在串口监视器中打印结果。

Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");

总的代码如下。

int trigPin = 11;
int echoPin = 12;
long duration, cm, inches;
void setup() {   
Serial.begin (9600); 
 pinMode(trigPin, OUTPUT);   
 pinMode(echoPin, INPUT);
} 
void loop() {
 digitalWrite(trigPin, LOW);
 delayMicroseconds(5000);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10000);
 digitalWrite(trigPin, LOW); 
 duration = pulseIn(echoPin, HIGH);
 cm = (duration/2) / 29.1;
 inches = (duration/2) / 74;
 Serial.print(inches);
 Serial.print("in, ");
 Serial.print(cm);
 Serial.print("cm");
 Serial.println();

注:以上内容来自https://www.yiboard.com/thread-1026-1-1.html

实验过程

Arduino开发板使用超声波传感器HC-SR04_第4张图片

移动测试物体,在串口监视器中查看打印结果。

你可能感兴趣的:(Arduino开发板使用超声波传感器HC-SR04)