Arduino LM35 İle Yangın Alarm

0
10369
Arduino LM35 İle Yangın Alarm
Arduino LM35 İle Yangın Alarm

Arduino LM35 İle Yangın Alarm

Bir yangın o ana kadar biriktirdiğiniz her şeyi kül edebilir. Sevdiğiniz herkesin yok olmasına sebep olabilir. Ama o sadece bir sebeptir. Yangın için önlemimizi alarak bu sebebi belki de ortadan kaldırabiliriz.

Lm35 ile yangın alarmı projemizde insanoğlu için afet sayılan duruma küçük bir katkıda bulunacağız. Lm35 bir sıcaklık sensörüdür. Ortam ısısını devre işlemcisine söyleyerek duruma göre işlem yapılmasını sağlar. Bizde bu sensörü kullanarak çevre sıcaklığını bilip led’ler ve buzzer ile çıkış alacağız. Şimdi de malzemelerimize bakalım.

Kullanılan Malzemeler

  • Arduino Uno Kartı,
  • LM35 sıcaklık sensoru,
  • 1 yeşil, 1 kırmızı led,
  • 2 adet 330 Ohm direnç,
  • 1 adet buzzer.

Tasarım

LM35 ile yangın alarmı devremizin ana objesi her zaman olduğu gibi Arduino Uno kartıdır. Karta, ortamın sıcaklığını aktarmak için lm35 sensörünü kullanacağız. Üç bacaklı olan bu devre elemanına ön taraftan baktığınızda sol bacağı pozitif, sağ bacağı negatif ve orta bacağı da analog çıkış ucudur. (TO-92 Paket tipi için bacak sıralamasıdır). Lm35 sıcaklık sensörü -50 ile +150 dereceleri arasında sıcaklık ölçebilmektedir. Devrede, Lm35’in sol bacağı (Vcc) Uno kartın, +5v ucuna, sağ bacağı (Gnd) kartın Gnd ucuna ve orta bilgi çıkış ucu da, Uno kartın bizim belirlediğimiz Analog-1 ucuna bağlanmaktadır. Analog giriş seçilmesinin sebebi sıcaklığın sayısal bir veri olmamasından dolayıdır. Analog veriyi dijital veriye Uno kartına yüklediğimiz kodlar ile dönüştüreceğiz.

Giriş elemanı olarak Lm35 sıcaklık sensörünü işledik, şimdi sıra çıkış elemanları olan led’ler ve buzzer’da. Yeşil renkte olan ve aksi bir durumun olmadığını belirten led’in pozitif (uzun) bacağı kartın Dijital-12 ucuna, kırmızı renkte olan ve sıcaklığın belirlenen eşik değerinden fazla olduğunu gösteren led’in pozitif bacağı da kartın Dijital-5 ucuna bağlanmıştır. Led’lerin kısa (negatif) bacakları 330 ohm değerindeki dirençlerle kartın Gnd portuna bağlanmıştır. Yine aksi bir durumda çalışacak olan uyarı buzzer elemanının negatif ucu kartın Gnd, pozitif ucu da kartın Dijital-2 ucu ile bağlantı kurmuştur.

Kodlar

Lm35 ile Yangın Alarmı projemizde ilk olarak kartın haricindeki elemanların hangi pinlere bağlandığını belirtiyoruz. Daha sonra bunları giriş/çıkış olarak tanımlıyoruz. Sistem çalışır çalışmaz (void setup ( ) ) ortam sıcaklığını normal kabul edilip yeşil led’in yandığını farz ediyoruz. Bir sonraki aşamada lm35 sensöründen analog olarak gelen sıcaklık verisini okuyup, çeşitli matematiksel işlemlerle kartın anlayabileceği dijital veriye çeviriyoruz. Çevrilen veriyi de bizim belirlediğimiz eşik sıcaklığı (+50 derece) ile kıyaslıyoruz. Eğer sıcaklık eşik derecesini aşıyorsa yeşil led sönüp kırmızı led yanacak ve buzzer devreye girecek. Eğer böyle bir durum söz konusu değil, sıcaklık normal ise kırmızı led sönük, buzzer sessiz, yeşil led ise aktif olacaktır.

Lm35 sıcaklık sensöründen gelen analog verinin dijitale çevrilmesi şu şekilde olmaktadır:

Arduino Uno kartında 6 adet analog giriş/çıkış ucu bulunmaktadır. Kart üzerinde yer alan analog-dijital çevirici 10 bit’tir. Bu sebeple mikroişlemci analog uçlardan gelen veriyi 210=1024 parçaya ayırır. 0. ve 1024. parçalar şalter durumu olduğu için mikroişlemci bunları bize kullandırtmaz ve biz 1 ile 1023 sayıları dahil bunlar arasında işlem yaparız. Yani gelen analog veri 1023’e bölünerek hassas bir parçalama yapılır. Sıra geldi analog veriyi volt cinsinden hesaplamaya: Arduino Uno kartından çıkış olarak alabileceğimiz gerilim 5 volt yani 5000 mili volt’tur. Karta gelen analog veri ve kartın hesaplaması dijital veriler üzerinden olduğu için, mecburi olarak sensörden okunan analog bilgiyi dijital olarak kaç volta geldiğini hesaplamamız lazım. Bu yüzden dışarıdan okunan, 1023 e bölünen analog verinin en fazla kaç volt’a eşdeğer olduğunu bulmak için 5000 ile çarpılır. Çarpım sonucundan { (okunan analog değer/analog hassaslık) *mili volt } denklemi çıkar. Arduino Uno kartı, her 10 mili volt 1°Cyi verecek şekilde tasarlanmıştır. Bir önceki denklemden çıkan sonucu 10.0’a bölerek gerilim değerinin kaç dereceye karşılık geldiğini hesaplayıp eşik değerimiz ile kıyaslama yapacak şekilde ayarlıyoruz.

int lm35_pin=A1;

int yesil_led=12;

int kirmizi_led=5;

int buzzer_alarm=2;



void setup()

{

pinMode(lm35_pin,INPUT);

pinMode(yesil_led,OUTPUT);

pinMode(kirmizi_led,OUTPUT);

pinMode(buzzer_alarm,OUTPUT);



digitalWrite(yesil_led,HIGH);

}



void loop()

{

  float lm35_okunan_deger=analogRead(lm35_pin);

  float analog_sicaklik=(lm35_okunan_deger/1023)*5000;

  float dijital_sicaklik=analog_sicaklik/10.0;

  

  if(dijital_sicaklik>50)

  {

    tone(buzzer_alarm,300);

    digitalWrite(kirmizi_led,HIGH);

    digitalWrite(yesil_led,LOW);

  }

  else

  {

    noTone(buzzer_alarm);

   digitalWrite(yesil_led,HIGH);

   digitalWrite(kirmizi_led,LOW);

  } 

}

 

CEVAP VER

Please enter your comment!
Please enter your name here