快捷搜索:  汽车  科技

超声波传感器e4c-ds80的使用:超声波传感器HC-SR04使用方法以及程序说明

超声波传感器e4c-ds80的使用:超声波传感器HC-SR04使用方法以及程序说明2. 当信号找到一个物体时,它会被反射。1. 发射器(触发针)发送信号:高频声音。以下是HC-SR04超声波传感器的一些功能和规格列表:它是如何工作的?超声波传感器使用超声波来确定到物体的距离。这中间发生了什么:

本文是有关流行的超声波传感器HC – SR04的应用指南。我们将解释其工作原理,向您展示其某些功能,并分享一个您可以实际应用的Arduino项目示例,以便将其集成到您的项目中。我们提供了有关如何连接超声波传感器的示意图,以及与Arduino一起使用的示例程序。

超声波传感器e4c-ds80的使用:超声波传感器HC-SR04使用方法以及程序说明(1)

描述

HC-SR04超声波传感器像蝙蝠一样使用超声波来确定到物体的距离。它以易于使用的功能提供出色的非接触范围检测,具有高精度和稳定的读数。它带有超声波发射器和接收器模块。

特征

以下是HC-SR04超声波传感器的一些功能和规格列表:

  • 电源: 5V DC
  • 静态电流:<2mA
  • 工作电流:15mA
  • 有效角度:<15°
  • 测距距离:2cm – 400 cm / 1“ – 13ft
  • 分辨率:0.3厘米
  • 测量角度:30度
  • 触发输入脉冲宽度:10uS
  • 尺寸:45mm x 20mm x 15mm
  • 它是如何工作的?

    超声波传感器使用超声波来确定到物体的距离。这中间发生了什么:

    1. 发射器(触发针)发送信号:高频声音。

    2. 当信号找到一个物体时,它会被反射。

    3. 发射器(回波引脚)接收它。

    超声波传感器e4c-ds80的使用:超声波传感器HC-SR04使用方法以及程序说明(2)

    信号发送和接收之间的时间使我们能够计算到物体的距离。这是肯定的,因为我们知道声音在空气中的速度。

    HC-SR04超声波传感器引脚

    超声波传感器e4c-ds80的使用:超声波传感器HC-SR04使用方法以及程序说明(3)

    针脚

  • VCC: 5VDC
  • 触发:触发(输入)
  • 回声:回声(输出)
  • 地:地
  • 使用Arduino的HC – SR04传感器

    该传感器在Arduino应用中非常受欢迎。因此,在这里,我们提供了有关如何在Arduino上使用HC-SR04超声波传感器的示例。在该项目中,超声波传感器在串行监视器中读取并写入到对象的距离。

    该项目的目的是帮助您了解该传感器的工作原理。然后,您应该可以在自己的项目中使用此示例。

    注意:有一个名为NewPing的Arduino库,可以使您在使用此传感器时更加轻松,容易。

    所需零件

    这是遵循下一个教程所需的部分的列表:

  • Arduino UNO
  • 超声波传感器(HC-SR04)
  • 面包板
  • 跳线
  • 原理图

    按照下一个示意图将HC-SR04超声波传感器连接到Arduino。

    超声波传感器e4c-ds80的使用:超声波传感器HC-SR04使用方法以及程序说明(4)

    下表显示了您需要建立的连接:

    超声波传感器HC-SR04 Arduino的IO

    VCC 5伏

    触发 针脚11

    回声 针脚12

    地线 地线

    代码

    将以下代码上传到您的Arduino IDE。

    int trigPin = 11; // Trigger

    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() {

    digitalWrite(trigPin LOW);

    delayMicroseconds(5);

    digitalWrite(trigPin HIGH);

    delayMicroseconds(10);

    digitalWrite(trigPin LOW);

    pinMode(echoPin INPUT);

    duration = pulseIn(echoPin HIGH);

    // Convert the time into a distance

    cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343

    inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135

    Serial.print(inches);

    Serial.print("in ");

    Serial.print(cm);

    Serial.print("cm");

    Serial.println();

    delay(250);

    }

    代码如何工作

    首先,为触发器和回波引脚分别创建变量,分别称为 trigPin和 echoPin。触发引脚连接到数字引脚11,回波引脚连接到数字引脚12:

    int trigPin = 11;

    int echoPin = 12;

    您还将创建三个类型为long的变量: duration, cm和 inch。duration的持续时间可变保存信号的发射和接收之间的时间。cm 厘米变量将保存的是距离厘米,而 inch 英寸变量将保存英寸的距离。

    long duration cm inches;

    在 setup()中,以9600的波特率初始化串行端口,并将触发引脚设置为输出,并将回显引脚设置为输入。

    //Serial Port begin

    Serial.begin (9600);

    //Define inputs and outputs

    pinMode(trigPin OUTPUT);

    pinMode(echoPin INPUT);

    在loop()中,通过发送10微秒的HIGH脉冲来触发传感器。但是,在此之前,请提供一个短的LOW脉冲,以确保获得干净的HIGH脉冲:

    digitalWrite(trigPin LOW);

    delayMicroseconds(5);

    digitalWrite(trigPin HIGH);

    delayMicroseconds(10);

    digitalWrite(trigPin LOW);

    然后,您可以从传感器读取信号-一个HIGH脉冲,其持续时间是从信号发送到接收到对象的回波之间的时间(以微秒为单位)。

    duration = pulseIn(echoPin HIGH);

    最后,您只需要将持续时间转换为距离即可。我们可以使用以下公式计算距离:

    距离=(旅行时间/ 2)x声速

    声音速度为:343m / s = 0.0343 cm / uS = 1 / 29.1 cm / uS

    或以英寸为单位:13503.9in / s = 0.0135in / uS = 1 / 74in / uS

    我们需要分割时间一分为二,因为我们必须考虑到超声波被送到输出,碰到对象物体,然后返回到传感器。

    cm = (duration/2) / 29.1;

    inches = (duration/2) / 74;

    最后,我们在串行监视器中打印结果:

    Serial.print(inches);

    Serial.print("in ");

    Serial.print(cm);

    Serial.print("cm");

    Serial.println();

    NewPing的源代码

    您也可以使用NewPing库。

    安装NewPin库后,您可以上传下面提供的代码。

    #include <NewPing.h>

    #define TRIGGER_PIN 11

    #define ECHO_PIN 12

    #define MAX_DISTANCE 200

    // NewPing setup of pins and maximum distance

    NewPing sonar(TRIGGER_PIN ECHO_PIN MAX_DISTANCE);

    void setup() {

    Serial.begin(9600);

    }

    void loop() {

    delay(50);

    unsigned int distance = sonar.ping_cm();

    Serial.print(distance);

    Serial.println("cm");

    }

    代码如何工作

    使用NewPing库获取到对象的距离要简单得多。

    首先包括NewPing库:

    #include <NewPing.h>

    然后,定义触发和回波引脚。触发引脚连接到Arduino数字引脚11,回波连接到引脚12。您还需要定义MAX_DISTANCE变量才能使用该库。

    #define TRIGGER_PIN 11

    #define ECHO_PIN 12

    #define MAX_DISTANCE 200

    然后,创建一个名为sonar的NewPing实例:

    NewPing sonar(TRIGGER_PIN ECHO_PIN MAX_DISTANCE);

    在setup()中,以9600的波特率初始化串行通信。

    Serial.begin(9600);

    最后,在loop()中,要获取距离,您只需要对超声波对象使用ping_cm()方法。这将为您提供以厘米为单位的距离。

    unsigned int distance = sonar.ping_cm();

    如果要以英寸为单位获取距离,则可以使用sonar.ping_in()代替。

    故障排除

    注意:"如果HC-SR04没有收到回声,则输出永远不会变低。Devantec和Parallax传感器分别在36ms和28ms之后超时。如果您按上述方式使用Pulsin,则没有返回回显,程序将挂起1秒钟,这是Pulsin的默认超时时间。您需要使用timeout参数。

    HC-SR04几乎无法工作到10英尺,因此总路径长度为20英尺,路径时间约为20ms,因此请将超时设置为25或30ms以上。

    如果您在E和T之间放置一个电阻,比如说2k2,则仅连接到T,您可以仅从一个Arduino引脚使用HC-SR04。查找超声波传感器的单针操作。

    另外,如果您将HC-SR04与PicAxe配合使用,则需要将时钟速度提高到至少8MHz,否则它们将看不到回波脉冲的开始,因此脉冲输入将永远不会开始。HC-SR04与BS2配合良好。

    写到最后

    在本文中,我们向您展示了HC-SR04超声波传感器如何工作,以及如何与Arduino一起使用。对于一个项目示例,您可以构建一个自己喜欢的项目。如一个带有LED和蜂鸣器的停车传感器。

    猜您喜欢: