MC-38 คืออะไร? วิธีใช้สวิตช์แม่เหล็กสำหรับประตู/หน้าต่างกับ Arduino
MC-38 คือ สวิตช์แม่เหล็ก (Magnetic Contact Sensor) หรือบางครั้งเรียกว่า Reed Switch Sensor เป็นอุปกรณ์ที่ใช้ในการตรวจจับการเปิด-ปิดของวัตถุ เช่น ประตู หรือหน้าต่าง ประกอบด้วย 2 ส่วน คือ ส่วนที่เป็นแม่เหล็ก และส่วนที่เป็นสวิตช์ ซึ่งจะทำปฏิกิริยาต่อกันเมื่ออยู่ในระยะใกล้
ด้วยความง่ายในการติดตั้งและใช้งาน จึงนิยมนำไปใช้ในระบบกันขโมย, ระบบนับจำนวนการเปิด-ปิด, หรือใช้เป็นเซนเซอร์ตรวจจับตำแหน่งในโปรเจกต์ต่างๆ
หลักการทำงาน
ภายในตัวสวิตช์จะมีแผ่นโลหะบางๆ สองแผ่นที่ไม่สัมผัสกัน (วงจรเปิด) แต่เมื่อนำแม่เหล็กเข้ามาใกล้ในระยะที่กำหนด สนามแม่เหล็กจะเหนี่ยวนำให้แผ่นโลหะทั้งสองดูดติดกัน ทำให้วงจรเชื่อมต่อกัน (วงจรปิด) และเมื่อนำแม่เหล็กออกห่าง แผ่นโลหะก็จะแยกจากกันอีกครั้ง
สเปคของ MC-38
แรงดันไฟฟ้าที่รองรับ |
3V – 24V DC (ใช้งานกับ 5V ของ Arduino ได้) |
กระแสที่รองรับ |
สูงสุดประมาณ 100 mA |
ระยะการทำงาน |
ประมาณ 15 – 25 มม. (ขึ้นอยู่กับแรงแม่เหล็ก) |
ชนิดสวิตช์ |
Normally Open (NO) → สถานะปกติวงจรจะ "เปิด" (ไม่เชื่อมต่อ) และจะ "ปิด" (เชื่อมต่อ) เมื่อแม่เหล็กอยู่ใกล้ |
วัสดุ |
พลาสติก ABS, มีเทปกาวและรูสำหรับยึดน็อต |
สายไฟ |
2 เส้น (ไม่มีขั้ว) |
การใช้งานกับ Arduino
✅ การต่อสาย
การต่อวงจรนั้นง่ายมาก โดยใช้ประโยชน์จาก Pull-up Resistor ภายในของ Arduino:
สายจาก MC-38 |
ต่อกับขาบน Arduino |
สายเส้นที่ 1 |
ขา Digital ใดก็ได้ (เช่น D2) |
สายเส้นที่ 2 |
GND |
การใช้ INPUT_PULLUP
การตั้งค่า pinMode(sensorPin, INPUT_PULLUP);
ในโค้ดเป็นการสั่งให้ Arduino เปิดใช้งานตัวต้านทานภายในที่ต่อกับไฟ 5V ทำให้ในสถานะปกติ (ประตูเปิด) ขา D2 จะอ่านค่าได้เป็น HIGH และเมื่อประตูถูกปิด (แม่เหล็กอยู่ใกล้) สวิตช์จะทำงานและดึงไฟลงกราวด์ ทำให้ขา D2 อ่านค่าได้เป็น LOW ซึ่งวิธีนี้ช่วยให้เราไม่ต้องต่อตัวต้านทานภายนอกเพิ่ม
✅ ตัวอย่างโค้ด Arduino
โค้ดนี้จะอ่านสถานะของสวิตช์แม่เหล็กและแสดงผลทาง Serial Monitor ว่าประตูเปิดหรือปิดอยู่
// กำหนดขาที่ต่อกับ MC-38
const int sensorPin = 2;
void setup() {
// ตั้งค่าขาเป็น Input และเปิดใช้ Pull-up Resistor ภายใน
pinMode(sensorPin, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Magnetic Door Sensor Test");
}
void loop() {
// อ่านสถานะจากเซนเซอร์
int sensorState = digitalRead(sensorPin);
// ตรวจสอบสถานะ
if (sensorState == LOW) {
// เมื่อแม่เหล็กอยู่ใกล้ (ประตู/หน้าต่างปิด)
Serial.println("สถานะ: ประตูปิด");
} else {
// เมื่อแม่เหล็กอยู่ห่าง (ประตู/หน้าต่างเปิด)
Serial.println("สถานะ: ประตูเปิด!");
}
delay(500); // หน่วงเวลาเล็กน้อย
}
💡 การประยุกต์ใช้งาน
โปรเจกต์ |
การประยุกต์ใช้ MC-38 |
ระบบกันขโมยบ้าน |
ติดตั้งที่ประตูและหน้าต่าง เพื่อส่งเสียงเตือนหรือแจ้งเตือนผ่าน Line เมื่อมีการเปิด |
ระบบนับคนเข้า-ออก |
ติดตั้งที่ประตูเพื่อนับจำนวนครั้งของการเปิด-ปิด |
หุ่นยนต์หรือแขนกล |
ใช้เป็น Limit Switch เพื่อตรวจจับตำแหน่งสุดแขนหรือกลไกที่เคลื่อนที่ |
ระบบความปลอดภัยในตู้ |
ตรวจสอบสถานะว่าตู้เก็บของสำคัญถูกเปิดทิ้งไว้หรือไม่ |
ระบบเตือนเปิดประตูตู้เย็น |
ส่งเสียง Buzzer เตือนหากประตูตู้เย็นถูกเปิดค้างไว้นานเกินไป |
ข้อดีและข้อควรระวัง
✅ ข้อดี
- ราคาถูกมากและติดตั้งง่ายด้วยเทปกาวหรือน็อต
- ไม่ต้องการพลังงานในการทำงาน (เป็นแค่สวิตช์)
- มีความทนทานสูงและอายุการใช้งานยาวนาน
- ไม่ต้องเขียนโปรแกรมซับซ้อน ใช้เพียง `digitalRead`
- ทำงานโดยไม่ต้องสัมผัสโดยตรง (Contactless)
⚠️ ข้อควรระวัง
- ตัว Reed Switch ที่อยู่ภายในค่อนข้างบอบบาง ควรระวังการกระแทกแรงๆ
- ห้ามใช้กับแรงดันหรือกระแสไฟฟ้าที่เกินสเปคกำหนด เพราะจะทำให้หน้าสัมผัสของสวิตช์ละลายติดกันและเสียหายถาวรได้