記事一覧

Arduino nanoで超音波センサー(HC-SR04)を使ってみた。

Arduino nanoで超音波センサー(HC-SR04)を使ってみた。



こんにちはRoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。

今回はYahoo!ショッピングで送料無料で250円で見つけたので買ってみました。

型式HC-SR04 (メーカーが書いてないので互換品でしょうか)

主要な仕様
 電源電圧 5V
 待機電流 2mA未満
 信号出力 0~5V
 センサ角度 15度以下
 測定可能距離 2~400cm
 分解能 0.3cm

Sonic01.jpg

ピン配置(写真の左から)
 Vcc 電源+5V
 Trig トリガー信号(Arduinoからトリガー信号を受ける。)
 Echo エコー信号(Arduinoにエクー信号を返す)
 Gnd グランド

センサーの原理
下の図のように、Arduinoから10μsのパルスをTrigピンに与えると、センサーからは計測対象に8回ほど超音波を発します。

超音波は計測対象にぶつかると反射して戻ってきます。センサーはこの時間を計ることで距離を計測しています。

センサーからはパルス幅としてArduinoにデータを送ります。

Sonic02.png

計測値はこのパルス幅に対して次のような式で計算されます。

距離(cm) = パルス幅×1/2×340×100×1/1000000 = パルス幅 / 58.8

超音波センサーとArduinoの接続
 Arduinoの5VピンをセンサーのVccピンに接続
 ArduinoのGndピンをセンサーのGndピンに接続
 ArduinoのD8をTrigピンに接続
 ArduinoのD9をEchoピンに接続

Sonic03.png

Sonic04.jpg

Arduinoのスケッチ

Sonic05.png

#define echo 9 // Echo Pin
#define trig 8 // Trig Pin
double Duration = 0; //受信した間隔
double Distance = 0; //距離

void setup() {
Serial.begin(9600);
pinMode(echo,INPUT);
pinMode(trig,OUTPUT);
}

void loop() {
digitalWrite(trig,HIGH); //超音波を出力
delayMicroseconds(10); //10μsパルスを出す
digitalWrite(trig,LOW);
Duration = pulseIn(echo,HIGH); //センサからパルス間隔を取得
if (Duration > 0) {
Distance = Duration/58.8; // パルス間隔から距離を計算
Serial.print(Distance);
Serial.println(" cm");
}
delay(500);
}

これでコンパイルしてArduinoに送信しましょう。

動作確認
シリアルモニターを起動すると、データを受信していることがわかります。
超音波センサーの前にものを置くとおおよそその距離を計測しているようです。

Sonic06.png

Echo信号をオシロスコープで見てみると距離に応じてパルス幅が変化していることがわかります。



実際に物差しで計ってみると実際の距離が8cmのところ若干小さな値となっていました。

Sonic07.jpg

Sonic08.png


計算式では音速を340m/sとしていますが、理論的には温度のパラメータも入っています。
音速=331.5 + 0.6 x温度 なので340は14℃の時です。結構涼しい。
仮に25℃だったとすると音速は346.5m/sです。
この場合
距離(cm) = パルス幅×1/2×346.5×100×1/1000000 = パルス幅 / 57.7
この方が現実的な気がします。

実際にスケッチに入れてみると良好な結果が出ました。

Sonic10.png

本当は温度も計測しながら計算したいところですが、ロボットで使う分にはそこまで正確ではなくても良いと思います。

そのうちにロボットにつけて距離を計測しながら動かしたいと思います。

それでは今回はこの辺で失礼します!ありがとうございました。

スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

Author:RoboTakao
みなさんご訪問ありがとうございます。ロボット作りたいけどお小遣いそんなにないし、簡単でローコストでロボットを作るための私のプロジェクトを紹介します。

ウェブサイトもありますのでそちらもよろしくお願いします。
http://robotakao.jp/

スポンサーリンク