📅  最后修改于: 2020-12-27 10:01:00             🧑  作者: Mango
超声波传感器或HC-SRO4用于使用SONAR测量物体的距离。
它以40KHZ或40000 Hz的频率发射超声波。频率在空中传播,并在其路径上撞击物体。射线从物体反射回来并到达模块。
HC-SRO4的四个端子是VCC,TRIG,ECHO和GND。电源电压或VCC为+ 5V。我们可以将ECHO和TRIG端子连接到特定Arduino板上的任何数字I / O引脚。
超声波传感器最适合中等范围。
分辨率为0.3cm 。
传感器的中等范围是10cm至3m 。在此期间效果最佳。
传感器可检测的最大范围是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超声波传感器来测量距离。
下面列出了创建项目所需的组件:
我们需要首先将TRIG (触发)引脚设置为HIGH 。它会发出称为声波突发的8个周期的突发,它将以音速传播。 ECHO引脚将进一步接收它。声波传播的时间被认为是ECHO引脚的输出时间(以微秒为单位)。
我们将使用PulseIn()函数从ECHO引脚的输出中读取时间。它将等待指定的引脚变为高电平和低电平。该函数将在最后返回计时。
TRIG引脚设置为低电平4微秒,然后设置为高15微秒。
计时将以微秒计算。
下面列出了将超声波传感器连接到板上的步骤:
考虑下面的代码:
#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
}
步骤如下:
连接图如下所示:
输出量
串行监视器上的输出将显示为: