Arduino İle Ev Isı Ölçer

0
8837
Arduino İle Ev Isı Ölçer
Arduino İle Ev Isı Ölçer

Arduino İle Ev Isı Ölçer

Bu projede hazırladığımız düzeneğimiz ile pencereleri, kapıları vb. evimize soğuk havanın girebileceği mekanları kontrol edeceğiz. Termistör kullanarak dış ortamdan sıcaklık bilgilerini alacağız ve Arduino kartı ile bilgileri işleyeceğiz.

TERMİSTÖR NEDİR?

Bir çok maddenin elektriksel direnci sıcaklıkla değişir. Sıcaklığa karşı hassas olan maddeler kullanılarak sıcaklık kontrolü ve sıcaklık ölçümü yapılabilir. Sıcaklık ile direnci değişen elektronik malzemelere; term (sıcaklık) ve rezistör (direnç) , kelimelerinin birleşimi olan termistör denir. Termistörler genellikle yarı iletken malzemelerden üretilirler. Termistör yapımında çoğunlukla oksitlenmiş manganez, nikel, bakır veya kobaltın karışımı olan maddeler kullanılır. Termistörler ikiye ayrılır:

PTC (SICAKLIKLA DİRENCİ ARTAN TERMİSTÖRLER – POSITIVE TEMPERATURE COEFFICIENT)

PTCnin çalışma prensibi; Bulunduğu ortamın veya temas ettiği yüzeyin sıcaklığı arttıkça elektriksel direnci de artan elektronik devre elemanıdır.

PTC’LERİN KULLANIM ALANLARI;

PTC’ler – 60 °C ile +150 °C arasındaki sıcaklıklarda kararlı bir şekilde çalışabilirler. 0.1 °C’ye kadar duyarlılıkta olanları vardır. Daha çok elektrik motorlarını fazla ısınmaya karşı korumak için tasarlanan devrelerde kullanılırlar. Ayrıca ısı seviyesinin belirli bir değer aralığında tutulması gereken tüm işlemlerde, tüm devrelerde kullanılabilir. PTC’nin sağlamlık testi; PTC’yj uçlarından ohm metreye bağladığımızda (termistör bir direnç oiduğu için yönüne bakmaya gerek yoktur) ilk olarak oda sıcaklığında PTC’nin üzerinde yazılı olan değeri okumamız gereklidir. Daha sonra mum veya benzeri bir araç ile ısıttığınızda (bu ısıstma işlemini yaparken ateş direk elemanın üzerine tutulmamalıdır, aksi takdirde eleman zarar görebilir) direnci yükselir ise PTC sağlamdır. Bunun dışında bir durum gerçekleşiyor ise PTC arızalı demektir.

NTD (SICAKLIKLA DİRENCİ AZALAN TERMİSTÖR – NEGATIVE TEMPERATURE COEFFICIENT)

NTC’nin çalışma prensibi; Bulunduğu ortamın veya temas ettiği yüzeyin sıcaklığı arttıkça elektriksel direnci azalan devre elemanıdır. PTC‘lerin tam tersidirler.

NTC’LERİN KULLANIM ALANLARI;

NTC‘Ier – 300 C° ile +50 C° arasındaki sıcaklıklarda kararlı bir şekilde çalışabilirler. 0.1 C°’ye kadar duyarlılıkta olanları vardır. Daha çok elektronik termometrelerde, arabaların radyatörlerinde, amplifikatörlerin çıkış güç katlarında, ısı denetimli havyalarda kullanılırlar. PTC‘Iere göre kullanım alanları daha fazladır. NTC‘nin sağlamlık testi; NTC’yi uçlarından ohm metreye bağladığınızda ilk olarak oda sıcaklığında NTC’nin üzerinde yazılı değeri okumamız gerekiyor. Daha sonra mum veya benzeri bir araç ile ısıttığımızda direnci azalıyor ise NTC sağlam demektir. Bunun dışında bir durum gerçekleşiyorsa NTC arızalıdır.

Kullanılan Malzemeler

  • Bir adet Arduino Uno kartı,
  • Bir adet kırmızı led,
  • Bir adet yeşil led,
  • Dört adet termistör,
  • Dört adet 10K ohm direnç (1 /4 watt gücünde).

Tasarım

Öncelikle Arduino kartından breadboard‘a 5v ve GND pinlerinden besleme kablolarını çekiyoruz. Dört adet termistörün bir uçlarını Arduino kartın analog girişlerine ve 10K ohm dirençler ile negatif şeride bağlıyoruz. Termistörün diğer uçlarını ise 5v pininden çektiğimiz pozitif besleme şeridine ekliyoruz. Kartın dijital 10 pinine kırmızı led’in negatif ucunu, dijital 11 pinine yeşil led’in negatif ucunu bağlıyoruz. Bu şekilde devre tasarımımız bitiyor.

Kodlar

// Ev sıcaklığına göre 

// istenilen sıcaklığı 

// değiştirebiliriniz



int istenilen_sicaklik = 30;



// matematiksel hesaplamalar

// yapacağımız için

// math.h kütüphanesini ekliyoruz



#include <math.h>



//termistör pinlerini

// tanımlıyoruz



#define termistor_pin  0               

#define termistor_pin2 1                

#define termistor_pin3 2               

#define termistor_pin4 3 ,



// balans direnç değeri

float balans = 9850;      



// termistor sembolik direnç değeri

float termistor_sembolik = 10000;  



// analog olarak gelen veriyi

// işlemek için

// float Thermistor(int RawADC)

// fonksiyonunu oluşturduk



float Thermistor(int RawADC) {

long direnc;  

// geçici değişken  

float Temp;                          

  

direnc=balans*((1024.0 / RawADC) - 1); 



//direncin logaritması alınıyor  

Temp = log(direnc);              

  



// Temp değişkeni 4 defa işleme

// konularak Kelvin değeri bulunuyor

Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));



// Kelvin Celciusa çevriliyor 

 Temp = Temp - 273.15;                                     



// Temp değeri daha sonra

// kullanılmak üzere

// fonksiyon dışına itiliyor

return Temp;}



//degisken tanımlamaları

float temp_bir;

float temp_iki;

float temp_uc;

float temp_dort;

float mevcut_ortalama;

float genel_ortalama;

long gecen_zaman;

int yesil_led = 11;

int kirmizi_led   = 10;



void setup() {

  pinMode(yesil_led,OUTPUT);

  pinMode(kirmizi_led,OUTPUT);

}



void loop() {

  //loop içerisinde

  // ev sıcaklığı ile 

  // istenilen sıcaklık

  //karşılaştırılacaktır

  //eğer evin ortalama sıcaklığı

  //istenilenden yüksekse

  // bu normaldir ve

  //yeşil led yanar

  // sıcaklık düşükse

  // kırmızı led yanar

  float temp;

  

  //program basladığından beri

  //geçen zaman hesaplanıyor

  gecen_zaman = millis();

  

   if (gecen_zaman > 300000) {

    if (genel_ortalama > istenilen_sicaklik) {

      digitalWrite(yesil_led,HIGH);

    } else {

      digitalWrite(kirmizi_led,HIGH);

    }

  } 

  else 

  {

    // termistörden gelen veriler

    // analog olarak okunur

    // celcius'tan fahrenayt'a

    // çevrilir

    // 4 sensörün sıcaklık

    // ortalaması alınır

    // ve mevcut sıcaklık ortaya çıkar

    

    temp=Thermistor(analogRead(termistor_pin));      

    temp = (temp * 9.0)/ 5.0 + 32.0;               

    temp_bir = temp;

    temp=Thermistor(analogRead(termistor_pin2));       

    temp = (temp * 9.0)/ 5.0 + 32.0;                

    temp_iki = temp;

    temp=Thermistor(analogRead(termistor_pin2));      

    temp = (temp * 9.0)/ 5.0 + 32.0;                  

    temp_uc = temp;

    temp=Thermistor(analogRead(termistor_pin2));   

    temp = (temp * 9.0)/ 5.0 + 32.0;                

    temp_dort = temp;

    mevcut_ortalama = (temp_bir + temp_iki + temp_uc + temp_dort) / 4;

    if (genel_ortalama <= 0) {

      genel_ortalama = mevcut_ortalama;

     } else {

      genel_ortalama = (mevcut_ortalama + genel_ortalama) / 2;

    }

    delay(5000);                                 

    }

  }





 

CEVAP VER

Please enter your comment!
Please enter your name here