Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Niepoprawna regulacja PWM za pomocą przetwornika ADC.

Kefir2098 05 Sep 2020 20:55 660 5
IGE-XAO
  • #1
    Kefir2098
    Level 5  
    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.
    Code: c
    Log in, to see the code
  • IGE-XAO
  • Helpful post
    #2
    Marek_Skalski
    VIP Meritorious for electroda.pl
    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.
  • IGE-XAO
  • #3
    Kefir2098
    Level 5  
    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
  • Helpful post
    #4
    emarcus
    Level 38  
    Kefir2098 wrote:

    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

    Nie przejmuj się zbytnio; Nie jest aż tak źle!
    Wytestuj ten (załączony niżej) troche rozszerzony układ :
    Niepoprawna regulacja PWM za pomocą przetwornika ADC.
    Pełnego objaśnienia szukaj w linku na obrazku...
    Przepisany z obrazka link na początku może nie pracować choć jest poprawny (!), bo ma w adresie wymieszane duże litery z małymi, które w druku wyglądają identycznie; na przykład: mała 'L' (l) wygląda jak duża litera 'i' (I), oraz zero można pomylić z literą O.

    e marcus
    P.s.
    Z drugiej zaś strony , nie ma wielkiego sensu budować od podstaw układ w oparciu o processor, gdy dostępne są gotowe urządzenia w cenie poniżej własnych kosztów:
    na przykład:
    2-Amperowy; budowany naLM2596 kupisz za 0.96 $US
    5-Amperowy ; budowany na XL40005/XL4015 kupisz za nie wiele ponad 1$US
    8-Amperowy z radiatorami ; budowany na HX-M404 nabędziesz za niecałe 3 $US
    Wszystkie z nich mają regulację napięcia wyjściowego w zakresie do 20-kilku Voltów.
    Zasilanie ich jest ograniczone do 30-kilku Voltów.
    Nie potrzebujesz chyba więcej (! ?)
    Szczegóły znajdziesz w karcie katalogowej producenta, lub na stronie web dystrybutora.
  • Helpful post
    #5
    Marek_Skalski
    VIP Meritorious for electroda.pl
    @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
    Kefir2098
    Level 5  
    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.