Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowy ogranicznik prądowy dla zasilacza.

robiw 08 Sty 2015 10:09 1149 13
  • #1 08 Sty 2015 10:09
    robiw
    Poziom 26  

    Witam Kolegów,
    Buduje prosty zasilacz, gdzie w sposób cyfrowy mogę sterować napięciem wyjściowym a chciałbym programowo zrealizować ograniczenie prądowe. Mam już pewną koncepcję, lecz chciałbym zapytać Was, bo być może ktoś realizował taką funkcjonalność. W omawianym urządzeniu mam bardzo dokładny pomiar prądu odbiornika za pomocą specjalizowanego układu, który ma dodatkową cechę, że można w nim ustawić alarm (zgłasza przerwanie) w przypadku przekroczenia progu prądowego (dowolnie, w górę lub dół). Moja koncepcja jest taka:

    - zadajemy U oraz I_LIMIT i w momencie, gdy pobierany przez odbiornik prąd przekroczy I_LIMIT to napięcie zostanie szybko zregulowane do wartości I_LIMIT według wzoru: Unowe = (Unast/Izmierzone)*I_LIMIT. Oczywiście, np. zwarcie będzie miało pewien przebieg, jeśli chodzi o przepływ prądu w czasie, więc w takim wypadku regulacja według podanego wzoru będzie następować w kilku, ale bardzo szybkich krokach (w przerwaniu od alarmu limit), gdyż tak jak wspomniałem, układ pomiarowy prądu ma wyprowadzenie, które może wywoływać ALARM (przerwanie procesora) w przypadku, gdy prąd przekroczy I_LIMIT a w tym przerwaniu możemy zmniejszać napięcie wyjściowe.

    Tak „na sucho”, na tą chwilę, trudno mi sobie wyobrazić programową realizacje powrotu z tego stanu C.C. by nie zachodziło jakieś oscylowanie napięcia. Mogę, oczywiście, po wejściu w tryb C.C. uruchomić jakiś Timer, który powiedzmy co 10ms będzie sprawdzał, czy prąd nie jest już poniżej I_LIMIT i próbował o „ziarno” zwiększyć napięcie, ale zastanawiam się czy wtedy nie dojdzie do jakiś oscylacji, gdyby po tym zwiększeniu napięcia znowu nastąpiłoby przekroczenie I_LIMIT. Mogę też, dla tego układu pomiarowego, ustawić nowy typ alarmu, który TERAZ będzie wywoływał przerwanie jak prąd obniży się poniżej I_LIMIT i wtedy, w stosownej procedurze zwiększać napięcie wyjściowe…tylko znowu ten sam problem oscylacji. Z góry dziękuję za sugestie...robiw

    0 13
  • Arrow Multisolution Day
  • #2 09 Sty 2015 11:02
    trol.six
    Poziom 30  

    Każdy układ ze sprzężeniem może być generatorem, jeśli zostaną spełnione warunki. fazy i wzmocnienia. Pomiar zajmuje jakiś czas (sterowanie pewnie też) więc warunek fazy już jest. A reagowanie w punkcie progowym daje wzmocnienie. A więc i oscylacje.

    Można to rozwiązać tak jak się da ;) albo jak pasuje. Np odczytywać prąd z pomiaru wielkości a nie z funkcji progowej.

    Można zmniejszyć oscylacje przy odczycie z wartości progowej ale potrzebna by była znajomość ch-ki obciążenia. (A najlepiej całego zasilacza z obciążeniem) W innym przypadku pozostaje jakiś rodzaj "dziabania" ;) tak jak to kolega pisze.
    W ten sposób najczęściej są skompensowane wzmacniacze operacyjne, których ch-ka wzmocnienia wraz z częstotliwością maleje.

    0
  • #3 09 Sty 2015 11:14
    robiw
    Poziom 26  

    Zastanawiam się jednak jak to zorganizować programowo by zoptymalizować regulację...robiw

    -1
  • Arrow Multisolution Day
  • #4 09 Sty 2015 19:50
    nsvinc
    Poziom 35  

    Wyjście z trybu CC robi się samo. Załóżmy ze w pewnym momencie R obciążenia rośnie a więc rośnie napięcie (o to dba tryb CC); w pewnym momencie napięcie osiągnie V(limit) i wtedy automatycznie zacznie się praca w trybie CV - będzie regulować V(limit).

    Wejscie w tryb CC analogicznie - w pewnym momencie R obciążenia będzie maleć a więc będzie rosnąć prąd (o to dba tryb CV); w pewnym momencie napięcie osiągnie I(limit) i zacznie się praca w trybie CC.

    W trybie CC siłą rzeczy przy rosnącym R obciążenia w koncu Vout trafi w Vlimit. Nie ma siły inaczej. Nie ma potrzeby wykonywać zadnego 'dziabania' ani innych cyrków.

    Programowo w pseudokodzie:

    Kod: C
    Zaloguj się, aby zobaczyć kod


    Jeśli to jest programowe, to najpewniej masz albo pełny regulator konwertera w MCU, albo masz zewnetrzny kontroler i DACem narzucasz mu napięcie wyjściowe.
    Jeśli to drugie, to sprawa jest pogmatwana; tak czy siak aby obsluzyc sensownie tryb CC bez 'dziobania' (a więc ekstra tętnień) potrzebujesz znać/mierzyć Vout. Dodatkowo nie mozna zmieniać nastaw za szybko - gotowy regulator CV zmuszany DACem do trybu CC nie jest najlepszym rozwiązaniem. A dodatkowo, prio ma stabilizacja napięcia, nie prądu, więc musisz zmierzyć prąd i narzucić napięcie. Tak zrealizowany tryb CC to jest "regulator prądu ktorym jest regulowany regulator napięcia", a nie jeden regulator pracujący w dwóch trybach. To nie jest fajne w zasilaczu....
    Regulator regulujący inny regulator musi mieć znacznie nizsze pasmo niz regulator regulowany ;] Więc ten twój tryb CC na pewno nie będzie szybki; i będziesz musiał tam mieć jakiegoś PIDa...

    0
  • #5 09 Sty 2015 20:18
    robiw
    Poziom 26  

    nsvinc napisał:
    Wyjście z trybu CC robi się samo.


    Kolego, tutaj nic nie wykonuje się samo. To co mam to:

    - pomiar bieżącego prądu pobieranego przez odbiornik,
    - ewentualnie alarm wyzwalający ISR, gdy pobierany prąd przekroczy I_LIMIT lub spadnie poniżej tej wartości,
    - sterowanie poziomem napięcia wyjściowego przy pomocy DAC'a.

    robiw

    0
  • #6 09 Sty 2015 21:35
    nsvinc
    Poziom 35  

    Czyli jest to w gruncie rzeczy zasilacz CV, tak?

    No to wejscie do trybu CC bedzie jak I(out) osiagnie I(limit), tak?
    A wtedy zasilacz będzie utrzymywał I(out) na poziomie I(limit), zmieniając V(out), tak?
    A jak R obciążenia zacznie rosnąć, to regulator CC będzie podnosił napięcie, tak? ;]

    A co się stanie gdy regulator CC aby utrzymać I(out)==I(limit) podniesie V(out) az do V(limit)?...:)

    Dodano po 8 [minuty]:

    nsvinc napisał:
    - sterowanie poziomem napięcia wyjściowego przy pomocy DAC'a.

    Twój tryb CC będzie miał "tłusty tyłek". Na pewno nie będzie to szybkie.
    Będziesz potrzebować PIDa (albo inny regulator) który zmierzy I(out) i będzie wystawiał taki V(ref) kontrolerowi aby I(out)==I(limit). Nic strasznego, tylko powolne. I jakiekolwiek zmiany V(ref) mozesz wprowadzać wtedy, gdy regulator napięcia się ustabilizuje, czyli warunek (delta)V<jakiś_próg_tętnień wystąpi przez jakiś_czas_stabilizacji_regulatora. Inaczej będziesz wprowadzał oscylacje w pętlę napięciowego sprzężenia zwrotnego.

    0
  • #7 10 Sty 2015 07:44
    robiw
    Poziom 26  

    nsvinc napisał:
    Czyli jest to w gruncie rzeczy zasilacz CV, tak?

    Tak.
    nsvinc napisał:
    No to wejscie do trybu CC bedzie jak I(out) osiagnie I(limit), tak?

    Jak przekroczy Ilimit.
    nsvinc napisał:
    A wtedy zasilacz będzie utrzymywał I(out) na poziomie I(limit), zmieniając V(out), tak?

    Ta. Przejdzie w tryb CC.
    nsvinc napisał:
    A jak R obciążenia zacznie rosnąć, to regulator CC będzie podnosił napięcie, tak? ;]

    Tak, ale maks do Vlimit.
    nsvinc napisał:
    A co się stanie gdy regulator CC aby utrzymać I(out)==I(limit) podniesie V(out) az do V(limit)?...:)

    Przejdzie z powrotem w tryb CV.

    nsvinc napisał:
    - sterowanie poziomem napięcia wyjściowego przy pomocy DAC'a.
    Twój tryb CC będzie miał "tłusty tyłek". Na pewno nie będzie to szybkie.

    Czemu?
    nsvinc napisał:
    Będziesz potrzebować PIDa (albo inny regulator) który zmierzy I(out) i będzie wystawiał taki V(ref) kontrolerowi aby I(out)==I(limit). Nic strasznego, tylko powolne. I jakiekolwiek zmiany V(ref) mozesz wprowadzać wtedy, gdy regulator napięcia się ustabilizuje, czyli warunek (delta)V<jakiś_próg_tętnień wystąpi przez jakiś_czas_stabilizacji_regulatora. Inaczej będziesz wprowadzał oscylacje w pętlę napięciowego sprzężenia zwrotnego.


    Mógłbyś dokładniej? Dzięki...robiw

    0
  • #8 10 Sty 2015 13:31
    nsvinc
    Poziom 35  

    No i właśnie swoim postem sam udowodniłeś, że wyjście z trybu CC nastąpi samo z siebie gdy V(out) będzie musiał osiągnąć/przekroczyć V(limit) aby utrzymać prąd na poziomie I(limit) - patrz pseudokod w #4. Nie trzeba zadnego sztucznego zwiekszania napięcia o "ziarno" itp, jak stwierdziłeś w #1.

    robiw napisał:
    Czemu?

    Bo dochodzi garść róznych opóźnień i ograniczen pasma wynikające z pętli sprzężenia zwrotnego gotowego kontrolera.
    Co to za kontroler? Powiedz lepiej, w jakim trybie ten kontroler pracuje - prądowym czy napięciowym?... To rzuci trochę swiatła na temat.

    0
  • #9 10 Sty 2015 13:56
    1491294
    Użytkownik usunął konto  
  • #10 10 Sty 2015 14:00
    nsvinc
    Poziom 35  

    Achaa ten zasilacz jest... liniowy? ;]

    0
  • #11 10 Sty 2015 14:30
    1491294
    Użytkownik usunął konto  
  • #12 12 Sty 2015 12:03
    robiw
    Poziom 26  

    nsvinc napisał:
    Nie trzeba zadnego sztucznego zwiekszania napięcia o "ziarno" itp, jak stwierdziłeś w #1.


    Trzeba...bo jak po zwarciu powrócisz do ustawionego napięcia wyjściowego? Kolega zaproponował poniższy algorytm. Co o tym myślisz? robiw

    Programowy ogranicznik prądowy dla zasilacza.

    0
  • #13 12 Sty 2015 12:58
    nsvinc
    Poziom 35  

    robiw napisał:
    Trzeba...bo jak po zwarciu powrócisz do ustawionego napięcia wyjściowego?


    Samo się wróci. Regulator CC musi w końcu uderzyć V(limit) jeśli będzie przykładał const prąd na rosnącej rezystancji obciążenia. Potrzebny jest tylko jeden warunek - wyjść z trybu CC gdy V(out)==V(limit).
    Przeanalizuj prawo Ohma i sam zauwazysz ze mam rację ;]

    Po zwarciu regulator CC narzuci napięcie bliskie 0V aby regulować prąd, po usunięciu zwarcia napięcie gwałtownie zacznie rosnąć (bo zniknie obciążenie) az w końcu osiągnie V(limit)...

    0
  • #14 12 Sty 2015 13:51
    robiw
    Poziom 26  

    Chyba nie bardzo. Zresztą popatrz na algorytm i pamiętaj, że ja nie reguluję prądu. Niezależnie od trybu, wielkością, którą reguluje jest zawsze napięcie. Zresztą tak się zastanawiam czy to w ogóle zawsze zadziała. Przy wzroście prądu tak...ale przy zwarciu raczej nie. Co mamy:

    - bocznik pomiarowy 10mΩ,
    - najmniejsze napięcie jakie możemy ustawić 10mV (rozdzielczość regulacji).

    I teraz załóżmy, że ustawiliśmy I_LIMIT = 100mA i robimy zwarcie. Prąd jaki by popłynął i przez bocznik, i w sumie przez chwilę popłynie, to minimum 1A. Nie jesteśmy więc w stanie zregulować napięcia by nie przekroczyć I_LIMIT, w związku z czym odcinam wyjście zasilacza od odbiornika...no i co teraz? Mam "cykać" napięciem 10mV co jakiś czas i sprawdzać czy nadal jest zwarcie? Jeśli tak, to będzie powodowało "uderzenia" prądowe dla OPAMPa co ten cykl, jeśli nadal jest zwarcie... Nie widzę to dobrego rozwiązania poza tym, że permanentnie odcinam w takim wypadku wyjście do czasu interakcji użytkownika... robiw

    Dodano po 7 [minuty]:

    nsvinc napisał:
    W trybie CC siłą rzeczy przy rosnącym R obciążenia w koncu Vout trafi w Vlimit. Nie ma siły inaczej. Nie ma potrzeby wykonywać zadnego 'dziabania' ani innych cyrków.


    A jakim cudem Vout Ci SAMO wzrośnie skoro zostało zregulowane by utrzymać I_LIMIT? Właśnie bez tego 'dziabania' Vout pozostanie na poziomie do jakiego zostało zregulowane po zwarciu/wzroście poboru mocy... Poza tym w Twoim pseudokodzie reguluj_cv(); i reguluj_cc(); nie oznacza właśnie tego 'dziabania'? robiw

    0