حسّاس الدخان / الغاز

الموضوع في 'برمجة الاشياء arduino' بواسطة ابوفارس, بتاريخ ‏27 يناير 2020.

  1. ابوفارس

    ابوفارس ادارة المنتدى إداري

    إنضم إلينا في:
    ‏12 يوليو 2014
    المشاركات:
    635
    الإعجابات المتلقاة:
    194
    نقاط الجائزة:
    43
    الجنس:
    ذكر
    كيف يعمل الحساس MQ-2 حسّاس الدخان / الغاز ؟
    تتغيّر قيمة الجهد على خَرْج الحسّاس وفقاً لتغيّر تركيز الغاز/الدخان في الجوّ، وبالتالي يقوم الحسّاس بإخراج جهد يتناسب مع تركيز هذا الغاز/الدخان.

    بعبارة أخرى: العلاقة بين الجهد وتركيز الغاز في الجوّ هي كالتالي:

    • بزيادة تركيز الغاز : تزداد قيمة الجهد على خَرْج الحسّاس.
    • بنقصان تركيز الغاز: تنقص قيمة الجهد على خَرْج الحسّاس.
    وبالتّالي فإنّ العلاقة طرديّة بين تركيز الغاز/الدخان وقيمة خرج الحسّاس.

    يوضّح الشّكل (3) هذا الكلام.

    [​IMG]

    الشّكل (3): العلاقة بين تركيز الغاز / الدخان في الجو وقيمة الجهد على خَرْج الحسّاس

    يمكن أن يكون الخَرْج عبارة عن إشارة تشابهيّة (A0) يمكن قراءتها من خلال المداخل التشابهيّة لـ Arduino، أو يمكن أن تكون إشارة رقميّة (D0) يمكن قراءتها من خلال المداخل الرقميّة لـ Arduino.

    توصيل حسّاس الغاز / الدخان MQ-2 مع Arduino:
    في هذا المثال تُقرَأ قيمة الخَرْج التشابهيّة للحسّاس، فعندما يكون تركيز الدخان مساوياً لقيمة محدّدة، يُفعَّل تنبيه صوتيّ عبر buzzer وتنبيه ضوئيّ باستخدام ليد أحمر red LED،وعند انخفاض قيمة جهد الخَرْج عن القيمة المحدّدة –انخفاض تركيز الغاز- فإنّ تنبيها ضوئياًّ سيعمل من خلال ليد أخضر LED green.

    نحتاج لتنفيذ هذا المثال التجهيزاتِ التالية:
    [​IMG]

    الجدول (1) التجهيزات المطلوبة


    توصيل أرجل الحسّاس إلى لوحة الـ Arduino:
    التوصيل إلى لوحة Arduino UNOأرجل الحساس MQ-2
    الأرجل التشابهيّةA0
    الأرجل الرقميّةD0
    أرضيّ (GND)أرضيّ (GND)
    5Vالتغذية (VCC)


    يوضّح الشكل (4) مخطّط الدّارة بعد توصيل المكوِّنات.

    [​IMG]



    كود:
    int redLed = 12;
    int greenLed = 11;
    int buzzer = 10;
    int smokeA0 = A5;
    // Your threshold value
    int sensorThres = 400;
    
    void setup() {
      pinMode(redLed, OUTPUT);
      pinMode(greenLed, OUTPUT);
      pinMode(buzzer, OUTPUT);
      pinMode(smokeA0, INPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      int analogSensor = analogRead(smokeA0);
    
      Serial.print("Pin A0: ");
      Serial.println(analogSensor);
      // Checks if it has reached the threshold value
      if (analogSensor > sensorThres)
      {
        digitalWrite(redLed, HIGH);
        digitalWrite(greenLed, LOW);
        tone(buzzer, 1000, 200);
      }
      else
      {
        digitalWrite(redLed, LOW);
        digitalWrite(greenLed, HIGH);
        noTone(buzzer);
      }
      delay(100);
    }
     

مشاركة هذه الصفحة