超音波レンジファインダーは、距離を測定できる楽しい小さなセンサーです。 でのご利用が可能ですぐの距離にオブジェクトを検出するためのもので近くのセンサーのように動き出した。 彼らは理想的なプロジェクトを伴うナビゲーション、オブジェクトを回避し、ホームセキュリティ. 彼らは距離を測定するために音を使用するので、彼らは光の中で行うように、彼らは暗闇の中で同様に動作します。, このチュートリアルで使用する超音波レンジファインダーはHC-SR04で、2cmから400cmまでの距離を±3mmの精度で測定できます。
この記事では、Arduino用の三つの異なるレンジファインダー回路を作る方法を紹介します。 最初のレンジファインダ回路はセットアップが簡単で、かなり良い精度を持っています。 他の二つはもう少し複雑ですが、温度と湿度を考慮するため、より正確です。 しかし、それに入る前に、距離計が距離を測定する方法について話しましょう。,
音速
超音波レンジファインダーは、物体に当たるまで空気中を移動する超音波音のパルスを放出することによって距離を測定します。 音のそのパルスがオブジェクトに当たったとき、それはオブジェクトから反射し、超音波距離計に戻って移動します。, 超音波レンジファインダーは、センサーとバックからの往復旅行で移動するために音のパルスがかかる時間を測定します。 その後、音波パルスが移動するのにかかった時間についての情報を持つ信号をArduinoに送信します。
超音波パルスが物体に前後に移動するのにかかる時間を知り、また音の速度を知ることで、Arduinoは物体までの距離を計算することができます。, 音速、距離、移動時間に関する式は次のとおりです。
この式を並べ替えると、距離を計算するために使用される式が得られます。
time変数は、超音波パルスがセンサーを離れ、オブジェクトから跳ね返り、センサーに戻るまでにかかる時間です。, 実際には、オブジェクトまでの距離を測定するだけで、オブジェクトまでの距離とセンサーまでの距離ではなく、この時間を半分に分割します。 速度変数は、音が空気中を移動する速度です。
空気中の音の速度は、温度と湿度によって変化します。 したがって、距離を正確に計算するためには、周囲温度と湿度を考慮する必要があります。, 温度と湿度を考慮した空気中の音速の式は次のとおりです。
たとえば、20℃、湿度50%では、音は次の速度で移動します。
上記の式では、温度が音速に最も大きな影響を与えることは明らかです。 湿度には何らかの影響がありますが、温度の影響よりもはるかに少ないです。,
超音波レンジファインダーが距離を測定する方法
超音波レンジファインダーの前面には二つの金属シリンダーがあります。 トランスデューサーです トランスデューサは、機械的な力を電気信号に変換します。 超音波レンジファインダには、送信変換器と受信変換器があります。 送信のトランスデューサーは超音波脈拍に電気的信号を変え、受け入れのトランスデューサーは電気的信号に戻って反映された超音波脈拍を変える。, レンジファインダーの背面を見ると、MAX3232というラベルの送信トランスデューサの後ろにICが表示されます。 これは送信のトランスデューサーを制御するICである。 背後に受信トランスデューサはICラベルを付けLM324. これは、受信トランスデューサによって生成された信号をArduinoに送信するのに十分な強さの信号に増幅するクワッドオペアンプです。,
HC-SR04超音波レンジファインダーには四つのピンがあります。
- Vcc–超音波パルスを生成するための電力を供給します。
- GND–グラウンドに接続されています。
- Trig–Arduinoが信号を送信して、超音波パルス
- echo–超音波レンジファインダーが超音波パルスによって撮影されたトリップの持続時間に関する情報をarduinoに送信する場所
距離測定を開始するには、5vの高い信号をtrigピンに少なくとも10μs送信する必要があります。, モジュールはこの信号を受け取る場合、送信のトランスデューサーからの8つのKHzの頻度で超音波音の40の脈拍を出します。 その後、反射信号を受信トランスデューサで待機してリッスンします。 物体が範囲内にある場合、8つのパルスがセンサーに反射されます。 パルスが受信トランスデューサに当たると、Echoピンは高電圧信号を出力します。
この高電圧信号の長さは、8つのパルスが送信トランスデューサから受信トランスデューサに戻るのにかかる合計時間に等しい。, ただし、音のパルスが取った経路の距離ではなく、オブジェクトまでの距離を測定するだけです。 したがって、上記のd=s x t方程式の時間変数を得るために、その時間を半分に分割します。 我々はすでに知っているので音の速度(複数可)、我々は距離の方程式を解くことができます。
シリアルモニタ出力用超音波レンジファインダの設定
まず、シリアルモニタに距離測定を出力する簡単な超音波レンジファインダを作ってみましょう。 代わりにLCDに読み取り値を出力する場合は、次のセクションをチェックしてください。, すべてを接続するのは簡単です。
すべてを接続したら、このプログラムをArduinoにアップロードします。
コードの説明
- 11行目:変数
duration
およびdistance
を宣言します。 - 12行目と13行目:2µsのLOW信号を
trigPin
に送信し、プログラムループの開始時にオフになっていることを確認します。, - 15-17行目:10μsの高信号を
trigPin
に送信し、送信トランスデューサから送信された40KHzの超音波パルスのシーケンスを開始します。 - 19行目:
duration
変数を、echoPin
で検出された高入力信号の長さ(µs単位)として定義します。 エコーピン出力は、放出された超音波パルスが物体に移動してセンサに戻るまでにかかる時間に等しくなります。, - 20行目:
distance
変数を、持続時間(d=s x tの時間)に毎秒メートルからセンチメートル/μs(0.0344cm/μs)に変換された音速を掛けたものとして定義します。 - 22-24行目距離が400cm以上、または2cm以下の場合は、シリアルモニタに”Distance=Out of range”と表示します。
- 26-30行目距離測定が範囲外でない場合は、20行目で計算された距離をシリアルモニタに500ミリ秒間表示します。,
LCD出力付き超音波レンジファインダー
距離測定を16X2LCDに出力する場合は、この図に従ってレンジファインダーとLCDをArduinoに接続します。
lcdは、ArduinoのLcdをセットアップすることの私達の他の個人指導を試みます。, すべてが接続されているとき、Arduinoにこのコードをアップロードします:
より高い精度の超音波レンジファインダー
温度は上記の音速方程式(c=331.4+(0.606x T)+(0.0124x H)の変数であるため、(c=331.4+(0.606x T)+(0.0124x H)))、センサーの周りの空気の温度は、私たちの距離測定に影響を与えます。 これを補正するには、回路にサーミスタを追加し、その読み取り値を式に入力するだけです。 これにより、距離測定の精度が向上します。, サーミスタは、温度とともに抵抗を変化させる可変抵抗器です。 サーミスタの詳細については、Arduino Thermistor Temperature Sensor Tutorialの記事をご覧ください。 レンジファインダ回路にサーミスタを追加するのに役立つ図は次のとおりです。
- R1=10Kオーム抵抗
- Th=10Kオームサーミスタ
r1の値は、サーミスタの抵抗と等しくなければなりません。,
すべてが接続されたら、このコードをArduinoにアップロードします。
コードの説明
基本的なレンジファインダープログラムでは、この記事の冒頭で、式d=s x tを使用して距離を計算しました。 このプログラムでは、温度と湿度を考慮した式(c=331.4+(0.606x T)+(0.0124x H))を使用します。
5-10行目では、Steinhart-Hart方程式を使用してサーミスタ抵抗値を温度に変換し、temp
という変数に格納します。, 35行目に、音速方程式を含む新しい変数(spdSnd
)を追加します。 変数spdSnd
からの出力は、36行目のdistance
関数の速度として使用されます。
非常に高い(ほとんど高すぎる)精度の超音波レンジファインダー
温度補償超音波レンジファインダー回路は、ほとんどの人がそれを使用する しかし、空気中の音の速度(したがって距離計算)に影響を与える別の要因があり、それは湿度です。, あなたは音の速度の方程式から、湿度が音の速度に小さな影響を与えるだけであることを伝えることができますが、とにかくそれをチェックアウト
Arduinoで使用できる湿度センサーにはいくつかのタイプがありますが、DHT11湿度と温度センサーを使用します。 このモジュールは実際に湿度センサーに加えてサーミスタを持っているので、セットアップは本当に簡単です:
すべてが接続された後、コードを実行するための特別なライブラリをインストールする必要があります。, ライブラリはRob Tillaartによって書かれたDHTLibライブラリです。 ライブラリのインストールは簡単です。 まず、ダウンロードします。以下のzipファイル。 次に、Arduino IDEでSketch>ライブラリを含める>ZIPライブラリを追加し、DHTLibを選択します。zipファイル。,
DHTLib
ライブラリをインストールしたら、次のコードをArduinoにアップロードします。
コードの説明
DHT11によって出力される温度と湿度の読み取り値はデジタルであるため、サーミスタの抵抗を温度に変換するためにSteinhart-Hart式を使用する必要はありません。 DHTLibライブラリには、音速の方程式で直接使用できる単位で温度と湿度を取得するために必要なすべての関数が含まれています。 温度と湿度の変数は、DHT.temperature
およびDHT.humidity
という名前です。, 次に、28行目の距離方程式の変数として速度が使用されます。次のコードをアップロードします。
超音波レンジファインダ回路を確認するには、ビデオチュートリアルを見てください。
読んでくれてありがとう! これらの設定方法についてご質問がある場合は、コメントを残してください。, Circuit Basicsの記事が気に入ったら、購読してください。 また、この記事が役に立つ他の誰かを知っている場合は、それを共有してください!