ماژول کلیدجیوه‌ای

ماژول سوئیچ جیوه‌ای (Mercury Switch Module) – حسگر شیب و حرکت

ماژول سوئیچ جیوه‌ای یک حسگر مکانیکی ساده و قابل‌اطمینان برای تشخیص شیب، حرکت و موقعیت است. این ماژول با استفاده از یک حباب جیوه که درون یک لوله شیشه‌ای محصور شده، هنگام شیب یا تکان، اتصال الکتریکی ایجاد می‌کند.


⚠️ هشدار مهم ایمنی

جیوه یک ماده سمی و خطرناک است! این ماژول فقط برای مصارف آموزشی و تحقیقاتی تحت نظارت مناسب است.

از شکستن لوله جیوه خودداری کنید و در صورت شکستگی، فوراً با مرکز کنترل مسمومیت تماس بگیرید.


🌡️ ویژگی‌های اصلی

🔹 حساسیت قابل تنظیم – زاویه فعال‌سازی از 10° تا 60°
🔹 بدون مصرف برق در حالت عادی – مکانیکی خالص
🔹 طول عمر بالا – بیش از 1,000,000 بار عمل‌کرد
🔹 واکنش سریع – پاسخ در کمتر از 10ms
🔹 قابل اطمینان – عملکرد در شرایط سخت
🔹 ساده و ارزان – بدون نیاز به الکترونیک پیچیده


📊 مشخصات فنی دقیق

مشخصات مکانیکی:

  • نوع سوئیچ: جیوه‌ای (Mercury Tilt Switch)

  • جنس لوله: شیشه بوروسیلیکات مقاوم

  • قطر لوله: 3.0mm – 5.0mm

  • طول لوله: 15mm – 25mm

  • مقدار جیوه: 0.1g – 0.3g

  • زاویه عملکرد: 10° – 60° (بسته به مدل)

  • دمای کاری: -10°C تا +70°C

  • ولتاژ شکست: 1000V DC

  • مقاومت تماس: کمتر از 100mΩ

مشخصات الکتریکی ماژول:

  • ولتاژ کاری: 3.3V تا 24V DC

  • جریان سوئیچینگ: حداکثر 1A در 24V DC

  • جریان لحظه‌ای: تا 3A (کمتر از 1 ثانیه)

  • مقاومت Pull-up: 10KΩ روی برد

  • خروجی: دیجیتال HIGH/LOW + آنالوگ

  • LED نشانگر: قرمز (فعال بودن سوئیچ)

  • پایه‌ها: 3 پین (VCC, GND, OUT)

انواع مدل‌ها بر اساس زاویه:

مدل زاویه فعال‌سازی کاربرد
MS-10 10°±2° سیستم‌های حساس، آلارم دقیق
MS-30 30°±5° کاربردهای عمومی، اسباب‌بازی
MS-45 45°±5° تشخیص افتادن، دستگاه‌های دستی
MS-60 60°±10° تشخیص شیب شدید، ماشین‌آلات

ابعاد فیزیکی:

  • ابعاد ماژول: 20mm × 15mm × 10mm

  • طول پایه‌ها: 2.54mm استاندارد

  • وزن: 3-5 گرم (با جیوه)

  • رنگ PCB: آبی با ماسک

  • سوراخ نصب: 2.5mm


🔌 پیکربندی و اتصالات

پین‌های ماژول:

پین 1 (چپ):   VCC  (3.3V - 24V)
پین 2 (وسط):  OUT  (خروجی دیجیتال/آنالوگ)
پین 3 (راست): GND  (زمین)

*LED قرمز: وقتی سوئیچ بسته است روشن می‌شود

اتصال به آردوینو:

// اتصال ساده
ماژول → آردوینو
VCC  → 5V
OUT  → پین دیجیتال (مثلاً D2)
GND  → GND

// با مقاومت Pull-up داخلی (پیش‌فرض)
pinMode(mercuryPin, INPUT_PULLUP);

مدار نمونه با مقاومت خارجی:

آردوینو 5V → مقاومت 10KΩ → پین OUT ماژول → پین D2 آردوینو
                                 ↓
                              پین GND ماژول → GND آردوینو

💻 کدهای نمونه آردوینو

کد پایه تشخیص شیب:

// تعریف پین سوئیچ جیوه‌ای
#define MERCURY_PIN 2

// متغیرهای وضعیت
bool lastState = HIGH;
bool currentState;
unsigned long lastToggleTime = 0;
const unsigned long debounceDelay = 50; // زمان دبنانس

void setup() {
  Serial.begin(9600);
  pinMode(MERCURY_PIN, INPUT_PULLUP);
  
  Serial.println("سوئیچ جیوه‌ای راه‌اندازی شد");
  Serial.println("==========================");
}

void loop() {
  // خواندن وضعیت سوئیچ
  bool reading = digitalRead(MERCURY_PIN);
  
  // دبنانس برای حذف نویز
  if (reading != lastState) {
    lastToggleTime = millis();
  }
  
  if ((millis() - lastToggleTime) > debounceDelay) {
    if (reading != currentState) {
      currentState = reading;
      
      // نمایش وضعیت
      if (currentState == LOW) {
        Serial.println("وضعیت: شیب تشخیص داده شد! (سوئیچ بسته)");
        Serial.println("LED روشن است");
      } else {
        Serial.println("وضعیت: عادی (سوئیچ باز)");
        Serial.println("LED خاموش است");
      }
    }
  }
  
  lastState = reading;
  delay(10); // تأخیر کوچک
}

کد پیشرفته با زاویه‌سنجی:

#include <EEPROM.h>

#define MERCURY_PIN 2
#define BUZZER_PIN 8
#define LED_PIN 13

// متغیرهای کالیبراسیون
int calibrationCount = 0;
float totalAngle = 0;
bool isCalibrating = false;

// آستانه‌ها
const float CRITICAL_ANGLE = 45.0; // زاویه بحرانی
const unsigned long TILT_DURATION_THRESHOLD = 5000; // 5 ثانیه

unsigned long tiltStartTime = 0;
bool isTilted = false;

void setup() {
  Serial.begin(9600);
  pinMode(MERCURY_PIN, INPUT_PULLUP);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  
  // خواندن کالیبراسیون از EEPROM
  loadCalibration();
  
  Serial.println("سیستم تشخیص شیب پیشرفته");
  Serial.println("دستورات:");
  Serial.println("c - شروع کالیبراسیون");
  Serial.println("s - نمایش وضعیت");
  Serial.println("r - ریست کالیبراسیون");
}

void loop() {
  static unsigned long lastCheck = 0;
  
  // خواندن وضعیت هر 100ms
  if (millis() - lastCheck >= 100) {
    lastCheck = millis();
    
    bool tilted = (digitalRead(MERCURY_PIN) == LOW);
    
    if (tilted && !isTilted) {
      // شیب شروع شد
      tiltStartTime = millis();
      isTilted = true;
      Serial.println("شیب تشخیص داده شد");
    } 
    else if (!tilted && isTilted) {
      // شیب پایان یافت
      isTilted = false;
      unsigned long duration = millis() - tiltStartTime;
      
      if (duration > TILT_DURATION_THRESHOLD) {
        Serial.print("هشدار: شیب طولانی مدت! مدت: ");
        Serial.print(duration / 1000.0);
        Serial.println(" ثانیه");
        triggerAlarm();
      }
      
      tiltStartTime = 0;
    }
    
    // نمایش وضعیت LED
    digitalWrite(LED_PIN, isTilted ? HIGH : LOW);
  }
  
  // پردازش دستورات سریال
  if (Serial.available()) {
    char command = Serial.read();
    processCommand(command);
  }
}

void triggerAlarm() {
  // فعال کردن آلارم
  for (int i = 0; i < 3; i++) {
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(LED_PIN, HIGH);
    delay(200);
    digitalWrite(BUZZER_PIN, LOW);
    digitalWrite(LED_PIN, LOW);
    delay(200);
  }
}

void processCommand(char cmd) {
  switch (cmd) {
    case 'c': // کالیبراسیون
      startCalibration();
      break;
    case 's': // وضعیت
      showStatus();
      break;
    case 'r': // ریست
      resetCalibration();
      break;
  }
}

void startCalibration() {
  Serial.println("کالیبراسیون شروع شد...");
  Serial.println("سوئیچ را در زوایای مختلف قرار دهید");
  Serial.println("پس از 10 نمونه، کالیبراسیون پایان می‌یابد");
  
  calibrationCount = 0;
  totalAngle = 0;
  isCalibrating = true;
}

void showStatus() {
  Serial.print("وضعیت سوئیچ: ");
  Serial.println(digitalRead(MERCURY_PIN) == LOW ? "شیب" : "عادی");
  Serial.print("مدت شیب فعلی: ");
  Serial.println(isTilted ? (millis() - tiltStartTime) / 1000.0 : 0);
  Serial.println(" ثانیه");
}

void resetCalibration() {
  // ریست EEPROM
  for (int i = 0; i < 10; i++) {
    EEPROM.write(i, 0);
  }
  Serial.println("کالیبراسیون ریست شد");
}

void loadCalibration() {
  // بارگذاری از EEPROM
  // کد بارگذاری کالیبراسیون
}

سیستم مانیتورینگ چند نقطه‌ای:

// مانیتورینگ 4 سوئیچ جیوه‌ای
#define NUM_SWITCHES 4
int switchPins[NUM_SWITCHES] = {2, 3, 4, 5};
String switchNames[NUM_SWITCHES] = {"جلو", "عقب", "چپ", "راست"};

bool switchStates[NUM_SWITCHES] = {HIGH, HIGH, HIGH, HIGH};
bool lastStates[NUM_SWITCHES] = {HIGH, HIGH, HIGH, HIGH};

void setup() {
  Serial.begin(9600);
  
  for (int i = 0; i < NUM_SWITCHES; i++) {
    pinMode(switchPins[i], INPUT_PULLUP);
  }
  
  Serial.println("سیستم مانیتورینگ چند جهته");
  Serial.println("-------------------------");
}

void loop() {
  bool systemStable = true;
  
  for (int i = 0; i < NUM_SWITCHES; i++) {
    bool currentState = digitalRead(switchPins[i]);
    
    if (currentState != lastStates[i]) {
      delay(50); // دبنانس
      currentState = digitalRead(switchPins[i]);
      
      if (currentState != switchStates[i]) {
        switchStates[i] = currentState;
        
        Serial.print("سوئیچ ");
        Serial.print(switchNames[i]);
        Serial.print(": ");
        
        if (currentState == LOW) {
          Serial.println("فعال (شیب)");
          systemStable = false;
        } else {
          Serial.println("غیرفعال (عادی)");
        }
      }
    }
    
    lastStates[i] = currentState;
  }
  
  // بررسی پایداری کلی سیستم
  static bool lastSystemStable = true;
  if (systemStable != lastSystemStable) {
    if (systemStable) {
      Serial.println("✅ سیستم پایدار است");
    } else {
      Serial.println("⚠️  سیستم ناپایدار است!");
    }
    lastSystemStable = systemStable;
  }
  
  delay(100);
}

🎯 کاربردهای عملی

1. سیستم‌های ایمنی و هشدار:

  • آلارم ضد سرقت خودرو (تشخیص حرکت غیرمجاز)

  • هشدار افتادن افراد مسن (دستبندهای ایمنی)

  • سیستم اعلام حریق (تشخیص خروج از وضعیت عادی)

  • محافظ تجهیزات گران‌قیمت (هشدار جابجایی)

2. صنعت و ماشین‌آلات:

  • محدود‌کننده زاویه جرثقیل‌ها

  • سنسور سطح در مخازن

  • تشخیص وضعیت ماشین‌آلات

  • کنترل موقعیت ربات‌های صنعتی

3. پروژه‌های آموزشی و تحقیقاتی:

  • آزمایش‌های فیزیک (قوانین حرکت)

  • پروژه‌های دانش‌آموزی (آلارم ساده)

  • تحقیقات لرزه‌شناسی (مقدماتی)

  • آموزش الکترونیک (سوئیچ‌های مکانیکی)

4. اسباب‌بازی و سرگرمی:

  • ساخت مازهای هوشمند

  • کنترلرهای بازی حرکتی

  • پازل‌های الکترونیکی

  • اسباب‌بازی‌های تعادلی

5. سیستم‌های خانگی:

  • تشخیص باز شدن پنجره

  • کنترل روشنایی اتوماتیک (چراغ قوه)

  • هشدار ریزش اجسام

  • سنسور سطح آب در آکواریوم


⚠️ ملاحظات ایمنی و زیستمحیطی

راهنمای استفاده ایمن:

  1. هرگز لوله جیوه را نشکنید

  2. در صورت شکستگی:

    • محل را ترک کنید

    • پنجره‌ها را باز کنید

    • با مرکز کنترل مسمومیت تماس بگیرید

    • از جاروبرقی استفاده نکنید

  3. دور از دسترس کودکان نگهداری شود

  4. در دمای بالای 70°C استفاده نشود

  5. از اعمال ضربه شدید خودداری کنید

جایگزین‌های ایمن‌تر:

  • سوئیچ‌های ساکن‌الکترولیتی (Electrolytic Tilt Sensor)

  • شتاب‌سنج‌های MEMS (مثل MPU6050)

  • سوئیچ‌های ساکن‌توپی (Ball Tilt Switch)

  • ژیروسکوپ‌های دیجیتال


🔧 نحوه نصب و کالیبراسیون

مراحل نصب:

1. انتخاب محل نصب: جایی که شیب مورد نظر را تشخیص دهد
2. جهت‌دهی: لوله جیوه باید در راستای محور شیب قرار گیرد
3. نصب افقی: در حالت عادی سوئیچ باید باز باشد
4. فیکس کردن: با چسب حرارتی یا پیچ محکم شود
5. تست: دستگاه را کج کرده و LED ماژول را بررسی کنید

کالیبراسیون زاویه:

// کد کالیبراسیون زاویه
float calibrateAngle() {
  Serial.println("کالیبراسیون زاویه شروع شد");
  Serial.println("دستگاه را در زاویه مورد نظر قرار دهید");
  Serial.println("سپس کلید 'c' را فشار دهید");
  
  while (!Serial.available());
  char cmd = Serial.read();
  
  if (cmd == 'c') {
    // ذخیره زاویه فعلی
    float angle = readCurrentAngle(); // از سنسور دیگر
    Serial.print("زاویه کالیبره: ");
    Serial.println(angle);
    return angle;
  }
  
  return 0.0;
}

📈 مقایسه با سایر سنسورهای شیب

سنسور دقت قیمت مصرف برق ایمنی عمر مفید
سوئیچ جیوه‌ای متوسط بسیار کم صفر پایین بالا
شتاب‌سنج MEMS بالا متوسط کم بالا بالا
سوئیچ توپی پایین کم صفر بالا متوسط
ژیروسکوپ بسیار بالا بالا متوسط بالا بالا

🛠️ پروژه‌های پیشنهادی

پروژه 1: آلارم ضدسرقت ساده

// با ماژول جیوه‌ای + بوزر + آردوینو Nano

پروژه 2: تراز لیزری دیجیتال

// 2 سوئیچ جیوه‌ای عمود بر هم + نمایشگر OLED

پروژه 3: کنترلر بازی تعادلی

// 4 سوئیچ در جهات مختلف + ارتباط بلوتوث

پروژه 4: سیستم هشدار زلزله مقدماتی

// سوئیچ حساس + SD Card برای لاگ داده‌ها


⚠️ اخطار مجدد

این محصول فقط برای مصارف آموزشی تحت نظارت بزرگسالان مجاز است.


💡 نکات مهم نگهداری

ذخیره‌سازی:

  • در دمای اتاق (15-25°C)

  • دور از نور مستقیم خورشید

  • در ظرف درب‌دار پلاستیکی

  • جدا از مواد غذایی

دفع صحیح:

  • به سطل زباله معمولی نیندازید

  • به مراکز بازیافت الکترونیک تحویل دهید

  • در صورت شکستگی، با مرکز 190 تماس بگیرید


🎓 مناسب برای:

  • آزمایشگاه‌های آموزشی مدارس

  • پروژه‌های دانشگاهی تحت نظارت

  • موزه‌های علوم و فناوری

  • تحقیقات تاریخی الکترونیک

🚫 غیرمناسب برای:

  • استفاده خانگی بدون نظارت

  • پروژه‌های کودکان

  • محیط‌های غذایی و پزشکی

  • سیستم‌های حیاتی


📞 پشتیبانی و مشاوره ایمنی

  • مرکز کنترل مسمومیت: 190
  • پیام‌رسان ایمنی: @MercurySafety_IR

  • وبینارهای آموزشی رایگان ماهانه

توجه: خرید این محصول به منزله پذیرش کلیه شرایط ایمنی و مسئولیت‌های مربوطه است.