時々それは必要です 距離を測定する そしてそのためにあなたはあなたの処分でいくつかのセンサーを持っています。 私たちはすでにについて話すために記事を捧げました VL52L0Xなどの高精度距離センサー。 このセンサーはToFタイプであり、レーザーのおかげで非常に正確な測定に基づいていました。 しかし、精度がそれほど重要ではなく、低価格で距離を測定できるものが必要な場合は、別の可能性があります。 あなたがあなたの指先に持っているのはHC-SR04です.
の場合 HC-SR04距離センサー、距離は超音波で測定されます。 このシステムは、VL52L0Xの光学的方法に似ています。 つまり、放出され、跳ね返りがあり、受信されますが、この場合、レーザーまたはIRではなく、超音波です。 エレクトロニクス、ロボット工学、またはアマチュアメーカーに情熱を注いでいる場合は、ロボットの障害物検出システム、プレゼンスセンサーなど、さまざまなDIYプロジェクトに使用できます。
HC-SR04とは何ですか?
さて、前の段落ですでにコメントしたように、それは明らかです、 HC-SR04は超音波に基づく低精度距離センサーです。 原則として通常は使用されませんが、これを使用すると、簡単かつ高速な方法で距離を測定できます。 ほとんどの場合、障害物を検出し、センサーの応答に関連する他のメカニズムを通じて障害物を回避するためのトランスデューサーとして使用されます。
の外観 HC-SR04は非常に特徴的で、簡単に認識できます。 さらに、Arduinoスターターキットで非常に人気のあるアイテムであり、多くのプロジェクトに必要です。 このモジュールが統合する実際の超音波デバイスである40つの「目」があるため、簡単に識別できます。 それらのXNUMXつは超音波エミッターであり、もうXNUMXつはレシーバーです。 XNUMX Khzの周波数で動作するため、人間には聞こえません。
超音波センサーの原理
その始まり これは、石を井戸に投げ込んで深さを測定するときに使用されるものをシミュレートすることに基づいています。。 あなたは石を投げ、それが底に落ちるのにかかる時間を計ります。 次に、経過時間の速度を計算し、石が移動した距離を取得します。 しかし、その場合、センサーはあなたです。
HC-SR04では、エミッターは超音波を放射し、それらがオブジェクトまたは障害物に当たって跳ね返ると、レシーバーによってキャプチャされます。 ザ・ 回路は必要な計算を行います そのエコーの距離を決定します。 これは、イルカ、クジラ、コウモリなどの一部の動物が障害物や獲物などを見つけるために使用するシステムを知っている場合にも、よく知っているかもしれません。
パルスが送信されてから応答が受信されるまでの時間をカウントすることにより、時間、したがって距離を正確に決定できます。 覚えておいてください[空間=速度時間] ただし、HC-SR04の場合は、超音波が出て宇宙を移動してから障害物に当たって戻るまでの時間を測定しているので、この量を/ 2で割る必要があります。この半分...
ピン配置とデータシート
取得したモデルの完全なデータを表示するには、最良の方法は データシートを見つける メーカーのコンクリート。 たとえば、ここに Sparkfunデータシート、しかしPDFで利用できるものはもっとたくさんあります。 ただし、HC-SR04の最も重要な技術データは次のとおりです。
- ピン配置:電源(Vcc)、トリガー(トリガー)、レシーバー(エコー)、およびグランド(GND)用の4つのピン。 トリガーは、センサーをアクティブにするタイミング(超音波が起動するタイミング)を示します。これにより、受信機が信号を受信してからの経過時間を知ることができます。
- 給餌:5v
- 超音波周波数:40 Khz、人間の耳は20Hzから20Khzまでしか聞こえません。 20Hz(超低周波音)未満および20Khz(超音波)を超えるものはすべて知覚できなくなります。
- 消費(スタンバイ):<2mA
- 消費作業:15mA
- 有効角度:<15º、オブジェクトの角度に応じて、良い結果または悪い結果が得られる場合があります。
- 測定距離:2cmから400cmまで。ただし250cmからは解像度があまり良くありません。
- 中解像度:実際の距離と測定値の間の0.3 cmの変動。したがって、レーザーのように高精度とは見なされていませんが、測定値はほとんどのアプリケーションで非常に受け入れられます。
- 価格:約€0,65から
Arduinoとの統合
へ Arduinoへの接続はこれ以上ないほど簡単です。 そのようにマークされたArduinoの対応する出力へのGNDの接続、Arduino 5v電源を備えたVcc、およびプロジェクト用に選択された入力/出力を備えたHC-SR04の他のXNUMXつのピンへの接続を担当する必要があります。 あなたはそれが上部のフリッツスキームで単純であることがわかります...
ティガーが適切にアクティブ化するには、少なくとも10マイクロ秒の電気パルスを受信する必要があるというXNUMXつの考慮事項が必要です。 以前は、LOW値であることを確認する必要があります。
のように ArduinoIDEのコード、他のコンポーネントのようにライブラリなどを使用する必要はありません。 距離を計算する式を作成するだけです...もちろん、HC-SR04センサーの測定に応答してプロジェクトに何かを実行させたい場合は、必要なコードを追加する必要があります。 たとえば、コンソールに測定値を表示するだけでなく、サーボモーターを特定の距離だけ一方向または別の方向に動かして障害物を回避したり、モーターを停止したり、近接を検出したときにアラームを作動させたりすることができます。 。
プログラミングの詳細: Arduinoマニュアル(無料PDF)
たとえば、あなたはこれを見ることができます ベースとして使用する基本コード:
//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger const int EchoPin = 8; const int TriggerPin = 9; void setup() { Serial.begin(9600); pinMode(TriggerPin, OUTPUT); pinMode(EchoPin, INPUT); } //Aquí la muestra de las mediciones void loop() { int cm = ping(TriggerPin, EchoPin); Serial.print("Distancia medida: "); Serial.println(cm); delay(1000); } //Cálculo para la distancia int ping(int TriggerPin, int EchoPin) { long duration, distanceCm; digitalWrite(TriggerPin, LOW); //para generar un pulso limpio ponemos a LOW 4us delayMicroseconds(4); digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us delayMicroseconds(10); digitalWrite(TriggerPin, LOW); duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en microsegundos distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm return distanceCm; }
説明はとても便利で簡単だと思いました。