Arduino
OKUDUĞUNUZ KONU
Arduino LCD Sıcaklık Ölçüm Hafıza Kartı Kayıt
2

Arduino LCD Sıcaklık Ölçüm Hafıza Kartı Kayıt

Yazar : Eren Doğan6 Nisan 2017

Merhaba arkadaşlar, çalıştığım yerde benden sıcaklık ölçümü yapan ve de hafıza kartı na düzenli olarak kaydeden (datalogger) bir devre yapmamı istemişlerdi belki sizin de işinize yarar diyerek paylaşıyorum.

Projede Kullanılan Malzemeler

  • Arduino UNO
  • 16×2 LCD ekran
  • Potansiyemetre
  • RTC Saat Modülü
  • SD kart modülü
  • 10k NTC Sıcaklık Sensörü

Projenin devre şeması burada

Kodlar:

#include <DS1302.h> // zaman modülü kütüphanesi
#include <SD.h> // hafıza kartı kütüphanesi
#include <LiquidCrystal.h> // lcd ekran kütüphanesi

#define NTC A0 // analog sinyal ölçüm
#define CSpin 8 // hafıza kartı seçim pini

LiquidCrystal lcd(10, 9, 4, 3, 2, 1); // lcd ekran pinleri

File dosya; // dosya

const int kCePin   = 5;  // Çipi aktif etme
const int kIoPin   = 6;  // Giriş/çıkış
const int kSclkPin = 7;  // clock sinyal

DS1302 rtc(kCePin, kIoPin, kSclkPin); //zaman modlü tanımlama

String dayAsString(const Time::Day day) { // günleri tanımlama
switch (day) {
case Time::kSunday: return "Pzr";
case Time::kMonday: return "Pzt";
case Time::kTuesday: return "Sali";
case Time::kWednesday: return "Csb";
case Time::kThursday: return "Psb";
case Time::kFriday: return "Cuma";
case Time::kSaturday: return "Cmt";
}
return "(yok daha neler )"; // 🙂
}

void setup() {
lcd.begin(16, 2); // lcd ekran ölçüleri
if (!SD.begin(CSpin)) { // sd kart başlangıç pini
lcd.println("SD Kart YOK");
return;
}
lcd.setCursor(0,1); // 0.sütun 1.satır
lcd.println("SD Kart baglandi");
pinMode(NTC, INPUT); // ntc giriş olarak ayarlandı
rtc.writeProtect(false); // hafıza modülü kayıda açıldı
rtc.halt(false); // zaman değerini döndürme
Time t(2017, 04, 04, 14, 40, 50, Time::kTuesday); // zaman ayarı buradan yapılıyor
rtc.time(t); // zaman girildi
}

void loop() {
float deger;
double sicaklik;
deger = analogRead(A0);
sicaklik = Termistor(deger);
dosya = SD.open("Log.txt", FILE_WRITE); //dosya oluşturuldu ve yazma modunda açıldı
if (SD.exists("Log.txt")) { //
dosya.print("NTC sicaklik degeri:");
dosya.println(sicaklik); // değer yazıldı
dosya.close();  // dosya kapandı
} else {
}
lcd.setCursor(0, 0); // 0.sütun 0.satır
lcd.print("Sicaklik =");
lcd.print(sicaklik);
printTime();
delay(1000); // 1 sn gecikme
lcd.clear(); // ekran temizleme
}

void printTime() { // bu fonksiyonda zamanı hem işliyoruz hem dosyaya kaydediyoruz
Time t = rtc.time();
const String day = dayAsString(t.day);
char buf[50]; // zamanın tutulduğu geçici değer
snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
day.c_str(),
t.yr, t.mon, t.date,
t.hr, t.min, t.sec);
lcd.setCursor(0,1);
lcd.println(buf);
dosya = SD.open("Log.txt", FILE_WRITE);
if (SD.exists("Log.txt")) {
dosya.print("Tarih / Saat:");
dosya.print(buf); // geçici değer yazıldı
dosya.close();
} else {
}
}

double Termistor(float analogOkuma) // sıcaklık hesaplama fonksiyonu
{
double sicaklik;
sicaklik = log(((10240000 / analogOkuma) - 10000));
sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik )) * sicaklik );
sicaklik = sicaklik - 273.15;
return sicaklik;
} 

umarım işinize yarar , kolay gelsin

SİZCE NASIL OLMUŞ?
Beğendim
40%
İlginç
20%
Eh İşte
20%
Anlamadım
0%
Kötü
20%
Berbat
0%
YAZAR HAKKINDA
Eren Doğan
Eren Doğan
Elektrik-Elektronik Mühendisi
2 YORUMLAR
  • hamdi kaya
    23 Mayıs 2017 at 14:51

    hocam ardunio due de çalışır mı acaba ?

    • Eren Doğan
      Eren Doğan
      23 Mayıs 2017 at 20:42

      çalışmaması için hiçbir sebep yok hatta daha fazlasını da yapabilirsin
      eğer sorun olursa mesaj at üzerinde çalışalım

YORUM YAP