|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
malci Član
Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 793 Aktiv.: 3.92 Kraj: Polhov Gradec
|
Objavljeno: 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 |
_________________ Elektronika za hobi |
|
Nazaj na vrh |
|
|
Peter123 Član
Pridružen-a: Tor 13 Jan 2009 15:34 Prispevkov: 1366 Aktiv.: 7.34 Kraj: Lj.
|
Objavljeno: 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. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 76 dni
Powered by phpBB © 2001, 2005 phpBB Group
|