超音波センサー HC-SR04
- 2021.05.20
- Arduino入門

超音波センサーとは

超音波センサー HC-SR04 は、2つの目のうち片方の目(T:Transmit)から超音波を発して、もう片方の目(R:Receive)で反射した超音波を受信して、その時間差で障害物までの距離を測定するセンサーです。
●測距範囲:2~400cm
●精度:分解能 0.3cm
●電源電圧:DC5V
●動作周波数:40kH
空気中の音の速さは、秒速 331.5 + 0.6 × 気温(℃) m/s で求めることができるので、例えば気温が摂氏 20℃ のとき、音速は
331.5 + 0.6 × 20 = 343.5 m/s
となります。この時、超音波信号を出力して、反射波を受信するまでにかかる時間が 0.001 秒だったとすると、障害物までの距離は
343.5 x 0.001 / 2 = 0.17175 m
となり、17.175cm であると求められます。(2で割っているのは障害物までの往復の距離を計算するためです)

4本の端子は、
●Vcc:5V電源入力
●Trig:超音波出力用の信号を送信
●Echo:超音波入力用の信号を受信
●Gnd:グランド
にそれぞれ接続します。
回路を作る
マイコンボードと超音波センサーを接続します。


サンプルスケッチ
サンプルスケッチを以下からダウンロードして、ZIPファイルを開きます。
HCSR1.ino
#define echoPin 6 //定数echoPinを6に設定
#define trigPin 8 //定数tgigPinを8に設定
float duration, distance; //変数duration/distanceを少数と設定
void setup() {
Serial.begin (9600); //9600bpsで通信開始
pinMode(trigPin, OUTPUT); //trigPin(6番ピン)を出力に設定
pinMode(echoPin, INPUT); //echoPin(8番ピン)を入力に設定
}
void loop() {
digitalWrite(trigPin, LOW); //trigPinをオフにする
delayMicroseconds(2); //2マイクロ秒待つ
digitalWrite(trigPin, HIGH); //trigPinをオンにして超音波発信
delayMicroseconds(10); //10ミリ秒待つ
digitalWrite(trigPin, LOW); //trigPinをオフにする
duration = pulseIn(echoPin, HIGH); //echoPinにパルスが入力するまでの時間
distance = (duration / 2) * 0.0344; //入力時間を2で割って音速を掛けて距離を算定
if (distance >= 400 || distance <= 2){ //算定距離が2cm以下または400cm以上の場合
Serial.println("Out of range"); //「測定不能」と表示
}
else { //測定距離範囲内の場合
Serial.print(distance); //算定距離を表示
Serial.println(" cm"); //「cm」と表示
delay(500); //0.5秒待つ
}
delay(500); //0.5秒待つ
}
スケッチ内の関数等について
●#define 定数名 値 : 定数名を値として定義(以下のコードでは定数名に値が代入される)
●Serial.begin (値) : シリアル通信のデータ転送レートをbpsで指定(シリアルモニタで確認できる)
●pulseIn (ピン番号, 値) : 指定したピン番号に入力されるパルス(HIGH または LOW)の時間をマイクロ秒で測定
●Serial.println (値) : 値をシリアルポートに出力(シリアルモニタで確認できる)
距離を測定する
マイコンボードとパソコンをUSBケーブルで接続して書き込み
シリアルモニタを起動し、センサー前で手を前後させて距離を測定

-
前の記事
robot.inoの解説 2021.05.19
-
次の記事
センサーシールド 2021.05.21