关于HC-SR04的距离测量能力

时间:2019-11-15 02:57:21

标签: arduino

我目前正在使用HC-SR04超声波传感器来测量从传感器到表面的距离。

问题是传感器的结果值在合理范围内既不一致又不准确。

我了解到HC-SR04的最大读取范围可达400厘米。

我目前的情况是该传感器可以合理地测量20厘米,但是当传感器超过它时,它很快就会失效。

例如,传感器与表面之间的距离约为170cm,但传感器表示约为50cm。

这是引脚的连接方式。
HC-SR04 ------ Arduino。
触发至13。
回声到12
Vcc至5V
GND至GND

这是我的Arduino代码。

#define echoPin1 12
#define trigPin1 13

float duration;
float distance1_1;

void setup()
{
    pinMode (echoPin1, INPUT);
    pinMode (trigPin1, OUTPUT);
    digitalWrite(trigPin1, LOW);

    Serial.begin (9600);
    Serial.println("Program Begins");
}

void loop()
{
    DIST();
    delay (1000);
}

void DIST()
{
    digitalWrite(trigPin1, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin1, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin1, LOW);
    duration=pulseIn(echoPin1, HIGH);
    distance1_1=(duration*0.0343)/2;
    Serial.println("Distance")
    Serial.println(distance1_1);
}  

1 个答案:

答案 0 :(得分:0)

  1. 尝试使用不同的Arduino引脚连接回显和触发引脚。 Arduino的引脚13连接到LED,并且在某些Arduino型号/版本上将引脚13用于超声波传感器时,有一些问题报告。因此,首先尝试更改引脚。
  2. 接下来,尝试备用传感器(如果有),并查看结果是否一致。有时问题在于超声波传感器损坏。
  3. 此外,我们需要知道确切的硬件设置量,即如何安装传感器。附近的物体可能会产生杂散反射,因此在安装传感器时请务必小心。
  4. 最后,pulseIn的返回类型为unsigned long。所以你应该 将PulseIn中的值存储在一个长数据类型中,而不是浮点数。