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.

#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
}
Sistem, hem hassas sıcaklık takibi hem de gücün güvenli bir şekilde anahtarlanması üzerine kurulmuştur:
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.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.
Henüz yorum yapılmamış. İlk yorumu siz yapın!