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

Niepoprawna regulacja PWM za pomocą przetwornika ADC.

Kefir2098 05 Wrz 2020 20:55 885 5
  • #1 18908529
    Kefir2098
    Poziom 6  
    Witam,

    Zbudowałem na płytce stykowej taką przetwornicę typu Buck jak na zdjęciu i mam problem z regulacją napięcia. Równolegle z obciążeniem jakim jest rezystor 100om dołożyłem dzielnik napięcia z rezystora 51k i 10k do pomiaru napięcia wyjściowego. Dzielnik jest podpięty do wejścia ADC3 (PC3). Zadaję napięcie wyjściowe przetwornicy za pomocą potencjometru podpiętego do wyjścia ADC1 (PC1). I wszytko ładnie śmiga, napięcie na dzielniku jest równe zawsze napięciu na potencjometrze do czasu gdy nie włączę równolegle do opornika 100om drugi opornik 10om. Napięcie na wyjściu z zadanych 9V spada do 8V i napięcia na dzielniku i potencjometrze się nie zgadzają. Ale gdy zwiększę napięcie zadane na powiedzmy 10V to napięcie na wyjściu wynosi z powrotem 9V. Więc uważam że to jest problem ze złym sterowaniem PWMem

    Problemem raczej nie jest niedostatek mocy. Przetwornica jest zasilana z prostownika a prostownik ze 100W transformatora (12V, 8A). Gdy dokładam ten opornik 10om to napięcie na wyjściu prostownika wynosi ok 13V więc jest zapas mocy.

    Parametry przetwornicy

    L=3mH 2A

    Cwyj=2000uF

    Mosfet= IRF630

    Cbootstrap=2,2uF


    Najbardziej mnie interesuje czy uważacie że kod jest poprawny i czy ma prawo działać :D
    Niepoprawna regulacja PWM za pomocą przetwornika ADC.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #2 18910409
    Marek_Skalski
    VIP Zasłużony dla elektroda
    Chciałbym pomóc, ale tu wszystko jest niezgodnie z zasadami pracy układów przetwarzania energii. Błędy są sprzętowe i programowe.
    1. Brak pojemności na wejściu VIN.
    2. Nie rozumiem jak działa sterowanie klucza, jeżeli po drodze jest jakiś tranzystor bipolarny. Jeżeli to NPN w układzie inwertera, to dioda w szeregu z VDR jest bez sensu. Jeżeli to PNP, to nie może być podłączony do napięcia zasilania >VCC mikrokontrolera; inaczej uszkodzi port.
    3. Jaka jest funkcja kondensatora Cbootstrap? Na tym schemacie jest pokazana pojemność między bramką, a źródłem tranzystora. Bootstrap w buck'u?
    4. Indukcyjność cewki jest jakieś 100-1000 razy większa niż potrzebna jeżeli układ ma posiadać sensowną dynamikę, sprawność i wymiary.
    5. Brak parametrów elementów, to brak możliwości wyznaczenia częstotliwości charakterystycznych.
    6. Brak częstotliwości pracy PWM i ADC. W sumie ADC działa z losową prędkością i pewnie szybciej niż PWM, co jest bez sensu. W takich prostych aplikacjach przyjmuje się, że ADC powinien wykonywać pomiary z częstotliwością 7-9 razy mniejszą niż okres PWM. A okres PWM albo dobiera się arbitralnie i wtedy dobiera się wartości elementów, albo okres PWM oblicza się w oparciu o parametry wybranych elementów. Innej drogi nie ma, więc nie zadziała dobór przypadkowych elementów i przypadkowej częstotliwości.
    7. Pomiary ADC powinny być synchroniczne z działaniem PWM. Bez tego, pomiary obarczone są błędem fazy i tętnień, co powoduje dodatkowy (zbędny) uchyb w sterowaniu.
    8. W Twoim programie nie ma funkcji wyznaczania uchybu regulacji, więc nawet nie wiadomo dlaczego coś tam jeszcze działa i nie uwolniło magicznego dymu. Nie próbuj tego z większą mocą.
    9. Wyznaczanie wartości współczynnika wypełnienia dla klucza jest wyjątkowo błędne. Po pierwsze powinny być ograniczenia (od dołu i od góry), po drugie wartość PWM powinna być wyznaczana na podstawie różnicy między napięciem zmierzonym i napięciem rzeczywistym. Po trzecie należy tutaj użyć odpowiednich regulatorów, np. Z1P1, Z2P2, od biedy nawet PID da lepsze wyniki niż to co masz teraz. A teraz masz układ działający przypadkowo, z tragiczną dynamiką, bez stabilizacji i do tego poza kontrolą. Wyobraź sobie co się stanie, gdy układ będzie w pełni obciążony, generując napięcie rzędu 9 V, czyli osiągnie współczynnik wypełnienia 0, więc klucz jest w pełni otwarty i zmniejszy się pobór prądu w układzie, np. o 90%. Napięcie bardzo szybko osiągnie wartość napięcia zasilania, ponieważ wyłączenie klucza wymaga 256 okresów PWM z uwagi na dekrementację wartości o 1 w każdym cyklu.

    Ponieważ problem jest w podstawach, to proponuję lekturę. Zaoszczędzi mi to czasu na pisanie powieści, a treść będzie znacznie przystępniej podana. W załączniku trochę inne spojrzenie na projektowanie DC/DC Buck.
    Albo jeszcze takie + takie.
  • #3 18911543
    Kefir2098
    Poziom 6  
    Dziękuję bardzo z odpowiedź oraz materiały! W pełni zgadzam się z krytyką. Budując tą przetwornicę byłem świadomy jej wad o których napisałeś. Przetwornica jest uproszczona do granic możliwości i zbudowana z tego co miałem akurat pod ręką. Po prostu dziwi mnie fakt dlaczego uC nie zwiększa wypełnienia impulsów gdy dołożę kolejne obciążenie. Kod ma działać według prostej zasady: Napięcie na wyjściu większe od zadanego? To zmniejszyć wypełnienie a gdy napięcie mniejsze od zadanego to zwiększyć wypełnienie. I to się zgadza dla małych obciążeń a dla dużych nagle przestaje działać. Ma trzymać 9V to na wyjściu jest 8V a jak ma trzymać 10V to jest na wyjściu 9V. Prostownikowi nie brakuje mocy

    Bootstrap jest dlatego że nie mam tranzystora typu P, a obciążenie podpięte jest do źródła.

    Edit:
    Zastosowałem twoje rady dotyczące częstotliwości pomiarów ADC i jest bez zmian. Pewnie faktycznie to jest za prosty układ aby działał :D
  • Pomocny post
    #4 18912474
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #5 18912669
    Marek_Skalski
    VIP Zasłużony dla elektroda
    @Kefir2098 Jeżeli nie zmieniłeś sposobu wyznaczania wartości współczynnika wypełnienia impulsu, to zmiana częstotliwości sterowania lub pomiarów nic nie da.
    Spróbuj na początku potencjometrem zadawać wartość wypełnienia, dodając ograniczenie od góry i od dołu, np. 90% i 10%. W ten sposób będzie wiedział czy kontrola stopnia wyjściowego działa prawidłowo.
    Teraz możesz wykonać pomiary dla różnych wartości PWM i obciążenia. W ten sposób zdejmiesz charakterystykę napięcia wyjściowego w funkcji prądu obciążenia i wartości PWM. Będziesz wiedział gdzie są limity.
    Jak to zadziała, to wprowadź prosty regulator proporcjonalny, czyli wartość PWM zależy od różnicy napięcia wyjściowego i napięcia zadanego.
    e = Uwy - Uref
    jeżeli e >= 0 -> f = 0
    jeżeli e < 0 -> f = Kp x e
    PWM = 255-f; // zakładając 8 bitową rozdzielczość
    Teraz możesz wykonać pomiary i układ powinien już wykazywać pewne cechy regulacji, chociaż może być jeszcze miejscami niestabilny lub fatalnie reagować na cykliczne zmiany obciążenia.
    Możesz teraz rozszerzyć regulator o blok całkujący, a możesz przejść na kompensację za pomocą filtrów drugiego lub trzeciego rzędu. Ale na początek spróbuj określić założenia tego projektu, warunki brzegowe i rodzaj obciążenia, a następnie wartości kluczowe tego regulatora: częstotliwość pracy, wartości elementów biernych, itp. I nie wstydź się pokazać tutaj schemat Twojego konwertera. To naprawdę może pomóc. :)
  • #6 18926829
    Kefir2098
    Poziom 6  
    Dziękuję wam za odpowiedzi i przepraszam że odpisuję po takim czasie. Po tygodniu do tego jeszcze raz usiadłem i znalazłem źródło problemu. Wykonałem taką samą przetwornice na układzie TL494 i problem jest dokładnie taki sam. Powodem jest fakt, że gdy dołączam rezystor 10 om spada napięcie na dzielniku, stabilizowanym napięciu w kostce TL494 z 5V na 4.6V a nawet na stabilizatorze L7805 spada z 5V też do około 4.6V-4.5V. Na tych stabilizatorach robiłem dzielniki napięcia i stąd ten problem. Nie wiem dlaczego. Napięcie zasilania dochodzące do układu TL, stabilizatora jest zawsze większe-równe od 12V więc zapas mocy jest. Podłączyłem też normalny zasilacz zamiast transformatora o podobnych parametrach co trafo czyli 12V 7A i problem nie zniknął. Być może faktycznie wina płytki stykowej i cienkich kabelków.
REKLAMA