Arduino ve DS18B20 ile Sıcaklık Kontrollü Fan Uygulaması

👤 Yazar: ozcan 📅 Tarih: 22.07.2026 13:54 👁️ Görüntüleme: 20

Arduino ve DS18B20 ile Sıcaklık Kontrollü Fan Uygulaması

Bu projede, DS18B20 dijital sıcaklık sensöründen alınan anlık sıcaklık değerine göre DC fanın çalışmasını kontrol eden akıllı bir soğutma sistemi tasarlıyoruz. Fan yüksek akım çektiği için Arduino pinlerinden doğrudan beslenemez; bu nedenle fan kontrolü bir TIP120 NPN Darlington transistör üzerinden gerçekleştirilmektedir.

Arduino ve DS18B20 ile Sıcaklık Kontrollü Fan Uygulaması bağlantı şeması

Görseldeki Pin Bağlantı Şeması:
  • DS18B20 Sensörü: VCC → 5V (Kırmızı), GND → GND (Siyah), Data → Dijital Pin 2 (Yeşil)
  • DS18B20 Pull-Up Direnci: Data pini (Pin 2) ile 5V arasına bağlı 4.7kΩ direnç
  • TIP120 Transistör (Yazılı Tarafı Size Bakarken):
    • Base (Sol Pin) → 1kΩ direnç üzerinden Arduino Dijital Pin 3 PWM (Mavi)
    • Collector (Orta Pin) → Fanın Eksi (-) Kablosu (Siyah)
    • Emitter (Sağ Pin) → Arduino GND (Siyah)
  • DC Fan: Artı (+) Kablo → 5V Hattı (Kırmızı), Eksi (-) Kablo → TIP120 Collector Pini

Arduino Uygulama Kodları

#include <OneWire.h>
#include <DallasTemperature.h>

// Pin Tanımlamaları
#define ONE_WIRE_BUS 2 // DS18B20 Data pini
#define FAN_PIN 3      // TIP120 Base pini (PWM destekli pin)

// Sıcaklık Eşik Değerleri (°C)
const float SICAKLIK_ESIK_MIN = 28.0; // Fanın çalışmaya başlayacağı sıcaklık
const float SICAKLIK_ESIK_MAX = 40.0; // Fanın tam güç çalışacağı sıcaklık

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  sensors.begin();
  
  // Fan pinini çıkış olarak ayarlıyoruz
  pinMode(FAN_PIN, OUTPUT);
  analogWrite(FAN_PIN, 0); // Başlangıçta fan kapalı
  
  Serial.println("Sıcaklık Kontrollü Fan Sistemi Başlatıldı...");
}

void loop() {
  // Sıcaklık verisini sorguluyoruz
  sensors.requestTemperatures();
  float sicaklik = sensors.getTempCByIndex(0);

  // Sensör okuma hatası kontrolü
  if (sicaklik == DEVICE_DISCONNECTED_C) {
    Serial.println("Hata: DS18B20 sensörü okunamadı!");
    analogWrite(FAN_PIN, 0);
    delay(1000);
    return;
  }

  Serial.print("Ortam Sıcaklığı: ");
  Serial.print(sicaklik);
  Serial.print(" °C | Fan Durumu: ");

  // KONTROL MANTIĞI
  if (sicaklik < SICAKLIK_ESIK_MIN) {
    // Sıcaklık eşik değerin altındaysa fanı kapat
    analogWrite(FAN_PIN, 0);
    Serial.println("KAPALI (0%)");
  } 
  else if (sicaklik >= SICAKLIK_ESIK_MAX) {
    // Sıcaklık maksimum eşiği aştıysa fanı %100 çalıştır
    analogWrite(FAN_PIN, 255);
    Serial.println("TAM GÜÇ (%100)");
  } 
  else {
    // Sıcaklığa orantılı olarak PWM hız ayarı (Kademeli Soğutma)
    // 28°C - 40°C arasını 100 - 255 PWM değerine haritalıyoruz
    int fanHizi = map(sicaklik, SICAKLIK_ESIK_MIN, SICAKLIK_ESIK_MAX, 100, 255);
    analogWrite(FAN_PIN, fanHizi);
    
    int yuzde = map(fanHizi, 0, 255, 0, 100);
    Serial.print("OTOMATİK HIZ (");
    Serial.print(yuzde);
    Serial.println("%)");
  }

  delay(1000); // 1 saniyede bir güncelle
}

Çalışma Mantığı ve Transistör Sürücü Katı

Sistem, hem hassas sıcaklık takibi hem de gücün güvenli bir şekilde anahtarlanması üzerine kurulmuştur:

  • TIP120 Darlington Sürücü: Arduino pinleri maksimum 40mA akım verebilirken DC fanlar çalışmak için çok daha yüksek akıma ihtiyaç duyar. TIP120 transistör, Arduino'nun Pin 3 üzerinden gönderdiği küçük akımla fanın ihtiyaç duyduğu büyük akımı anahtarlar (Low-side switching).
  • PWM ile Orantılı Hız Kontrolü (Histerezis): Kod içerisindeki map() fonksiyonu sayesinde fan sadece "aç/kapat" mantığıyla çalışmaz. Sıcaklık arttıkça PWM sinyali genişletilerek fanın dönüş hızı ve soğutma performansı kademeli olarak artırılır.
  • Gürültü ve Kararlılık: DS18B20 sensörünün kararlı veri iletebilmesi için Data hattındaki 4.7kΩ pull-up direnci kritik öneme sahiptir. Ayrıca transistörün Base pini önüne eklenen 1kΩ direnç, Arduino'nun dijital çıkış pinini aşırı akım çekilmesine karşı korur.

Projenizi çalıştırmadan önce Arduino IDE kütüphane yöneticisinden OneWire ve DallasTemperature kütüphanelerini yüklediğinizden ve Seri Monitör hızını 9600 baud ayarladığınızdan emin olun.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1