電卓 超音波距離計 HC-SR04をArduinoに接続します。 Arduino: 超音波レンジファインダー HC-SR04 超音波 HC sr04 を 2 つ使用した Arduino

超音波距離計 HC-SR04をArduinoに接続します。 Arduino: 超音波レンジファインダー HC-SR04 超音波 HC sr04 を 2 つ使用した Arduino

アルドゥイーノ - ユニークなシステムこれはエンジニアの手の中にある粘土であり、そこから好きなものを何でも成形できます。 これは、さまざまな方向の多種多様なセンサーとモジュールによって可能になります。 シンプルな電流検出チップから Arduino hc hc sr04 のようなものまで。

これは、超音波を使用して、照射された対象物までの距離を測定できる特別なセンサーです。 これを使用する最も簡単な方法は、単純な距離計を作成することであることは容易に推測できます。 プロジェクトの組み立てを開始する前に、Arduino hc sr04 と、それを使用する際にどのようなニュアンスを考慮する必要があるかを見てみましょう。

1. HC SR04センサーを使用してArduinoで距離計を組み立てる基本

Arduino で距離計を構築する場合、HC SR04 なしでは実現できません。 結局のところ、このモジュールは、操作の容易さ、可用性、低コストにより需要が高いため、このようなシステムで最もよく使用されます。 同時に、測定値の精度は高いままであり、これはこのようなシステムでは非常に重要です。 このチップから、Arduino 上の距離計だけでなく、物体までの距離を感知して障害物を回避する本格的なロボットも組み立てることができます。

ただし、今日は Arduino の距離計を使用したオプションを見ていきます。これは、基本にまだあまり精通していないこの分野の初心者にとって理想的であるためです。 その後、発明を修正したい場合は、部屋の本格的な 3 次元マップをシミュレートするように教えることができます。これは、家具や建物を設計および構築する人にとって便利です。 しかし、最初にそれが一般的にどのように機能するかを検討する価値があります この装置また、Arduino でレーザー距離計を自分の手で作成する前に学ぶべき組み立ての基礎についても説明します。

Arduino 上の距離計は、イルカが自然界で物体までの距離を測定し、障害物を冷静に回避するために使用するソナーをベースにしています。 これは次を使用して行われます 物理的特性固形物に衝突すると反射してセンサーに戻ってくる超音波。

次に、メッセージが送信されてから波が戻ってくるまでの経過時間を計算し、それを 2 で割って、数式と音速を使用して、物体までの平均距離を計算するプログラム コードが機能します。

なぜ平均的なのでしょうか?

ポイントは誰でも 超音波センサーそれでも 10 分の 1 メートル単位で間違えられることはありますが、これは次のような事実によるものです。 さまざまな素材、周囲の環境、その他の変数は、音の表面からの動きや反射の速度に影響を与える可能性があります。 そしてこのプロジェクトでは、 理想的なシステム、現実世界では機能しません。

これらすべての要素を考慮に入れることはできますが、それでもすべての変数をプログラムすることはできません。そのため、Arduino 距離測定器はプロ用機器の測定値からはまだ遠く離れているため、私たちの仕事は専門機器の測定値にできるだけ近いデータを取得することです。正確さにおいて。

超音波装置を組み立てるときに、事前に考慮すべきもう 1 つのニュアンスがあります。 Arduino距離計– すべての表面が測定に適しているわけではありません。 実際のところ、黒いシャツが電磁波を吸収するのと同じように、一部の素材は音を吸収したり、その動きを過度に歪めたりする可能性があります。

したがって、衝撃波の動きを妨げない滑らかで平らな表面でデバイスを使用するのが最善であり、機能も制限されます。 しかし、その低価格と使いやすさのおかげで、このセンサーは依然として非常に人気があります。

2. レッスンでは何が行われますか?

次の原理に従って動作する距離計を組み立てます。物体が 4 センチメートル未満の距離に近づくと赤色の LED が点灯し、そうでない場合は緑色の LED が点灯します。

hc-sr04 距離計による距離測定の精度を確認する非常に単純な例です。 精度をチェックするための基礎となるのは、単純な定規です:)

3. ツール

システムの組み立てプロセスの途中で再び店舗に駆け込むことを避けるために、便利なツールをすべて事前に準備しておくことをお勧めします。 したがって、次のものが手元にあることを確認する必要があります。

  1. はんだごて。 良い選択電力を調整できるデバイスは、あらゆる状況に適応できるようになります。
  2. 指揮者。 当然のことながら、センサーを MK に接続する必要がありますが、標準のピンが常にこれに適しているとは限りません。
  3. USBポート用のアダプターです。 マイクロコントローラーにポートが内蔵されていない場合は、別の方法で PC に接続できることを確認してください。 結局のところ、追加のライブラリと新しいファームウェアをプロジェクトにロードする必要があります。
  4. はんだ、松脂、その他の小物(独立した作業スペースを含む)。
  5. チップ自体とMK、および必要に応じて将来のデバイスのハウジング。 最も経験豊富なエンジニアは、プロジェクトのシェルを 3D プリンターで印刷することを好みますが、大都市に住んでいる場合は、お金をかける必要はありません。 プリンターをレンタルしている会社を探すことができます。

Arduino 距離計は非接触型デバイスであり、正確な測定が可能であることを理解する価値があります。 しかし、それでも、プロ用のデバイスはまったく異なるテクノロジーを使用し、すべての素材に対して長時間の校正を経ているため、いずれの場合でもより優れていることを忘れてはなりません。 また、私たちのプロジェクトの距離測定範囲は 0.03 ~ 4 メートルと限られており、すべての場合に適しているわけではありません。

しかし、良いことに、デバイスの動作は電磁放射や電磁波の影響をまったく受けません。 太陽光エネルギー。 センサーキットにはすでに含まれています 必要な受信機集めると便利な送信機も 超音波距離計アルドゥイーノ。

重要! このレッスンでは何もはんだ付けする必要はありません。 ブレッドボードとジャンパー線を使用します。 ただし、最終的に完全なデバイスを組み立てたい場合は、上で示したすべてのことが役に立ちます。

4. 付属品

まだ何もはんだ付けしないことにしたため、最適な部品セットは次のようになります。

  • 1 - Arduino UNO R3 (または同等のもの)
  • 1 - 超音波距離センサー HC-SR04
  • 1 - 赤色LED
  • 1 - 緑色の LED
  • 2 - 抵抗 560 オーム
  • 1- 開発ボード
  • 8 - ジャンパー線 (オス-オス)
  • 1 - 距離を測定するための定規

5. HC SR04センサーの接続

センサーの接続に問題はないはずです。 導体を使用して電源ピンをソースまたは MK に接続し、入力と出力をそれぞれ MK に直接接続するだけで十分です。 以下の図を使用して回路を組み立てます。

SR04 センサー自体には、考慮すべき次の特性があります。

  1. 電源電圧 – 5V。
  2. 電流15mAの回路で動作します。
  3. センサーを使用しない場合でも、センサーを受動的状態に維持するために最大 2 mA が必要です。
  4. モジュールの視野角は小さく、わずか 15 度です。
  5. センサー解像度 – 10分の3cm。
  6. しかし、測定角度はすでに快適な 30 度です。

センサーには 2.54 mm 規格に準拠した 4 つのピンもあります。 +5V の正電圧を供給する電源用の接点、信号入出力用のピン、および接地が含まれます。

最終バージョンでは、デバイスは次のようになります。

6. コード

私たちのデバイスのコードは以下のとおりです。 距離が 4cm 未満になると赤色 LED が点灯することに注意してください。

/* Arduino HC-SR04 超音波距離センサー VCC を 5v に接続、GND を GND に接続 エコーを Arduino のピン 13 に接続、トリガーを Arduino のピン 12 に接続 赤色 LED のプラス側を Arduino のピン 11 に接続 緑色 LED のプラス側を Arduino のピン 10 に接続 */ #define trigPin 13 #define echoPin 12 #define LED 11 #define LED2 10 void setup() ( Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led, OUTPUT); pinMode (led2, OUTPUT); ) void loop() ( 長い継続時間、距離;digitalWrite(trigPin, LOW);layMicroseconds(2);digitalWrite(trigPin, HIGH);layMicroseconds(10);digitalWrite(trigPin, LOW);duration =パルスイン(エコーピン、HIGH); 距離 = (期間/2) / 29.1;< 4) { // На этом этапе происходит вкл/выкл светодиода digitalWrite(led,HIGH); // когда загорается красный, зеленый обязан выключится digitalWrite(led2,LOW); } else { digitalWrite(led,LOW); digitalWrite(led2,HIGH); } if (distance >= 200 || 距離<= 0){ Serial.println("Out of range"); // Вне диапазона } else { Serial.print(distance); Serial.println(" cm"); // тут тоже можно указать " см" } delay(500); }

唯一覚えておくべきことは、すべての関数やライブラリが専門家によって書かれているわけではないということです。 それらの多くはあなたのような初心者によって作成されているため、センサーが機能していないか、間違ったデータを生成していると結論付ける前に、コードを確認してください。

しかし、将来自分で多くのものを書くためには、プログラミングと C++ の基礎を学んだ方がはるかに良いでしょう。

7. 起動とセットアップ

デバイスを初めて起動すると、次のことが起こります。

  1. パルスが Trig 入力に送信されます。
  2. センサー自体では、信号は 8 つのパルスに変換され、その周波数は 40 kHz に達し、それに応じてパルスを前方に送信します。
  3. 障害物に到達すると、パルスは反射されて受信機に戻り、マイクロコントローラーで即座に計算が行われ、すべての情報が出力デバイスに送信されます。 今回はPCコンソールですが、将来的にはLEDスクリーンにデータを表示するレッスンも行う予定です。

最初に開始するときは、測定の精度を比較できる定規を使用します。 デバイスの起動後、コンソールに表示されるデータを確認します。

このセンサーは非常に人気があり、センサーを使用する独自のソリューションを作成する人が増えています。

今回は超音波距離計HC-SR04の動作原理を見ていきます。

超音波距離計の動作原理は、超音波の放射と前方の物体からの反射に基づいています。 音の戻り時間に基づいて、簡単な計算式を使用して、物体までの距離を計算できます。 HC-SR04距離計はホビー用としては最も安価な距離計です。 低価格でありながら、2~450cmの範囲の距離を測定できる優れた特性を備えています。

使用されているコンポーネント (中国で購入):

センサーの動作原理は 4 つの段階に分けられます。

1. 持続時間 10 μs のパルスを Trig ピンに印加します。

2. 距離計内で、入力パルスは 40KHz の 8 パルスに変換され、「T アイ」を通して前方に送信されます。

3. 障害物に到達すると、送信された衝撃は反射され、「R アイ」で受信されます。 Echo ピンで出力信号を取得します。

4. コントローラー側で、次の式を使用して受信信号を距離に直接変換します。

パルス幅 (μs) / 58= 距離 (cm)

パルス幅 (μs) / 148 = 距離 (インチ)

Arduinoに接続する

モジュールには 4 ピン 2.54mm コネクタが装備されています

VCC:「+」パワー

トリガー(T): 入力信号出力

エコー(R):出力信号出力(信号長は物体からセンサーまでの距離に依存します)

GND: "-" 力

センサーをArduinoに接続したら、あとは作業用のスケッチを記入するだけです。 下のスケッチでは、距離に関する情報がコンピューターのポートに送信され、距離が 30 センチメートル未満になると、ピン 13 に接続された LED が点灯します。

プログラムコードの例:

#トリガー 9 を定義 #エコー 8 を定義 #LEDPin 13 を定義 void 設定 // 出力として開始 pinMode(エコー、入力); //入力として開始 pinMode(ledピン, 出力); シリアル.begin(9600); /* 通信速度を設定します。 私たちの場合はコンピューターを使用しています */) unsigned int impulseTime=0; unsigned int distance_sm=0; 空所 ループ() (digitalWrite(Trig, HIGH); /* 距離計のトリガー入力にパルスを適用します */遅延マイクロ秒(10); // 10 マイクロ秒に等しい digitalWrite(Trig, LOW); // impulseTime=pulseIn (Echo, HIGH ) を無効にします。 // パルス長を測定する距離_sm=インパルス時間/58; シリアル.println(距離_sm); // ポートに出力 if (距離_sm<30) // 距離が30センチメートル未満の場合(digitalWrite(ledPin, HIGH); // LEDが点灯する) else (digitalWrite (ledPin, LOW ); // それ以外の場合はオフ ) 遅延 (100); /* 0.1 秒待ちます。次のパルスは、前のパルスからのエコーが消えた後にのみ送信できます。 この時間をサイクル周期と呼びます。 パルス間の推奨期間は少なくとも 50 ミリ秒である必要があります。 */ }

追加の実例:

距離計とサーボドライブ間の相互作用。 距離計で測定した距離はサーボドライブの回転角に変換されます。

サンプルコード

//Arduino IDE 1.0.1でテスト済み#含む #coef 10 を定義します //(対応係数1cmあたり10度)#define Dead_zone 4 #define max_value 22 #define Trig 9 #define Echo 8 #define LEDPin 13 #define servoPin 11 サーボ myservo; 空所 設定() (pinMode(Trig, OUTPUT); // 出力として開始 pinMode(エコー、入力); //入力として開始 pinMode(ledピン, 出力); myservo.attach(サーボピン); myservo.write(0); ) unsigned int impulseTime=0; unsigned int distance_sm=0; 空所 ループ() (digitalWrite(Trig, HIGH); /* 入力にパルスを適用します距離計トリガー */ 遅延マイクロ秒 (10); // 10 マイクロ秒に等しい digitalWrite(Trig, LOW); // 無効化 impulseTime =pulseIn (Echo, HIGH ); // パルス長を測定する距離_sm = インパルス時間/58; // センチメートルに変換します if (距離_sm >= デッドゾーン && 距離_sm<= max_value) { myservo.write (coef * (distance_sm - dead_zone)); } else if (distance_sm < dead_zone)// 距離が 4 cm 未満の場合、サーボは 0 度になります( myservo.write (0); ) else ( myservo.write (180); ) 遅延 (100); /* 0.1 秒待ち、 次のパルスは、前のパルスからのエコーが消えた後にのみ送信できます。 この時間をサイクル周期と呼びます。 パルス間の推奨期間は少なくとも 50 ミリ秒である必要があります。 */ }

新しい記事

● プロジェクト 23: 超音波距離センサー HC-SR04。 動作原理、接続例

この実験では、距離を測定するための超音波センサーを調べ、センサーの読み取り値を WH1602 LCD 画面に表示するためのプロジェクトを作成します。

必要なコンポーネント:

超音波距離計 HC-SR04 (図 23.1) は、超音波信号の受信機と送信機が 1 つの基板上に配置されています。 エミッタは信号を生成し、その信号は障害物から反射されてレシーバに到達します。 信号が物体に到達してから戻ってくるまでの時間を測定することで、距離を推定できます。 受信機と送信機自体に加えて、ボードには、このセンサーの操作を簡単かつ便利にするために必要な配線も含まれています。

超音波距離計 HC-SR04の特徴:

測定範囲 - 2 ~ 500 cm。
。 精度 - 0.3 cm。
。 視野角 -< 15°;
。 供給電圧 - 5 V。

センサーには 4 つの 2.54 mm 標準ピンがあります。

VCC - +5 V 電源。
。 トリガー (T) - 入力信号出力。
。 Echo (R) - 出力信号出力。
。 GND - 接地。

データを取得する一連のアクションは次のとおりです。

10 µs パルスを Trig ピンに印加します。
。 距離計の内部では、入力パルスは周波数 40 kHz の 8 つのパルスに変換され、エミッター T を通して前方に送信されます。
。 障害物に到達すると、送信されたパルスが反射されて受信機 R で受信され、エコー ピンに出力信号が生成されます。
。 コントローラー側で、次の式を使用して受信信号を距離に直接変換します。

パルス幅 (μs) / 58 = 距離 (cm);
-- パルス幅 (μs) / 148 = 距離 (インチ)。

私たちの実験では、Arduino ボードに 1 m 未満の距離に近づくとオンになる音声アラームを作成します。センサーは回転サーボのブラケットに配置され、180° の視野角で空間を監視します。 。 センサーが半径1m以内の物体を検知すると、ピエゾエミッターに音声信号が送られ、サーボの回転が停止します。 要素の接続図を図に示します。 23.2.

米。 23.2. 音声信号伝達のための要素の接続図

スケッチを作成するときは、サーボ ドライブを操作するための Servo ライブラリと Ultrasonic ライブラリを使用します。
HC-SR04センサーを備えたArduinoを操作するには、既製のライブラリであるUltrasonicがあります。
Ultrasonic コンストラクターは、Trig ピンと Echo ピンがそれぞれ接続されているピンの番号という 2 つのパラメーターを取ります。

超音波 超音波(12,13)​​;

スケッチの内容をリスト 23.1 に示します。

#含む // サーボライブラリを接続しますサーボ servo1; const int pinServo=8 ; // サーボドライブ接続用のピン int pos = 0 ; // サーボ位置を格納する変数 int dir =1 ; // サーボの動作方向 // HC-SR04 接続用ピン Trig - 12、Echo - 13超音波 超音波( 12 , 13 ) ; float dist_cm; // 距離の変数、cm // スピーカーをピン 9 に接続します int スピーカーピン = 9 ; void setup(){ // servo1 変数を pinServo1 ピンに接続します servo1.attach(ピンサーボ1); pinMode(スピーカーピン, 出力); ) ボイドループ()(servo1.write(pos); // サーボを結果の角度まで回転させます遅延(15); // 一時停止してサーボが回転するのを待ちます float dist_cm = 超音波.レンジング(CM); if (距離_cm<100 && dist_cm>20 ) トーン(スピーカーピン,); // ピエゾブザーを有効にする else (tone(speakerPin,0); // ピエゾブザーを無効にする pos=pos+dir; // サーボ位置変数を変更する if (pos==0 || pos==180 ) dir=dir*(-1 ); // 進行方向を変える } }
接続順序:

1. 距離センサー HC-SR04 をサーボドライブに取り付けます。
2. 図の図に従って、HC-SR04センサー、ピエゾブザー、サーボドライブをArduinoボードに接続します。 23.2.
3. リスト 23.1 のスケッチを Arduino ボードにロードします。
4. サーボドライブの周期的な動きを観察します。物体が HC-SR04 センサーの視野に入ると、ピエゾブザーが信号を発し、サーボドライブが停止し、物体がセンサーの視野から消えると、センサーが反応すると、サーボドライブが動きを再開します。

番組一覧

こんにちは、親愛なるプログラマーの皆さん。 今日は3回目のレッスンに進みます。 超音波距離計 HC-SR04 を Arduino に接続する方法を学びます。。 整理しましょう 距離計の動作原理、このデバイスの特性とプログラミング。

さあ、始めましょう! まずは距離計の特徴から見ていきましょう。

超音波センサー HC-SR04の特徴

このような超音波センサーの赤外線センサーに対する大きな利点は、超音波センサーが光源や色の障害物の影響を受けないことです。 薄い物体や毛むくじゃらの物体までの距離を測定するのが難しい場合があります。 空気中の音速は温度に依存すると言いたいのです。 したがって、測定誤差は温度の上昇または下降に応じて変化します。

  • 動作電圧 4.8V ~ 5.5V (最大±0.2V)。
  • 測定範囲:2cm~400cm。
  • 動作温度範囲: 0°C ~ 60°C (±10%)。
  • スタンバイモード時の消費電流は最大2mAです。
  • 動作モードでの消費電流は 15 mA です。
  • 超音波の動作範囲は周波数 40 kHz です。
  • 視野角15度。
  • 3 mmの分解能で0.03~0.6 msの距離を測定します。
  • 0.6 から 5 まで誤差は増加します。

センサーには 4 つの出力があります。

  • VCC:「+」電源
  • TRIG (T): 入力信号出力
  • ECHO(R):出力信号出力
  • GND:「-」電源

超音波距離計接続に必要な部品

  • Arduino (私たちの場合 - UNO)
  • ブレッドボード (デバイスを Arduino に簡単に接続するためのブレッドボード)
  • ワイヤー
  • 超音波センサー HC-SR04

超音波距離計 HC-SR04 の動作原理


  1. 持続時間 10 μs のパルスを Trig ピンに適用します。
  2. 距離計の内部では、入力パルスは 40 kHz の 8 パルスに変換され、「T アイ」を通して前方に送信されます。
  3. 障害物に到達した衝撃は反射して「Rアイ」で受信されます。 Echo ピンで出力信号を取得します。
  4. コントローラー側で直接、受信信号を距離に変換します。

距離計をArduinoに接続するための図

超音波センサーを Arduino に接続する図が表示されます。 ご覧のとおり、非常にシンプルで非常に興味深いものです。 ただし、正しい接続を忘れないでください。 私のアドバイス: 接続エラーの検索により多くの時間を費やすことになるため、決して急いでデバイスを接続しないでください。


次のステップは、プログラムのスケッチを検討することです

プログラミング超音波センサー HC-SR04

#定義する Trig 8 /* パルス供給ピンを指定*/
#define Echo 9 /* パルス受信端子を指定*/
void setup() (
ピンモード (トリガー、出力); /*終了として開始 */
ピンモード (エコー、入力); /*入力として開始 */
シリアルの開始 (9600); /* ポート速度を設定します */
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;
void ループ() (
digitalWrite(Trig, HIGH); /* 距離計のトリガー入力にパルスを適用します */
遅延マイクロ秒(10); /* パルスは 10 マイクロ秒続きます */
digitalWrite(Trig, LOW); // パルスをオフにする
impulseTime=pulseIn(エコー、HIGH);
/*インパルスを受信し、その長さを計算します*/
距離_sm =インパルス時間/58; /* 値をセンチメートルに変換します */
Serial.println(距離_sm); /* 値をプログラムポートに出力します */
遅延(200);
}

このコードを貼り付けたら、それをプログラムにロードし、「ポート モニター」を有効にします。 そこにはセンサーから障害物までの距離が表示されるので、物体の距離を変えてみてください。

これはあなたが手に入れるべきものです!



すべてうまくいったことを願っています! ご質問がございましたら、下記までご連絡ください。

サイトの新着情報

>

最も人気のある