Arduino ile Sıcaklık Kontrollü Fan

Bu projemizde Arduino ile DHT11 ısı sensöründen aldığımız veriler doğrutusunda motor fan kontrolü yapacağız, anlık takip etmek içinde LCD modüle verileri yazıyoruz,  motor kontrolü için PWM kullanacağız, bu konu hakkında bilginiz yoksa daha önce oluşturduğumuz PWM içeriklerine bakabilirsiniz, ayrıca LCD kullanmak zorunda değilsiniz küçük bir ayıklama ile LCD olmadan da kullanabilirsiniz, ayrıca tetikleme için motor ve motor güç kaynağına PN2222 NPN transistörü kullandım, bu sayede hem fanın çalışma ömrü uzamış oldu, hemde enerji kaynağını Arduino üzerinden almamış oldum, böyle durumlarda fanın ilk hareketinde, güç kaynağında yüksek akım çeker, transistör sayesinde bununda önüne geçilmiş oldu, fan durduktan sonra oluşacak negatif güç burada göz ardı edilebilecek düzeyde bu yüzden zener diyot eklemeye gerek görmedim.

LCD Nedir?

LCD (Liquid Crystal Display), Türkçe karşılığı ise Sıvı Kristal Ekran‘dır. Elektrikle kutuplanan sıvının ışığı tek fazlı geçirmesi ve önüne eklenen bir kutuplanma filtresi ile gözle görülebilmesi ilkesine dayanan bir görüntü teknolojisidir. İlk zamanlarda tek renkli ve çok düşük çözünürlüklü olan sıvı kristal ekranlar; hesap makineleri, saatler, cep telefonları vb. basit görüntüleme işlerinde kullanılmıştır. Katot ışınlı tüplere göre az denecek kadar radyasyon salımı, düşük elektrik tüketimi ve az yer kaplaması nedeniyle günümüzde en çok tercih edilen ekran çeşitidir.

Kullanılan Malzemeler

Devre Şeması

Arduino ile Sıcaklık, Arduino ile Sıcaklık Kontrollü Fan

Arduino Kodu

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#define dht_dpin 12
dht DHT;
#define pwm 9

void setup()
{
  lcd.begin(16, 2);

  lcd.clear();
  lcd.print("   Fan Hızı  ");
  lcd.setCursor(0, 1);
  lcd.print("  Kontrol Ediliyor ");
  delay(2000);
  analogWrite(pwm, 255);
  lcd.clear();
  lcd.print("devreyakan ");
  delay(2000);
}
void loop()
{
  DHT.read11(dht_dpin);
  int temp = DHT.temperature;
  lcd.setCursor(0, 0);
  lcd.print("Sıcaklık:");
  lcd.print(temp);

  lcd.print("oC");
  lcd.setCursor(0, 1);
  if (temp < 26 ) { analogWrite(9, 0); lcd.print("Fan Kapalı "); delay(100); } else if (temp == 26) { analogWrite(pwm, 51); lcd.print("Fan Hızı: 20% "); delay(100); } else if (temp == 27) { analogWrite(pwm, 102); lcd.print("Fan Hızı: 40% "); delay(100); } else if (temp == 28) { analogWrite(pwm, 153); lcd.print("Fan Hızı: 60% "); delay(100); } else if (temp == 29) { analogWrite(pwm, 204); lcd.print("Fan Hızı: 80% "); delay(100); } else if (temp > 29)
  {
    analogWrite(pwm, 255);
    lcd.print("Fan Hızı: 100%   ");
    delay(100);
  }
  delay(3000);
}