back to top

Arduino Dersleri #9: Arduino NTC Sıcaklık Ölçümü ve Kullanımı

Herkese merhabalar ! Arduino dersleri serimizden keyif alıyor musunuz? Yorumlarınızı blogumuzda ve YouTube kanalımızda bizimle paylaşabilirsiniz ! Bu yazımızda sizlerle NTC kullanarak Arduino ile sıcaklık ölçümü uygulaması yapacağız.

Bir önceki yazımızda RGB LED uygulaması yapmıştık >>> Potansiyometre ile Renk Değişimi Uygulaması Yapalım !

NTC Sensörü Nedir?

NTC, negative thermocouple kelimelerinin kısaltmasından oluşur. NTC, aslında sıcaklığa bağlı olarak değeri değişen bir dirençtir. Sıcaklık yükseldikçe direnci azalır; bu sayede sensör görevi görmüş olur.

NTC sensörü, daha önce LDR uygulamamızda da söylediğimiz gibi pasif bir sensördür. Yapısı itibari ile bir direnç olmasına rağmen ortamdaki fiziksel değişime göre tepki verdiği için bu devre elemanını sensör olarak nitelendirebiliyoruz.

Diğer bütün sensörler hakkında bilgi almak için yazımızı inceleyin >>> Sensör Nedir? Sensör Çeşitleri Nelerdir?

Arduino ve NTC ile Sıcaklık Ölçümü Yapalım

Gerekli malzemeler: ( Not: NTC ile Sıcaklık Ölçümü ve 10. Derse Kadar Olan Dersleri “Arduino Başlangıç Seti” İle Yapabilirsiniz. Malzemeler Bu Sette! >)

LED’i Yakarak Uyarı Veren NTC Devresi

Devre şemamız bu şekilde:

Arduino NTC Devresi

Arduino NTC Kodu

Devreyle beraber kullanacağımız kodumuz:

#include <math.h>
#define led 2
void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}
double Termistor(int analogOkuma) {
  double sicaklik;
  sicaklik = log(((10240000 / analogOkuma) - 10000));
  sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik)) * sicaklik);
  sicaklik = sicaklik - 273.15;
  return sicaklik;
}
void loop() {
  int deger = analogRead(A0);
  double sicaklik = Termistor(deger);
  Serial.println(sicaklik);
  if (sicaklik > 30) {
    digitalWrite(led, HIGH);
  } else {
    digitalWrite(led, LOW);
  }
  delay(250);
}

Son Çıkan Yazılar

60 YORUMLAR

  1. Birçok kaynakta –>>

    double Termistor(int analogOkuma)
    {
    double sicaklik;
    sicaklik = log(((10240000 / analogOkuma) – 10000));
    sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik )) * sicaklik );
    sicaklik = sicaklik – 273.15;
    return sicaklik;
    }

    –>> şeklinde hesaplamalar mevcut bu hesaplamaların kaynağı nedir. Ve nereden gelmektedir. Teknik olarak…

    • Ntc; sıcaklık artığında direnci azalan, Sıcaklık azalttığında direnci artan bir devre elemanıdır. Sıcaklık artışıyla direnç düşüşü arasındaki ilişki lineer değil paraboliktir yani 20 derecede 27k 30 derecede 8k 40 derecede 1k olabilir bu artışın sıcaklığa düzgün çevrilebilmesi için lineer olması gerekir yoksa termometre stabil çalışmayacaktır. İste bu parabolik artışı daha lineer hale getirmek için logaritma fonksiyonu kullanılır.

  2. Öncelikle herkese merhaba. Kutunun içine 220V lamba yerleştirdim ve dht11 sensörü ile sıcaklık ölçtüm ve sıcaklığı 33 dereceye sabitledim yani lamba bir süre çalışıyor istenilen sıcaklığa gelince röle lambayı kapatıyor bu şekilde 15 gün çalıştı sonra lamba sürekli çalışıyor. Kısaca bu rölelerin çalışma süresi nedir nereden öğrenebiliriz? Rölenin açıp kapatma sayısı kaçtır nasıl öğrenebiliriz.
    Şimdiden teşekkürler.

  3. Merhabalar,
    Aşağıdaki Problemi Nasıl çözebilirim.
    Arduino:1.8.2 (Windows 10), Kart:”Arduino/Genuino Uno”

    C:\Users\irfan\OneDrive\Belgeler\Arduino\ardntckulsicolc\ardntckulsicolc.ino:1:17: fatal error: mat.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

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

    • Kodun en başında yer alan #include satırınında karakter ile ilgili bir hata olmuş sanırım. Kodu doğrudan kopyaladıysanız en azından en baştaki satırı silip tekrar eliniz ile yazmayı deneyebilirsiniz.

  4. Hakan ile benzer sıkıntıyı yaşıyorum, sıcaklığı saniyede bir ölçüyorum , gerçek sıcaklık ise 19.7 iken mesela
    1. ölçüm 20.10
    2. ölçüm 21.40
    3. ölçüm 19.05
    gibi değerler alıyorum,
    lütfen yardımcı olurmusunuz
    teşekürler

  5. Merhaba,
    Öncelikle bilgiler için teşekkürler. Ben bu sensörü kullanarak bir fanı çalıştırmak istiyorum yani sıcaklığa bağlı olarak fanın hızı artıp azalacak. Bu konuda yardımcı olabilir misiniz? Okunan değere bağlı olarak motorun hızını nasıl kontrol edebilirim?

  6. bu devreye bluetooth modülü ekleyip sıcaklığı koşullu olarak kontrol etmek için nasıl bir bağlantı yapmak gerekli ? mesela sıcaklık 5 derecenin üzerine çıktığında fan çalışsın. 2 dereceye indiğinde dursun.

    • Bluetooth modülünün koşullu kontrol için nerede kullanılacağını anlayamadım ama sıcaklık kontrolü için bir if ile

      if (sicaklik > 5)
      digitalWrite(role_pin, HIGH);
      if(sicaklik < 2) digitalWrite(role_pin, LOW); gibi bir yapı oluşturabilirsiniz.

  7. ==>BUZZER VE YEŞİL LED EKLEMEK İSTERSENİZ
    #include

    #define led 2
    #define yesilled 3
    #define buzzer 4

    void setup() {
    Serial.begin(9600);
    pinMode(led,OUTPUT);
    pinMode(yesilled,OUTPUT);
    pinMode(buzzer,OUTPUT);
    }

    double Termistor(int analogOkuma){

    double sicaklik;
    sicaklik = log(((10240000 / analogOkuma) – 10000));
    sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik)) * sicaklik);
    sicaklik = sicaklik – 273.15;
    return sicaklik;
    }

    void loop() {

    int deger = analogRead(A0);
    double sicaklik = Termistor(deger);
    Serial.println(sicaklik);

    if(sicaklik > 30){
    digitalWrite(led,HIGH);
    digitalWrite(yesilled,LOW);
    digitalWrite(buzzer,HIGH);
    }
    else{
    digitalWrite(led,LOW);
    digitalWrite(yesilled,HIGH);
    digitalWrite(buzzer,LOW);
    }

    delay(250);

    }

    BU KODLARI YAZIN VE BUZZERI 4. PİNE YEŞİL LEDİ 3. PİNE TAKIN<==

  8. sıcaklığa göre rgb led yanmasını isterseniz
    2. pine kırmızı
    3. pine mavi
    4. pine yeşil
    ekleyerek yapabilirsiniz.

    SORU 1: Bunu nodemcu ile çalıştırmak istediğimde nodemcu üzerinde 5 volt yok. nasıl bir düzenek olmalı ntc ye bağlı direnci azaltarak yapılabilir mi?
    #include

    #define ledk 2
    #define ledm 3
    #define ledy 4
    void setup() {
    Serial.begin(9600);
    pinMode(ledk,OUTPUT);
    pinMode(ledm,OUTPUT);
    pinMode(ledy,OUTPUT);
    }
    double Termistor(int analogOkuma){
    double sicaklik;
    sicaklik = log(((10240000 / analogOkuma) – 10000));
    sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik)) * sicaklik);
    sicaklik = sicaklik – 273.15;
    return sicaklik;
    }
    void loop() {
    int deger = analogRead(A0);
    double sicaklik = Termistor(deger);
    Serial.println(sicaklik);
    if(sicaklik > 27){
    digitalWrite(ledk,HIGH);
    digitalWrite(ledm,LOW);
    digitalWrite(ledy,LOW);
    }
    else if(sicaklik < 24){
    digitalWrite(ledk,LOW);
    digitalWrite(ledm,HIGH);
    digitalWrite(ledy,LOW);
    }
    else{
    digitalWrite(ledk,LOW);
    digitalWrite(ledm,LOW);
    digitalWrite(ledy,HIGH);
    }

    delay(2000);

    }

  9. Merhaba,

    Sitenizden aldığımız proje Setinde NTC sensörü çıkmadı ama LM35 var. LM35 üç bacaklı olduğu için nasıl ikame edeceğimizi bilmiyoruz. Yardımcı olur musunuz

  10. Merhaba,
    videodaki projeyi yaptim. aldığım değerler – olarak çıkıyor(-22.5) gibi sicaklik verdiğimde ise bu deger alta iniyor (-18.5) gibi bu neden oldu yardım edermisiniz anlayamadım.

  11. Bir şey sormak istiyorum. koddaki en başta “#include” kelimesinden sonra hangi kütüphaneyi yazacağız?
    Çünkü hata veriyor “#include”den sonra bir kütüphane adı girin diye hata veriyor. Yardımcı olursanız sevinirim.

  12. Ben bu uygulamada 10K NTC termistör kullandım ve seri port ekranında -44.20 gibi anlamsız değerler var. Bunu nasıl değiştirebilirim benim elimdeki 10K NTC termistör. Yardımcı olursanız sevinirim

  13. Bir şey sormak istiyorum. koddaki en başta “#include” kelimesinden sonra hangi kütüphaneyi yazacağız?
    Çünkü hata veriyor “#include”den sonra bir kütüphane adı girin diye hata veriyor. Yardımcı olursanız sevinirim.

    Yanıtla

CEVAP VER

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