Arduino

Arduino ile TMP36 Sıcaklık Sensörü Kullanımı ve Alarm Projesi

Aykut AKMAN 8 ay önce Yorumlar (1) 5 Dakika Okuma
Arduino ile TMP36 Sıcaklık Sensörü Kullanımı ve Alarm Projesi
E-Posta : 1.2k 0

Arduino ile bir sıcaklık sensörü (TMP36, LM35, vb.) kullanarak ortam sıcaklığını ölçebilir ve belirli bir sıcaklık seviyesini aştığında bir alarm sistemi devreye sokabilirsiniz. Bu uygulama, sıcaklık kontrolü, uyarı sistemleri ve otomasyon projeleri için temel bir örnektir.

Proje Senaryosu

  • Amaç: Sıcaklık belirli bir seviyenin üzerine çıktığında bir LED'in yanması ve bir buzzer ile alarm verilmesi.
  • Uygulama Alanları: Sıcaklık kontrolü, yangın algılama, ortam izleme projeleri.

Gerekli Malzemeler

  1. Arduino Uno (veya benzeri bir Arduino kartı)
  2. TMP36 veya LM35 sıcaklık sensörü
  3. 1 x Buzzer
  4. 1 x LED
  5. 220 Ohm direnç (LED için)
  6. Breadboard
  7. Bağlantı kabloları

Devre Bağlantısı

arduino-tmp36-sıcaklık-sensörü-ile alarm-projesi

Sıcaklık Sensörü Bağlantısı

  • VCC Pin: TMP36'nın güç bacağını Arduino'nun 5V pinine bağlayın.
  • GND Pin: TMP36'nın toprak bacağını Arduino'nun GND pinine bağlayın.
  • OUT Pin: TMP36'nın veri bacağını Arduino'nun A0 pinine bağlayın.

LED ve Buzzer Bağlantısı

  • LED
    • Uzun bacak (anot): Arduino'nun 9 numaralı pinine.
    • Kısa bacak (katot): 220 Ohm direnç üzerinden Arduino'nun GND pinine.
  • Buzzer
    • Pozitif bacak: Arduino'nun 8 numaralı pinine.
    • Negatif bacak: GND.

Arduino Kodu

const int tempPin = A0; // Sıcaklık sensörü pini
const int ledPin = 9;   // LED pini
const int buzzerPin = 8; // Buzzer pini
const float thresholdTemp = 30.0; // Alarm eşiği (30°C)

void setup() {
  pinMode(ledPin, OUTPUT);   // LED çıkış olarak ayarlandı
  pinMode(buzzerPin, OUTPUT); // Buzzer çıkış olarak ayarlandı
  Serial.begin(9600);        // Seri iletişim başlatıldı
}

void loop() {
  int analogValue = analogRead(tempPin); // Sıcaklık sensörü verisini oku
  float voltage = (analogValue / 1023.0) * 5.0; // Voltajı hesapla
  float temperatureC = (voltage - 0.5) * 100.0; // Sıcaklığı °C'ye çevir

  Serial.print("Sıcaklık (°C): ");
  Serial.println(temperatureC); // Sıcaklığı Seri Monitör'de göster

  if (temperatureC > thresholdTemp) {
    // Sıcaklık eşikten yüksekse alarm ver
    digitalWrite(ledPin, HIGH);  // LED'i yak
    digitalWrite(buzzerPin, HIGH); // Buzzer'ı aktif et
  } else {
    // Sıcaklık düşükse alarmı kapat
    digitalWrite(ledPin, LOW);   // LED'i söndür
    digitalWrite(buzzerPin, LOW); // Buzzer'ı kapat
  }

  delay(1000); // 1 saniye bekle
}

Kod Açıklamaları

Pin Tanımlamaları

  • tempPin: Sıcaklık sensörünün bağlandığı analog pin.
  • ledPin: LED'in bağlandığı pin.
  • buzzerPin: Buzzer'ın bağlandığı pin.
  • thresholdTemp: Alarmın devreye gireceği sıcaklık eşiği (30°C).

Sıcaklık Ölçümü

  • analogRead(tempPin) ile sensörden gelen analog veri okunur.
  • map yerine formül ile voltaj ve sıcaklık dönüştürme yapılır.

Alarm Koşulu

  • Eğer sıcaklık thresholdTemp değerini aşarsa LED ve buzzer çalışır.
  • Aksi halde LED ve buzzer kapalı kalır.

Projenin Çalışma Prensibi

  1. Ortam sıcaklığı sensör tarafından sürekli ölçülür.
  2. Sıcaklık değeri belirlenen eşik değerini (örneğin 30°C) geçtiğinde:
    • LED yanar.
    • Buzzer ile alarm çalınır.
  3. Sıcaklık eşik değerinin altına düştüğünde alarm kapanır.

Projenin çalışan halini görmek için tıklayınız.

Ekstra İpuçları

  • Daha Hassas Kontrol: Threshold değerini Seri Monitör üzerinden değiştirmek için potansiyometre kullanabilirsiniz.
  • Çoklu Alarm: Birden fazla sensör bağlayarak farklı bölgelerin sıcaklığını aynı anda izleyebilirsiniz.
  • LCD Ekran Entegrasyonu: Sıcaklık değerlerini LCD ekranda görüntüleyerek projeyi daha profesyonel hale getirebilirsiniz.

Projenin Faydaları

  • Sıcaklık ölçümünü öğrenir.
  • Analog girişlerle PWM çıkışı nasıl kullanılacağını anlar.
  • Koşullu ifadelerle bir kontrol mekanizması oluşturur.

Bu proje sayesinde Arduino ile sıcaklık ölçümü yapabilir ve sıcaklığa dayalı alarm sistemlerini kolayca geliştirebilirsiniz!

Sıkça Sorulan Sorular

TMP36, analog bir sıcaklık sensörüdür ve çevresel sıcaklığı ölçmek için kullanılır. Çıkış voltajı sıcaklıkla orantılıdır. TMP36'nın çıkışını Arduino'nun analog pinine bağlayarak sıcaklık ölçümleri yapılabilir.

TMP36 sıcaklık sensörü -40°C ile +125°C arasında doğru ölçümler yapabilir. Çıkış voltajı her bir derece Celsius başına 10 mV artar.

  • TMP36'nın VCC bacağını Arduino'nun 5V pinine bağlayın.
  • GND bacağını Arduino'nun GND pinine bağlayın.
  • Çıkış bacağını Arduino'nun analog pinlerinden birine (örneğin, A0) bağlayın.
  • TMP36'nın analog çıkışından gelen değeri sıcaklığa dönüştürmek için şu formül kullanılır:

    sıcaklık (C) = (okunan değer * 5.0 / 1023 - 0.5) * 100

    Kod içinde bir if-else yapısı kullanabilirsiniz. Örneğin:

    if (temperature > 30) {
        digitalWrite(ledPin, HIGH); // LED yanar
    } else {
        digitalWrite(ledPin, LOW);  // LED söner
    }

    Arduino IDE'de Serial.print() fonksiyonunu kullanarak sıcaklık verilerini yazdırabilirsiniz:

    Serial.print("Sıcaklık: ");
    Serial.println(temperature);

    Belirli bir sıcaklık eşiğini geçtikten sonra bir buzzer çalıştırarak alarm oluşturabilirsiniz:

    if (temperature > 50) {
        digitalWrite(buzzerPin, HIGH); // Alarm çalışır
    } else {
        digitalWrite(buzzerPin, LOW);  // Alarm durur
    }

    Tinkercad üzerinde TMP36 yerine benzer bir sıcaklık sensörü (TMP35 veya TMP37) kullanılabilir. Alternatif olarak, analog girişle çalışan herhangi bir sıcaklık sensörü simüle edilebilir.

    Evet, sıcaklığa göre farklı renklerde ışık veren bir RGB LED kullanabilirsiniz. Sıcaklık aralıklarına göre LED renklerini değiştirebilirsiniz.

    TMP36 yerine DHT11, DHT22, LM35 gibi sensörler de kullanılabilir. Ancak her sensörün bağlantı ve kodlama yöntemi farklıdır.

    • Sensörün doğru şekilde bağlanmaması.
    • Formülde bir hata olması.
    • Çevrede aşırı sıcaklık veya elektromanyetik gürültü bulunması.

    TMP36'dan alınan sıcaklık değeri, bir LCD ekran kullanılarak görüntülenebilir. Bunun için LiquidCrystal kütüphanesini kullanarak ekran bağlantısını ve kodlamayı gerçekleştirebilirsiniz.

    Aykut AKMAN

    Aykut AKMAN

    Bilişim Öğretmeni

    Yorumlar (1)

    • Comment Author
      8 ay önce

      Mert Sabri Zal

      Çok net şekilde açıklanmış

      • Comment Author
        7 ay önce

        Aykut AKMAN

        Teşekkürler.

    Yorum Yap

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlendi.

    Diğer Yazılar

    PHP Temel Bilgileri ve Sözdizimi Php

    PHP Temel Bilgileri ve Sözdizimi

    Aykut AKMAN 11 ay önce