Arduino ile Termometre

LM35; Analog çıkış veren, -55 ile 150 derece arasında ölçüm yapabilen, her santigrad derece için 10mV hassasiyete sahip bir sıcaklık sensörüdür. Yani ortamın sıcaklık değişimine bağlı olarak çıkış bacağından ölçüm yapıldığında her santigrad derece için 10mV gerilim değişimi gözlenir.

Bu uygulamada Arduino ile LM35 sensörünü kullanarak ortamın sıcaklığını hesaplayıp LCD ekranda gösteren bir termometre yaptık.

Devre Şeması:

LM35 sıcaklık sensörünün 1 nolu bacağı Arduinonun +5V etiketli pinine, 3 nolu bacağı ise GND pinine bağlandıktan sonra ortadaki pinide Arduinonun Analog girişlerinden birine bağlanır. Bu uygulamada A0 pinine bağladık.

Arduino Programı:

/* "LM35 Sıcaklık sensörü kullanarak Termometre" 
    Arduino ile LM35 kullanarak ortamın sıcaklığını 
    hesaplayıp LCD ekranda gösteren termometre programı. 
    diyot.net */
    
#include <LiquidCrystal.h> // LCD ekran kütüphanesini ekle.
LiquidCrystal lcd(7,6,5,4,3,2); // lcd nesnesi oluştur.
// LCD bağlanan pinler sırayla: (Rs,E,D4,D5,D6,D7)

const int sensor = A0;   //AO pinine sensor ismini ver.

int sensor_degeri = 0;   // değişkenler tanımla.
float gerilim_degeri = 0;
float sicaklik_degeri = 0;
    
void setup() {
  lcd.begin(16,2);  // 2 satır 16 sütun LCD başlat.
}

void loop() {
  sensor_degeri = analogRead (sensor); 
  // LM35'ten gelen analog değerleri oku,kaydet.

  gerilim_degeri = (sensor_degeri/1023.0)*5000;
  // sensörden okunan değerleri gerilime çevir.

  sicaklik_degeri = gerilim_degeri/10.0;
  // gerilim değerini sıcaklık değerine çevir.

  lcd.clear();  // LCD temizle.
  lcd.home();   // imleci başa al.
  lcd.print("SICAKLIK= "); // ekrana yaz.
  lcd.setCursor(0,1);  // imleci alt satıra al.
  lcd.print(sicaklik_degeri);
  // hesaplanan sıcaklık değerini ekrana yaz.
  lcd.print(" DERECE"); // ekrana yaz.
  delay(1000);
  // 1 saniyede bir sıcaklık değerini güncelle. 
}

LCD ekranın Arduino ile birlikte kullanımını kolaylaştırmak amacıyla oluşturulmuş olan “LCD kütüphanesi” programın başında eklendi. LCD’nin bağlandığı pinler belirtilerek “lcd” nesnesi oluşturuldu. Devre şemasında görülen LCD’nin Arduino ile bağlantısı aşağıda daha ayrıntılı bir şekilde gösterilmiştir. Arduinonun 7,6,5,4,3,2.pinleri LCD ekran için kullanıldı.

LM35 sıcaklık sensörünün Analog çıkış veren orta ucunu Arduinonun A0 girişine bağladığımız için bu pine const int veri tipinde “sensor” ismini verdik. Program içerisinde kullanacağımız değişkenleri tanımladık.

void setup() kısmında lcd.begin(16,2); komutuyla 2 satır, 16 sutundan oluşan LCD kullanacağımızı belirttik ve LCD’yi başlattık.

LM35 sıcaklık sensörü bulunduğu ortamdaki sıcaklık değişimlerine göre aynı potansiyometre ve LDR uygulamasında olduğu gibi analog çıkışından 0 ile 1023 arasında değişen analog sinyal değerleri üretir. Bu sayısal değerleri kullanarak ortamın sıcaklığını Arduinonun hesaplamasını ve LCD ekrandan yazdırmasını sağladık. Sensörden okunan analog değerleri doğrudan sıcaklık birimine çeviremeyiz. Arduino programında bu değerleri önce gerilim birimine sonrada sıcaklık birimine dönüştürdük.

void loop() kısmında analogRead komutuyla LM35’ten gelen 0 ile 1023 arasında değişen değerler okunup “sensor_degeri” isimli değişkene kaydedilir. Bu değişken tam sayı içereceğinden dolayı programın başında int veri tipinde oluşturmuştuk.

Sonra yazdığımız formülde; sensörün analog çıkışından elde edilen ve “sensor_degeri” isimli değişkene kaydedilen 0 ile 1023 arasında değişen sayısal değerleri 1023’e böldük ve Arduino pinlerinden maksimum 5V = 5000mV çıkış alınabildiği için elde edilen değeri 5000 ile çarparak sensörden okunan analog değerleri mV cinsinden gerilim değerlerine çevirmiş olduk. Bu değeri “gerilim_değeri” isimli değişkene kaydettik. Bu değişken ondalıklı sayı içereceğinden dolayı programın başında float veri tipinde tanımlamıştık.

En son olarak LM35 sıcaklık sensörü ortamın sıcaklık değişimine bağlı olarak her santigrad derece için 10mV çıkış verdiğinden dolayı hesaplanan bu gerilim değerini 10’a böldük ve böylece ortamın sıcaklık değerini santigrad derece cinsinden hesaplamış olduk. Bu değeri “sicaklik_degeri” isimli değişkene kaydettik. Bu değişken ondalıklı sayı içereceğinden dolayı programın başında float veri tipinde tanımlamıştık.

lcd.clear(); komutuyla sıcaklık değişiminin güncellenmesinden önce LCD ekranın temizlenmesini sağladık. lcd.home(); komutuyla imleci başa aldık. lcd.print komutuyla LCD ekrana “SICAKLIK=” yazdırdık. lcd.setCursor(0,1); komutuyla imleci bir alt satıra geçirdik. lcd.print(sicaklik_degeri); yazarak hesaplanan sıcaklık değerini LCD ekrana yazdırdık. lcd.print komutuyla ekrana “DERECE” yazdırdık. void loop() kısmında yapılan işlemler sürekli tekrarlandığı için delay(1000) yazıp 1sn bekleme yaptık böylece 1 saniyede bir sıcaklık değişiminin güncellenmesini sağladık.

YAZAR : Admin

Elektronik Mühendisi / E.Üni. Kalibrasyon Lab. Sorumlusu / Biyomedikal Kalibrasyon Laboratuvarı Sorumlu Müdürü (Sağ.Bak.) / X-Işınlı Görüntüleme Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.) / Ultrason-Doppler Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.) - Hatalı veya kaldırılmasını istediğiniz sayfaları diyot.net@gmail.com bildirin

BU YAZIYI DA İNCELEDİNİZ Mİ ?

Arduino ile BD135 – BD136 transistörlerini kullanarak DC Motor kontrolü

Çeşitli robot projelerinde kullanılan DC motorları Arduinoya doğrudan bağlayıp çalıştıramayız. Çünkü Arduinonun giriş-çıkış pinleri en …

Bir cevap yazın