📜  Arduino超声波距离传感器

📅  最后修改于: 2020-12-27 10:01:00             🧑  作者: Mango

Arduino超声波距离传感器

超声波传感器或HC-SRO4用于使用SONAR测量物体的距离。

它以40KHZ或40000 Hz的频率发射超声波。频率在空中传播,并在其路径上撞击物体。射线从物体反射回来并到达模块。

HC-SRO4的四个端子是VCC,TRIG,ECHO和GND。电源电压或VCC为+ 5V。我们可以将ECHO和TRIG端子连接到特定Arduino板上的任何数字I / O引脚。

超声波传感器最适合中等范围。

分辨率为0.3cm

传感器的中等范围是10cm3m 。在此期间效果最佳。

传感器可检测的最大范围是4.5m

超声波传感器如何工作?

让我们了解传感器的工作原理。

  • 它发送超高频样本。

  • 当样品撞击物体时,它会从物体反弹回来。

  • 距离传感器报告在发送和接收样本之间花费的时间。

让我们考虑一个例子。

物体距离超声传感器40cm。空气中的声音速度为340m / s。我们需要计算时间(以微秒为单位)。

解:

v = 340m/s = 0.034cm/us (centimeter/microseconds)
time = distance/speed
time = 40/0.034
time = 1176 microseconds

由于回波向前和向后传播(反弹),因此来自echo针的声音速度将加倍。

因此,要计算距离,我们需要将其除以2。如下所示:

distance = time x speed of sound/2
distance = time x 0.034/2

超声波传感器的结构

HC-SRO4的结构如下所示:

超声波传感器时序图

我们将TRIG引脚设置为高电平一段时间(大约3到100微秒)。一旦TRIG引脚为低电平,超声传感器就会发送脉冲并将ECHO引脚设置为高电平。当传感器获得反射脉冲时,它将ECHO引脚设置为LOW。我们需要测量ECHO引脚为高电平的时间。

超声波传感器HC-SRO4的时序图如下所示:

让我们开始创建Arduino超声波传感器来测量距离。

所需硬件

下面列出了创建项目所需的组件:

  • Arduino UNO R3开发板(我们也可以使用任何Arduino开发板)
  • 跳线
  • 超声波传感器HC-SRO4
  • 面包板

原理

我们需要首先将TRIG (触发)引脚设置为HIGH 。它会发出称为声波突发的8个周期的突发,它将以音速传播。 ECHO引脚将进一步接收它。声波传播的时间被认为是ECHO引脚的输出时间(以微秒为单位)。

我们将使用PulseIn()函数从ECHO引脚的输出中读取时间。它将等待指定的引脚变为高电平和低电平。该函数将在最后返回计时。

TRIG引脚设置为低电平4微秒,然后设置为高15微秒。

计时将以微秒计算。

程序

下面列出了将超声波传感器连接到板上的步骤:

  • 将HC-SRO4的VCC引脚连接到Arduino板的5V。
  • 将HC-SRO4的GND引脚连接到Arduino板的GND。
  • 将HC-SRO4的TRIG引脚连接到Arduino板的引脚6。
  • 将HC-SRO4的ECHO引脚连接到Arduino板的引脚5。

草图

考虑下面的代码:

#define ECHOpin 5 // it defines the ECHO pin of the sensor to pin 5 of Arduino
#define TRIGpin 6 
// we have defined the variable
long duration; // variable for the duration of sound wave travel
int distance; // variable for the distance measurement
void setup() 
{
  pinMode(TRIGpin, OUTPUT); // It sets the ECHO pin as OUTPUT
  pinMode(ECHOpin, INPUT); // It sets the TRIG pin as INPUT
  Serial.begin(9600); // // Serial Communication at the rate of 9600 bps
  Serial.println("Test of the Ultrasonic Sensor HC-SR04"); // It will appear on Serial Monitor
  Serial.println("with the Arduino UNO R3 board");
}
void loop() 
{
  // It first sets the TRIG pin at LOW for 2 microseconds
  digitalWrite(TRIGpin, LOW);
  delayMicroseconds(4);
  // It now sets TRIG pin at HIGH for 15 microseconds
  digitalWrite(TRIGpin, HIGH);
  delayMicroseconds(15);
  digitalWrite(TRIGpin, LOW);
  // It will read the ECHO pin and will return the time 
  duration = pulseIn(ECHOpin, HIGH);
  // distance formula
  distance = duration*(0.034/2); // (speed in microseconds)
  // Speed of sound wave (340 m/s)divided by 2 (forward and backward bounce)
  // To display the distance on Serial Monitor
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm"); //specified unit of distance
}

将代码上传到项目的步骤

步骤如下:

  • 打开Arduino IDE。
  • 从工具->板-> Arduino UNO中选择板的类型。
  • 从工具->端口-> COM中选择端口。
  • 将草图上传到连接图。

连接图

连接图如下所示:

输出量

串行监视器上的输出将显示为: