有幾臺關(guān)鍵機(jī)器或昂貴的設(shè)備會因振動而損壞。在這種情況下,需要一個(gè)振動傳感器來確定機(jī)器或設(shè)備是否產(chǎn)生振動。如果使用適當(dāng)?shù)膫鞲衅鱽?a target="_blank">檢測振動,那么識別持續(xù)振動的物體并不是一件棘手的工作。市場上有幾種類型的振動傳感器可以通過感應(yīng)加速度或速度來檢測振動,并且可以提供出色的結(jié)果。然而,在使用加速度計(jì)的情況下,這種傳感器過于昂貴。加速度計(jì)非常靈敏,可用于制作地震探測器電路。 但是,也很少有專用且廉價(jià)的傳感器可用于僅檢測振動,其中一種振動傳感器是 SW-420,我們將與 Arduino Uno 接口。
所以在這個(gè)項(xiàng)目中,一個(gè)基本的振動傳感器模塊與流行的 Arduino UNO 接口,每當(dāng)振動傳感器檢測到任何振動或抖動時(shí),一個(gè) LED 就會開始閃爍。
振動傳感器模塊 SW-420
這是一個(gè)SW-420振動模塊,可以工作在3.3V到5V之間。傳感器使用 LM393 比較器檢測超過閾值點(diǎn)的振動并提供數(shù)字?jǐn)?shù)據(jù),邏輯低或邏輯高,0 或 1。在正常工作期間,傳感器提供邏輯低,當(dāng)檢測到振動時(shí),傳感器提供邏輯高。模塊中提供三個(gè)外圍設(shè)備,兩個(gè) LED,一個(gè)用于電源狀態(tài),另一個(gè)用于傳感器輸出。此外,還提供了一個(gè)電位器,可進(jìn)一步用于控制振動的閾值點(diǎn)。在本項(xiàng)目中,我們將使用 5V 為模塊供電。
所需組件
Arduino UNO
SW-420 振動傳感器模塊
5mm LED(任何顏色)
跳線(連接線)
上傳程序的 USB 數(shù)據(jù)線
Arduino振動傳感器電路圖
下面給出了將振動傳感器與 Arduino uno 連接的示意圖 。
LED 連接在 D13 引腳上。該模塊使用 Arduino 中可用的 5V 引腳供電。接地和 5V 引腳用于為 Arduino 供電,而 A5 引腳用于從振動傳感器獲取數(shù)據(jù)。
該電路是在 SW-420 模塊和 LED 與 Arduino Uno 連接的地方構(gòu)建的。
Arduino Uno 振動傳感器編程
將 Arduino UNO 編程為接口振動傳感器不需要太多努力,因?yàn)橹恍璞O(jiān)控輸入引腳即可得出結(jié)論。最后附上完整的代碼和工作視頻。
最初包含頭文件。由于本教程是在帶有 Arduino 擴(kuò)展的 Eclipse IDE 中編寫的,因此包含了 arduino 標(biāo)頭。此草圖也適用于 Arduino IDE,在 Arduino IDE 中使用此草圖時(shí),無需包含
#include
這里為 ON 和 OFF 定義了兩個(gè)宏。
#define 開 1 #define 關(guān) 0
以下語句用于集成 LED 和振動傳感器。振動傳感器連接到引腳 A5。還使用了內(nèi)置 LED,它直接連接到板子中的引腳 13。5mm LED 也連接到引腳 13。
/* * 引腳說明 */ intvibration_Sensor = A5; 整數(shù) LED = 13;
聲明了兩個(gè)整數(shù),其中傳感器當(dāng)前輸出和先前輸出將被存儲,這將進(jìn)一步用于檢測是否發(fā)生振動。
/* * 程序流程描述 */ int present_condition = 0; int previous_condition = 0;
聲明為外圍連接的同一引腳,配置引腳的方向。傳感器引腳作為輸入,LED 引腳作為輸出。
/* * 引腳模式設(shè)置 */ void setup() { pinMode(vibration_Sensor, INPUT); pinMode(LED,輸出); }
編寫了一個(gè)函數(shù)以使 LED 閃爍兩次??梢酝ㄟ^更改延遲值來配置延遲。
無效 led_blink(void) { digitalWrite(LED, ON); 延遲(250); 數(shù)字寫入(LED,關(guān)閉); 延遲(250); 數(shù)字寫入(LED,開); 延遲(250); 數(shù)字寫入(LED,關(guān)閉); 延遲(250); }
在循環(huán)函數(shù)中,比較當(dāng)前條件和先前條件。如果這兩個(gè)不相同,則LED 開始閃爍,直到兩者相同。啟動時(shí),兩個(gè)變量保持 0,程序啟動期間 LED 保持熄滅。當(dāng)有一些 virbraion 時(shí),present_condition變量變?yōu)?1 并導(dǎo)致開始閃爍。當(dāng)振動停止時(shí),兩個(gè)變量都變?yōu)?0,LED 停止閃爍。
無效循環(huán)(){ 前一個(gè)條件=現(xiàn)在條件; present_condition = digitalRead(A5); // 從 Arduino 的 A5 引腳讀取數(shù)字?jǐn)?shù)據(jù)。 if (previous_condition != present_condition) { led_blink(); } 其他 { 數(shù)字寫入(LED,關(guān)閉); } }
這樣就完成了使用振動傳感器對 arduino UNO 的編程。最后一步是測試整個(gè)設(shè)置。
測試 Arduino 振動傳感器電路
該電路不需要額外的面包板??梢允褂?Arduino UNO 板對其進(jìn)行簡單測試。當(dāng)振動傳感器被擊中或它是否改變其狀態(tài)時(shí),會監(jiān)控 LED。當(dāng)有一些振動時(shí),LED 將閃爍連接到 Arduino UNO 的 Pin 13。如果振動傳感器不起作用,請檢查連接和電源。避免傳感器和微控制器之間的任何松散連接。
/*//=============================================== =================================//
* 與 Arduino 接口的振動傳感器
* 日期: - 15-04-2019
* 作者:- 蘇拉夫古普塔
* 對于:- circuitdigest.com
*/ //=============================================== ================================//
#include
#include
#define ON 1
#define 關(guān)閉 0
/*
* 引腳說明
*/
int 振動傳感器 = A5;
整數(shù) LED = 13;
/*
* 程序流程說明
*/
int present_condition = 0;
int previous_condition = 0;
/*
* 引腳模式設(shè)置
*/
無效設(shè)置(){
pinMode(振動傳感器,輸入);
pinMode(LED,輸出);
}
/*
* LED 閃爍
*/
無效led_blink(無效);
/*
* 主循環(huán)
*/
無效循環(huán)(){
以前的條件=現(xiàn)在的條件;
present_condition = digitalRead(A5); // 從 Arduino 的 A5 引腳讀取數(shù)字?jǐn)?shù)據(jù)。
if (previous_condition != present_condition) {
led_blink();
} 別的 {
數(shù)字寫入(LED,關(guān)閉);
}
}
無效led_blink(無效){
數(shù)字寫入(LED,開);
延遲(250);
數(shù)字寫入(LED,關(guān)閉);
延遲(250);
數(shù)字寫入(LED,開);
延遲(250);
數(shù)字寫入(LED,關(guān)閉);
延遲(250);
}
-
led
+關(guān)注
關(guān)注
240文章
23071瀏覽量
657076 -
振動傳感器
+關(guān)注
關(guān)注
2文章
321瀏覽量
19772 -
Arduino
+關(guān)注
關(guān)注
187文章
6458瀏覽量
186504
發(fā)布評論請先 登錄
相關(guān)推薦
評論