電卓 HC-SR04 超音波距離測定モジュール。 レンジファインダーHC-SR04とArduino Hc sr04の接続回路図

HC-SR04 超音波距離測定モジュール。 レンジファインダーHC-SR04とArduino 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);
}

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

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



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

オブジェクトまでの距離を測定するには、次を使用できます。 超音波距離計 HC-SR04はロケーターの原理で動作します。 コウモリ。 このようなセンサーを使用して、障害物を回避したり、回路を組み立てたりするさまざまなロボットを設計できます。 自動スイッチオン照明またはその他の負荷、超音波を収集する セキュリティシステム。 HC-SR04 レンジファインダーは、さまざまなマイクロコントローラーに接続できる既製のモジュールです。Arduino UNO の中国版と組み合わせて例を実行します。

の上 表側センサー 送信 (T) と受信 (R) の 2 つのセンサーがあります。 送信センサーは、周波数 40 kHz の音響パルスを生成します。 障害物に到達すると、その衝撃は反射され、受信センサーによって捕捉されます。 十分に 高い正確性物体までの距離は 2 cm ~ 4 m の範囲で判断できます。センサーの動作には影響しません。 日光そして物体の色。

の上 裏側センサーは電子機器にあります。 MAX3232チップは送信センサーを制御します。 LM324 オペアンプは、受信センサーから受信した信号を増幅します。

マイクロコントローラーに接続するには、4 つのピンが使用されます。

Vcc– Arduino の 5V ピンに接続します。
トリガー– デジタル入力には、10 μs の持続時間を持つ論理ユニットが供給されます。 次に、センサーは 40 kHz の周波数で 8 サイクルの超音波信号を送信します。 反射信号を受信すると、物体までの距離が計算されます。
エコー– デジタル出力。 計算が完了すると、論理ユニットが適用されます。 論理ユニットをファイルする時間は、測定された距離に比例します。
Trig と Echo は Arduino のデジタル ピンに接続されており、スケッチで指定されています。
グランド– Arduino ボードの対応するピンに接続します。

Unoの中国製類似品の例を使用した、HC-SR04とArduinoの接続図。

Arduinoで書いてみよう スケッチNo.1、オブジェクトまでの距離が変わります。 例では、「」をピン留めします。 トリガー" は Uno のピン 2 に接続されており、ピン " エコー"を3ピンにします。

int TrigPin = 2; // Trig ピンは Arduino の 2 番ピンに接続されます。
int EchoPin = 3; // エコーピンはArduinoの3番ピンに接続されています。

void setup() (
Serial.begin (9600);//COM ポートの速度を設定します。
pinMode(TrigPin, OUTPUT);//Trig ピンを出力として設定します。
pinMode(EchoPin, INPUT);//Echo ピンを入力として設定します。
}
void ループ() (
int 距離、期間;
.
.
.
.
Serial.print(duration);//ディスプレイに距離値を表示します。
Serial.println("cm");
late(1000);//1000ミリ秒待ちます。
}

ライン " 期間 = 期間/29/2;" の距離を計算します。" cm"、インチ単位で計算する必要がある場合、行は次のようになります。" 期間 = 期間/74/2;».

スケッチの結果はシリアル ポート モニター ウィンドウに表示されます。

スケッチその2物体までの距離が 50 cm 未満の場合、Uno ボードに組み込まれた LED が点灯します。LED はピン 13 にぶら下がっています。

int トリガピン = 2;
int EchoPin = 3;
int LedPin = 13;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(LedPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
digitalWrite(LedPin、HIGH); // LEDが点灯する
}
それ以外
{
デジタル書き込み(LedPin、LOW); // そうしないと点灯しません
}
遅延(1000);
}

記事「」で説明したように、LED の代わりに白熱灯を接続すると、シンプルな自動照明システムが完成します。 このような構造物を部屋のどこかに置くと、訪問者が距離計の範囲に入ると自動的に部屋の照明が点灯します。 距離計の静止電流は 2 mA 未満です。

スケッチ #3 LEDを圧電素子(スクイーカー、ブザー)に置き換えてみましょう。物体までの距離が50 cm未満の場合に音を発します。これにより、単純な音響レーダーまたは音響アラームが得られます。

同様のブザーは、コンピュータで BIOS を通知するために使用されたり、子供用のおもちゃでも音を鳴らして使用されます。

接続図はシンプルで、ブザーの黒い線をArduinoのGNDピンに接続し、赤い線を任意の空いているデジタルピンに接続します。PWM機能(3、5、6、9、10、11、13)を使用します。 。 この例では、これはピン 5 です。関数を使用してピエゾ エミッタを接続します。 アナログ書き込み()。 この機能では音のピッチを変更することはできません。音は常に約 980 Hz の周波数になります。

int トリガピン = 2;
int EchoPin = 3;
int BeepPin = 5;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(BeepPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
アナログ書き込み(ビープピン, 50); // ピエゾエミッタをオンにする
}
それ以外
{
アナログ書き込み(ビープピン, 0); // ピエゾエミッターをオフにする
}
遅延(1000);
}

対象物までの距離が50cm未満になるとブザーが鳴ります。

スケッチ #4ブザーも使用しますが、機能のみを使用します トーン()を使用すると、さまざまな状況でサウンドのトーンを変更できます。

int トリガピン = 2;
int EchoPin = 3;
int BeepPin = 5;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(BeepPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
}
それ以外
{
noTone(ビープピン); // ピエゾエミッターをオフにする
}
遅延(1000);
}

列をなして " トーン(ビープピン、500);「パラメータ」 500 「音の周波数は 500 Hz に設定されています。このパラメータは 31 Hz から、ピエゾ エミッタと人間の聴覚のパラメータによって制限される限界まで設定できます。このスケッチは、スケッチ No. 3 の実験を繰り返しますが、 tone() 関数。サウンドの周波数を設定します。

スケッチ #5音の音色を変えてみましょう。 50cm以上離れると周波数1000Hzの音が出ます。 物体までの距離が 50 cm 未満になると、音の周波数が 500 Hz に変わります。

int トリガピン = 2;
int EchoPin = 3;
int BeepPin = 5;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(BeepPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
トーン(ビープピン、500); // 周波数 500 Hz のピエゾ エミッタをオンにします
}
それ以外
{
トーン(ビープピン、1000); // 1000 Hz の周波数でピエゾ エミッターをオンにします
}

機能の使用 トーン() Arduino のピン 3 と 11 での PWM の使用が妨げられるという事実に注意する必要があります (これは Mega プラットフォームには当てはまりません)。 私の例で関数を言ってみましょう トーン()はピン 5 で呼び出されますが、ピン 3 と 11 での PWM の動作に干渉する可能性があります。これは、さらにデバイスを構築するときに考慮する必要があります。 もうひとつ、機能について トーン()複数のピエゾ エミッターを同時に使用することはできません。 2 番目のピエゾ エミッターのサウンドをオンにするには、関数を使用して最初のピエゾ エミッターをオフにする必要があります。 ない1().

これらの実験の過程で、距離のより正確な測定は最大 2 m の距離で行われることがわかりました。また、効果的な視野を確保するには、距離計を対象物に対して直角に配置する必要があります。角度は約15°です。

新しい記事

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

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

必要なコンポーネント:

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

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

測定範囲 - 2~500cm。
。 精度 - 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 センサーの視野に入ると、ピエゾブザーが信号を発し、サーボドライブが停止し、物体がセンサーの視野から消えると、センサーが反応すると、サーボドライブが動きを再開します。

番組一覧

サーモスタット W1209 DC、リレーモジュール、モーションセンサー HC-SR501、Wi-Fi モジュール ESP8266-12E、モーションセンサー HC-SR501、電源、ブラシモーターコントローラーチップ、IR リモコン、無線モジュール NRF24L01、OKI 120A2、SD カードモジュール、ブラシ モーター コントローラー チップ、M590E GSM GPRS モデム、リアルタイム クロック DS 3231/DS 1307、LM2596 回路上の Mini 360、L293D、赤外線距離センサー、リアルタイム クロック、HC-SR501、LM2596 回路上の Mini 360 電源、L298Nコントローラー、HC-SR501、GSM GPRS、M590E GSM GPRS モデム、リアルタイム クロック DS 3231/DS 1307、Wi-Fi モジュール ESP8266-12E、カード モジュール、電源、ミニ 360、L293D、LM2596 回路上のミニ 360 電源、無線モジュール、IRリモコン、IRリモコン、イーサネットシールド、ブラシモーターコントローラーチップ、ブラシモーターコントローラーチップ、IRリモコン、SDカードモジュール、NRF24L01無線モジュール、OKIモーター、L293D、ステッピングモーター、電源、L293D、ミニLM2596 回路上の 360 度電源、SD メモリ カード、イーサネット シールド、HC-SR501 モーション センサー、ESP8266-12E Wi-Fi モジュール、OKI 120A2 ステッピング モーター、ステッピング モーター、

超音波距離計 HC-SR04

距離センサーについて学びましょう。これは、次の章で説明するプロジェクトで役立ちます。 HC-SR04 超音波距離計は、超音波信号の受信機と送信機が 1 つの基板上に配置されています。 受信機と送信機自体に加えて、ボードには、このセンサーの操作をシンプルかつ簡単にするために必要な配線も含まれています。



このセンサーは消費電力が低いため、コンセントに接続されていない移動ロボットの場合にはこれも重要な利点となります。 HC-SR04 センサーは 5 V で駆動され、Arduino に接続するときにも便利です。

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

測定範囲 - 2~500cm。

精度 - 0.3cm。

視野角 -< 15 °;

供給電圧 - 5 V。

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

VCC - +5 V 電源;

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

Echo (R) - 出力信号出力。

GND - 接地。

センサーの動作確認

プログラムをアップロードする

スケッチコード

/* NewPing ライブラリを使用してスケッチします。これは HC-SR04 センサーにも使用できます

ここに示されている SRF06 は超音波センサーの接続を可能にします

Arduinoの1つのピンを使用します。 さらに、0.1 µF コンデンサをセンサーのエコー ピンとトリガー ピンに接続できます。*/

#含む

#define TRIGGER_PIN 12 // Arduino ピンは超音波センサーのトリガー ピンに接続されます。
#define ECHO_PIN 11 // Arduino ピンが超音波センサーのエコー ピンに接続されます。
#define MAX_DISTANCE 200 // 制御する最大距離 (センチメートル単位)。 このようなセンサーの最大距離は400〜500cmの範囲です。

NewPing ソナー(TRIGGER_PIN、ECHO_PIN、MAX_DISTANCE); // ピンと最大距離を設定します

void setup() (
シリアル.begin(115200); // データ転送速度 115200 bps のシリアル プロトコルを開きます。
}

void ループ() (
遅延(500); // 波形生成の間に 500 ミリ秒の遅延。 29 ミリ秒が許容可能な最小遅延です。
unsigned int us = sonar.ping(); // 信号を生成し、時間をマイクロ秒 (uS) で取得します。
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM); // 時間を距離に変換し、結果を表示します (0 は範囲外に相当します)
Serial.println("cm");
}

オープンポートモニター

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

距離計には 2 つのピエゾ素子が含まれており、1 つは信号発信器として機能し、もう 1 つは受信器として機能します。 エミッタは信号を生成し、その信号は障害物から反射されてレシーバに到達します。 信号が物体に到達してから戻ってくるまでの時間を測定することで、距離を推定できます。

一連のアクションは次のとおりです。

  1. 10 μs の持続時間のパルスを Trig ピンに適用します。
  2. 距離計内で、入力パルスは 40 kHz の 8 パルスに変換され、エミッター T を介して前方に送信されます。
  3. 障害物に到達すると、送信されたパルスは反射されて受信機 R で受信され、エコー ピンに出力信号が生成されます。
  4. コントローラー側で、次の式を使用して受信信号を距離に直接変換します。

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

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

図書館 超音波

HC-SR04センサーを備えたArduinoを操作するには、既製のライブラリであるUltrasonicがあります。 Ultrasonic コンストラクターは、Trig ピンと Echo ピンがそれぞれ接続されているピンの数という 2 つのパラメーターを取ります。

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

ここでは、Trig センサー ピンは Arduino の 12 番ピンに接続され、Echo ピンは 13 番ピンに接続されています。

ライブラリには Ranging メソッドが 1 つあり、そのパラメータはオブジェクトまでの距離をセンチメートルまたはインチのどちらに変換するかについて設定されています。

#CM1を定義

#INC 0 を定義

したがって、行 Ultrasonic.Randing(CM) は、(長いタイプの) オブジェクトまでの距離をセンチメートル単位で返します。

ライブラリ ファイルは、書籍に付属する電子アーカイブの library/Ultrasonic フォルダにあります。 プロジェクトでライブラリを使用するには、Arduino インストール ディレクトリのライブラリ フォルダにライブラリを配置します。

この例では、オブジェクトまでの距離をセンチメートル単位でシリアル ポートに出力するスケッチが示されています。

スケッチコード

#include "Ultrasonic.h"

// センサーが接続されています:

// Trig - 12、Echo - 13 超音波 Ultrasonic(12, 13);

シリアル.begin(9600);

float dist_cm = 超音波.レンジング(CM); Serial.println(dist_cm);

HC-SR04センサーをArduinoに接続する

HC-SR04超音波センサーが距離を測定し、得られた値をArduino IDEのシリアルモニターウィンドウに表示します。

簡単なメモ: HC-SR04 の使用をさらに簡単にする、無料で利用できる優れた NewPing ライブラリがあります。その使用例も以下に示します。// 短い LOW パルスを生成して、「クリーンな」HIGH パルスを提供します。

デジタル書き込み(trigPin, LOW);

遅延マイクロ秒(5);

digitalWrite(trigPin, HIGH);

遅延マイクロ秒(10);

デジタル書き込み(trigPin, LOW);

// 超音波センサーからデータを読み取ります: HIGH 値。

// 送信間の時間 (マイクロ秒単位) に依存します

// エコーロケーターでの音波とその返送受信。

pinMode(echoPin, INPUT);

継続時間 = パルスIn(echoPin, HIGH);

// 時間を距離に変換します

cm = (持続時間/2) / 29.1;

インチ = (期間/2) / 74;

Serial.print(インチ);

Serial.print("in, ");

シリアルプリント(cm);

Serial.print("cm");

Serial.println();

スケッチコード

#含む

#define TRIGGER_PIN 12

#define ECHO_PIN 11

#define MAX_DISTANCE 200

NewPing ソナー(TRIGGER_PIN、ECHO_PIN、MAX_DISTANCE); // ピンと最大距離を設定します。

シリアル.begin(9600);

unsigned int uS = sonar.ping_cm();

Serial.print(us);

Serial.println(“cm”);

HC-SR04がエコー信号を読み取れない場合、出力信号はLOWに変換されません。 Devantec センサーと Parallax センサーの遅延時間はそれぞれ 36 ミリ秒と 28 ミリ秒です。 上のスケッチを使用すると、プログラムが 1 秒間フリーズします。 したがって、遅延パラメータを指定することをお勧めします。

HC-SR04 センサーは、10 フィートを超える距離を測定するとうまく機能しません。 パルスの戻り時間は約 20 ミリ秒なので、このような場合は遅延時間を 20 ミリ秒以上、たとえば 25 ミリ秒や 30 ミリ秒に設定することをお勧めします。

HC-SR04 超音波距離センサーは 1 つの Arduino ピンにのみ接続できます。 これを行うには、トリガー ピンとエコー ピンの間に 2.2 kOhm の抵抗を取り付け、トリガー ピンのみを Arduino に接続する必要があります。

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

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

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

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

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

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

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

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

実際のところ、どんな超音波センサーでも10分の1メートル単位で誤差が生じるのは事実です。これは、さまざまな素材、環境、その他の変数が移動速度や音の表面からの反射に影響を与える可能性があるためです。 そしてこのプロジェクトでは、現実世界では機能しない理想的なシステムを取り上げます。

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

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

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

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

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

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

3. ツール

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

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

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

しかし、良い点は、デバイスの動作が電磁放射や太陽エネルギーの影響をまったく受けないことです。 また、センサー キットには必要な受信機と送信機がすでに含まれており、Arduino 超音波距離計を組み立てるときに役立ちます。

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

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スクリーンにデータを表示するレッスンも行う予定です。

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

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



サイトの新着情報

>

最も人気のある