back to top

Arduino Dersleri #24: Arduino ile LM35 Sıcaklık Sensörü Kullanımı

Gerekli Malzemeler:

  •  Arduino Uno
  • Breadboard
  • 9 Adet Erkek-Erkek Jumper Kablo
  • LM35 Sıcaklık Sensörü
  • 5mm Kırmızı LED
  • 2 Adet 330 Ohm (Turuncu-Turuncu-Kahverengi)
  • Buzzer

LM35 sensörü sıcaklığı okuyarak analog veriye dönüştürür. LDR uygulamamızda yaptığımız gibi analog veriyi okuyup yorumladığımızda ordamdaki veya LM35 bağlı olduğu cismin sıcaklığını ölçmüş oluruz. LM35 ile -55°C ile +150°C derece arasında ölçüm yapabilirsiniz. Lineer çalışan, yani sıcaklık arttıkça aynı oranda çıkıştaki gerilimi arttırarak 10mV/°C hassasiyetinde çalışır. LM35’in üç bacağı bulunmaktadır. Sensörün üzerindeki kesim kısım aynı zamanda yazılı kısıma önden baktığınızda sağda kalan bacak negatif(-), solda kalan bacak pozitif(+) ve ortadaki bacak ise sinyal çıkışıdır. Sensörün pozitif bacağına +5V ve negatif bacağınıda GND’ye bağlıyoruz. Buzzer’ı kullanırken, LED kullanırkenki gibi direnç koyarak buzzer’ın zarar görmesini engelliyoruz. Buzzer’ın pozitif bacağını ise direnç üzerinden Arduino kartımızın 9 numaralı pinine bağlıyoruz. Buzzer’ın negatif bacağını ise GND hattına bağlıyoruz. LED’i ise pozitif bacağını direnç üzerinden Arduino kartınızın 8 numaralı pinine negatif bacağını ise GND hattına bağlıyoruz. Devremiz tamamlanmış oldu.  





int lm35Pin = A0;
int led = 8;
define buzzer 9
int zaman = 50;
int okunan_deger = 0;
float sicaklik_gerilim = 0;
float sicaklik = 0;
void setup()
{
pinMode(led,OUTPUT);
pinMode(buzzer,OUTPUT);
Serial.begin(9600);
}
void loop()
{
okunan_deger = analogRead(lm35Pin);
sicaklik_gerilim = (okunan_deger / 1023.0)*5000;
sicaklik = sicaklik_gerilim /10.0;
Serial.println(sicaklik);
if(sicaklik >= 30){
digitalWrite(led,HIGH);
digitalWrite(buzzer,HIGH);
delay(zaman);
digitalWrite(led,LOW);
digitalWrite(buzzer,LOW);
delay(zaman);
}
else{
digitalWrite(led,LOW);
digitalWrite(buzzer,LOW);
}
}

Kod kısmına geçtiğimizde “int lm35Pin = A0;” satırı ile A0 pinine “LM35Pin” ismini veriyoruz. İkinci satırda yine 8 numaralı bacağa “led” ismini veriyoruz. Üçüncü satırda ilse isimlendirme işlemini “#define” komutunu kullanarak yaptık. Bu kodda kullanım bakımından iki tanımlamanın bir farkı bulunmamaktadır. Daha ileri seviye uygulamalarda sizde zamanla “int” ve “#define” komutlarının farkını anlayabileceksiniz. Kodumuzun içerisinde kullanacağımız “zaman” , “okunan değer” değişkenlerini “int” değişkeni kullanarak tam sayı olarak belirledik. “sicaklik_gerilim” ve “sicaklik” değişkenlerini “float” değişken tipi kullanarak noktalı sayı değerleri alabilecek şekilde tanımladık.

Setup kısmında 2 adet çıkış bacağımızı ve Seri haberleşme başlatmayı ayarladıktan sonra asıl kodumuzun çalışacağı loop kısmına geçebiliriz.

Loop kısmında ilk yapmamız gereken A0 pininden okuma yapıp okudumuz gerilim değerini Arduino içerisinde yorumlayabildiğimiz bir sayıya çevirmek. Loop içerisindeki ilk üç satırda bu işlemi gerçekleştirip “Serial.println(sicaklik);” komutu ile “sicaklik” değişkeni içerisine yazdığımız sıcaklık değerini seri monitörde gözlemliyoruz. Seri mönitörün nasıl kullanıldığını önceki projelerimizde görmüştük.

Sıcaklık değeri 30°C dereceyi geçtiğinde hem buzzer hem de LED ile uyarı vermesini istiyoruz. Bu sebeple 22.satırdaki if komutu ile sıcaklığın istediğimiz değerden büyük olup olmadığını kontrol ediyoruz. Eğer 30°C dereceden büyük ise Buzzer ve LED kesik aralıklar ile bize uyarı verecek. Eğer 22.satırdaki 30°C dereceden büyüktür koşulu sağlanamaz ise ozaman 30.satırdaki “else” ifadesinin altındaki Buzzer ve LED’i söndürme komutları çalışacaktır.

Son Çıkan Yazılar

20 YORUMLAR

  1. İlk deneme için sadece LM35 kullandım değeri görmek için ama felaket ısındı, bağlantıları kontrol ettim sıkıntı göremedim, değeri de 120 ile 130 arasında alıyorum, ters giden ne olabilir?

  2. Merhabalar,
    daha önce bir yorumum olmuştu, elimdeki LM35 bozuk olma ihtimaline karşı yeni 2 tane aldım, bu seferde kararlı bir ölçüm yapmıyor, yani ekrana yazdırdığımda 2.34, 33.23, 23.12, 5.12…. böyle ölçümler geliyor.
    Bu normal midir? Bu şekilde hiç bir projede kullanılmaz.

    • Selamlar.

      LM35’in donanımsal ve yazılımsal bağlantılarını tekrar kontrol etmenizi öneririm. Eğer halen aynı hatayı alıyorsanız yeni bir LM35 almanızda fayda var.

      İyi çalışmalar dilerim 🙂

      • 1. aldığım LM35’in bozuk olduğuna inandım ve 2 tane yeni aldım ikisinde de ayrı ayrı denedim, sonra arduino değiştirdim değerler aşağıdaki gibi
        21.02
        27.86
        36.66
        38.12
        40.08
        41.54
        42.03
        42.52
        40.08
        25.42
        11.24
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        8.31
        17.11
        Böyle düzensiz uzayıp gidiyo, kullandığım kod aşağıda

        int lm35Pin = A0;
        int okunan_deger = 0;
        float sicaklik_gerilim = 0;
        float sicaklik = 0;
        void setup()
        {
        Serial.begin(9600);
        }
        void loop()
        {
        okunan_deger = analogRead(lm35Pin);
        sicaklik_gerilim = (okunan_deger / 1023.0)*5000;
        sicaklik = sicaklik_gerilim /10.0;
        Serial.println(sicaklik);
        delay(2000);
        }

        ne olabilir diye çok düşündüm, araştırdım hiç yaşayan yok

        • Bende de aynı sorun var. Ne yazık ki tek LM35 im vardı. İki farklı arduino uno’da denedim. Sonuç yukarıdaki gibi çıktı. Bu sayfada en üstteki kodu kullandım. Ben de sensörden şüphelendim ama siz öyle yazınca acaba başka bir sorun mu var? Bilen var mı diye yazmak istedim.
          Var mı mantıklı bir açıklaması olan.

  3. Merhaba, lm35in bağlantılarını yaparken artı ve eksileri bağladığım anda arduinom bilgisayara ya da güç kaynağına bağlı olmasına rağmen ışıkları sönüyor ve kapanıyor ne yapmalıyım?

  4. Sensör bozuk galiba 5v giriş verince Arduino ide de port bağlantısı kesiliyor 3.3v giriş verince bağlantı geliyor ama bu sefer 140 derece görüyor kod da hata olduğunu sanmıyorum RGB LED uygulamasında da sorun yaşadım mor ışık veren RGB LED?

CEVAP VER

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