Sıcaklığa göre çalışan fan, DHT11 ya da DS18B20 gibi bir sıcaklık sensörü, Arduino ve MOSFET sürücü kartıyla yapılır. Arduino sıcaklığı ölçer, belirlenen eşiğin üstünde 12V fanı çalıştırır ve sıcaklık arttıkça PWM ile hızını yükseltir. Proje 12V adaptörle çalışır; 220V hiç kullanılmaz.
Odanız ısındığında kendiliğinden çalışan, serinleyince duran bir fan; ortaokul ve lise öğrencileri için otomatik kontrolü anlatan en anlaşılır projelerden biridir. Bu yazıda bir sıcaklık sensörü, Arduino ve MOSFET kartıyla 12V bir fanı sıcaklığa göre hızlandırıyoruz. Malzeme listesi, adım adım bağlantı, hazır kod, güvenlik kuralları ve TÜBİTAK 4006 gibi sergiler için sunum önerileri yazıda yer alıyor.
Sıcaklığa göre çalışan fan nedir?
Sıcaklığa göre çalışan fan, ortam sıcaklığını ölçüp fanı yalnızca gerektiğinde ve gerektiği hızda çalıştıran küçük bir otomatik kontrol sistemidir. Bilgisayar kasalarındaki ve klimalardaki fan kontrolü de aynı ilkeye dayanır.
Sistem dört adımı sürekli tekrarlar: sensör ölçer, Arduino karar verir, MOSFET fanı sürer, sensör yeniden ölçer. Bu döngüye geri besleme denir. Fan gereksiz yere çalışmadığı için enerji de tasarruf edilir; bu, raporunuzda öne çıkarabileceğiniz bir sonuçtur.
Hangi malzemeler gerekir?
Bu proje için Arduino Uno, DHT11 sensör kartı, IRF520 MOSFET kartı, 12V küçük bir fan, bir koruma diyotu ve 12V 1A adaptör yeterlidir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino Uno R3 (CH340, USB kablolu) | 1 | Sıcaklığı okur, fan hızını hesaplar |
| DHT11 sıcaklık ve nem sensör kartı | 1 | Ortam sıcaklığını ölçer |
| IRF520 MOSFET sürücü kartı | 1 | 12V fanı Arduino sinyaliyle açar, hızını ayarlar |
| 70x70x25 mm 12V 0,15A fan (2 kablolu) | 1 | Havayı hareket ettirir |
| 1N4004 diyot | 1 | Fan kapanırken oluşan gerilim sıçramasını söndürür |
| 12V 1A adaptör | 1 | Fanı ve Arduino'yu besler |
| Jumper kablo ve breadboard | 1 set | Bağlantılar için |
Fanın gücü P = V × I = 12 V × 0,15 A = 1,8 W'tır. Arduino ve sensör yaklaşık 50 mA çeker. Toplam akım 0,2 A civarında kaldığı için 1 A'lik adaptör rahatça yeter.
DHT11 mi DS18B20 mi kullanılmalı?
Oda sıcaklığı için DHT11 yeterlidir; daha hassas ölçüm ya da sıvı içinde ölçüm gerekiyorsa DS18B20 seçilmelidir. İki sensör de dijital çıkışlıdır ve Arduino'nun tek bir pinine bağlanır.
| Özellik | DHT11 kartı | DS18B20 (su geçirmez) |
|---|---|---|
| Ölçtüğü | Sıcaklık ve nem | Yalnızca sıcaklık |
| Ölçüm aralığı | 0 – 50 °C | −55 – +125 °C |
| Doğruluk | ± 2 °C | ± 0,5 °C (−10 – +85 °C arası) |
| Okuma sıklığı | En çok saniyede 1 | 12 bitte yaklaşık 750 ms |
| Bağlantı | 3 pinli kart, direnç kartın üzerinde | Veri hattına 4,7 kΩ pull-up direnci gerekir |
| Kütüphane | DHT sensor library | OneWire + DallasTemperature |
Bu yazıdaki kod DHT11 içindir. Su geçirmez DS18B20 sensörü kullanmak isterseniz yalnızca okuma satırları değişir; ayrıntılar DS18B20 sıcaklık sensörü yazısında. İki nem sensörünün farkı ise DHT11 ve DHT22 farkı yazısında anlatılıyor.
Fan hızı PWM ile nasıl ayarlanır?
Fan hızı, Arduino'nun MOSFET'i saniyede yüzlerce kez açıp kapatmasıyla, yani PWM (darbe genişlik modülasyonu) ile ayarlanır. analogWrite(9, 0) fanı durdurur, analogWrite(9, 255) tam hızda çalıştırır; aradaki değerler fanın ortalama gerilimini düşürür.
Kodumuz 26 °C'nin altında fanı kapalı tutar. 26 °C ile 32 °C arasında hızı doğrusal olarak artırır, 32 °C ve üstünde fan tam hızda döner.
| Sıcaklık | PWM değeri | Görev oranı | Fan durumu |
|---|---|---|---|
| 26 °C altı | 0 | %0 | Kapalı |
| 26 °C | 110 | ≈ %43 | Yavaş |
| 29 °C | 182 | ≈ %71 | Orta |
| 32 °C ve üstü | 255 | %100 | Tam hız |
Küçük fanlar düşük PWM değerinde kalkış yapamayabilir. Bu yüzden kod, fan dururken çalışmaya başlayacağı zaman onu 0,3 saniye tam güçle "iter", sonra istenen hıza indirir. Fan 25 °C'nin altına inene kadar kapanmaz; bu 1 °C'lik fark (histerezis), eşik çevresinde fanın sürekli açılıp kapanmasını önler. PWM'in temelleri için PWM nedir yazısına bakabilirsiniz.
Devre nasıl bağlanır?
DHT11 kartının veri ucu D2'ye, MOSFET kartının SIG ucu D9'a bağlanır; fan MOSFET kartının çıkış klemensine, 12V ise Arduino'nun VIN pininden MOSFET kartının girişine gider. Bağlantıları adaptör ve USB çıkarılmışken yapın.
- DHT11 kartını bağlayın: + (VCC) → 5V, − (GND) → GND, OUT (S) → D2. Kartınızdaki pin yazılarını kontrol edin; sıralama üreticiye göre değişebilir.
- IRF520 kartının pinlerini bağlayın: SIG → D9, VCC → 5V, GND → GND.
- Arduino'nun VIN pinini IRF520 kartının VIN klemensine, Arduino GND'sini kartın GND klemensine bağlayın. Adaptör Arduino'nun DC jakına takıldığında VIN pininde yaklaşık 11,3V bulunur (kart üzerindeki koruma diyotu yaklaşık 0,7V düşürür).
- Fanın kırmızı kablosunu V+, siyah kablosunu V− klemensine vidalayın.
- 1N4004 diyotu fan uçlarına ters yönde bağlayın: üzerindeki gri çizgi (katot) V+ tarafında, diğer ucu V− tarafında olsun.
- Bağlantıları bir yetişkine kontrol ettirin. USB kablosunu takıp kodu yükleyin, ardından 12V adaptörü Arduino'nun DC jakına takın.
Arduino IDE'de Kütüphane Yöneticisi'nden "DHT sensor library" (Adafruit) kütüphanesini kurun; kurulum sırasında istenen "Adafruit Unified Sensor" kütüphanesini de ekleyin.
#include <DHT.h>
const byte DHT_PIN = 2, FAN_PIN = 9;
const float T_ALT = 26.0; // fan bu sicaklikta baslar
const float T_UST = 32.0; // bu sicaklikta tam hiz
const int PWM_MIN = 110; // fanin donebildigi en dusuk deger
DHT dht(DHT_PIN, DHT11);
int simdikiPwm = 0;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(FAN_PIN, OUTPUT);
}
void loop() {
float t = dht.readTemperature();
if (isnan(t)) { // sensor okunamadi
Serial.println(F("Sensor okunamadi"));
delay(2000);
return;
}
int pwm;
if (t >= T_UST) pwm = 255;
else if (t >= T_ALT) pwm = map((long)(t * 10), (long)(T_ALT * 10), (long)(T_UST * 10), PWM_MIN, 255);
else if (simdikiPwm > 0 && t > T_ALT - 1) pwm = PWM_MIN; // histerezis
else pwm = 0;
if (pwm > 0 && simdikiPwm == 0) { // kalkis icin kisa itme
analogWrite(FAN_PIN, 255);
delay(300);
}
analogWrite(FAN_PIN, pwm);
simdikiPwm = pwm;
Serial.print(t);
Serial.print(F(" C, PWM: "));
Serial.println(pwm);
delay(2000); // DHT11 en cok saniyede bir okunur
}
Seri Monitör'ü 9600 baud hızında açtığınızda her iki saniyede bir sıcaklığı ve PWM değerini görürsünüz. Eşikleri sınıfınızın sıcaklığına göre değiştirebilirsiniz; örneğin kışın denemek için T_ALT değerini 24 yapın.
Hangi güvenlik kurallarına dikkat edilmeli?
Bu projede yalnızca 12V adaptör kullanılır; 220V'luk vantilatör ya da ev aletleri devreye kesinlikle bağlanmaz.
- Adaptörü prize bir yetişkin taksın; adaptörün kasasını açmayın.
- Bağlantıyı değiştirmeden önce adaptörü ve USB kablosunu çıkarın.
- Fan dönerken pervaneye parmak ya da kablo sokmayın; sergide fanın önüne bir koruma ızgarası takın.
- Diyotun yönünü ters takmayın: ters diyot 12V hattını kısa devre eder ve adaptörü zorlar.
- Sensörü ısıtmak için çakmak, ocak ya da saç kurutma makinesi kullanmayın; avucunuzun sıcaklığı yeterlidir.
Projeyi nasıl sunarsınız?
Projeyi, sıcaklık ile fan hızı arasındaki ilişkiyi ölçüp grafikle göstererek sunabilirsiniz. Böylece "fan çalışıyor" demek yerine bir deney sonucu ortaya koymuş olursunuz.
- Problem: "Fan her zaman tam hızda çalışmak zorunda mı?"
- Deney: Sensörü avucunuzla ısıtın, sonra bırakın. Seri Monitör'deki sıcaklık ve PWM değerlerini 30 saniyede bir tabloya yazın.
- Grafik: Arduino IDE'deki Seri Çizici (Serial Plotter) ile iki değeri aynı ekranda gösterin.
- Enerji hesabı: Sürekli çalışan fan 1,8 W harcar. Fanın günde kaç saat kapalı kaldığını ölçüp tasarrufu watt-saat olarak hesaplayın.
- Rapor: Amaç, malzemeler, devre şeması, kod, ölçüm tablosu, grafik ve sonuç bölümlerini ekleyin.
Sergide fanı küçük bir karton kutunun ("sera" ya da "bilgisayar kasası" maketi) yan duvarına yerleştirmek, projenin günlük hayattaki karşılığını gösterir.
Sık sorulan sorular
Fan hiç dönmüyorsa ne yapmalıyım?
Önce Seri Monitör'de PWM değerinin 0'dan büyük olduğunu kontrol edin. Değer doğruysa adaptörün Arduino'nun DC jakına takılı olduğundan ve VIN ile GND'nin MOSFET kartının giriş klemensine gittiğinden emin olun. Fanın kırmızı ve siyah kablolarının yerini kontrol edin. Fan yalnızca yüksek sıcaklıkta dönüyorsa PWM_MIN değerini 130-150 yapın.
Fan neden vızıldıyor?
Vızıltı, Arduino'nun D9 pinindeki PWM frekansının (yaklaşık 490 Hz) insan kulağının duyabildiği aralıkta olmasından kaynaklanır. Bu ses zararsızdır ve fan tam hızda çalışırken kaybolur. Sergide rahatsız ediyorsa PWM_MIN değerini yükseltebilir ya da fanın yalnızca açık ve kapalı çalıştığı basit bir sürüm deneyebilirsiniz.
220V vantilatör bu devreyle kontrol edilebilir mi?
Hayır, öğrenci projesinde 220V vantilatör bu devreyle kontrol edilmemelidir. IRF520 kartı yalnızca düşük gerilimli DC yükler içindir ve şebeke elektriği ölümcül çarpılma ile yangın riski taşır. Aynı çalışma ilkesini 12V fanla göstermek yeterlidir; büyük sistemlerde bu iş yetkili elektrikçilerin kurduğu termostatlarla yapılır.
DHT11 neden "nan" ya da hatalı değer veriyor?
Bu durumda sensör okunamıyordur. Veri ucunun D2'ye, artı ucun 5V'a takılı olduğunu ve kodda DHT11 türünün seçildiğini kontrol edin. DHT11 saniyede bir defadan sık okunursa hata verir; koddaki iki saniyelik beklemeyi kısaltmayın. Uzun kablolarda bağlantıların gevşek olmadığından emin olun.
3 ya da 4 kablolu fan kullanılabilir mi?
Evet, 3 ya da 4 kablolu 12V fanlar da kullanılabilir. Kırmızı (+12V) ve siyah (GND) kabloları bu yazıdaki gibi bağlanır. Sarı kablo fanın devir bilgisini verir, mavi kablo ise 4 kablolu fanlarda ayrı bir PWM girişidir. Basit projede bu iki kabloyu boş bırakmak yeterlidir.
Özet
- Sıcaklığa göre çalışan fan; sensör, Arduino ve MOSFET kartından oluşan bir geri besleme sistemidir.
- DHT11 veri ucu D2'ye, IRF520 SIG ucu D9'a bağlanır; fan V+ ve V− klemensine, diyot fan uçlarına ters yönde takılır.
- Fan 26 °C'de PWM 110 ile başlar, 32 °C'de 255 ile tam hıza çıkar; 25 °C'nin altında durur.
- 12V 0,15A fan 1,8 W harcar; 12V 1A adaptör fanı ve Arduino'yu birlikte besler.
- Yalnızca 12V kullanın, 220V cihaz bağlamayın ve yetişkin gözetiminde çalışın.
