logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zrealizować programowy ogranicznik prądowy w zasilaczu z cyfrowym sterowaniem?

robiw 08 Sty 2015 10:09 1692 13
  • #1 14305509
    robiw
    Poziom 26  
    Posty: 2030
    Pomógł: 25
    Ocena: 133
    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
  • #2 14309749
    trol.six
    Poziom 31  
    Posty: 1650
    Pomógł: 151
    Ocena: 381
    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.
  • #4 14311593
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    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: text
    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...
  • #5 14311773
    robiw
    Poziom 26  
    Posty: 2030
    Pomógł: 25
    Ocena: 133
    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
  • #6 14312129
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    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.
  • #7 14313026
    robiw
    Poziom 26  
    Posty: 2030
    Pomógł: 25
    Ocena: 133
    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
  • #8 14313878
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    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.
  • #9 14313963
    Konto nie istnieje
    Konto nie istnieje  
  • #11 14314080
    Konto nie istnieje
    Konto nie istnieje  
  • #12 14321622
    robiw
    Poziom 26  
    Posty: 2030
    Pomógł: 25
    Ocena: 133
    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

    Jak zrealizować programowy ogranicznik prądowy w zasilaczu z cyfrowym sterowaniem?
  • #13 14321726
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    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)...
  • #14 14321819
    robiw
    Poziom 26  
    Posty: 2030
    Pomógł: 25
    Ocena: 133
    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

Podsumowanie tematu

✨ W dyskusji poruszono temat programowego ogranicznika prądowego w zasilaczu z cyfrowym sterowaniem. Użytkownik planuje zrealizować funkcjonalność, która automatycznie reguluje napięcie wyjściowe w przypadku przekroczenia ustalonego limitu prądowego (I_LIMIT). Proponowane rozwiązanie opiera się na pomiarze prądu za pomocą układu INA226, który może generować alarmy w przypadku przekroczenia progu. Uczestnicy dyskusji sugerują różne podejścia do implementacji, w tym wykorzystanie trybów CC (Constant Current) i CV (Constant Voltage) oraz algorytmy regulacji. Zwracają uwagę na konieczność stabilizacji regulatora oraz na problemy związane z zwarciem, które mogą uniemożliwić prawidłowe działanie zasilacza. Wskazano również na potrzebę zastosowania odpowiednich algorytmów do powrotu do normalnego trybu pracy po usunięciu zwarcia.
Wygenerowane przez model językowy.
REKLAMA