Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Fan Çalışma Sorunu

Başlatan ErtAsL, 24 Nisan 2015, 00:55:30

ErtAsL

Lm35 sıcaklık entegresiyle 2 adet fanı pic16f877 ile çalıştırmayı planlıyorum. 1.fan 30-50 C 2. fan 50+ C'de çalışacak. Ama çözemediğim bir sorun var ki bu fanlar çalışmaya başladığı sıcaklığın 5 derece altına kadar çalışmaya devam etmeli. Yani 1.fan çalıştıktan sonra 25, 2.fan 45 dereceye kadar çalışmalı. Bunu hangi döngüyle yapabilirim? İF içine WHİLE denedim sonuca ulaşamadım İF-WHİLE-İF(break)'li denedim yine hüsran. Ne tür bir çözüm bulabilirim?

if (temp<30)
   {
      output_toggle(pin_d4);
      delay_ms(100);
      output_toggle(pin_d5);
      delay_ms(100);
      output_toggle(pin_d6);
      output_low(pin_c4);
      output_low(pin_c2);
   }
   if ((temp>=30) && (temp<50))
   {    
      while(temp<=25)
      {
      output_high(pin_c2);
      output_toggle(pin_d5);
      output_low(pin_d6);
      output_low(pin_c4);
      output_low(pin_d4);
      
      analogiris=read_adc();
      volt=(0.0048823*analogiris)*1000;   // 16 bit 0-1023 arası ölçüm yapar. Max 5V gerilim alındığından 5/1023=0.0048823 mV/bit
      temp=volt/10;
      
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\n Sicaklik=%f",temp);
      delay_ms(100);
      }
   }
   if (temp>=50)
   {
      while(temp<=45)
      {
      output_high(pin_c4);
      output_high(pin_d5);
      output_high(pin_c2);
      output_toggle(pin_d6);
      output_low(pin_d4);
      
      analogiris=read_adc();
      volt=(0.0048823*analogiris)*1000;   // 16 bit 0-1023 arası ölçüm yapar. Max 5V gerilim alındığından 5/1023=0.0048823 mV/bit
      temp=volt/10;
      
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\n Sicaklik=%f",temp);
      delay_ms(100);
      }
   }

ziyaretci

#1
 Adım büyüklüğünü hesaplarken 1024 kullanmanız gerekir. 10 tabanda 1 sayısını ziyan etmeyelim.  :)(5/1024)
     i=0,j=0;  1bit değişkenimiz, anahtar için kullanacağız. Aynı komutu birden fazla çalıştırmaya gerek yok.
1. istenilen sıcaklık değeri = a olsun.
2. fan için = b olsun.

Şuanki sıcaklık değeri 1. ortam için x1, 2. ortam için x2 olsun. 

for(;;){
   analog_islemleri();
  if(a-5<x1){ if(i==0 && a<x1){output_high(pin_??); i=1;}  }  // fan1 çalıştır
  if(a-5<=x1 && i!=0){output_low(pin_??); i=0;  }                 // fan1 kapat

  if(b-5<x2){ if(j==0 && b<x2){output_high(pin_??); j=1;} }  // fan2 çalıştır
  if(b-5<=x2 && j!=0){output_low(pin_??); j=0;  }                // fan2 kapat
}