Elektrik elektronik temrinleri

Ders Notları => Arduino Öğreniyorum => Projeler => Konuyu başlatan: Hasan ERTÜRK - 07 Kasım 2015, 23:56:27

Başlık: 13. Gaz alarmı
Gönderen: Hasan ERTÜRK - 07 Kasım 2015, 23:56:27
Bu dersimizde Trabzon Mesleki ve Teknik Anadolu Lisesi öğrencilerinin Elektronik Öğretmeni Leyla KOLOT danışmanlığında arduino ve MQ-6 gaz modülü kullanarak geliştirmekte oldukları bir gaz alarmı devresinin tasarım ve yapım aşamalarını birlikte inceleyeceğiz.

http://www.youtube.com/watch?v=poBIqdAofxYÖncelikle arduinoyu yeni tanıyacak olanlar için meraklı maymun (http://meraklimaymun.net/)dan Çağan Bey'in gayet güzel hazırladığı videoyu izleyelim.

Gaz alarmı devremizin özelliklerini maddeler halinde sıralayalım:
1. Ortamda gaz yokken devremiz pasif halde olup, ortamda her hangi bir gaz sızıntısı olmadığına dair lcd ekranda yazılan bilgilendirme yazısı haricinde çıktı vermemektedir.
2. Ortamda bir gaz sızıntısı varsa devremiz siren çalma, ortamdaki durumu lcd ekranda izleyebilme, pencereyi açma, havalandırma fanını açma ve önceden belirlediğimiz bir telefon numarasını arayarak sızıntı ihbarında bulunmak üzere toplamda 5 fonksiyonu yerine getirecek.

(http://temrinlerim.org/images/gaz_modulu.jpg)İşe MQ-6 gaz modülünü tanımak ile başlayalım:
MQ-6, LPG, izobütan, propan gazı algılama sensör kartıdır. 300ppm ve 10000ppm arasında propan tespit eder. Projelerinizde rahatlıkla kullanabilirsiniz.

Çalışma Gerilimi: DC 5V
Çalışma Sıcaklığı: -10 / -50 °C
Analog ve dijital olmak üzere 2 çıkışı vardır.
Analog çıkış 0 - 5 Volt aralığındadır.
İsteğe bağlı olarak analog çıkış yerine dijital çıkışı da kullanabilirsiniz. TTL çıkış vermektedir.
http://www.youtube.com/watch?v=A0JxLHRLgmMGaz sensörüne ait dijital çıkışın test edilmesi:
Sensöre ait Vcc ve GND uçlarına dc 5Volt uygulanır.
D0 çıkışı ile GND uçları arasına avometre bağlanır.
Ortamda gaz yokken yeşil ledin sönük olduğu ve avometreden 5 Volt okunduğu (lojik 1) gözlenir.
Ortamda gaz varken yeşil ledin yandığı ve avometreden 0Volt okunduğu (lojik 0) gözlenir.
http://www.youtube.com/watch?v=9RQjvR8-geoGaz sensörüne ait analog çıkışın test edilmesi:
Sensöre ait Vcc ve GND uçlarına dc 5Volt uygulanır.
DA çıkışı ile GND uçları arasına avometre bağlanır.
Ortamda gaz yokken yeşil ledin sönük olduğu ve avometreden 0 Volt okunduğu gözlenir.
Ortamda gaz varken yeşil ledin yandığı ve avometreden 5 Volt okunduğu,ortamdaki gaz azaldıkça okunan değerin sıfıra doğru düştüğü gözlenir.

Bu bilgilendirmelerden sonra konuyu hazmederek öğrenme bakımından devremizin tasarım ve yapım aşamalarını sırayla açıklayalım:

Şimdi gaz sensörümüz gaz algılayıp, analog çıkışı aktif olduğunda arduinomuzun d0 pinindeki fan ve sirenin 1 dakika süre ile çalışmasını isteyelim. Bu iş için arduino programımız ve devre şemamız aşağıdaki gibi olacaktır. Bu aşamayı geçtikten sonra devremizin diğer özelliklerini tasarlayıp uygulayacağız.

Arduino kodlarımız:
// TASARIM: LEYLA KOLOT TRABZON MESLEKI VE TEKNIK ANADOLU LISESI 2015 KASIM
int gaz_sensoru=A5;   // A5 GİRİŞİNE GAZ SENSÖRÜ İSMİ VERİLDİ. BU GİRİŞE GAZ SENSÖRÜNÜN ÇIKIŞI BAĞLANACAK
int fan_rolesi=0;     // D0 ÇIKIŞINA FAN RÖLESİ ADI VERİLDİ. BU ÇIKIŞA FAN VE SİRENİ KONTROL EDEN RÖLE BAĞLANACAK.
void setup() 
{
  pinMode(gaz_sensoru, INPUT);        // A5 PİNİ GİRİŞ YAPILDI
  pinMode(fan_rolesi, OUTPUT);        // D0 PİNİ ÇIKIŞ YAPILDI
}
void loop() 
{
// GAZ ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(gaz_sensoru) == HIGH) // GAZ SENSÖRÜNDEKİ VOLTAJ SEVİYESİ LOJİK 1 İSE
    {
      digitalWrite(0, HIGH);   // FAN VE SİREN ÇALIŞTIRILDI
      delay(60000);   // 1 DAKİKA BEKLE
      digitalWrite(0, LOW);   // FAN VE SİREN DURDURULDU
      delay(3000);  // 3 SANİYE BEKLE
    }
}


Devre şemamız:
(http://temrinlerim.org/images/gaztel1.PNG)

Bu şemaya ait hex kodu arduino_fan_ve_led.cpp ismiyle konu ekinde mevcuttur.

Buraya kadar anlatılanlara ait çalışma videosu ve resim aşağıda mevcuttur. Elimde siren olmadığı için deneme devresinde siren yerine bir adet led kullandım.
http://www.youtube.com/watch?v=0nTQj7y9pls

(http://temrinlerim.org/images/gaztel2.png)

Şimdi sisteme pencereyi açmak için gerekli servo motorumuzu entegre edelim.
(http://temrinlerim.org/images/gaztel4.jpg)Kullanacağımız servo teknik özellikleri:
Marka: PowerHD 1501HG
Çalışma gerilimi: 4,8 - 6 Volt DC
Çalışma akımı (yüksüz): 4,8 Volt altında 400 mA,6 Volt altında 500 mA
Çalışma akımı (yükte): 4,8 Volt altında 2,3A, 6 Volt altında 2,5A
Tork: 4,8 Volt altında 15,5kg, 6 Volt altında 17 kg
Çalışma tepkime süresi: 4,8 Volt altında 0.16 saniye/60 derece, 6 Volt altında 0.14 saniye/60 derece
Kırmızı ve kahverengi kablolar besleme uçlarıdır. (kırmızı pozitif, kahverengi negatif)
Turuncu kablo veri kablosudur.


(http://temrinlerim.org/images/gaztel3.PNG)
Servo entegre edilmiş devre şeması

http://www.youtube.com/watch?v=_6gGuoGHVE4
Elimde fan motoru olmadığından video için temsili bir motor kullandım.
Video boyutunun küçük olması amacıyla da alarm süresi demo devrede 10 sn ile sınırlandırıldı.
(http://temrinlerim.org/images/gaztel5.jpg)

Servo entegre edilmişarduino kodları:
// TASARIM: LEYLA KOLOT TRABZON MESLEKI VE TEKNIK ANADOLU LISESI 2015 KASIM
int gaz_sensoru=A5;   // A5 GİRİŞİNE GAZ SENSÖRÜ İSMİ VERİLDİ. BU GİRİŞE GAZ SENSÖRÜNÜN ÇIKIŞI BAĞLANACAK
int fan_rolesi=0;     // D0 ÇIKIŞINA FAN RÖLESİ ADI VERİLDİ. BU ÇIKIŞA FAN VE SİRENİ KONTROL EDEN RÖLE BAĞLANACAK.
#include <Servo.h>
Servo pencere_motoru; // SERVOYA PENCERE MOTORU ADI VERİLDİ
void setup() 
{
  pinMode(gaz_sensoru, INPUT);        // A5 PİNİ GİRİŞ YAPILDI
  pinMode(fan_rolesi, OUTPUT);        // D0 PİNİ ÇIKIŞ YAPILDI
  pencere_motoru.attach(1);         // PENCERE MOTORUNU DİJİTAL 1. PİN KONTROL EDECEK
}
void loop() 
{
  pencere_motoru.write(0);  // PENCERE KAPATILDI
// GAZ ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(gaz_sensoru) == HIGH) // GAZ SENSÖRÜNDEKİ VOLTAJ SEVİYESİ LOJİK 1 İSE
    {
      digitalWrite(0, HIGH);   // FAN VE SİREN ÇALIŞTIRILDI
      pencere_motoru.write(180);  // PENCERE AÇILDI
      delay(60000);   // 1 DAKİKA BEKLE
      digitalWrite(0, LOW);   // FAN VE SİREN DURDURULDU
      pencere_motoru.write(0);  // PENCERE KAPATILDI
      delay(3000);  // 3 SANİYE BEKLE
    }
}


Şimdi de alarm devreye girdiğinde istediğimiz bir telefon numarasını arduinomuza çevirtip bildirimde bulunacağız.
Kadranlı ya da tuşlu DP (Dial Pulsing) telefonlar eski tip telefonlar olup yavaş yavaş terk edilmektedir. Ancak bu yöntemle arduino ile numara gönderme işi kolay olduğundan bu prensipten yararlanarak arduinoyu telefon olarak kullanacağız. Ayrıca bir telefona gerek yok.

Tasarıma geçmeden önce telefon makinesi ve santral arasındaki iletişimden bahsedelim ki konu anlaşılabilir olsun:
Açma kapama (on hook ve off hook)

Telefon makinesi kapalı konumda iken, çatal altı mandalı devreyi açık tutar. Zil devresi üzerinde bulunan kapasitör ise telefon hattından doğru akım akmasını engeller. Ahize kaldırıldığında çatal altı mandalı yukarı doğru kalkar. Bu konumda telefon hatta karşı bir empedans gösterir (ahize kaldırılmadığı vakit, bu empedans çok yüksektir). Bu anda telefon makinesi ve santraldeki röle sargısı üzerinden bir akım akmaya başlar. Bu akımı
oluşturan, santral ofisindeki bataryadır. Santral, herhangi bir hattan akım çekildiğini tespit edince o abone çevir sesi jeneratörüne bağlanır. Bu aşamada abone, numara tuşlayabilir. Herhangi bir rakam algılandığı zaman çevir sesi kesilir. İki türlü numara (adres) bilgisi gönderilebilir.

Numara gönderme
Hat devresi kısa aralıklarla açılıp kapatılarak numara bilgisi aktarılır. 4 rakamını göndermek için hat 4 defa, 2 rakamı için 2 defa, 0 içinse 10 defa açılıp kapanır. Her açma kapama toplam 100ms sürer. 2 numara gönderme arasında 1/2 saniye bekleme yapılır.

Telefon çevirme fonksiyonu da eklenmiş devre şemamız ve arduino kodlarımız:
(http://temrinlerim.org/images/gaztel6.PNG)

Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
Ses kayıt modülünün kullanımı:
Kayıt modülüne besleme gerilimi uygulandıktan sonra REC butonu basılır ve telefon açıldığında açıldığında dinletilmek istenen ses kayıt edilir. Modül maksimum 10 saniyelik bir ses kaydını alabilmektedir. REC butonu bırakıldığında kayıt işlemi tamamlanmış olur. Ses kaydınındevamlı dinlenebilmesi için kayıt modülü üzerindeki kısa devre elemanı aşağıdaki resimde görüldüğü şekilde P-E konumunda olmalıdır.

(http://temrinlerim.org/images/arduino103.jpg)

Şimdi de ses kayıt modülünün de eklenmiş olduğu devre şemasını ve arduino kodlarını oluşturalım:


(http://temrinlerim.org/images/gaztel1912.bmp)

(http://temrinlerim.org/images/aresbaskigaz.PNG)

Devrenin arduinonun üzerine geçme (shild) olarak eklenmesini isteyenler aşağıdaki baskı devreyi kullanabilir.


(http://temrinlerim.org/images/gazares2.PNG)

Arduino kodları:
Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.