振動により損傷を受ける重要な機械や高価な機器がいくつかあります。このような場合、機械や設備が振動しているかどうかを確認するために振動センサーが必要です。適切なセンサーを使用して振動を検出すれば、継続的に振動している物体を特定するのは難しい作業ではありません。振動センサーにはいくつかの種類があります加速度や速度を感知することで振動を検出でき、優れた結果が得られる市場で入手可能です。ただし、このようなセンサーは、加速度計を使用する場合は高すぎます。加速度計は非常に感度が高く、地震検出回路の作成に使用できます。しかし、振動のみを検出するために利用できる専用の安価なセンサーはほとんどありません。そのような振動センサーの1つは、ArduinoUnoとインターフェースするSW-420です。
そのため、このプロジェクトでは、基本的な振動センサーモジュールが人気のあるArduino UNOとインターフェースされ、振動センサーが振動やジャークを検出すると、LEDが点滅し始めます。
振動センサーモジュールSW-420
これはSW-420振動モジュールで、3.3Vから5Vまで動作します。センサーはLM393コンパレータを使用して、しきい値ポイントを超える振動を検出し、デジタルデータ(ロジックローまたはロジックハイ、0または1)を提供します。通常の動作中、センサーはロジックローを提供し、振動が検出されると、センサーはロジックハイを提供します。モジュールには3つの周辺機器があります。1つは電源状態用、もう1つはセンサーの出力用の2つのLEDです。さらに、振動のしきい値ポイントを制御するためにさらに使用できるポテンショメータが利用可能です。このプロジェクトでは、5Vを使用してモジュールに電力を供給します。
ATmega8マイクロコントローラーを使用した盗難防止警報システムで同じセンサーを使用しました。また、傾斜センサーを使用して突然の事故を検出することもできます。
必要なコンポーネント
- Arduino UNO
- SW-420振動センサーモジュール
- 5mm LED(任意の色)
- ジャンパー線(フックアップ線)
- プログラムをアップロードするためのUSBケーブル
Arduino振動センサーの回路図
振動センサーをArduinounoに接続するための回路図を 以下に示します。
LEDはD13ピンに接続されています。モジュールは、Arduinoで利用可能な5Vピンを使用して給電されます。Groundと5VピンはArduinoの電源を入れるために使用され、A5ピンは振動センサーからデータを取得するために使用されます。
この回路は、SW-420モジュールとLEDがArduinoUnoに接続されている場所で構成されています。
ArduinoUno振動センサープログラミング
結論を出すために入力ピンのみを監視する必要があるため、振動センサーをインターフェースするようにArduinoUNOをプログラミングするのにそれほど労力は必要ありません。完全なコードと作業ビデオが末端に結合しています。
最初にヘッダーファイルがインクルードされます。このチュートリアルはArduino拡張機能を備えたEclipseIDEで記述されているため、arduinoヘッダーが含まれています。このスケッチはArduinoIDEでも機能し、Arduino IDEでこのスケッチを使用している間は、ヘッダーを含める必要はありません。
#include
ここでは、ONとOFFの2つのマクロが定義されています。
#define ON 1 #define OFF 0
以下のステートメントは、LEDと振動センサーを統合するために使用されます。振動センサーはピンA5に接続されています。ボード内でピン13に直接接続されている内蔵LEDも使用されます。5mmLEDもピン13に接続されています。
/ ** ピンの説明 * / int Vibration_Sensor = A5; int LED = 13;
センサーが出力を提示し、前の出力が保存される2つの整数が宣言され、振動が発生しているかどうかを検出するためにさらに使用されます。
/ ** プログラムフローの説明 * / int present_condition = 0; int previous_condition = 0;
周辺接続として宣言されているのと同じピン、ピンの方向が構成されます。入力としてのセンサーピンと出力としてのLEDピン。
/ ** ピンモードの設定 * / void setup(){ pinMode(vibration_Sensor、INPUT); pinMode(LED、OUTPUT); }
LEDを2回点滅させる関数が1つ書かれています。遅延は、遅延値を変更することで構成できます。
void led_blink(void){ digitalWrite(LED、ON); delay(250); digitalWrite(LED、OFF); delay(250); digitalWrite(LED、ON); delay(250); digitalWrite(LED、OFF); delay(250); }
ループ機能では、現在と以前の状態が比較されます。これら2つが同じでない場合、両方が同じになるまでLEDが点滅し始めます。開始時には、2つの変数は0を保持し、プログラムの開始中はLEDはオフのままです。いくつかのvirbraionがある場合、 present_condition 変数は1になり、LEDが点滅を開始します。また、振動が停止すると、両方の変数が0になり、LEDの点滅が停止します。
void loop(){ previous_condition = present_condition; present_condition = digitalRead(A5); // ArduinoのA5ピンからデジタルデータを読み取ります。 if(previous_condition!= present_condition){ led_blink(); } else { digitalWrite(LED、OFF); } }
これで、振動センサーを使用したarduinoUNOのプログラミングが終了します。最後のステップは、セットアップ全体をテストすることです。
Arduino振動センサー回路のテスト
回路は追加のブレッドボードを必要としません。ArduinoUNOボードを使用して簡単にテストできます。LEDは、振動センサーがヒットしたとき、または状態が変化したときに監視されます。振動があると、ArduinoUNOのピン13に接続されたLEDが点滅します。振動センサーが機能しない場合は、接続と電源を確認してください。センサーとマイクロコントローラー間の接続が緩んでいないようにしてください。
これが、振動センサーをArduinoUNOとインターフェースする方法です。疑問や提案がある場合は、フォーラムを通じて私たちに連絡するか、以下にコメントすることもできます。