akü şarj

Başlatan cann, 28 Ekim 2016, 18:56:07

cann

Çok teşekkürler.

mg1980

Önemli değil.Kolay gelsin.

mert3162

bizde görebilirmiyiz kodları bizimlede paylaşırmısınız ?
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

mg1980

#33
Sakıncası yok.Deneyeceğim. Daha güzel kod yazabilecek hocalarıma karşı ayıp etmiş olmak istemem.Aurdinoya bağlayacağınız mosfet v.b. kartında tekrar senkronize yapmanız gerekebilir.
const byte POT=0;
const byte PWM=9;
const byte BUTON=5;
const byte BUTON1=2;
boolean durum;
boolean durum1;

double girisVoltaji=0.0;

double toplam=0.0;
double ort;
byte i;
int t;



void setup() 
{
  Serial.begin(9600);
  pinMode(POT,INPUT);
  pinMode(PWM,OUTPUT);
  pinMode(8,OUTPUT); // ŞARJ AKIMINI AÇMA -KAPAMA
  pinMode(7,OUTPUT); // AMPUL DEVREYE ALARAK VOLTAJ ÖLÇME
  pinMode(6,OUTPUT);  // Şarj bitti için LED ikazı yap.
  pinMode(BUTON,INPUT_PULLUP);
  pinMode(BUTON1,INPUT_PULLUP);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(A5,OUTPUT);

}


void loop() 
{
  for(t=0;t<=6000;t++)
  {
    durum=digitalRead(BUTON);
    durum1=digitalRead(BUTON1);
    if(durum==0)
    {
      while(1)
      { 
        sarj(); 
      }
    }
    if (durum1==0)
    {
      while(1)
      {
        hizlisarj();
      }
    }
    delay(10);
  }
  while(1)
    {
     sarj(); 
    }
  
}

void sarj()
{
      digitalWrite(7,HIGH); // AMPUL DEVREDE VOLTAJ ÖLÇ
      delay(3000);
  

      for(i=0;i<20;i++){                           // 20 kez voltaj ölçüm numunesi alınıyor.Ortalaması alınacak
        girisVoltaji=analogRead(POT)*0.0049*3;   // 3 katsayısı gerilim bölücü ile 14,1v 4.7v  ölçüldüğü için
        toplam=toplam+girisVoltaji;
        delay(5);
      }
     ort=toplam/20;    
     toplam=0;

     Serial.print("Voltaj=");
     Serial.println(ort);

     

    digitalWrite(7,LOW); //Ampul ve ölçme devre dışı
    delay(1000);
    if(ort>13.7){          // Akü voltajı 14V ise şarjı kes.
      while(1){
        digitalWrite(7,LOW);
        digitalWrite(8,LOW);
        analogWrite(PWM,LOW); 
        digitalWrite(6,HIGH);  // Şarj bitti LED'i
      }
     }
       
      
    
    if(ort<=6){  
      analogWrite(PWM,128); //7.1v
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika 
      digitalWrite(8,LOW);
    }
    else if(ort>6&&ort<=7){
      analogWrite(PWM,140); // 7.78V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika
      digitalWrite(8,LOW);
    }
   else if(ort>7&&ort<=8){
      digitalWrite(A5,HIGH); // 8V gösterge LED
      analogWrite(PWM,155); // 8.5V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>8&&ort<=9){
      digitalWrite(3,HIGH); // 9V gösterge LED
      analogWrite(PWM,175); // 9.6V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika 
      digitalWrite(8,LOW);
   }
   else if(ort>9&&ort<=10){
      digitalWrite(4,HIGH); // 10V gösterge LED
      analogWrite(PWM,195); // 10.8V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika şarj etmeli.
      digitalWrite(8,LOW);
   }
   else if(ort>10&&ort<=11){
      digitalWrite(10,HIGH); // 11V gösterge LED
      analogWrite(PWM,215); // 11.8V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>11&&ort<=12){
      digitalWrite(11,HIGH); // 12V gösterge LED
      analogWrite(PWM,230); // 12.7V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>12&&ort<=13){
      digitalWrite(12,HIGH); // 13V gösterge LED
      analogWrite(PWM,245); // 13.6V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>13&&ort<13.7){
      digitalWrite(13,HIGH); // 14V gösterge LED
      analogWrite(PWM,255); // 14.2V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(1200000);     // 20 dakika
      digitalWrite(8,LOW); 
   }
   else
   {
    while(1){
        digitalWrite(7,LOW);
        digitalWrite(8,LOW);
        analogWrite(PWM,LOW); 
        digitalWrite(6,HIGH);  // Şarj bitti LED'i
      }
   }
    
}

void hizlisarj()
{
      digitalWrite(7,HIGH); // AMPUL DEVREDE VOLTAJ ÖLÇ
      delay(3000);
  

      for(i=0;i<20;i++){                           // 20 kez voltaj ölçüm numunesi alınıyor.Ortalaması alınacak
        girisVoltaji=analogRead(POT)*0.0049*3;   // 3 katsayısı gerilim bölücü ile 14,1v 4.7v  ölçüldüğü için
        toplam=toplam+girisVoltaji;
        delay(5);
      }
     ort=toplam/20;    
     toplam=0;

     Serial.print("Voltaj=");
     Serial.println(ort);

     

    digitalWrite(7,LOW); //Ampul ve ölçme devre dışı
    delay(1000);
    if(ort>13.7){          // Akü voltajı 14V ise şarjı kes.
      while(1){
        digitalWrite(7,LOW);
        digitalWrite(8,LOW);
        analogWrite(PWM,LOW); 
        digitalWrite(6,HIGH);  // Şarj bitti LED'i
      }
     }
       
      
    
    if(ort<=6){             //
      analogWrite(PWM,150); //(8.3v)
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
      
    }
    else if(ort>6&&ort<=7){
      analogWrite(PWM,170); // (9.4v)
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
    }
   else if(ort>7&&ort<=8){
      digitalWrite(A5,HIGH); // 8V gösterge LED
      analogWrite(PWM,190); // 10.5V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>8&&ort<=9){
      digitalWrite(3,HIGH); // 9V gösterge LED
      analogWrite(PWM,205); // 11V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
      
   }
   else if(ort>9&&ort<=10){
      digitalWrite(4,HIGH); // 10V gösterge LED
      analogWrite(PWM,220); // 12v
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW);
   }
   else if(ort>10&&ort<=11){
      digitalWrite(10,HIGH); // 11V gösterge LED
      analogWrite(PWM,240); // 13V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>11&&ort<=12){
      digitalWrite(11,HIGH); // 12V gösterge LED
      analogWrite(PWM,250); // 14V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);   // 15 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>12&&ort<=13){
      digitalWrite(12,HIGH); // 13V gösterge LED
      analogWrite(PWM,255); // 14.2v
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
   }
   else if(ort>13&&ort<13.7){
      digitalWrite(13,HIGH); // 14V gösterge LED
      analogWrite(PWM,255); // 15V 
      delay(1000);
      digitalWrite(8,HIGH); // ŞARJ akımını aç. Role mosfet Drain akımını akü (-) kutubuna verecek
      delay(900000);     // 15 dakika
      digitalWrite(8,LOW); 
   }
   else
   {
    while(1){
        digitalWrite(7,LOW);
        digitalWrite(8,LOW);
        analogWrite(PWM,LOW); 
        digitalWrite(6,HIGH);  // Şarj bitti LED'i
      }
   }
    
}