工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

Arduinoと超音波センサーを使用した距離測定

Arduinoを使用した超音波距離測定プロジェクト

超音波距離測定は、最近さまざまなアプリケーションで役立つツールです。測位、位置決め、寸法記入、選択、レベル測定、制御、プロファイリングなどのさまざまなアプリケーションで使用できます。出力値を使用していくつかの数学的計算を行うことにより、速度やその他のさまざまな物理的寸法を測定することもできます。このデバイスには、ロボット工学の分野でもアプリケーションがあります。

したがって、これらのアプリケーションを念頭に置いて、超音波センサーは、短い距離で物理的に接触することなく距離を測定するための優れたツールです。彼らはECHOの概念を使用して距離を測定します。このプロジェクトでは、HC-SR04センサーモジュールをArduinoに接続して距離を測定し、16×2LCDに距離を表示する方法を学習します。

距離測定プロジェクトの回路図

インターフェースは本当にシンプルです。回路図に従う必要があります。そのため、まず、超音波センサーのTrigピンとEchoピンをArduino UNOのA4とA5に接続し、VCCとGNDをArduinoの5VとGNDに接続します。

次に、Arduinoに接続されている16×2LCDに距離を表示します。 RSピンとENピンをそれぞれArduinoのデジタルピン12とデジタルピン11に接続します。次に、LCDのD4-D7をArduinoのデジタルピン5-2に接続します。また、回路図に示すように、LCDのコントラストを制御するために10K電位差計を接続しました。

必要なコンポーネント

超音波センサーモジュール

ここで使用されているセンサーモジュールは HC-SR04 、非接触超音波測定装置です。この小さなモジュールは、2cm〜400cmの範囲の距離を測定することができます。非常に正確なセンサーで、最大3mmまで測定できます。

センサーは超音波送信機と超音波受信機で構成されています。動作原理は本当に簡単です。まず、IOトリガーが10μsの高レベル信号を送信します。次に、センサーモジュールは40 kHzサイクルの超音波音を8回送信し、パルス信号が受信されたかどうかを検出します。また、信号がハイレベルで受信された場合、IOトリガーがハイのままである時間は、信号の送信から受信までの時間です。

距離=(高レベルの時間x空気中の音の速度(340M / s))/ 2

タイミング図

上記のように、モジュールはサウンドのECHOで動作します。モジュールのトリガーには、約10μsのパルスが送信されます。このプロセスの後、モジュールは8つの40 kHzサイクルの超音波音を送信し、その反射をチェックします。したがって、障害物がある場合、信号は障害物にぶつかり、受信機に戻ります。そして今、距離は上で議論された簡単な公式によって計算されます。この時間は障害物に到達してレシーバーに戻るまでの合計時間であり、障害物に到達するのにかかる時間は合計時間の半分であるため、2で割っています。このセンサーのタイミング図を以下に示します。

技術仕様
超音波センサーHC-SR04のピン配列

上記のように、モジュールはサウンドのエコーの原理に基づいて動作します。したがって、モジュールをマイクロコントローラーに接続すると、最初にモジュールがTrigピンを介してトリガーされ、高レベルのパルスが10μs送信されます。その後、ECHOの受信を待ちます。マイクロコントローラは時間を計算できます。そして、距離は上記の式で計算されます。

Arduino UNO

Arduinoは、多くの小規模および大規模の組み込みプロジェクトで広く使用されているオープンソースのマイクロコントローラーです。このプロジェクトで使用されているArduinoはArduino-UNOです。このArduinoを使用する理由は、安価でインターフェースが簡単だからです。ボードには、14個のデジタルI/Oピンと6個のアナログピンがあります。マイクロコントローラはオープンソースであるため、どのように使用するかはユーザー次第です。必要に応じてボードとソフトウェアを変更できます。

16×2LCDモジュール

これらのモジュールは、静かで安価でマイクロコントローラーとのインターフェースが簡単なため、組み込みプロジェクトの多くの場所で一般的に使用されています。このタイプのディスプレイは、電卓やムスティメーターなどで見たことがあるかもしれません。ここで使用されているLCDモジュールは、16文字を連続して表示でき、2行あります。つまり、基本的には16列と2行です。表示される各文字は、5×8ピクセル(ピクセルマトリックス)で構成されています。

LCD全体の合計ピクセルを計算すると、5x8x16x2=1280ピクセルになります。これは多数です。 LCDに何かを表示するには、文字の位置も指定する必要があります。ですから、それは本当に難しいことです。そのため、適切な動作を管理するために、HD44780という名前のICが使用されます。このICは、マイクロコントローラーからデータとコマンドをフェッチし、必要な出力をLCDに印刷できるように、いくつかの処理を実行します。このICにより、LCDのインターフェースが非常に簡単になります。多くのプロジェクトでLCDを使用して、センサーまたは他のモジュールからの出力を表示する場合があります。 LCDモジュールの技術仕様のいくつかを見てみましょう。

LCDのピン構成を見てみましょう。

16×2LCDのピン配置と説明

ピン番号 名前 説明
1 VSS これはアースであり、回路のアースに接続されています。
2 VDD LCD用の電源(4.7V〜5.3V)、通常は5V
3 VE このピンは、LCDのコントラストを操作するために使用されます。そのためには、ポテンショメータをこのピンに接続する必要があります。したがって、ポテンショメータのノブを調整することで、ディスプレイにさまざまなコントラストレベルを表示できます。
4 RS 登録選択。このピンは、コマンドレジスタとデータレジスタを切り替えるために使用されます。このピンはマイクロコントローラーに接続されています
5 RW 読み取り/書き込み。このピンは、LCDの読み取りまたは書き込みに使用されます。通常、データの書き込みは根拠があります。
6 EN ピンを有効にします。このピンはマイクロコントローラーに接続されており、データを確認するために1または0が与えられます。
7 データピン(0〜7) これらのピンは、マイクロコントローラーからLCDに8ビットデータを送信するために使用されます。このLCDは4ビットモードでも使用できます。このために必要なのは、4つのデータピンを接続することだけです。
8 A アノード。このピンは、LCDバックライトのプラスピンです。このピンの使用は完全にオプションです。バックライトが必要な場合に使用します。技術仕様に示されているようにバックライトを使用しない場合、消費電流は非常に少なくなります。
9 K カソード。このピンはLCDバックライトのマイナスピンです。

LCDとArduinoの基本的なインターフェースを見てみましょう。簡単なコードを記述して、LCDにテキストを印刷します。まず、RSピンとENピンをArduinoのデジタルピン12と11に接続します。次に、LCDのD4-D7ピンをArduinoのデジタルピン5-2に接続します。次に、RW、VSS、Kをグランドに接続し、VDDとAを5VのArduinoに接続します。回路図に示すように、ポテンショメータをVEに接続して、LCDのコントラストを制御します。

次に、コーディングの部分に進みます。まず、LCD用のライブラリLiquidCrystal.hを含める必要があります。

#include

次の2行で、Arduinoに接続されたLCDのデータピンの変数を定義し、それらをlcd関数の引数として渡して、 ArduinoからLCDへ。

const int rs =12、en =11、d4 =5、d5 =4、d6 =3、d7 =2;

LiquidCrystal lcd(rs、en、d4、d5、d6、d7);

セットアップ関数では、lcd.begin()関数を使用してLCDを初期化しました。使用しているLCDは16列2行で、LCD全体を使用しているため、16と2を通過しました。 LCDの一部のみが必要な場合は、それに応じて引数を渡すことができます。

次に、次の行に「Hello、World!」と出力します。印刷したいカスタマイズされたメッセージを印刷できますが、ディスプレイのサイズを超えるメッセージは次の行に印刷されることに注意してください。したがって、それに応じてメッセージを操作してください。

lcd.begin(16、2);

lcd.print( "Hello、World!");

ループ関数では、関数lcd.setCursor()を使用して、カーソルを位置(0,1)に設定しました。この後、メッセージが印刷されている時間を印刷します。

lcd.setCursor(0、1);

lcd.print(millis()/ 1000);

コードを書き込んだ後、コードをArduinoボードにアップロードすると、メッセージがディスプレイに印刷されます。接続されているポテンショメータのノブを回してコントラストを変えることができます。

超音波センサー距離測定用のArduinoのプログラミング

このプロジェクトのコーディング部分は非常に簡単です。 LCD用のヘッダーファイルをインクルードすることから始めます。

#include <LiquidCrystal.h>

次の2行では、ArduinoのピンA4(ピン18)とA5(ピン19)のマクロを定義して、ピンを使用する代わりにこれらの名前を使用できるようにしました。数字。

#define trig 18
#define echo 19

次の行では、Arduinoに接続されたLCDのさまざまなピンの変数を定義し、LCDを初期化できるようにそれらをlcd関数に渡しました。

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

これで、距離変数「d」と時間変数「t」を定義し、それらを0で初期化しました。

float t=0,d=0;

次に、セットアップ機能を実行します。最初の行では、lcd.begin()を使用してLCDを初期化し、次の2行では、トリガーピンとエコーピンのピンモードをそれぞれ出力と入力として定義しました。

void setup()
{
 lcd.begin(16,2);
 pinMode(trig,OUTPUT);
 pinMode(echo,INPUT);
}

次に、ループ関数について説明します。まず、関数lcd.clear()によってLCDをクリアして、ループを繰り返すたびに前の出力が現在の出力に影響を与えないようにしました。次の6行では、10μsの高レベルパルスを送信して超音波センサーを初期化します。そして、この後、センサーは自動的に40kHzサイクルの超音波音を8回送信し、その反射をチェックします。次の行では、センサーから時間を取得しました。次に、距離を計算しています。速度がメートル/秒であるため、10000で割ったので、センチメートルで変換する必要があります。

void loop() 
{
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  t = pulseIn(echo, HIGH);
  d = t * 0.0340 / 2;
  d = t * 0.01330 / 2;
  lcd.setCursor(0, 0);
  lcd.print("Distance: ");
  lcd.print(d);
  lcd.print(" cm");
  delay(1000); 
}

距離測定回路の動作

コードを記述したら、Arduinoにアップロードすると、準備が整います。次に、センサーの前に物体または手を持ってきます。 LCDで距離を確認してください。センサーからのオブジェクトの距離を変更し続けると、正確な距離が得られます。

10μsの高レベルパルスを送信してセンサーを初期化すると、センサーは8つの40kHz超音波サイクルを送信し、これらのサイクルが障害物によって反射されると、反射されて受信機。これで、センサーは、超音波信号を送信機から障害物へ、および障害物から受信機へ移動するのにかかる時間を示します。そのため、今回はセンサーと障害物の間の距離を計算するために使用します。


産業技術

  1. 距離センサーの動作とは何かとその応用
  2. Arduinoセンサー–タイプとアプリケーション
  3. PIRセンサー回路とモジュールの動作
  4. PythonとRaspberryPiの温度センサー
  5. ARDUINOを使用した超音波浮揚機
  6. Arduinoとスマートフォンを使用したDIY電圧計
  7. IOT-ESP8266、Arduino、超音波センサーを使用したスマートジャー
  8. Arduinoを使用した周波数とデューティサイクルの測定
  9. ArduinoとRDA8057Mを使用したFMラジオ
  10. Arduinoを搭載したミニレーダー
  11. Arduinoを使用したタッチ制御ライト