Merhabalar. Bugün sizlerle birlikte Arduino UNO, LCD ekran ve LM35 sensör kullanarak sıcaklık ölçme uygulaması yapacağız.

Gerekli malzemeler:

LM35 sıcaklık sensörü, hassas sıcaklık ölçümü yapan analog çıkışlı bir sıcaklık sensörüdür. 25 °C’de 0,5 °C hassasiyete sahip olan bu sensörü, Arduino’muzun analog girişinden bağlayarak sıcaklık ölçümü yapıla bilinmektedir.

 

lm35

Sensörümüzün pin konfigürasyonu bu şekildedir. TO-92 kılıf yapısına sahip bu sensörü transistör ile karıştırmak oldukça mümkündür, lütfen herhangi bir bağlantı yapmadan önce üzerinde yazanı okuyalım. Bu sensör, 2 numaralı bacağından sıcaklıkla doğru orantılı olacak şekilde 0 ile 1V arasında gerilim çıkışı vermektedir. Hatırlarsanız Arduino’muzun analog girişleri, biz aksini belirtmediğimiz sürece 0-5V arasında gerilimleri ölçmekteydi.

Eğer analog giriş aralığımızı 0-5V arasında bırakırsak, sensörün hassasiyet kabiliyetinin %80’lik kısmı boşa gitmiş olacak. Bunu engellemek için Arduino’muzun analog ölçümünü 0 ile 1,1V arasında yapacak şekilde ayarlamamız gerekli.

Öncelikle devremizi kuralım:

Devre şeması 17/01/2017 tarihinde güncellenmiştir.

Kodumuz:

#include <LiquidCrystal.h>
 
int lm35Pin = A0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup() 
{
  lcd.begin(16, 2);
  analogReference(INTERNAL);
  lcd.print("Sicaklik Olcumu:");
}
 
void loop()
{
  int sicaklikVolt = analogRead(lm35Pin);
  float sicaklikC = sicaklikC = sicaklikVolt / 9.31; 
  lcd.setCursor(0, 1);
  lcd.print(sicaklikC);
  lcd.setCursor(6,1);
  lcd.print("\337C");
  delay(100);
}

setup fonksiyonumuzda bulunan analogReference(INTERNAL); komutu, Arduino’muzun analogda dijitale çeviricisinin 1,1V referans voltajı kullanmasını sağlıyor. Bu sayede, analog girişten okuyacağımız 0-1023 arası değerlerin her bir adımı 1,0742 mV (milivolt) gerilime denk düşüyor. LM35 sıcaklık sensörünün çıkış bacağında okuduğumuz her 10 mV, 1 °C sıcaklığa denk geldiğinden; 10 / 1,0742 bize yaklaşık olarak 9,31 değerini veriyor. Yani bu demek oluyor ki, analog girişten ölçtüğümüz değeri 9,31 ile çarparsak, elde ettiğimiz sonuç sensörün verdiği çıkış geriliminin santigrat cinsinden karşılığını elde ediyoruz.

lcd.setCursor(0,1) komutu, LCD ekranımızın 1 numaralı satırının (ilk satır 0 olarak kabul edilir, yani 1 numaralı satır alt satır olmuş oluyor) 0’ıncı karakterine istediğimiz sonucu yazmamızı sağlıyor. Aynı şekilde ##.## şeklindeki sıcaklık değeri 5 karakter yer tuttuğu için bir karakter boşluk vererek 6’ıncı karaktere de santigrat derece sembolünü koyuyoruz (°C). Eğer sıcaklık ölçümü çok hızlı değişiyorsa, delay() komutunun alacağı parametre ile her bir ölçüm arasındaki süreyi arttırarak daha sabit bir değer elde edebiliriz.

32 Yorumlar

    • Bu devrede potansiyometre LCD’nin kontrastını ayarlamak için kullanılmakta. Potansiyometre yerine uygun değerde direnç koyarak LCD’nin sabit bir kontrastta kalmasını sağlayabilirsiniz.

  1. Merhaba. Devreyi kurup kodu derledim ancak ekranın ilk satırı tam dolu görünüyor. Potansiyometre kısıp açıyor ancak hiçbir yazı yok. Bir tahmininiz var mı?

  2. Merhaba,

    Lcd göstergeli ve internetten izleyebileceğim bir sıcaklık sensörü yapmak istiyorum. Aşağıdaki parçaları almak uygun göründü sizcede öylemi almam gereken başka parçalar varmı Pot direnç vs. ? Son olarak böyle bir devre ile ilgili örnek bir kaynak gösterebilirmisiniz? Teşekkürler.

    Su Geçirmez DS18B20 Dijital Isı Sensörü
    Arduino UNO R3 Klon – USB Kablo Hediyeli – (USB Chip CH340)
    9V 1200mA Adaptör
    ESP8266 Ekonomik Wifi Serial Transceiver Module
    Mini Breadboardlu Arduino UNO R3 Proto Shield Kiti
    2×16 LCD Ekran, Mavi Üzerine Beyaz – TC1602A
    1X40 12MM 180 Derece Erkek Pin Header

  3. Bu tasarım ile negatif sıcaklıkları ölçmek mümkün değil galiba. Onun için tasarımda nasıl bir değişiklik yapmak uygun olur?

  4. Merhabalar bağlantıyı kurdum 10k potansiyel yerine 10k direnç bağladım ve bu direnci pin ile şase arasına bağladım. LCD nin ekran ışığı yandı fakat herhangi bir sayı göstermiyor. Seri port ekranı kısmında da hiçbir yazı gelmiyor sorun ne olabilir acaba ? teşekkürler

  5. Merhaba bende arduino mega ile hem nabız ölçer yapıp IR led ile hemde sıcaklık sensörüyle vücut sıcaklığını ölçüp bir LCD ekran üzerinde iki değeri birlikte göstermek istiyorum. Bu mumkunmu nasıl bir LCD ekran almam gerekir arduino kodlarında çok fazla bir değişiklik olurmu yani kodların birleştirilmesi zor olurmu

    • Gayet basit bir şekilde bahsettiğiniz uygulamayı yapmanız mümkündür. LCD ekran olarak popüler olarak 2×16 karakter LCD’ler kullanılmaktadır. Bu LCD’nin kullanımıyla ilgili olarak dersimizi inceleyebilirsiniz.

    • Merhaba, bende sizin bahsettiğiniz devreden yapmak istiyorum. Hem nabiz hem sicaklik olarak. Siz denediniz mi acaba? Bir iletisime geçebilir miyiz?

      • merhaba ben henuz başlamadım projeyi araştırma safhasındayım karar veremedim dogrusu ayrıca sıcaklık sensörü olarak lm35 sensörü vücut sıcaklığını ölçmuyor galiba ortamın sıcaklığını ölçüyor. DS18B20 sensörü varmış o nasıl acaba bir bilginiz varmı hangisi daha saglıklı our

  6. ARDUİNO İLE ORTAM SICAKLIĞINI ÖLÇÜP ORTAMDAKİ SICAKLIĞI TELEFONUMUZUN EKRANINDA GÖRECEĞİZ BU DEVRE KODLAR VE NASIL YAPILACAĞI HAKKINDA BİLGİLENDİRMENİZİ RİCA EDERİM

  7. Merhaba
    Oda sıcaklığı belirli bir dereceye geldiğinde UFO’nun otomatik olarak kapanması ve istenilen derecenin altına düştüğünde otomatik olarak tekrardan açılması gerekiyor.
    Bu devre için nasıl bir yol izlemeliyim yardımcı olursanız sevinirim.
    Teşekkürler.

    • Merhabalar. Bu projenizi Arduino ile sıcaklık sensörü ve bir röle kartı kullanarak gerçekleştirebilirsiniz. Çok basit bir if yapısı ile bir dijital çıkış pinini sıcaklığa bağlı olarak 1 veya 0 arasında değiştirerek, bu pine bağlayacağınız rölenin ısıtıcınızı açıp kapatmasını sağlayabilirsiniz.

  8. merhaba. devreyi yaptım. Bulunduğum ortamda sıcaklığı 27-28 derece seviyelerinde gösteriyor. Ama 21-22 derece olmalı. Sorun ne olabilir? (LM35’in kablo uzunluğu 20 cm)

    • Devre LCD olmadan düzgün çalışıyor. LCD’ye diğer tüm bağlantılarını söküp sadece 15 ve 16. bacaklarını bağladığım an sıcaklık değeri birden anormal yükseliyor.

      • LCD’nin arka aydınlatması fazla akım çekiyor olabilir, 15 veya 16. pine yaptığınız bağlantıya seri olarak 220 ohm değerinde bir direnç bağlamayı deneyebilirsiniz.

        • 220 ohm ile bir değişiklik olmadı. Ben de bir trimpot bağladım. 2.2K’da hem sıcaklık ölçümü doğru ve sabit bir noktaya geldi, hem de LCD parlaklığı idare eder bir seviyede oldu. ama benim de internetten baktıklarımda genelde 220 ohm direnç kullanılmış. LCD olarak hem Robotistan’dan aldığımı hem de başka bir yerden aldığımı denedim. Tüm denemeler aynı oluyor.

  9. merhaba devreyi board üstünde kurduktan sonra kod üzerinde herhangi bi değişiklik yapmamıza gerek var mı?yani kod direk çalıştırıyor mu ?

    • Merhaba. Tam olarak dediğiniz gibi, bağlantılarınızda herhangi bir sorun yoksa yazıda yer alan kod ile videoda gördüğünüz gibi çalışacaktır.

CEVAP VER