سوئیچ مغناطیسی MC-38
(Magnetic Reed Switch)
با حالتهای NO و NC – مدل سیمدار حرفهای
سنسور درب و پنجره سیمی
رید سوئیچ مغناطیسی سیمدار یک سنسور مکانیکی-مغناطیسی با قابلیت انتخاب حالت Normally Open (NO) و Normally Closed (NC) است. این ماژول برای تشخیص نزدیکی آهنربا، موقعیت درب/پنجره و تشخیص حرکت در سیستمهای امنیتی و اتوماسیون صنعتی طراحی شده است.
🧲 ویژگیهای اصلی
🔹 دو حالت کاری: NO (Normally Open) و NC (Normally Closed)
🔹 سیمدار صنعتی: طول سیم 1-2 متر با عایق PVC
🔹 حساسیت بالا: فعالسازی با آهنربای کوچک
🔹 بدون نیاز به تغذیه: کنتاکت مکانیکی خالص
🔹 طول عمر بسیار بالا: بیش از 10 میلیون بار عملکرد
🔹 نصب آسان: با چسب دوطرفه یا پیچ
🔹 مقاوم در برابر محیط: IP67 در مدل ضدآب
📊 مشخصات فنی دقیق
مشخصات سوئیچ:
-
نوع: رید سوئیچ مغناطیسی خشک (Dry Reed Switch)
-
جنس کنتاکت: ریدیم-روتنیوم (طول عمر بالا)
-
ولتاژ کاری: تا 250V AC/DC
-
جریان مجاز: تا 0.5A AC/DC
-
جریان لحظهای: تا 1A (کمتر از 1 ثانیه)
-
مقاومت تماس: کمتر از 100mΩ
-
ولتاژ شکست: 1000V DC
-
فرکانس سوئیچینگ: تا 100Hz
حالتهای کاری:
-
NO (Normally Open):
-
حالت عادی: باز (OPEN)
-
با آهنربا: بسته (CLOSED)
-
کاربرد: آلارم باز شدن درب
-
-
NC (Normally Closed):
-
حالت عادی: بسته (CLOSED)
-
با آهنربا: باز (OPEN)
-
کاربرد: آلارم قطع سیم
-
مشخصات مغناطیسی:
-
فاصله فعالسازی: 10-25mm (بسته به قدرت آهنربا)
-
حساسیت: 10-50 AT (آمپر-دور)
-
هیسترزیس: 20-40% از فاصله فعالسازی
-
قطبیت: غیرحساس (هر دو قطب کار میکنند)
-
دمای کاری آهنربا: -40°C تا +80°C
سیم و اتصالات:
-
طول سیم: 1 متر، 2 متر یا سفارشی
-
سایر سیم: 0.5mm² (24AWG)
-
تعداد رشته: 2 رشته (برای NO/NC مشترک)
-
رنگ سیم: قرمز (COM)، سفید (NO)، آبی (NC)
-
عایق سیم: PVC مقاوم در برابر روغن و UV
-
اتصالات: ترمینال FASTON 2.8mm یا سیم لخت
ابعاد فیزیکی:
-
ابعاد سوئیچ: 25mm × 5mm Ø (استوانهای)
-
طول کل با سیم: 1-2 متر + 25mm
-
وزن: 10-20 گرم (بسته به طول سیم)
-
رنگ بدنه: مشکی (ABS مقاوم)
-
دمای نگهداری: -40°C تا +85°C
🔌 پیکربندی و اتصالات
پیکربندی پایهها:
سوئیچ رید (3 سیم): سیم قرمز: COM (مشترک) سیم سفید: NO (Normally Open) سیم آبی: NC (Normally Closed) آهنربا (2 سیم): سیم مشکی: GND سیم قرمز: تغذیه (اختیاری برای LED)
اتصال به آردوینو (حالت NO):
// برای آلارم باز شدن درب COM → 5V از طریق مقاومت 10KΩ (Pull-up) NO → پین دیجیتال آردوینو (مثلاً D2) NC → استفاده نشده (میتواند به GND وصل شود) آهنربا → نصب روی درب متحرک
اتصال به آردوینو (حالت NC):
// برای آلارم قطع سیم
COM → پین دیجیتال آردوینو
NC → GND
NO → استفاده نشده
مدار نمونه با مقاومت Pull-up:
آردوینو 5V → مقاومت 10KΩ → پین دیجیتال D2
↓
سیم COM رید سوئیچ
↓
بسته به حالت: سیم NO یا NC
💻 کدهای نمونه آردوینو
کد پایه برای درب امنیتی (حالت NO):
// تعریف پینها #define REED_SWITCH_PIN 2 #define BUZZER_PIN 8 #define LED_RED 9 #define LED_GREEN 10 // متغیرهای وضعیت bool doorState = false; // false = بسته, true = باز bool lastDoorState = false; unsigned long doorOpenTime = 0; const unsigned long ALARM_DELAY = 5000; // 5 ثانیه تأخیر آلارم // زمانهای دبنانس unsigned long lastDebounceTime = 0; const unsigned long DEBOUNCE_DELAY = 50; void setup() { Serial.begin(9600); // پیکربندی پینها pinMode(REED_SWITCH_PIN, INPUT_PULLUP); pinMode(BUZZER_PIN, OUTPUT); pinMode(LED_RED, OUTPUT); pinMode(LED_GREEN, OUTPUT); // حالت اولیه updateDoorStatus(); Serial.println("سیستم امنیتی درب راهاندازی شد"); Serial.println("=============================="); } void loop() { // خواندن وضعیت سوئیچ int reading = digitalRead(REED_SWITCH_PIN); // دبنانس برای حذف نویز if (reading != lastDoorState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > DEBOUNCE_DELAY) { if (reading != doorState) { doorState = reading; updateDoorStatus(); if (doorState == LOW) { // درب باز شده doorOpenTime = millis(); Serial.println("⚠️ درب باز شد!"); } else { // درب بسته شد doorOpenTime = 0; Serial.println("✅ درب بسته شد"); digitalWrite(BUZZER_PIN, LOW); } } } // بررسی زمان باز بودن درب if (doorState == LOW && doorOpenTime > 0) { unsigned long openDuration = millis() - doorOpenTime; if (openDuration > ALARM_DELAY) { triggerAlarm(); // نمایش زمان باز بودن Serial.print("هشدار: درب بیش از "); Serial.print(openDuration / 1000); Serial.println(" ثانیه است که باز مانده!"); } } lastDoorState = reading; delay(10); } void updateDoorStatus() { if (doorState == HIGH) { // درب بسته digitalWrite(LED_GREEN, HIGH); digitalWrite(LED_RED, LOW); digitalWrite(BUZZER_PIN, LOW); } else { // درب باز digitalWrite(LED_GREEN, LOW); digitalWrite(LED_RED, HIGH); } } void triggerAlarm() { // آلارم متناوب static bool alarmState = false; static unsigned long lastAlarmToggle = 0; if (millis() - lastAlarmToggle > 500) { // هر 500ms alarmState = !alarmState; digitalWrite(BUZZER_PIN, alarmState); digitalWrite(LED_RED, alarmState); lastAlarmToggle = millis(); } }
کد پیشرفته برای سیستم چند نقطهای:
#include <Wire.h> #include <LiquidCrystal_I2C.h> // تعریف چندین رید سوئیچ #define NUM_SENSORS 4 int sensorPins[NUM_SENSORS] = {2, 3, 4, 5}; String sensorNames[NUM_SENSORS] = {"درب جلو", "درب پشت", "پنجره ۱", "پنجره ۲"}; // نمایشگر LCD LiquidCrystal_I2C lcd(0x27, 16, 2); // آرایه وضعیتها bool sensorStates[NUM_SENSORS]; bool lastSensorStates[NUM_SENSORS]; unsigned long triggerTimes[NUM_SENSORS]; void setup() { Serial.begin(9600); // راهاندازی LCD lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("سيستم امنيتي"); lcd.setCursor(0, 1); lcd.print("در حال راه اندازي"); // راهاندازی سنسورها for (int i = 0; i < NUM_SENSORS; i++) { pinMode(sensorPins[i], INPUT_PULLUP); sensorStates[i] = digitalRead(sensorPins[i]); lastSensorStates[i] = sensorStates[i]; triggerTimes[i] = 0; } delay(2000); updateDisplay(); } void loop() { bool systemSecure = true; for (int i = 0; i < NUM_SENSORS; i++) { bool currentState = digitalRead(sensorPins[i]); // دبنانس if (currentState != lastSensorStates[i]) { delay(50); currentState = digitalRead(sensorPins[i]); } // تشخیص تغییر وضعیت if (currentState != sensorStates[i]) { sensorStates[i] = currentState; if (currentState == LOW) { // باز شدن triggerTimes[i] = millis(); logEvent(sensorNames[i] + " باز شد"); } else { // بسته شدن triggerTimes[i] = 0; logEvent(sensorNames[i] + " بسته شد"); } updateDisplay(); } lastSensorStates[i] = currentState; // اگر هر سنسوری فعال باشد، سیستم ایمن نیست if (currentState == LOW) { systemSecure = false; // بررسی زمان باز بودن if (triggerTimes[i] > 0) { unsigned long openTime = millis() - triggerTimes[i]; if (openTime > 30000) { // 30 ثانیه logEvent("هشدار: " + sensorNames[i] + " طولاني باز مانده"); } } } } // نمایش وضعیت کلی static bool lastSystemSecure = true; if (systemSecure != lastSystemSecure) { if (systemSecure) { Serial.println("✅ تمام نقاط امن هستند"); } else { Serial.println("⚠️ برخی نقاط باز هستند"); } lastSystemSecure = systemSecure; } delay(100); } void updateDisplay() { lcd.clear(); // شمارش نقاط باز int openCount = 0; for (int i = 0; i < NUM_SENSORS; i++) { if (sensorStates[i] == LOW) openCount++; } // خط اول: وضعیت کلی lcd.setCursor(0, 0); if (openCount == 0) { lcd.print("همه جا بسته"); } else { lcd.print(openCount); lcd.print(" نقطه باز"); } // خط دوم: اولین نقطه باز lcd.setCursor(0, 1); for (int i = 0; i < NUM_SENSORS; i++) { if (sensorStates[i] == LOW) { lcd.print(sensorNames[i]); break; } } } void logEvent(String message) { Serial.print("["); Serial.print(millis() / 1000); Serial.print("s] "); Serial.println(message); }
کد حالت دوگانه (NO/NC قابل انتخاب):
class ReedSwitch { private: int pin; bool normallyOpen; bool lastState; unsigned long lastChangeTime; public: ReedSwitch(int switchPin, bool isNormallyOpen = true) { pin = switchPin; normallyOpen = isNormallyOpen; lastState = getState(); lastChangeTime = 0; pinMode(pin, INPUT_PULLUP); } bool getState() { bool rawState = digitalRead(pin); // تبدیل بر اساس حالت if (normallyOpen) { return !rawState; // فعال = LOW در حالت NO } else { return rawState; // فعال = LOW در حالت NC } } bool isActivated() { return getState(); } bool stateChanged() { bool currentState = getState(); if (currentState != lastState) { lastState = currentState; lastChangeTime = millis(); return true; } return false; } unsigned long getActiveDuration() { if (isActivated()) { return millis() - lastChangeTime; } return 0; } String getStatusString() { if (normallyOpen) { return isActivated() ? "باز (آهنربا نزدیک)" : "بسته (عادی)"; } else { return isActivated() ? "بسته (عادی)" : "باز (آهنربا نزدیک)"; } } }; // استفاده از کلاس ReedSwitch doorSensor(2, true); // NO ReedSwitch windowSensor(3, false); // NC void setup() { Serial.begin(9600); Serial.println("سیستم رید سوئیچ دو حالته"); } void loop() { // بررسی درب if (doorSensor.stateChanged()) { Serial.print("درب: "); Serial.println(doorSensor.getStatusString()); } // بررسی پنجره if (windowSensor.stateChanged()) { Serial.print("پنجره: "); Serial.println(windowSensor.getStatusString()); if (windowSensor.isActivated()) { unsigned long duration = windowSensor.getActiveDuration(); if (duration > 10000) { // 10 ثانیه Serial.println("هشدار: پنجره بیش از حد باز مانده!"); } } } delay(100); }
🎯 کاربردهای عملی
1. سیستمهای امنیتی و نظارتی:
-
آلارم ضد سرقت درب و پنجره
-
تشخیص باز شدن گاوصندوق
-
نظارت بر کابینتهای دارویی
-
سیستم حفاظت پیرامونی
2. اتوماسیون خانگی:
-
کنترل روشنایی (چراغ کابینت)
-
هشدار باز ماندن یخچال
-
تشخیص وضعیت درب گاراژ
-
کنترل فن سرویس بهداشتی
3. صنعت و تولید:
-
تشخیص موقعیت در ماشینآلات
-
شمارش محصول روی نوار نقاله
-
محدودکننده حرکت جرثقیلها
-
تشخیص حضور در سیستمهای خودکار
4. پروژههای آموزشی:
-
آزمایشهای الکترومغناطیس
-
پروژههای امنیتی دانشجویی
-
سیستمهای شمارنده
-
کنترلرهای ساده
5. کاربردهای تخصصی:
-
تشخیص سطح مایع (با شناور مغناطیسی)
-
پوزیشن سنسور در رباتها
-
آلارم ضد دستکاری تجهیزات
-
سیستمهای پارک خودرو
🔧 نحوه نصب و راهاندازی
مراحل نصب درب:
1. نصب سوئیچ: روی چهارچوب درب (قسمت ثابت) 2. نصب آهنربا: روی خود درب (قسمت متحرک) 3. تنظیم فاصله: 5-10mm در حالت بسته 4. تراز کردن: مطمئن شوید هممحور هستند 5. سیمکشی: مخفی یا داخل داکت 6. تست: باز و بسته کردن درب برای بررسی عملکرد
نصب روی پنجره کشویی:
سوئیچ → روی قاب پنجره (ثابت) آهنربا → روی شیشه متحرک (با چسب مخصوص شیشه)
نصب صنعتی روی ماشین:
سوئیچ → روی بدنه ماشین آهنربا → روی قطعه متحرک حفاظت → با کاور فلزی در محیطهای خشن
⚠️ نکات مهم و عیبیابی
مشکلات رایج و راهحل:
| مشکل | علت احتمالی | راهحل |
|---|---|---|
| عدم فعالسازی | فاصله زیاد | آهنربای قویتر یا تنظیم فاصله |
| فعالسازی خودکار | میدان مغناطیسی محیط | شیلد کردن یا تغییر محل |
| نویز در سیگنال | سیمکشی طولانی | استفاده از مقاومت Pull-up |
| عملکرد متناوب | لق بودن آهنربا | محکم کردن نصب |
| خوردگی کنتاکت | رطوبت بالا | استفاده از مدل ضدآب IP67 |
نکات افزایش طول عمر:
-
از بارهای القایی زیاد استفاده نکنید (موتورها، سولنوئیدها)
-
برای بارهای القایی از اسنابر استفاده کنید
-
از اعمال ولتاژ بیش از 250V خودداری کنید
-
در محیطهای لرزشی از نصب محکم استفاده کنید
-
سیمها را در محل خم شدگی محافظت کنید
محاسبه مقاومت Pull-up مناسب:
R = (ولتاژ منبع - ولتاژ LOW) / جریان ورودی میکروکنترلر مثال برای 5V و جریان 0.1mA: R = (5V - 0V) / 0.0001A = 50KΩ استفاده از 10KΩ استاندارد است
📈 مقایسه با سنسورهای مشابه
| سنسور | قیمت | دقت | مصرف برق | نصب | عمر مفید |
|---|---|---|---|---|---|
| رید سوئیچ | کم | بالا | صفر | آسان | بسیار بالا |
| سنسور القایی | متوسط | بالا | متوسط | متوسط | بالا |
| سنسور خازنی | متوسط | متوسط | کم | پیچیده | بالا |
| سنسور نوری | بالا | بسیار بالا | متوسط | پیچیده | متوسط |
| سوئیچ میکرو | کم | متوسط | صفر | آسان | متوسط |
🛠️ پروژههای پیشنهادی
پروژه 1: سیستم امنیتی هوشمند با SMS
// رید سوئیچ + ماژول SIM800L + آردوینو
پروژه 2: شمارنده محصول اتوماتیک
// چند رید سوئیچ + نمایشگر LCD + آردوینو
پروژه 3: کنترلر پارک خودرو
// 3 رید سوئیچ + LED + بوزر
پروژه 4: مانیتورینگ وضعیت دربهای انبار
// 8 رید سوئیچ + ماژول WiFi + نرمافزار تحت وب
⭐ مزایای رقابتی
نسبت به سنسورهای الکترونیکی:
-
بدون نیاز به تغذیه برای خود سوئیچ
-
عملکرد در قطعی برق
-
عدم تولید نویز الکترومغناطیسی
-
مقاوم در برابر ESD (تخلیه الکترواستاتیک)
نسبت به سوئیچهای مکانیکی:
-
عدم تماس فیزیکی (بدون سایش)
-
سرعت پاسخدهی بالا
-
عمر مفید بسیار طولانی
-
قابلیت نصب در محیطهای بسته
ویژگیهای منحصر به فرد این مدل:
-
سیمدار آماده (صرفهجویی در زمان)
-
هر دو حالت NO و NC (انعطافپذیری بالا)
-
طول سیم قابل انتخاب (1m یا 2m)
-
کیفیت صنعتی (قابل استفاده در پروژههای حرفهای)
💡 نکات حرفهای نصب
برای افزایش حساسیت:
-
از آهنرباهای نئودیمیوم استفاده کنید
-
سوئیچ و آهنربا را هممحور نصب کنید
-
فاصله را در حداقل ممکن تنظیم کنید (5mm)
-
از مواد فرومغناطیسی در مسیر استفاده نکنید
برای محیطهای صنعتی:
-
از مدلهای ضدآب IP67 استفاده کنید
-
سیمها را داخل داکت فلزی قرار دهید
-
از کاور محافظ برای سوئیچ استفاده کنید
-
برای نویز زیاد از کابل شیلددار استفاده کنید
تست سلامت رید سوئیچ:
void testReedSwitch(int pin) { pinMode(pin, INPUT_PULLUP); Serial.println("تست رید سوئیچ شروع شد"); Serial.println("آهنربا را نزدیک و دور کنید"); bool lastState = digitalRead(pin); unsigned long startTime = millis(); int switchCount = 0; while (millis() - startTime < 10000) { // تست 10 ثانیه bool currentState = digitalRead(pin); if (currentState != lastState) { switchCount++; Serial.print("تغییر حالت: "); Serial.println(currentState ? "باز" : "بسته"); lastState = currentState; } delay(10); } Serial.print("تعداد تغییر حالت در 10 ثانیه: "); Serial.println(switchCount); if (switchCount >= 2) { Serial.println("✅ سوئیچ سالم است"); } else { Serial.println("❌ سوئیچ مشکوک است"); } }
🔧 مناسب برای:
-
نصابان سیستمهای امنیتی
-
مهندسین اتوماسیون صنعتی
-
توسعهدهندگان خانه هوشمند
-
دانشجویان رشته برق و الکترونیک
-
تعمیرکاران تجهیزات صنعتی
⚡ نکته مهم: برای بارهای سلفی (رله، موتور) حتماً از دیود Flyback یا مدار اسنابر استفاده کنید تا از جرقه زدن کنتاکتها جلوگیری شود.
📞 پشتیبانی فنی و مشاوره
-
مشاوره انتخاب نوع مناسب برای کاربرد شما
-
راهنمای نصب تصویری برای انواع درب و پنجره
-
کمک در طراحی مدارهای حرفهای
-
آموزش آنلاین رایگان برای خریداران عمده
🛡️ با رید سوئیچهای حرفهای ما، امنیت و اتوماسیون را با اطمینان تجربه کنید!









ترانزیستورها
خازنها
دیودها
رگولاتورها
مقاومتها
کریستال و اسیلاتور
مدارات مجتمع
ابزارها
تجهیزات
تجهیزات لحیمکاری
مولتیمتر و ابزار اندازهگیری
منبع تغذیه و باتری
تستر