如何使用Arduino开发板连接干簧管(Reed Switch)

电子说

1.3w人已加入

描述

如果您见过笔记本电脑或翻盖式的手机,可能就已经注意到,当打开和关闭这些设备时,它会相应地自动的点亮和熄灭屏幕。但它怎么知道?如果您认为转轴上安装了某种开关来检测这种打开和关闭动作,那么您是对的!

这些设备使用一种廉价且非常可靠的传感器,称为干簧管(磁簧开关,Reed Switch),当磁铁靠近时它会导通或关断。

干簧管用于各种创意应用,如开门传感器、风速计(确定风速)等。它们非常适合任何需要非接触式控制的项目。因此,让我们仔细看看它们是什么以及它们是如何工作的!

干簧管概述

常见的干簧管包含一对由铁磁材料制成的金属簧片(这种材料很容易被磁化,但离开磁场时会失去磁性)。簧片触点的表面镀有耐磨金属,例如铑、钌、钯或铱,以延长其开关数百万次时的使用寿命。

簧片被密封在管状玻璃外壳内,以保持它们没有灰尘和污垢。干簧管的密封性使其适用于易爆环境,在这些环境中,传统开关的小火花会构成危险。玻璃管充满惰性气体,通常是氮气,或真空,以防止触点氧化。

Arduin

通常,触点由镍铁合金制成,这些材料易于磁化(具有高磁导率)但不会长时间保持这种状态(具有低磁保持性)。作为一种机械设备,它们需要一些时间来响应磁场的变化 - 换句话说,与电子开关相比,它们的开关速度较低(通常为0.6ms开启时间,0.2 ms关闭时间)。

在存在磁场的情况下,两个触点都会移动,它们会形成一个平坦、平行的相互接触区域。这有助于增加簧片开关的寿命和可靠性。

干簧管只检测磁场的存在,不测量其强度。如果您对测量强度感兴趣,可以考虑使用模拟霍尔效应传感器。

干簧管如何工作?

了解干簧管如何工作的关键是要认识到它们既是磁路的一部分,也是电气电路的一部分 - 磁力和电流一样流经它们。

当您将磁铁靠近簧片开关时,整个开关将成为包括磁铁在内的“磁路”的一部分(图像中的虚线表示磁场的一部分)。

Arduin

干簧管的两个触点变成相反的磁极,这就是它们吸引并卡在一起的原因。靠近磁铁的哪一端并不重要:触点仍然以相反的方式极化并相互吸引。

当你把磁铁拿走时,触点分离并返回到原来的位置。

像这样的干簧管是常开的。这意味着通常当开关不受磁场影响时,开关打开且不导电。当磁铁足够靠近以激活开关时,触点闭合并且电流流过。

在这些插图中,触点的移动在很大程度上被夸大了。真正的干簧管的触点仅相距几微米(大约比人的头发细十倍)。所以这些动作是肉眼看不到的。

将干簧管连接到Arduino开发板

为我们的示例设置的电路尽可能简单。首先弯曲开关的两个引脚,使其垂直远离开关主体,使它们形成“U”形。

将干簧管插入面包板。然后使用跳线将开关的一端连接到地,另一端连接到Arduino的D2引脚。

如果以这种方式连接开关,则需要激活Arduino的内置输入引脚上拉电阻。否则,您必须在电路中使用外部10K上拉电阻。以下是示例电路:

!Arduin

Arduino代码 - 读取干簧管数据

这是一个基于上述电路的非常基本的Arduino草图,当您将磁铁靠近开关时,它将点亮内置LED(连接到引脚13),当您将其移开时熄灭。

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
        }
}

上传草图后,抓住磁铁,把它靠近开关。当磁铁到达干簧管1厘米的距离时,它应该触发。

Arduin

代码说明

该代码比较通俗易懂。首先定义了两个常量,它们声明了干簧管和内置LED连接到的Arduino引脚。

const int REED_PIN = 2;
const int LED_PIN = 13;

在setup()函数中,干簧管引脚配置为输入,而LED引脚配置为输出。干簧管引脚启用了内部上拉电阻。

void setup() {
        Serial.begin(9600);
        pinMode(REED_PIN, INPUT_PULLUP);
        pinMode(LED_PIN, OUTPUT);
}

在loop()函数中,如果读取到干簧管引脚为低电平,则点亮内置的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);
        }
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分