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