www.elektronik.si
CV regulacija polnilnega toka pri polnilcu za el. avto

www.elektronik.si -> Arduino sekcija

Avtor: malciKraj: Polhov Gradec PrispevekObjavljeno: Tor Sep 12, 2017 9:38 pm    Naslov sporočila:  CV regulacija polnilnega toka pri polnilcu za el. avto
----------------------------------------------------------------------------
Pozdravljeni!

Prišel sem do težave ( zaradi mojega neznanja Smile ) pri programiranju arduinota, ki ga uporabljam za tokovno krmiljenje izhoda iz polnilca za moj avto.

Polnilcu z referenčno napetostjo reguliraš izhodno napetost in s tem posledično izhodni tok ( čez nazivni tok ne gre).

Sedaj z arduinotom z PWM signalom in enostavnim D/A pretvornikom reguliram to ref. napetost. In če nastavim PWM112 je pri napol praznih baterijah dovolj, da dosežem nazivni tok polnilca (62A). A ker se napetost na bateriji s polnjenjem dviguje, polnilni tok pada. Tako je pri cca 75%napolnjenosti tok samo še 40A. Če povečam ref. napetost na PWM105, spet dosežem nazivni tok itd, itd, dokler BMS ne zazna maximalno napetost celic in v trenutku prekine polnjenje, kar mi pa sploh ni všeč ( do tega pride, če polnim brez mojega nadzora, običajno pa polnim z drugim, manjšim polnilcem, ki se lepo ustavi pri maximalni napetosti).

In tudi ko proti koncu polnjenja zmanjšam polnilni tok, se nekoliko zmanjša tudi napetost na baterijah(celicah) - ni 100% izkoristka polnilca

In sedaj vprašanje.

Kako narediti/spremeniti program, da bo polnilec šel v ti. CV (napetostno kontrolo)?
Da bo dokaj zvezno zmanjševal polnilni tok tako dolgo, da se max. napetost ne bo prekoračil?




prilagam nekaj izsekov del programa, kako imam sedaj rešeno - preko serijske komunikacije pošlej ukaz "PWM" in vrednost


Koda:
Utotal = map (adc0,18500,23500,55000,70000);  // pri adc 18500 je Utotoal 55V, pri adc 23500 je Utotal 70V
   analogWrite(UoutPin,Uout);
  delay(50);


if (sprejem.indexOf("pwm")>-1){  // če vsebuje niz  pwm
                  sprejem=sprejem.substring(sprejem.indexOf("pwm")+3,sprejem.indexOf("pwm")+6);
                  Uout=sprejem.toInt();
                 
        } else if



Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group