超音波距離センサー HC-SR04。 超音波距離計 HC-SR04 を 2 台の超音波 HC SR04 を使用して Arduino に接続します

超音波距離センサー HC-SR04。 超音波距離計 HC-SR04 を 2 台の超音波 HC SR04 を使用して Arduino に接続します

こんにちは、みんな。
このミニレビューでは、以下を使用して独自に作成します。 超音波モジュール距離を測っています...

誠に申し訳ございませんが、梱包・開梱はございません。 私自身、他のレビューでは気に入らないので、自分のレビューを台無しにするつもりはありません。 注文した商品が異常な梱包や非常に卑劣な形態で到着しない限り...
トイレに行くと自動的に照明が点灯し、トイレを出ると自動的に消灯するというアイデアが生まれました。 これらの目的のために、pir スイッチを注文しました。また、念のため、pir センサーも別途注文しました。



スイッチは、家族全員が個別に訪れる部屋に設置されていました。
そして、トイレに行くときに典型的な手順を実行しながらレズギンカを踊ることができる人は誰もおらず、通常の姿勢でフリーズするのは誰にとっても典型的なことであることが判明しました。 ここでビャカが待ち構えていた。 良いこと、永遠のことを考えているだけで、電気がバタンと消えたり、とても迷惑です。
スイッチを調整するあらゆる方法が試みられましたが、望ましい結果は得られませんでした。
私たちは、必要な存在センサーを検出センサーに置き換えることによって、自分自身と物理学を欺くことに失敗しました。
そのため、スイッチと未使用の PIR センサーは次の場所に送られました。 長期保存庫良い時代が来て、彼らの地位が奪われるまで...
ゲートシステム用の複合レーダーですが、まだどこにも取り付けられていません。


電子レンジの電源は当然オフになっているのに、なぜ頭のてっぺんを電子レンジにさらす必要があるのでしょうか。 IR マトリックスだけが残ります。
事はかなり具体的です。 その最小ゾーンは部屋のサイズです。 訪問時にバタンと照明がついたり消えたりします。 しかし、欠点が 1 つあります。 センサーは非常に細心の注意を払っており、すべてが所定の位置に収まることを好みます。 ロール紙を動かしたり、便座を下げたり上げたりした場合は、リセットが必要です。 そして、彼の価格は異常ではありません。
そこで、解決策の模索が続きました。
インターネット上で、簡単なトピックを扱っているサイトを見つけました。 サーキットブレーカー超音波センサーに光が当たります。
このトピックは興味深いものに思えました。特にファームウェアで車輪を再発明する必要がないため、著者は私たちのために最善を尽くしてくれました。彼に感謝します。
図があり、ファームウェアがあります。 残っているのは、シグネットを作成し、出力に本格的な存在センサーを取得することだけです。 それとも理解できないのか...見てみましょう...
センサーはbanggoodで注文しました。配達時間が安定しているこのストアが気に入っています。追跡なしで28〜30日で注文できます。
トラックなしで時間通りに到着しました。 Banggood のトラックなしの小包の梱包は標準で、ゴミ袋だけです...
センサーは帯電防止素材で梱包されていたため、郵便トラブルを免れたのではないかと思います。 :0)
残念ながら帰りにゴミ袋を捨ててしまい、帯電防止剤はすでに家にあるのでセンサー以外は見せるものがなく、センサー自体もすでに製造時に擦り切れてしまっています(足はまっすぐになっています)デバイスのプロセス。
TTXセンサー:
- 45×20×23mm。 LxWxD (D - 脚を伸ばした状態)
- 重量 - 8.28グラム
- 供給電圧 - DC 5V
- 消費電流 - 15mA
- 最小作動距離 - 2 cm。
- 最大作動距離 - 4メートル
- 検出ゾーン角度 - 15 度
簡単に言うと。
センサーはエコー原理に基づいて動作します。 センサーの 1 つのピエゾが周波数 40 kHz のパルスのパケットを放射し、信号がセンサーの前の表面で反射され、反射された信号が別のピエゾで受信され、処理ユニットが受信したデータを処理してパルスを出力します。その長さは超音波信号の距離に比例します。
それらの。 出力にはインパルスがあり、その持続時間は私たちにとって重要です。
当社が製造する自動スイッチ/スイッチでは、マイクロコントローラーのメモリに保存されているパルスの持続時間と、新たに反射されたパルスの持続時間とを比較します。 新しいパルスの持続時間がメモリ内の持続時間より短い場合、マイクロコントローラーは検出ゾーン内に物体があり、ロードをオンにする必要があると判断します。パルスの長さが長い場合は、何もしません。ロードがオンになっている場合はオフにしてください。
さらに遠く:
センサーそのもの。


マイクロ回路上のマーキングは消去されています。


早速描き直しましょう 既製の図 Diptrace では、実験用に印を描いてスカーフを作ります。

製造工程はもう飽きた方も多いと思うのでネタバレで隠しました。
スカーフの作り方を一度ご紹介しました。 今回は何枚か写真を撮りましたが、捨てるのはもったいないです。
私はもうプロセスで人々を苦しめるつもりはありません。ボードについて質問がある場合は、個人メッセージを書いてください。
このトピックに関して私が収集したものと、Diptrace の図と印刷可能なスカーフをダウンロードするためのリンク。
写真を数枚。
スカーフと型紙を用意します。 フォトレジストが塗布されます。


私たちは照らし、洗い、エッチングします。


フォトレジストをエッチングして洗い流します。


マスクを適用し、テンプレートを照明します。


スカーフをカットして穴を開けます。



スカーフそのもの。
回路はATtiny13で組み立てました。
なぜテストではこんなに美しいのでしょうか? それは、el の下で別のボードと同時に行われただけです。 負荷。
なぜラジオ要素はこれほど愚かに配置されているのでしょうか? テストだから。 デバイスが組み立てられ、動作しているかどうかを確認します。 育てて組み立てても意味がありませんでした。


センサーをスカーフにはんだ付けします。


私たちはプログラムします。


その結果、30mA を消費し、5 ボルトの電源を備えた既製のパッケージ化されていないプレゼンス センサーを入手できます。 異物角度 15 度、距離 2 センチメートルから 3.5 メートルの事前にプログラムされた検出ゾーン内で。 検出するとLEDが点灯します。
動作原理は簡単です。 必要な場所にセンサーを向けます。 ボタンを押します。
設定LED(私の場合は赤)が点滅を始めます。
3 つのモードで点滅します。
10% LED 点灯 - 物体が範囲外、負荷オフ。
90% LED が点灯 - 物体が範囲内にあり、負荷がオンになっています。
50% LED が点灯 - 検出ゾーンは空いており、カウントダウンはファームウェアに応じて 60 秒または 10 秒、または 1 秒で、オフになるまでランプが点灯します。
その後、10 秒以内に検知ゾーンから離れる必要があります。
エリアを制限することができます。 これを行うには、設定を記憶する時点でゾーンの境界に立っている必要があります。これにより、ゾーンが制限されます。
パスポート最小2センチを確認します。 写真のように範囲を限定すると、ボックスとセンサーの間に指を入れるとLEDが点灯し、指を離すと消灯します。
ボックスを0.5センチメートル近づけると、LEDが点灯し、デバイスはチューニングを拒否します。


最大4メートルは確認できなかった。 最大距離これは確認されており、デバイスは3.5メートルの距離にいる人物を自信を持って記録します。 の上 3メートル自信を持って私の手を15×15センチメートルの箱に固定します。 負荷をオンにしますが、ボックスを取り外すまでオフになりません。
結論。
- 出来上がった存在センサーが気に入りました。
- 最もシンプルで便利なセットアップ。
- それは実際に動作します。
- 安くて陽気です。
一般に、これは超音波距離測定モジュール HY-SRF05 に基づく適切なデバイスです。
近い将来、場所に合わせて調整します。ボックスを選択するだけです。
ライトを消すことを恐れることなく、希望の位置でフリーズできるようになりました。
興味のある方は、さらに多くの使用方法を考えることができます。 特にこのセンサーは基本的に Arduino エンジニア向けに設計されています。 あるいは、彼らにとってはそうではないかもしれません... +41を購入する予定です お気に入りに追加 レビューが気に入りました +41 +81

Arduino 超音波距離センサーは、比較的シンプルで、十分な精度と可用性があるため、ロボット工学プロジェクトで非常に人気があります。 これらは、障害物を回避したり、物体の寸法を取得したり、部屋の地図をシミュレートしたり、物体の接近や除去を知らせたりするのに役立つデバイスとして使用できます。 このようなデバイスの一般的なオプションの 1 つは距離センサーで、その設計には超音波距離計 HC SR04 が含まれています。 この記事では、距離センサーの動作原理について説明し、Arduino ボードに接続するためのいくつかのオプション、相互作用図、スケッチ例を検討します。

能力 超音波センサー物体までの距離の決定はソナーの原理に基づいています。超音波ビームを送信し、その反射を遅延して受信することで、デバイスは物体の存在と物体までの距離を決定します。 受信機によって生成された超音波信号は障害物に反射され、一定時間後に障害物に戻ってきます。 この時間間隔が、物体までの距離を決定するのに役立つ特性となります。

注意! 動作原理は超音波に基づいているため、このようなセンサーは吸音物体までの距離を測定するのには適していません。 表面が平らで滑らかな物体は測定に最適です。

HC SR04センサーの説明

Arduino距離センサーは非接触型のデバイスであり、高精度な測定と安定性を実現します。 測定範囲は 2 ~ 400 cm であり、その動作は電磁放射による影響をほとんど受けません。 太陽光エネルギー。 HC SR04 Arduino を備えたモジュールキットには、受信機と送信機も含まれています。

超音波距離計 HC SR04 には次の技術パラメータがあります。

  • 供給電圧5V;
  • 動作電流パラメータは 15 mA です。
  • パッシブ状態での現在の強さ< 2 мА;
  • 視野角 – 15°;
  • タッチ解像度 - 0.3 cm。
  • 測定角度 – 30°;
  • パルス幅 – 10 -6 秒。

センサーには 4 つのリード (標準 2.54 mm) が装備されています。

  • ポジティブタイプの電源接点 – +5V;
  • トリガー (T) – 入力信号出力。
  • Echo (R) – 出力信号出力。
  • GND – 「グランド」ピン。

Arduino用SR04モジュールはどこで購入できますか

距離センサーはかなり一般的なコンポーネントであり、オンライン ストアで簡単に見つけることができます。 最も安いオプション(1個あたり40〜60ルーブル)は、伝統的に有名なウェブサイトにあります。

HC-SR04 Arduino用距離センサーモジュール 別のオプション 超音波センサー信頼できるサプライヤーの HC-SR04
近接センサー SR05 超音波式 HC-SR05(性能向上) 信頼できるサプライヤーからの UNO R3 MEGA2560 DUE 用モジュール HC-SR05 HY-SRF05

Arduinoとの連携スキーム

データを取得するには、次の一連のアクションを実行する必要があります。

  • 10 マイクロ秒のパルスを Trig 出力に適用します。
  • Arduino に接続された hc sr04 超音波距離計では、信号は周波数 40 kHz の 8 つのパルスに変換され、エミッターを介して前方に送信されます。
  • パルスが障害物に到達すると、障害物から反射され、R レシーバーによって受信され、Echo 出力に入力信号が提供されます。
  • コントローラー側では、受信信号を数式を使用して距離に変換する必要があります。

パルス幅を 58.2 で割るとセンチメートル単位のデータが得られ、148 で割るとインチ単位でデータが得られます。

HC SR04をArduinoに接続する

超音波距離センサーを Arduino ボードに接続するのは非常に簡単です。 接続図を図に示します。

グランドピンをArduinoボードのGNDピンに接続し、電源出力を5Vに接続します。 Trig 出力と Echo 出力をデジタル ピンを介して Arduino に接続します。 ブレッドボードを使用した接続オプション:

HC SR04を使用するためのライブラリ

Arduino 上で HC SR04 距離センサーを操作しやすくするために、NewPing ライブラリを使用できます。 ping の問題はなく、いくつかの新機能が追加されています。

ライブラリの機能は次のとおりです。

  • さまざまな超音波センサーを操作する機能。
  • 1 本のピンだけで距離センサーを使用できます。
  • エコー ping がない場合でも 1 秒の遅延はありません。
  • 簡単なエラー修正用のデジタル フィルターが内蔵されています。
  • 最も正確な距離計算。

NewPingライブラリをダウンロードできます

HC SR04センサーによる距離測定の精度

センサーの精度は、いくつかの要因によって決まります。

  • 気温と湿度。
  • 物体までの距離。
  • センサーに対する相対的な位置(放射図による)。
  • センサーモジュール要素の性能の質。

超音波センサーの動作原理は、空気中を伝播する音波の反射現象に基づいています。 しかし、物理学の授業でご存知のように、空気中の音の伝播速度は、その空気自体の特性 (主に温度) に依存します。 センサーは波を発し、戻ってくるまでの時間を測定しますが、波がどのような媒体で伝播するかは分からず、計算に一定の時間がかかります。 平均値。 実際の条件では、気温要因により、HC-SR04 は 1 ~ 3 ~ 5 cm の誤差が生じる場合があります。

オブジェクト要素までの距離は重要です。なぜなら... 近隣の物体からの反射の確率が増加し、信号自体は距離とともに減衰します。

また、精度を高めるには、センサーを正しく向ける必要があります。物体が放射パターンの円錐内にあることを確認してください。 簡単に言えば、HC-SR04の「目」は被写体をまっすぐに見る必要があります。

誤差と測定の不確実性を減らすために、通常は次のアクションが実行されます。

  • 値は平均化されます(数回測定し、スパイクを除去してから平均を求めます)。
  • センサー (たとえば、) を使用して温度が測定され、補正係数が適用されます。
  • センサーはサーボモーターに取り付けられており、これを使って「頭を回転」させ、放射パターンを左または右に動かします。

距離センサーの使用例

例を見てみましょう 単純なプロジェクト Arduino Uno ボードと HC SR04 距離センサーを搭載。 スケッチでは、オブジェクトまでの距離の値を受け取り、Arduino IDE のポート モニターに出力します。 スケッチと接続図を簡単に変更して、物体が近づいたり離れたりしたときにセンサーが信号を送るようにすることができます。

センサーをArduinoに接続する

スケッチを作成するとき、センサーを接続するための次のピン配置オプションが使用されました。

  • VCC:+5V
  • トリガー – 12ピン
  • エコー – 11ピン
  • アース (GND) – アース (GND)

スケッチ例

相対的にセンサーを使ってすぐに作業を開始しましょう 複雑なオプション– 外部ライブラリを使用せずに。

このスケッチでは、次の一連のアクションを実行します。

  • 短いパルス (2 ~ 5 マイクロ秒) で、距離センサーをエコーロケーション モードに切り替えます。このモードでは、周波数 40 KHz の超音波が周囲の空間に送信されます。
  • センサーが反射信号を分析し、遅延に基づいて距離を決定するのを待ちます。
  • 距離の値を取得します。 これを行うには、HC SR04 が ECHO 入力で距離に比例したパルスを生成するまで待ちます。 パルス持続時間は、pulseIn 関数を使用して決定します。この関数は、信号レベルが変化するまでの経過時間を返します (この場合、パルスの立ち下がりエッジが現れるまで)。
  • 時間を受信したら、その値を定数で割ってセンチメートル単位の距離に変換します (SR04 センサーの場合、「そこ」信号では 29.1、「後方」信号では同じで、合計は 58.2 になります) )。

距離センサーが信号を読み取らない場合、出力信号の変換では短いパルスの値 (LOW) が取得されることはありません。 一部のセンサーの遅延時間はメーカーによって異なるため、上記のスケッチを使用するときはその値を手動で設定することをお勧めします (サイクルの開始時にこれを行います)。

距離が 3 メートルを超えると、HC SR04 の動作が低下し始めるため、遅延時間を 20 ms 以上に設定することをお勧めします。 25または30ミリ秒。

#define PIN_TRIG 12 #define PIN_ECHO 11 長時間、cm; void setup() ( // シリアル ポート経由の通信を初期化する Serial.begin (9600); // 入出力を定義 pinMode(PIN_TRIG, OUTPUT); pinMode(PIN_ECHO, INPUT); ) void loop() ( // First 2 ~ 5 マイクロ秒続く短いパルスを生成します。 上級信号を受信したら、約 10 マイクロ秒待ちます。 この時点で、センサーは 40 KHz の周波数で信号を送信します。 遅延マイクロ秒(10); デジタル書き込み(PIN_TRIG, LOW); // エコーロケーター上の音響信号の遅延時間。 持続時間 = パルスイン(PIN_ECHO, HIGH); // あとは時間を距離に変換する作業が残っています cm = (duration / 2) / 29.1; Serial.print("オブジェクトまでの距離: "); シリアルプリント(cm); Serial.println(「参照してください。」); // スケッチを正しく動作させるための測定間の遅延遅延(250); )

NewPingライブラリを使用してスケッチする

次に、NewPing ライブラリを使用したスケッチを見てみましょう。 コードは大幅に簡素化されます。 前述のすべてのアクションはライブラリ内に隠されています。 必要なのは、NewPing クラスのオブジェクトを作成し、距離センサーを接続するピンを指定し、オブジェクトのメソッドを使用することだけです。 この例では、距離をセンチメートル単位で取得するには、ping_cm() を使用する必要があります。

#含む #define PIN_TRIG 12 #define PIN_ECHO 11 #define MAX_DISTANCE 200 // 正しいとみなされる最大距離を決定する定数。 // 距離を取得するためにそのメソッドを使用するオブジェクトを作成します。 // パラメータとして、センサーの ECHO 出力と TRIG 出力が接続されているピン番号を渡します。 NewPing sonar(PIN_TRIG, PIN_ECHO, MAX_DISTANCE); void setup() ( // シリアルポート経由の通信を 9600 の速度で初期化します Serial.begin(9600); ) void loop() ( // 正しい動作には開始遅延が必要です。delay(50); // 値を取得します距離センサーから取得し、それを変数に保存します。 unsigned int distance = sonar.ping_cm(); // ポートモニターに距離を出力します。 Serial.print( distance) Serial.println("cm");

超音波距離計 HC SR04を1ピンで接続した例

HC-SR04とArduinoの接続は1本のピンで行えます。 このオプションは、大規模なプロジェクトに取り組んでいて、十分な空きピンがない場合に便利です。 接続するには、TRIG ピンと ECHO ピンの間に 2.2K の抵抗を取り付け、TRIG ピンを Arduino に接続するだけです。

#含む #define PIN_PING 12 // Arduino ピンは距離センサーのトリガー ピンとエコー ピンに接続されます。 #define MAX_DISTANCE 200 // 制御できる最大距離 (400 ~ 500cm)。 NewPing ソナー(PIN_PING、PIN_PING、MAX_DISTANCE); // ピンと最大距離を調整 void setup() ( Serial.begin(9600); // データと 115200 bps の送信周波数でプロトコルを開きます。 ) void loop() ( late(50); // 遅延 50生成された波間のミリ秒 29 ミリ秒 – 最小 許容値 unsigned int distanceSm = sonar.ping(); // 信号を作成し、その継続時間パラメーターを µs (uS) 単位で取得します。 Serial.print("Ping: "); Serial.print(距離Sm / US_ROUNDTRIP_CM); // 時間パラメータを距離値に変換し、結果を表示します (0 は距離を超えることに対応します) 許容限界) Serial.println("cm"); )

簡単な結論

超音波距離センサーは汎用性があり、ほとんどの趣味のプロジェクトに使用できるほど正確です。 この記事では、Arduino ボードに簡単に接続できる、非常に人気のある HC SR04 センサーについて説明します (このためには、すぐに 2 つの空きピンを用意する必要がありますが、1 つのピンを使用する接続オプションもあります)。 センサーを操作するための無料のライブラリがいくつかあります (この記事ではそのうちの 1 つである NewPing のみが説明されています) が、これらを使用しなくても問題ありません。センサーの内部コントローラーと対話するためのアルゴリズムは非常に単純であり、それを示しました。記事上で。

ベース 自分の経験、HC-SR04センサーは10cmから2mの距離で1cm以内の精度を示すと主張できますが、それより短い距離や長い距離では、強い干渉が発生する可能性があり、これは周囲の物体と使用方法に大きく依存します。 しかし、ほとんどの場合、HC-SR04は素晴らしい仕事をしてくれました。

この記事では動作原理を見ていきます 超音波距離計 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 ミリ秒である必要があります。 */ }

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

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

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

サーモスタット 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 ~ 500 cm。

精度 - 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 に接続する必要があります。



サイトの新着情報

>

最も人気のある