Bir proje yazısında daha sizlerleyiz. Bu sefer sizinle birlikte mutfak veya banyoda kullanılabilecek bir doğalgaz alarmı yapmayı öğreneceğiz.

Doğalgazın Kimyasal Yapısı

Doğalgaz, petrol türevi bir gazdır. İçeriğinin çoğunluğunu (%70-%90 kadarını) metan gazı (CH4) oluşturur. Metan gazının yanı sıra etan (C2H6), propan(C3H8), bütan (C4H10) gazlarını da içermektedir. Bu gazlar, doğalgazın yanıcı özelliğini sağlamaktadır. Bunların yanı sıra karışım içerisinde eser miktarlarda karbon dioksit (CO2), hidrojen sülfür (H2S) ve azot (N2) gibi gazlar da bulunur. Bu gazlardan hidrojen sülfür, çürük yumurta kokusuna sahiptir ve 10-750 ppm seviyesinde zehirleyici özellik göstermektedir.

İnsan burnu, hidrojen sülfür gazının 0.1-0.3 ppm seviyelerinde kokusunu alabilmektedir. 20ppm seviyesinde gözde ve burunda rahatsızlıkların başlamasına sebep olan hidrojen sülfür, 100ppm seviyesine ulaştığında koku duygusunu bastırmaya başlamaktadır. Bu sebeple doğalgazın içerisine yapay olarak çürük yumurta/sarımsak kokusuna benzer keskin koku verecek bir madde eklenmektedir.

Doğalgaz zehirlenmesinin belirtileri şu şekilde olur: mide bulantısı, baş ağrısı, soluk almada güçlükler, dudak ve yanakların kırmızı/mor bir renk alması. Eğer mutfak/banyo gibi doğalgaz hattının geçebileceği yerlerde buna benzer belirtiler görüyorsanız vakit kaybetmeden tıbbi destek almanız gereklidir.

Bizim bu projedeki amacımız, havadaki doğalgazın belirli bir seviyenin üzerine geçmesi durumunda sesli ve görsel alarm verecek bir devre tasarlamaktır. Bu işlem için MQ-4 gaz sensörü kartı ve Arduino kullanacağız.

MQ-4 Metan Gazı Sensörü

MQ serisi gaz sensörleri, ucuz fiyatları, uyumlulukları ve kolay kullanımları sayesinde Arduino projelerinde sıkça tercih edilmektedir. Projemizde kullanacağımız MQ-4 doğalgaz/metan sensörü, havada 300ppm ve 10000ppm seviyelerinde bulunan metan gazını algılamakta kullanılır. Sensör, havadaki gazın yoğunluğuna orantılı olacak şekilde analog gerilim çıkışı verir. Hassas seviyede gaz ölçümleri için kullanılmak istenildiğinde, datasheet’inden faydalanarak kalibrasyon yapılabilir; fakat bizim kullanacağımız projede gaz seviyesinin bizim belirleyeceğimiz bir eşik değerinin üzerine çıkıp çıkmadığını algılamak için kullanacağımızdan bu kadar detaylı bir kullanıma gerek duymamaktayız.

MQ Serisi Gaz Sensörleri Nasıl Çalışır?

MQ serisi gaz sensörleri içerisinde alıglanacak gaza duyarlı bir tel, ısıtıcı eleman ve bir yük direnci bulunur.

MQ tipi sensörlerin devre şeması

Isıtıcının etkisiyle ısınan metan gazı, sensör telinin üzerinden geçerek telin direncinin değişmesine sebep olur. Dirençteki değişimin, istediğimiz aralık olan 0-5V arasında olması için bir yük direnci kullanılır. Bu direnç üzerindeki gerilimi mikrokontrolcümüzün analog pinine bağlayabiliriz.

MQ tipi sensörler çoğunlukla, daha pratik bir kullanım sağlaması açısından genellikle bu gerekli harici devre elemanları ve analog çıkışın yanı sıra trimpot vasıtasıyla tetik noktası belirlenen bir dijital çıkış ile birlikte taşıyıcı kartlar ile birlikte sunulmaktadır.

Metan Gaz (CNG) Sensör Kartı - MQ-4
MQ-4 metan gaz sensörü kartı

Biz projemizde kart üzerindeki analog çıkış pinini kullanacağız.

Kullanacağımız malzemelerimiz:

Arduino – MQ-4 Gaz Sensörü Bağlantı Şeması

Devremizi aşağıdaki şemaya göre kuruyoruz:

Devrenin pratik olması ve istenildiğinde kolayca bir kutu içerisine taşınabilmesi için Arduino Nano tercih ettim. Siz isterseniz Arduino UNO da kullanabilirsiniz. Kurduğumuz devrenin bizim belirlediğimiz bir seviyede gaz algıladığında görsel ve sesli bir alarm vermesini istiyoruz. Bunun için bir RGB LED ve buzzer kullandık.

Buzzer ve RGB LED’i de kartlı tercih etmemin sebebi yine modülerlik. Eğer siz bu modüller yerine devre elemanlarını teker teker kullanmak isterseniz burada yer alan buzzer yazısına ve burada yer alan RGB LED yazısına başvurarak devre bağlantılarını gerçekleştirebilirsiniz.

Arduino’ya yükleyeceğimiz kodumuz aşağıda. Kopyalamada sorun yaşıyorsanız alternatif olarak bu adresten de koda erişmeniz mümkün: https://zerobin.net/?19438f989e566022#JwwN/FRcJbds6u05GhofAGzgKKP6QedrEOZohf0IG9w=

/*
`://////////////////////////////-`
-/////////::////////////:://///////-
://///-`     `://////:`     `-/////:
:////..:///:.  `////`.:///:.  .////:
:////:///////-  ////////////-  ////:
:///++///////: `////////////- `////:
://///-.////-`.//////.-////-`-/////:
:////////::-:///////////::-:///////:
-//////////////////////////////////-
-////////////////////////////////-
`------::////////////////////////////::------`
:/--////////////////////////////////////////--/-
`:/:://::::::://////////////////////::::::://::/:`
./////-     `////////////////////////`     -/////.
./////-    `//////////////////////////`    -/////.
./////-   `////////////////////////////`   -/////.
///////: `//////////////////////////////` :///////
////////`////////////////////////////////`////////
//////////////////////////////////////////////////
---.---.//////////////////////////////////.---.---
.://////////////////////////////:.
`-:///////:::::::::::::..:::::::::::::///////:-`
://////////////////////////////////////////////:
://////////////////////////////////////////////:
://////////////////////////////////////////////:
.//////////////////////:://////////////////////. 

Bu kod, 09/08/2017 tarihinde maker.robotistan.com için hazırlanmıştır.
*/

//Sensör pinlerimizi tanımlıyoruz:
#define sensor_pin A0
#define buzzer_pin 9
//RGB LED'imizin çıkış pinlerini tanımlıyoruz:
#define led_r 5
#define led_g 6
#define led_b 7
//Sensörün çalışması için gerekli ön ısıtma süresini 5sn olarak belirliyoruz
#define preheat_time 5000
//Alarmın çalması için gerekli eşik değerini 300 olarak belirliyoruz.
#define threshold 300

void setup()
{
//Alarm için kullanacağımız buzzer ve LED'leri çıkış olarak tanımlıyoruz
pinMode(buzzer_pin, OUTPUT);
pinMode(led_r, OUTPUT);
pinMode(led_g, OUTPUT);
pinMode(led_b, OUTPUT);
//Varsayılan olarak LED'in sönük kalmasını sağlıyoruz
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
digitalWrite(led_b, HIGH);
//Sensör değerini seri monitörden görebilmemiz için seri haberleşmeyi başlatıyoruz:
Serial.begin(9600);
//İlk 5sn boyunca sensörün ısınmasını bekliyoruz. Bu esnada LED mavi renkte yanıyor:
Serial.println("Sensor isitiliyor...");
digitalWrite(led_b, LOW);
delay(preheat_time);
//Isıma işlemi için gereken 5sn süre tamamlandığında mavi LED'i söndürüyoruz:
digitalWrite(led_b, HIGH);
delay(1000);
}

void loop()
{
//analogRead() fonksiyonu ile sensör değerini ölçüyoruz ve bir değişken içerisinde tutuyoruz:
int sensorValue = analogRead(sensor_pin);
//Sensör değeri belirlediğimiz eşik değerinden yüksek ise alarm() fonksiyonunu çağırıyoruz:
if (sensorValue >= threshold)
alarm(100);
//Alarmın çalmadığı durumda LED'in yeşil yanmasını istiyoruz:
else
digitalWrite(led_g, LOW);
//Sensör değerini bilgisayarımızdan görebilmek için seri monitöre yazıyoruz:
Serial.println(sensorValue);
delay(1);
}

//Alarm fonksiyonumuzu tanımlıyoruz. Bu fonksiyon parametre olarak buzzerın ötüp ve LED'in yanıp söneceği süreyi almakta.

void alarm(unsigned int duration)
{
//Buzzer'ın 440Hz'te (la notası) ses üretmesini istiyoruz:
tone(buzzer_pin, 440);
//Normal durumda yeşil yanmakta olan LED'i söndürüp kırmızı renkte yakıyoruz:
digitalWrite(led_r, LOW);
digitalWrite(led_g, HIGH);
delay(duration);
noTone(buzzer_pin);
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
delay(duration);
}

Bu kurmuş olduğumuz devrenin duman dedektörü olmadığını hatırlatmak isterim. MQ-4 sensörü havadaki metan gazını algılar. İsterseniz MQ-4 sensör kartını söküp farklı sensör kartları kullanmanız da mümkündür. Bu kartların çoğunun pin dizilimi aynıdır, doğrudan farklı sensör kartları takarak, örneğin MQ-2 sensörü takarak devreyi çok basit bir şekilde duman dedektörüne dönüştürebilirsiniz. Bir diğer dikkat etmeniz gereken nokta ise kodda bulunan threshold değerini sizin belirlemeniz gerektiğidir. Bu işlemi sensörü kullanmak istediğiniz yere koyup deneyerek yapabilirsiniz.

CEVAP VER