如果您見過筆記本電腦或翻蓋式的手機(jī),可能就已經(jīng)注意到,當(dāng)打開和關(guān)閉這些設(shè)備時,它會相應(yīng)地自動的點(diǎn)亮和熄滅屏幕。但它怎么知道?如果您認(rèn)為轉(zhuǎn)軸上安裝了某種開關(guān)來檢測這種打開和關(guān)閉動作,那么您是對的!
這些設(shè)備使用一種廉價且非常可靠的傳感器,稱為干簧管(磁簧開關(guān),Reed Switch),當(dāng)磁鐵靠近時它會導(dǎo)通或關(guān)斷。
干簧管用于各種創(chuàng)意應(yīng)用,如開門傳感器、風(fēng)速計(確定風(fēng)速)等。它們非常適合任何需要非接觸式控制的項目。因此,讓我們仔細(xì)看看它們是什么以及它們是如何工作的!
干簧管概述
常見的干簧管包含一對由鐵磁材料制成的金屬簧片(這種材料很容易被磁化,但離開磁場時會失去磁性)?;善|點(diǎn)的表面鍍有耐磨金屬,例如銠、釕、鈀或銥,以延長其開關(guān)數(shù)百萬次時的使用壽命。
簧片被密封在管狀玻璃外殼內(nèi),以保持它們沒有灰塵和污垢。干簧管的密封性使其適用于易爆環(huán)境,在這些環(huán)境中,傳統(tǒng)開關(guān)的小火花會構(gòu)成危險。玻璃管充滿惰性氣體,通常是氮?dú)?,或真空,以防止觸點(diǎn)氧化。
通常,觸點(diǎn)由鎳鐵合金制成,這些材料易于磁化(具有高磁導(dǎo)率)但不會長時間保持這種狀態(tài)(具有低磁保持性)。作為一種機(jī)械設(shè)備,它們需要一些時間來響應(yīng)磁場的變化 - 換句話說,與電子開關(guān)相比,它們的開關(guān)速度較低(通常為0.6ms開啟時間,0.2 ms關(guān)閉時間)。
在存在磁場的情況下,兩個觸點(diǎn)都會移動,它們會形成一個平坦、平行的相互接觸區(qū)域。這有助于增加簧片開關(guān)的壽命和可靠性。
干簧管只檢測磁場的存在,不測量其強(qiáng)度。如果您對測量強(qiáng)度感興趣,可以考慮使用模擬霍爾效應(yīng)傳感器。
干簧管如何工作?
了解干簧管如何工作的關(guān)鍵是要認(rèn)識到它們既是磁路的一部分,也是電氣電路的一部分 - 磁力和電流一樣流經(jīng)它們。
當(dāng)您將磁鐵靠近簧片開關(guān)時,整個開關(guān)將成為包括磁鐵在內(nèi)的“磁路”的一部分(圖像中的虛線表示磁場的一部分)。
干簧管的兩個觸點(diǎn)變成相反的磁極,這就是它們吸引并卡在一起的原因??拷盆F的哪一端并不重要:觸點(diǎn)仍然以相反的方式極化并相互吸引。
當(dāng)你把磁鐵拿走時,觸點(diǎn)分離并返回到原來的位置。
像這樣的干簧管是常開的。這意味著通常當(dāng)開關(guān)不受磁場影響時,開關(guān)打開且不導(dǎo)電。當(dāng)磁鐵足夠靠近以激活開關(guān)時,觸點(diǎn)閉合并且電流流過。
在這些插圖中,觸點(diǎn)的移動在很大程度上被夸大了。真正的干簧管的觸點(diǎn)僅相距幾微米(大約比人的頭發(fā)細(xì)十倍)。所以這些動作是肉眼看不到的。
將干簧管連接到Arduino開發(fā)板
為我們的示例設(shè)置的電路盡可能簡單。首先彎曲開關(guān)的兩個引腳,使其垂直遠(yuǎn)離開關(guān)主體,使它們形成“U”形。
將干簧管插入面包板。然后使用跳線將開關(guān)的一端連接到地,另一端連接到Arduino的D2引腳。
如果以這種方式連接開關(guān),則需要激活A(yù)rduino的內(nèi)置輸入引腳上拉電阻。否則,您必須在電路中使用外部10K上拉電阻。以下是示例電路:
!
Arduino代碼 - 讀取干簧管數(shù)據(jù)
這是一個基于上述電路的非?;镜腁rduino草圖,當(dāng)您將磁鐵靠近開關(guān)時,它將點(diǎn)亮內(nèi)置LED(連接到引腳13),當(dāng)您將其移開時熄滅。
const int REED_PIN = 2; // Pin connected to reed switch
const int LED_PIN = 13; // LED pin
void setup() {
Serial.begin(9600);
pinMode(REED_PIN, INPUT_PULLUP); // Enable internal pull-up for the reed switch
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int proximity = digitalRead(REED_PIN); // Read the state of the switch
// If the pin reads low, the switch is closed.
if (proximity == LOW) {
Serial.println("Switch closed");
digitalWrite(LED_PIN, HIGH); // Turn the LED on
}
else {
Serial.println("Switch opened");
digitalWrite(LED_PIN, LOW); // Turn the LED off
}
}
上傳草圖后,抓住磁鐵,把它靠近開關(guān)。當(dāng)磁鐵到達(dá)干簧管1厘米的距離時,它應(yīng)該觸發(fā)。
代碼說明
該代碼比較通俗易懂。首先定義了兩個常量,它們聲明了干簧管和內(nèi)置LED連接到的Arduino引腳。
const int REED_PIN = 2;
const int LED_PIN = 13;
在setup()函數(shù)中,干簧管引腳配置為輸入,而LED引腳配置為輸出。干簧管引腳啟用了內(nèi)部上拉電阻。
void setup() {
Serial.begin(9600);
pinMode(REED_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
}
在loop()函數(shù)中,如果讀取到干簧管引腳為低電平,則點(diǎn)亮內(nèi)置的LED燈,否則熄滅。
void loop() {
int proximity = digitalRead(REED_PIN);
if (proximity == LOW) {
Serial.println("Switch closed");
digitalWrite(LED_PIN, HIGH);
}
else {
Serial.println("Switch opened");
digitalWrite(LED_PIN, LOW);
}
}
-
磁場
+關(guān)注
關(guān)注
3文章
841瀏覽量
24169 -
干簧管
+關(guān)注
關(guān)注
3文章
79瀏覽量
28058 -
Arduin
+關(guān)注
關(guān)注
0文章
8瀏覽量
6105
發(fā)布評論請先 登錄
相關(guān)推薦
評論