back to top

Arduino Temelleri 11: Sıcaklık Ölçümü

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.

Son Çıkan Yazılar

130 YORUMLAR

  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. 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

    • potansiyometre sayesinde 0-5 Volt arasindaki direnci 10 bitlik düzeydeki değişimini görüyorsunuz seri haberleşme yardımıyla lakin sade direnç kullandığınızda sabit bir direnç değeri olacağı için ve analog olarak değer alamacağınız için seri portta değer görmeniz mümkün değil bu sebeple potansiyometre kullanın.

  4. 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

  5. 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

  6. 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.

  7. 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.

  8. 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.

  9. Bir ateş ölçer olarak kullanmak için devreye buzzer ilave etmek istiyorum. Sıcaklık 37-38 derece üzerinde olduğunda buzzer ses verecek. Program Kodu ve bağlantı olarak nasıl bir ilave yapmam gerekiyor. Buzzer için 220ohm direnç yeterli olur mu ? Teşekkürler.

  10. İyi günler.Ben hem sıcaklık bilgisi veren hem de nabız sayan bir devre tasarlamak istiyorum.Elimde Ardunio Mega var.Buzzer da kullanabilirim.Bu 3 lüyü aynı entegrede nasıl birleştiririm bana yardımcı olabilirmisiniz acaba ??

    • Bahsettiğiniz özelliklerin hepsini bir arada sunan bir entegre veya modül mevcut değildir. Nabız ve sıcaklık ölçümü için ayrı modüller ve sensörler kullanarak projenizi gerçekleştirebilirsiniz.

  11. Lm324 ile bir nabız sayar tasarladım..aynı pertinaks üzerine lm35 ile sıcaklık ölçer devreyi kurmak istiyorum..aynı ardunio ile çıkış almam için iki devrenin kodunu alt alta yazsam doğru bir şey yapmış olur muyum..yani şöyle sorayım::aynı ardunio ile bu iki devre çıkışını nasıl alırım..bu ödevi yapmak için 2 haftam var..

    • Nabız sayarınınızı ilgili porta bağlayıp LM35’i de analog girişe bağlayarak aynı anda kullanabilmeniz mümkündür. Kod kısmında ise alt alta yapıştırmak değil, her iki sensör için gerekli ölçüm kodlarını loop fonksiyonu içine yazmanız gereklidir.

  12. merhabalar farklı kerpiç yapılarının ısı geçirgenlik kontolünü ardunio kullanarak aradaki farkı hesaplamam lazım kullanmam gereken devre nelemanları nelerdir yardımcı oluırsanız cok sevınırım

    • Arduino UNO SMD üzerindeki mikrokontrolcü entegresi devre kartına lehimli olarak gelmektedir. Standart Arduino UNO’da ise mikrokontrolcü çıkartılabilir soket üzerinde yer alır.

  13. Merhaba, sıcaklık değerleri sürekli değişiyor ve 0 ile 35 derece arasında bir çok değer veriyor. 0.009 gibi değerler ekranda diğerlerine nazaran daha fazla kalıyor. Sebebi ne olabilir acaba, LM35 in bozuk olma gibi bir ihtimali olabilir mi?

    • Yazıda da belirttiğim gibi:
      “setup fonksiyonumuzda bulunan analogReference(INTERNAL); komutu, Arduino’muzun analogda dijitale çeviricisinin 1,1V referans voltajı kullanmasını sağlıyor.”

  14. Merhaba Kerem bey,

    bir soru sormak istiyorum uygun konu ve başlık kısmını bulamadım. sorum şu hareket sensörü olmadan. bir adet kamera modülü ile resimlerdeki piksel farklarından hareketi algılayıp yönünü belirleme gibi bir çalışma yapılabilirmi, örnek olarak 30 fps lik bir modül ile 1 sn de 30 kare alınır kareler üzerindeki pixel farkları tespit edilip farkın olduğu noktaya yönelme yapılır.
    Not: IR PIR gibi donanımların mesafesi kısa o yüzden birazda açık ve geniş bir arazi üzerindeki hareketleri izleyebilirmiyiz aktardığım yöntem ile

    • Merhabalar. Bahsettiğiniz şekilde bir çalışma için kullanmanız gereken şey bir kamera ve Raspberry Pi gibi bir bilgisayar kartıdır. Malesef Arduino gibi mikrokontrolcüler görüntü işleme için yeterince işlem gücü sağlayamamaktadır. Menzil için ise merceği değişebilen tipte bir kamera ile görüntüyü istediğiniz mesafeden alarak kullanabilirsiniz.

      • yanıtınız için teşekkür ederim, kamera modülü elimde mevcut, kart temin işide kolay 😀 hobi olarak çok fazla uğraşmak istediğim bir konu yalnız, konu kodlarla yazılıma gelince tabiki tıkanıyoruz, kodları daha kolay kavrayıp istediğimiz yönde kullanabilmemiz için bi öneriniz varmı takip hazır kodlarla ilerlemek kendimizi geliştirebilmek açısından öenmli fakat istediğimizi elde edebilmemiz çok yeterli olmuyor malesef, bu konuda bilgi kaynağı olarak yönelebileceğimiz bir öneriniz varmıdır. cevabınız için şimdiden teşekkür ederim,

    • Sensörleri A0, A1, A2 gibi diğer analog girişlere bağlayabilirsiniz. Her bir sensör için ayrı ölçüm yaptırmanız gerekecektir. Örn:

      float sicaklik_1 = analogRead(A0) / 9.31;
      float sicaklik_2 = analogRead(A1) / 9.31;
      float sicaklik_3 = analogRead(A2) / 9.31;

  15. Ben lcd ekran yerine serial kodu kullanarak sıcaklığı takip ediyorum fakat oda sıcaklığında 33.40, 33.20 gibi değerler çıkıyor karşıma yanlış değerler gösteriyor sebebi ne olabilir. Yardımınız için teşekkürler.

  16. Merhaba ben termokupl kullanarak yapmak istiyorum yani çok yüksek sıcaklık ölmek için ve termokupl büyük bir kurutma fırının içinde olucak nasıl yapabilirm acaba ?

    • Kullanacağınız 7-segmente göre farklı bir yöntem izlemeniz gereklidir. Eğer MAX7219 gibi bir sürücü entegre kullanacaksanız hazır kütüphanesi ile kolaylıkla 4 haneli 7-segment gösterge ekranları sürebilirsiniz. Teker teker kullanmak istemeniz durumunda ise her bir segmenti teker teker LED olarak bağlamanız gereklidir.

  17. İyi günler. Kodu aynı şekilde yazıp bağlantıları düzgün şekilde yaptık. Ancak LCD ekranda 109 C gösteriyor. Acaba nerede hata olabilir?

  18. merhaba olculen degerı ayarladıgımız degere geldıgınde on off yapan devre nasıl yaparız mesela sıcaklık olcumu 20c ayarladık ulastıgında role yı cektıren bır devre benı bılgılendırırsenız sevınırım tskrlr

  19. ardunio uno ile pis su kuyularındaki şamandıradan bilgiyi alıp(şamandıra açık ve kapalı kontak olarak çalışıyor) gsm shild kartından bize mesaj atsın sonrada aramasını yaptırmak istiyorum.sorum şu ki;şamandıradan bilgiyi arduinoya nasıl aktarabilirim hangi girişleri kullanmam gerekir.teşekkurler.

    • Şamandıradan aldığınız çıkışı Arduino’ya uygun olacak şekilde 5V’a dönüştürebilirsiniz. Bunun için opto-izolatör ya da benzeri bir devre kullanabilirsiniz. Arduino’ya bu bağlantıyı yapıp, ilgili pini giriş olarak tanımladıktan sonra GSM shield’ın komutlarını da inceleyerek istediğiniz şekilde mesaj gönderimi yaptırmanız mümkündür.

  20. 4 adet LM 35 sıcaklık sensörünü tek bir pin üzerinden nasıl bağlayabiliriz? Bunların ortalamasını alıp fan hızını ayarlamak istiyoruz yardımcı olursanız seviniriz☺️

    • Tek bir pin üzerinden bağlamanız için bir toplayıcı amfi devresi kullanmanız gerekecektir. Fakat her bir sensörü ayrı bir analog giriş pinine bağlamanız ve buradan elde ettiğiniz değerlerin ortalamasını Arduino programı aracılığıyla almanız çok daha kolay bir çözüm olacaktır.

  21. Merhaba.Ben Bu devreye buzzer ekleyerek sıcaklık 30 dereceyi geçince buzzerın devreye girmesini istiyorum bunun için bir ders yapabilir misiniz?

  22. Arduino:1.8.5 (Windows 10), Kart:”Arduino/Genuino Uno”

    Çalışmanız programın 3690 bayt (11 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 79 byte kadarını (3%) kullanıyor. Yerel değişkenler için 1969 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    avrdude: ser_open(): can’t set com-state for “\\.\COM3”
    Taslak yüklenirken bir hata oluştu

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    yükleme sırasında böyle bir hata veriyor ne yapmam gerekiyor ??

  23. Devreyi kurdum kodu yazdım, elimde ekran olmadığı için seri port ekranından gözlemlemek için biraz değiştirdim, ancak ilk başta ısı 0 gözüküyor sonra belirli aralıklarla artıp 105 derece civarına geliyor sonra aynı şekilde azalıyor bir süre 0 olarak devam ediyor sonra aynı şeyleri tekrarlıyor. Isıtmak için elimi koyduğum zaman 300den fazla sayılar göstermeye başlıyor. sorunun nerede olduğunu anlamadım arduinonun veya ısı sensörünün arızalı olmasından şüpheleniyorum, kullandığım kod bu:

    int lm35Pin = A1;

    void setup()
    {
    Serial.begin(9600);
    analogReference(INTERNAL);
    Serial.print(“Sicaklik Olcumu:”);
    }

    void loop()
    {
    int sicaklikVolt = analogRead(lm35Pin);
    float sicaklikC = sicaklikC = sicaklikVolt / 9.31;
    Serial.println(sicaklikC);
    delay(100);
    }

  24. İyi günler, devreyi ve kodları doğru bir şekilde yapıp yükledim ama ekranda gelen sıcaklık değeri 176-180 derece arası değişiyor. Bu ölçüm yanlış, sebebi ne olabilir?

  25. 3 veya 4 adet lm35 i analog pinlerden okutup blynk programı ile bu dereceleri elefonda göstermek istiyorum mümkün mü dür. Yada blynk Dr dht 11 birden fazla kullanılabilir mi

  26. MERHABA.
    DHT11 ISI VE NEM LCD YE YAZDIRMAK İSTİYORUM MALZEMELERİNİ SİZDEN TEMİN ETTİM FAKAT KODLARI NE YAPTIMSA OLMADI. SERİ PORT EKRANINDA DHT11 KONTROLÜ YAPIYORUM COK YUKSEK DEGERLER CIKIYOR VE SÜREKLİ AYNI DEĞİŞMİYOR. BU KONU HAKKINDA YARDIMCI OLABILİRSENİZ SEVİNİR TEŞEKKÜRLERİMİ SUNARIM İYİ GÜNLER…

  27. “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.”
    Ama kodda float sicaklikC = sicaklikC = sicaklikVolt / 9.31;
    yazıyor. Yni yukarda 9,31 ile çarparsak demişsiniz burda ise bölüyoruz anlamadım 🙂

  28. MERHABA LM35 YERINE MAX6675 KULLANIYORUM. SICAKLIK OLCUMU LCD EKRANDA SUREKLI SABİT ŞEKİLDE 109DERECE OLARAK GORUNUYOR ISITSAM DAHİ FAKAT SERIAL PORTTA BAKTIGIMDA ANLIK OLARAK ISI DEĞİŞİMLERİNİ GÖREBİLİYORUM. MAX6675 E GÖRE UYGUN KOD DEĞİŞİKLİKLERİ NELERDİR YARDIMCI OLURMUSUNUZ

    • Bağlantılarınız hatalı veya sensörleriniz bozuk olabilir. 4 farklı sensörde de aynı sonucu alıyorsanız yüksek ihtimalle bağlantınız hatalıdır.

  29. Merhaba,
    ben nabız olcumu ve vucut sıcaklığı olcumu yapan bir bileklik geliştirmeyi ya da en azından bu olcumleri yapan bir bileklik fikrini geliştirmeyi dusunuyorum. Bu konularda pek bilgim yok. Bılekten sıcaklık olcumu yapılabilir mi? bileklikteki olculen verileri baska bir sistemde tutabilir miyiz? Kısa teknik bilgiler edinmem gerekiyor.

  30. merhaba ben lm 35 ve lcd ekran ile hem sıcaklığı görmek istiyorum hem de bir röle ile rezidansı kontrol etmek istiyorum bunun yazılımı konusunda sıkıntı çekiyorum okul ödevim yardımcı olursanız çok memnun olurum

    • Merhaba.

      Su sıcaklık sensörünü kettle’ye bağladıktan sonra gerekli termostat devresini kurabilirsiniz. Sıcaklık sensörü, röle ve Arduino kartı işinizi görecektir. AC elektrik olduğu için tehlikeli ve bilen birisiyle yapmanızı tavsiye ederim.

      İyi çalışmalar dilerim 🙂

  31. Ben bu yaptığınız devereye ek olarak 10pot ttan gelen değere göre röle aç kapa yaptırmaya çalışıyor um. Ama portu artırdığım zaman lm35 den gelen sıcaklık değeri de değişiyor neden dir. Nasıl yapabilirim.

  32. Merhaba benimde bir projem var ve bu konuda biraz yardıma ihtiyacım var .Akıllı termometre yapmak istiyorum minumum 100c derecede çalısacak yağ sıcaklığı 175 derece de başlayacak 180 derece olunca duracak bu sıcaklığı ölçecek sensör hangisi acaba ?

CEVAP VER

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