Ultrasonic Sensor(HC-SR04) JP

아두위키 : Arduwiki


このセンサーは超音波を利用して距離を測定します。

使用環境によって測定範囲に誤差が生じることがあります。

[超音波発信 -> 反射 -> 受信]の順で距離を測定します。

センサーの動作原理

1. trigピンで超音波を発信します。

2. 発信直後、echoピンをHIGHに保持します。

3. 超音波が反射して戻ってきたらechoピンをLOWにします。

4. pulseIn(echoPin, HIGH)を使用して往復時間を取得します。

5. 式に代入して距離を計算します。

距離測定

超音波の速度 340m/s
往復時間 x
物体までの距離 y

仕様

  • 動作電圧:5V
  • 動作電流:15mA
  • 動作周波数:40Hz
  • 超音波周波数:40kHz
  • 最大検出距離:4m
  • 最小検出距離:2cm
  • 測定角度:15度
  • トリガー入力:10µs TTLパルス

必要なハードウェア

  • 超音波センサー(HC-SR04)
  • Arduinoボード
  • ジャンパーワイヤー

接続

TrigとEchoピンは任意のピン番号に設定できます(本例ではD3とD4を使用)。

HC-SR04 Arduino UNO
GND GND
VCC 5V
Trig D3(変更可能)
Echo D4(変更可能)

サンプルコード

シリアルモニターで距離を確認する例です。

#define trigPin 3
#define echoPin 4

double pulseTime; // 超音波の往復時間を格納する変数

void setup()
{
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);

    Serial.begin(9600);
    delay(2000);
    Serial.println("接続成功");
    delay(500);

    digitalWrite(trigPin, LOW);
}

void loop()
{
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    pulseTime = pulseIn(echoPin, HIGH);

    double distance_cm = pulseTime * 17 / 1000;
    double distance_m = distance_cm / 100;

    if ((distance_cm < 400) && (distance_cm > 2))
    {
        Serial.print("距離(cm) = ");
        Serial.println(distance_cm);
        Serial.print("距離(m) = ");
        Serial.println(distance_m);
        Serial.println("--------------------------------------------------");
    }
    else
    {
        Serial.println("センサーの範囲を超えました");
    }
    delay(1000);
}