www.elektronik.si
CC/CV način polnjenja - software za arduino

www.elektronik.si -> Arduino sekcija

Avtor: malciKraj: Polhov Gradec PrispevekObjavljeno: Tor Feb 06, 2018 10:49 pm    Naslov sporočila:  CC/CV način polnjenja - software za arduino
----------------------------------------------------------------------------
Moji polnilci sedaj delujejo, a z zelo grobo regulacijo, ker sem brez ideje, kako napisati optimalneje kodo za arduino.
Hardwersko imam narejeno tako, da z spremembo PWM-ja spreminjam analogni izhod, kateri potem regulira izhodno napetost in posledično tok MeanWell polnilca.

Program pa ima sedaj narejen tako, da imam 3 stopnje PWM-ja (ok, lahko jih imam tudi 10, a bo program ( z mojim znanjem)dolg in še vedno ne bo linearna regulacija), in ko na bateriji napetost naraste na določeno vrednost, pač povečam PWM za eno stopnjo (npr iz 100 na 115) (zmanjšam analogni izhod) in stem se tok polnilca zmanjša.

Vprašanje: Kako izračunati potrebno vrednost PWM-ja, da bo izhodni tok čim linearen v CC načinu in in da bo v CV načinu napetost stabilna?

Za CC se mi sanja, da bi moral začeti z visoko vrednostjo PWM-ja, jo potem po 1 zmanjševati in vmes gledati izhodni tok. Ko bi le ta bil presežen, bi PWM povečal za eno in potem vsakih nekaj sekund poskusil spet zmanjšati, če tok ne bi presegel nastavljeno vrednost, bi še zmanjševal, sicer bi se vrnil....

Za CV pa...? Prosim za ideje oz. namig



Koda:
//***********************   kontrola MW PWM-ja *************************************
// ko je adc0< od Umax-40 je Uout 100 (st1). ko je adc0 < od Umax-20 je Uout 115 (st2), ko je adc0 < Umax-10 je Uout 120,
// ko je adc0 >=umax je  Uout=150( stop polnjenje, lahko tudi MWPower =false(0))

int st1=100; //stopnja 1 za zmanjšanje Uout   
int st2=115; //stopnja 2 za zmanjšanje Uout   
int st3=120; //stopnja 3 za zmanjšanje Uout   


      if (adc0<(Umax-40)){
            Uout=st1;
      }else if (adc0<(Umax-20)){
            Uout=st2;
      }
      else if (adc0<(Umax-10)){
            Uout=st3;
      }else{
        Uout=150;   // preneha se polnjenje
      }

 }  // konec if stavka od delay_sec pogoja
}  // konec voida

Avtor: Peter123Kraj: Lj. PrispevekObjavljeno: Sre Feb 07, 2018 8:02 am    Naslov sporočila:  
----------------------------------------------------------------------------
Predlog:
Prvo začneš dvigovati napetost.
Po vsakem dvigu napetosti po cca 0,1s ali podobno preveriš ali je tok prekoračil nastavljeno vrednost.
Če je tok prekoračil maksimalno vrednost znižaš napetost in s tem tudi tok.
Če toka ni presegel potem višaš napetost dokler ne dosežeš maksimalne željene.

Vedno je prvi pogoj ali je dosegel tok, in drugi ali je napetost že na max.
Torej najbolje dvojna if stavka lahko v enem ali eno za drugo.

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group