norr@manorshi.com         +86-519-89185720
1
ニュースセンター

Arduinoで超音波センサーを使用するにはどうすればよいですか?

ビュー: 164     著者: グレース 公開時間: 2021-07-26 起源: サイト

フェイスブックの共有ボタン
ツイッター共有ボタン
ライン共有ボタン
wechat共有ボタン
リンクされた共有ボタン
Pinterestの共有ボタン
WhatsApp共有ボタン
カカオ共有ボタン
スナップチャット共有ボタン
電報共有ボタン
この共有ボタンを共有します

Arduino で超音波センサーを使用する方法: HC-SR04 ガイド

HC-SR04 超音波センサーは、Arduino プロジェクトで最も人気のある距離測定モジュールの 1 つです。障害物回避ロボット、駐車センサー、レベル検出、スマートゴミ箱、距離計、その他の非接触センシングアプリケーションで広く使用されています。

モジュールは送信機を通じて 40kHz の超音波を放射します。音波が物体に当たると、反射して受信機に戻ります。エコー時間を測定し、音速を使用することで、Arduino はセンサーと物体の間の距離を計算できます。

Arduino距離測定用超音波センサーモジュール HC-SR04

HC-SR04の主な技術パラメータ

パラメータ 価値
代表的な動作電圧 DC5V
静的動作電流 一部のモジュールバージョンでは5mA未満
動作周波数 40kHzの超音波
検出距離 一般的な範囲: 2cm ~ 400cm。ゲイン調整されたバージョンによっては、より長い範囲をサポートする場合があります。
検出角度 通常15度以内。より高いゲインを備えた一部のバージョンでは、約 30 度に達する場合があります。
精度 適切な試験条件下で最大約0.3cm
ブラインドゾーン 最小測定距離 約2cm

HC-SR04 ピンの説明

HC-SR04 超音波モジュールには、VCC、TRIG、ECHO、GND の 4 つのピンがあります。 Arduinoは短いトリガーパルスをTRIGピンに送信し、ECHOピンからリターンパルスを読み取ります。

HC-SR04ピン Arduino接続 関数
VCC 5V 超音波モジュール用の電源です。
トリガー デジタルピン9 トリガー入力。 Arduino は 10us パルスを印加して測距を開始します。
エコー デジタルピン10 エコー出力。 Arduinoはパルス幅を読み取り、距離を計算します。
GND GND アース接続。

HC-SR04 超音波センサーのピン配置 VCC TRIG ECHO GND

HC-SR04超音波センサーの動作原理

HC-SR04は飛行時間測定によって動作します。 Arduino は、少なくとも 10 マイクロ秒のハイレベルのトリガー信号を TRIG ピンに送信します。次に、モジュールは 8 つの 40kHz 超音波パルスを自動的に送信し、反射エコーを待ちます。

反射された超音波信号が検出されると、ECHO 端子は High レベルのパルスを出力します。このパルスの持続時間は超音波の往復移動時間です。

距離 = エコー高レベル時間 × 音速 / 2

Arduino コードでは、一般的な簡略化された式は次のとおりです。

距離 (cm) = 期間 × 0.0343 / 2

HC-SR04超音波モジュール飛行時間の動作原理

HC-SR04 超音波モジュールのタイミング図

タイミングプロセスは単純です。Arduino は TRIG を短時間 Low に保ち、10us の High パルスを送信してから TRIG を Low に戻します。 HC-SR04 は超音波バーストを送信し、反射信号が戻るか測定がタイムアウトになるまで ECHO を High に設定します。

測定値が不安定になるのを避けるため、測定間に短い遅延を設けてください。一般に約 60 ミリ秒の測定サイクルが使用されるため、次のトリガーまでに前の超音波エコーが消えるまでの時間がかかります。

Arduino プログラミングの基礎:pulseIn 関数

Arduinoの pulseIn() 関数は、デジタルピンがHIGHまたはLOWに留まる時間を測定するために使用されます。 HC-SR04の場合、Arduinoは pulseIn(echoPin, HIGH)を使用して ECHOピンからハイレベルのパルス幅を読み取ります。

構文 意味
パルス入力(ピン、値) HIGH または LOW パルスの持続時間を読み取ります。
パルスイン(ピン、値、タイムアウト) マイクロ秒単位のタイムアウト値を使用してパルスを読み取ります。

タイムアウトを使用することをお勧めします。エコーが返されない場合、関数はプログラムを長時間ブロックする代わりに、待機を停止して 0 を返すことができます。

HC-SR04超音波距離センサーで使用されるArduinoボード

HC-SR04超音波センサーをArduinoに接続する方法

配線は素直です。 VCCを5Vに、GNDをGNDに、TRIGをArduinoデジタル出力ピンに、ECHOをArduinoデジタル入力ピンに接続します。次の例では、Arduino Uno、ピン 9 の TRIG、ピン 10 の ECHO を使用します。

HC-SR04超音波センサー用のArduino Unoブレッドボード配線図

HC-SR04 超音波センサー Arduino コード

次の典型的な Arduino プログラムは、10us のトリガー パルスを送信し、ECHO パルス幅を読み取り、距離をセンチメートル単位で計算し、結果をシリアル モニターに出力します。

const int trigPin = 9; const int echoPin = 10;長期間;浮動小数点距離 Cm; void setup() { pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT);   シリアル.begin(9600); void ループ() {digitalWrite(trigPin, LOW);   遅延マイクロ秒(2);   digitalWrite(trigPin, HIGH);   遅延マイクロ秒(10);   デジタル書き込み(trigPin, LOW);   継続時間 = パルスIn(echoPin, HIGH, 30000);   if (duration == 0) { Serial.println('範囲外');   } else { 距離 Cm = 期間 * 0.0343 / 2;     Serial.print('距離: ');     Serial.print(距離Cm);     Serial.println(' cm');   遅延(60); }

シリアル モニターに距離の値が表示される場合、HC-SR04 超音波センサーと Arduino の配線は正しく動作しています。その後、距離データを障害物の検出、ロボットの動作制御、自動ドア、駐車リマインダー、または液面プロジェクトに使用できます。

Arduino HC-SR04 超音波センサー測距プログラム

HC-SR04の測定精度を向上させる方法

  • 測定対象物は推奨距離範囲内、かつ 2cm の死角の外側に置いてください。

  • 超音波の反射を良くするには、平らで硬いターゲット表面を使用してください。

  • 柔らかい素材、角のある素材、多孔質素材、吸音性のある素材の測定は避けてください。

  • 安定した 5V 電源を使用し、配線は短く確実に行ってください。

  • エコーが返されない場合に長時間ブロックされることを防ぐために、pulseIn() にタイムアウトを追加します。

  • ノイズを減らすために、いくつかの測定値を平均または中央値フィルターします。

  • 音速は気温によって変化するため、精度を高めるには温度を補正してください。

Arduino超音波センサープロジェクトの一般的なアプリケーション

応用 HC-SR04の使い方
障害物回避ロボット 近くの物体を検出し、ロボットの方向転換を支援します。
駐車距離センサー 車両と障害物との距離を測定します。
液面検知 センサーから液面までの距離を非接触で測定します。
スマートゴミ箱 近くにある手や物体を検知し、自動的に蓋が開きます。

まとめ

Arduino で HC-SR04 超音波センサーを使用するには、VCC を 5V に、GND を GND に、TRIG をデジタル出力ピンに、ECHO をデジタル入力ピンに接続します。 10us のトリガー パルスを送信し、pulseIn() でエコー継続時間を読み取り、飛行時間式で距離を計算します。

HC-SR04 は安価で使いやすく、多くの Arduino 距離測定プロジェクトに適しています。最良の結果を得るには、ターゲット表面、測定角度、ブラインドゾーン、安定した出力、タイムアウト処理、および温度の影響に注意してください。

HC-SR04 Arduino 超音波センサーに関するよくある質問

HC-SR04 超音波センサーは Arduino でどのように動作しますか?

Arduino は 10us パルスを TRIG ピンに送信します。 HC-SR04 は 40kHz の超音波パルスを 8 回発し、反射音が戻ってくるまで ECHO ピンを High に設定します。 Arduino はこのパルス時間を測定し、距離を計算します。

HC-SR04 Arduino プロジェクトの距離公式は何ですか?

式は、距離 = 継続時間 × 音速 / 2 です。センチメートル単位の一般的な Arduino の公式は、 distanceCm = 継続時間 × 0.0343 / 2 で、継続時間はマイクロ秒で測定されます。

超音波センサーの結果を 2 で割るのはなぜですか?

測定されたエコー時間は、センサーから物体まで、そしてセンサーに戻るまでの往復時間です。 2 で割ると、センサーと物体間の片道の距離が求められます。

TRIG と ECHO にはどの Arduino ピンを使用すればよいですか?

ほとんどの Arduino デジタル ピンを使用できます。多くの例では、TRIG はデジタル ピン 9 に接続され、ECHO はデジタル ピン 10 に接続されます。コードは配線で使用されるピンと一致する必要があります。

HC-SR04 超音波センサーがゼロまたはランダムな値を返すのはなぜですか?

一般的な原因には、配線の緩み、不安定な 5V 電源、間違った TRIG または ECHO ピン番号、範囲内に物体がない、角度のあるターゲット表面、柔らかい素材、センサー ヘッドのブロック、またはpulseIn() 関数のタイムアウトなしなどが含まれます。

HC-SR04 超音波センサーのブラインドゾーンとは何ですか?

ブラインド ゾーンは、モジュールが確実に測定できない最小距離です。 HC-SR04の場合、ブラインドゾーンは通常約2cmです。これより近くにある物体では、測定値が不安定になる可能性があります。

HC-SR04はArduinoで水位を計測できますか?

はい、HC-SR04 は、センサーが湿気から保護され、液面上に取り付けられている場合、単純な非接触水位プロジェクトに使用できます。湿気の多いタンク、屋外タンク、または工業用タンクの場合は、防水型超音波センサーをお勧めします。

Arduino 超音波センサーの読み取り値をより安定させるにはどうすればよいですか?

安定した電源を使用し、センサーをターゲットに対して垂直に保ち、柔らかい表面や角度のある表面を避け、pulseIn タイムアウトを追加し、複数の読み取り値を取得し、中央値フィルタリングを使用し、測定間隔を約 60ms 空けます。

目次