Herkese selamlar.  Bu yazımda MQ-5 gaz sensörü kullanarak zehirli gaz ortamında alarm veren bir devre yapımından bahsetmek istiyorum.  Pic olarak 16f877 kullanacağız.  Bu sensörü yapabildikten sonra bütün analog çıkış veren sensörleri aynı mantıkla programlayıp kullanabilirsiniz.    Öncelikle MQ-5 gaz sensörünü biraz tanıyalım isterseniz. 

 MQ-5

  Gaz sensörümüz bu arkadaşlar.  Datasheet için;   MQ-5 . 

  Ben biraz özetleyim bu sensörü.  Şimdi sensörün içerisinde dirençler var. Ve bu dirençler gazlara duyarlı dirençler olduğundan bazı zehirli gaz ortamlara girdiklerinde dirençlerin değerleri değişiyor.  Bu direnç değişimleri voltaj değerlerine dönüştürülüp analog olarak çıkış sağlanıyor. Gaz yoğunluğu ne kadar fazla ise sensör çıkışında o kadar büyük bir voltaj değeri elde ediyorum. Toplam 6 pinim mevcut. Bu 6 pinden biri suppy power ın verildiği pin,biri de ground diğer 4 pin ise data pini. 

  Sensörümüz yanlış hatırlamıyorsam  6 çeşit gazı alıgılayabiliyor. Bunlar  LPG, doğal gaz , alkol, yemek yanık dumanı ve sigara dumanı ( Soba Dumanı) . Tabi sensörün datasheetinde de yazılan gibi  bu gazlara olan duyarlılığı farklı.  Atıyorum ortamda çok fazla yoğunlukta bulunan alkol için 3V anolog çıkış elde ediyorsam aynı durumda LPG için 5 Volt anolog çıkış elde ediyorum.  

  Sensörü kısaca tanımladıktan sonra şimdi devre şemamıza bir göz atalım isterseniz. 

Gaz Sensörü

 Devremiz bu şekilde. Proteusta gaz sensörünün paketi bulunmadığı için kendim bir paket oluşturdum.  Sensörün 6 pini var ve bunlar simetrik olarak yerleştirilmiş.  Dataseheetine bakarsanız orada Technical Data bölümünde pinlerin bağlanış şekillerini göstermiş. H pinlerlerinin herhangi birisine voltaj uygulayıp diğerini de grounda çekebilirim.  Bu durumda kalan 4 pin data için yapılmıştır. Yalnız  sadece iki adet data çıkışı alabilirim. Datasheetinde de gösterildiği gibi bu 4 pin A, A ve B, B diye gruplandırılmış.  Şimdi eğer a grubundan data almak istiyorsam A pinin bir tanesini supply power a bağlamak zorundayım. B den almak istemiyorsam B grubu boşta kalabilir. Ben proteusta çizerken bunları A, B, A1, B1 olarak gruplandırdım.  

 Sensördeki data pininin data çıkışı Pic’in analog pinine bağlanmalı. Çünkü sensörden elde ettiğim bilgi analog bilgidir.  Program yazarken ise pic in Anolog/Digital Converter birimini devreye sokmam gerekiyor.  16f877 de 78 tane Anolog giriş bulunmaktadır bunlar; RA0,1,2,3,4,5 RE0,1,2 dir. Zaten pinlerin adının  yan tarafında da AN diye ifade edilen şey anaolog giriş olduğunu söylemekte. 

 Şimdi programı şu şekilde olacak;

[stextbox id=”grey”]

#include <16f877.h>

#device ADC=10 // Anolog/Digital Converterin Çözünürşüğü Ayarlanıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use fast_io(b)

#use fast_io(a)

unsigned long int gas;

int i;

//********** ANA PROGRAM FONKSİYONU*******

void main ( )

{

setup_psp(PSP_DISABLED);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1);

setup_CCP1(CCP_OFF);

setup_CCP2(CCP_OFF);

set_tris_b(0x00);

set_tris_a(0x0F);

output_b(0x00);

setup_adc(adc_clock_div_32);  //Analog Digital Converter için Clock Sinyali Tayini yapılıyor.

setup_adc_ports(AN0);  // AN0 yani RA0 pini analog olarak seçiliyor.

//********************Başlangıç Sinyali********************//

output_high(pin_b1);

delay_ms(500);

output_low(pin_b1);

delay_ms(500);

// *******************Sensör Devrede**********************//

while(1){

gas = read_adc(); //  Anolog girişten okunan değer Gas değişkenine yazılıyor.

delay_ms(10);  

if(gas>410 && gas<512)  // Anolog değer Durumları… { delay_ms(100); if(gas>410 && gas<512) { output_high(pin_b1); delay_ms(500); output_low(pin_b1); delay_ms(500); } } else if(gas>512 && gas<615) { delay_ms(100); if(gas>512 && gas<717) { output_high(pin_b1); delay_ms(250); output_low(pin_b1); delay_ms(250); } } else if(gas>=717)

{

output_high(pin_b1);

delay_ms(10000);

}

else if(gas<=410)

{

output_low(pin_b1);

}

else

{

output_low(pin_b1);

}

}

}

[/stextbox]

  Şimdi bu programdaki püf nokta analog/digital converteri aktif edebilmek ve kullanabilmek arkadaşlar. Şimdi PIC analog olan voltaj değerini digitale çeviriken  0V ile 5 V  arasındaki voltaj değerlerine digital olarak 0 dan 1024 e kadar değer atıyor. Analog digital converterin çözünürlüğü ne kadar büyük olursa o kadar küçük voltaj değişimleri digitale çevrilebilir. 

   Programdaki “If” yapılarındaki digital değerleri nereden biliyorsun diye soracak olursanız, tek tek ölçmekle bulabilirsiniz o değerleri ancak. Yani elinize bir çakmak alıp sürekli sensörün çıkışını kontrol etmeniz gerekiyor.  

  Şimdilik benden bu kadar. Her türlü yardım için beni burada bulabilirsiniz. Kolay gelsin. 🙂

Dökümanlar için; gaz sensörü

29 YORUMLAR

  1. merhaba Yusuf bey, ben biyomedikal öğrencisiyim ve bu sene yapacağım projede bu yazınızdan pek çok kez yararlandık, projeyle amaçlanan iş ve işçi güvenliğinde yenilikçi bir fikir üretmek, bu yüzden şimdiden çok teşekkür ederim. size bir kaç sorum olacak;

    1) kullandığınız sensör(MQ5) hangi marka kullandınız?
    2) devre gördüğüm kadarıyla dc gerilimle çalışıyor, bun hakkında beni bilgilendire bilirmisiniz?
    3) “if” komutundaki değerleri ölçtüğünüzden bahsetmişssiniz, bu değerleri öçerken kullandığınız para metreler varmı?
    4) bu sensör için algılanan gazın çeşidine göre çıkış değeri farklılık arz ediyormu?
    5) gaz ölçümü için değerlendirmeyi yazınızda bahsettiğiniz pic programı mı yapıyor?

    sorularım umarım sizi sıkmaz, yardımlarınız için şimdiden teşekkürlerimi bir borç bilirim.

  2. 1-) ben sensörü MQ5 diye satın aldım bide MQ4 var. Ikisininde datasheeti aynı. MQ5 zaten markadır. Tüm MQ5 şer aynı diye biliyorum.
    2-) evet devre Doç 5 Voltta çalışıyor. 5 volttan biraz daha büyük voltaja sahip pil kullanılabilir zaten 7805 entegresiyle o voltaja 5 volta indirip kullanıyoruz.
    3-) sensörün çıkış aldığım pinindeki her bir voltaj değeri 0 ile 1024 arasında dijital bir sayı değerine atanıp dijital olarak değerlendiriliyor. Sensörden aldığım maksimum 5 volt değerini 1024 e bölersek her bir sayı karşılığına kaç volt düştüğünü buluyorum ve hangi gaz yoğunluğunda sensörün kaç volt çıkış verdiğini de bilirsem programı ona göre yazabilirim.
    4-) evet algılanan gazın çeşidine göre farklı voltaj alıyorum sensörün çıkışından bunu sensörün datasheetinden görmek mümkün.
    5-)evet değerlendirmeyi belirlediğiniz dijital değerlere göre pic programı yapıyor,

  3. Yusuf bey sizi tekrar rahatsız ediyorum ve samimiyetinize sığınarak bir kaç soru daha sormak istiyorum.
    aklımıza sensörü nereden aldığız takıldı,
    senör(MQ5)fiyatları piyasa değerlerinin baya altında bunu nasıl açıklarsınız,
    kullandığınız sensör netür gazları ölçebiliyor,
    şimdiden çok yardımınız dokundu teşekkür ederim. buarada “oguzhan214@gmail.com” benim e posta adresimdir. özel olarak ulaşmak isterseniz 7/24 açıktır. TEŞEKKÜRLER

  4. pic16f877, 7805 regülatör, 0.1 ve 0.33 uf kapasitör, 4MHZ kristal, 2 adet 22pf kapasitör, 1 adet mq5 gaz sensörü, 2 adet 22k bir adet 220 ohm ve bir adet 1 k ohö direnç. Zaten devre şemasını inceleyerek kendiniz de çıkarabilirsiniz.

  5. Gönderdiğim ısıs çizimi üzerinde programın similasyonunu gerçekleştiremezsiniz. Çünkü o similasyon için değil baskı devre için tasarlanmıştır. Programı bread board üzerinde denemeniz gerekiyor.

  6. if(gas>410 && gas410 && gas512 && gas512 && gas=717)
    yukarıdaki pprogramda gaz yazan yerlere tespit edilen değerlere göre isim atasak lcd panelde o ismle görebilirmiyiz?

  7. Evet bu mümkün. 🙂 Zaten CCS C nin LCD için hazır protokolü mevcut o protokolü kullanarak basit bir şekilde bastırabilirsiniz. Bu sitede LCD ile ilgili uygulamaları aratırsanız rahatlıkla bulursunuz.

  8. Biz bu projeyi proteusta deneyip yazılımını geliştirmeyi planlıyoruz ayrıca donanım eklemeleri(LCD ve RS232 sürücüsü) yapıcaz bu yüzden proteusta çalışan bu devrenin taslağı gerekmekte, bunu sizden rica etsek alabilir miyiz? Bu bizim için önemli yapıcağımız projeyi sanal ortamda göstermemiz gerekiyor, elektronik temelimiz zayıf olduğu için verdiğiniz kadarıyla çalışan bir proteus taslağını çıkartamıyoruz, yardımlarınızı bekliyoruz. TEŞEKKÜRLER

  9. İyi günler yusuf bey öncelikle paylaşımınız için teşekkür ederiz. Gaz Sensörünün bağlantısını yapamadık. Bu konu hakkında detaylı bilgi verebilir misiniz ???

oğuzhan için bir cevap yazın İptal

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz