3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HC-SR04を使った距離計測

Last updated at Posted at 2019-07-03

#はじめに

超音波センサーモジュールのHC-SR04を使って、距離を計測する装置をArduino Unoで作りました。
IMG_1869.jpg

HC-SR04のアマゾンで購入はー>こちら

(参考にしたサイトはこちらー> DreamWalker さん[ARDUINO] 超音波SENSOR(HC-SR04)を使って距離測定。

準備するもの

使用するセンサー:HC-SR04
マイコン:Arduino UNO
開発環境:Arduino IDE

#接続方法
HC-SR04を UNOのデジタル入出力ポートの4番から7番に差し込みます。
トリガーポート(TRIGと書いてあるピン)を5番に、距離の出力端子(ECHOと書いてあるピン)を6番にさします。
VCCが4番、GNDが7番にささります。

IMG_1868.jpeg

IMG_1870.jpeg

(ブレッドボードで配線するのがめんどくさかったので、)
4番と7番のデジタルポートは、それぞれを HIGHと LOWにすることで、 
5Vと0Vを提供して、電源端子として利用しました。

#プログラムの動作
トリガーに20μsのワンショットパルスを出力して、 その直後から、Echo端子にパルスが出力されるまでの時間を計測します。 計測は、Arduino の pulseIn()関数を使いました。(便利ですね。^^)

puleIn()の戻り値は、超音波のパルスが跳ね返ってくるまでの時間ΔTなので、音速V(340m/s)から、
距離Dが求まります。 
 D= ΔT・V [m] ・ここで、 pulseIn()の戻り値のΔTは単位がμs(マイクロ秒)なので、1000000(1×10の6乗倍なので 1E6)で割ってやる必要があります。 距離もメートルだと使いにくので、cm(センチメートル)単位にするために100倍しました。

#プログラミング
プログラムの例:

HC-SR04test.ino
/* HC-SR04  Test */
/* e-Lab2020 Ltd. 2019-07-03  */

const int VCC = 4;
const int TRIG = 5;
const int ECHO = 6;
const int GND  = 7;   

void setup()
{
    Serial.begin(9600);
    pinMode(GND,OUTPUT); digitalWrite(GND,LOW);  //GND: LOW 0V
    pinMode(VCC,OUTPUT); digitalWrite(VCC,HIGH); //VCC: HIGH 5V
       
    pinMode(TRIG, OUTPUT);    //Trig: output
    pinMode(ECHO, INPUT);    //Echo: input
}

void loop()
{

  // Start Pulse for HC-SR05
    digitalWrite(TRIG, LOW);        
    delayMicroseconds(2);            
    digitalWrite(TRIG, HIGH);    
    delayMicroseconds(10);      // 10us pulse      
    digitalWrite(TRIG, LOW);       

    //Echo 
    long duration = pulseIn(ECHO, HIGH);  //return : time (us)

    //音波の反射の時間計算
    //1cm移動時間 29.412us. ,1秒間で,340m/s  
    //音波の移動距離 = 往復時間/1cm移動距離 / 2
    //音波の移動距離 = 往復時間(ms) * 340*100(cm) / 1E6 (ms) / 2(往復から片道へ)
   float f_distance = (float)duration * 340.0 * 100.0/1000000.0 / 2.0;        

    Serial.print(f_distance);
    Serial.print(" cm");
    Serial.println();
    delay(100);
}

#動作確認
壁から6cmの位置に置いて確認しました。
IMG_1873.jpeg

#出力結果
ツールからシリアルプロッタを選んでグラフを表示させてみました。
image.png

ツールで、シリアルポートをシリアルモニタで、表示させてみた結果がこちらです。
image.png

以上で試作報告を終わります。
(2019-07-03)

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?