Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Falownik w topologii half-bridge na STM32G474 sterowany z PC

_lazor_ 04 Jul 2020 20:05 8301 6
phoenixcontact
  • Falownik w topologii half-bridge na STM32G474 sterowany z PC
    Projekt miał na celu stworzenie sterowania dla topologii half-bridge z możliwością ustawiania częstotliwości za pomocą programu na komputerze. Dodatkowo układ posiada synchroniczne próbkowanie przebiegu prądu w celu dokładnego pomiaru fazy oraz amplitudy i wykreślenia wykresu wartości tych parametrów na PC. Tego typu układ przydaje się do pomiaru transformatorów impulsowych (w tym wypadku używanych w topologii half-bridge lub full-bridge) w otwartej pętli. Możemy dzięki temu określić maksymalne wzmocnienie naszego układu oraz przy odpowiednim zmodyfikowaniu oprogramowania wykreślić wykres Bodego. Jednocześnie projekt jest rozwinięciem poprzedniego oprogramowania na którym robiłem między innymi takie „zabawki”:















    Oczywiście to nie jedyne możliwości takiego układu, możliwe jest nawet generowanie sinusa na wyjściu za pomocą SPWM (https://www.sciencedirect.com/topics/engineering/full-bridge-inverter fig 1.18), służyć do zasilania cewek tesli czy innych urządzeń gdzie wymagany jest przebieg napięcia przemiennego.
    Posiadając gotową platformę można się skupić na tworzeniu własnego oprogramowania lub wykorzystaniu gotowego oprogramowanie w celu zbadania swojego dzieła, dzięki czemu można ograniczyć przestrzeń gdzie można popełnić błąd a co za tym idzie rozwijanie swoich pomysłów będzie dużo łatwiejsze. Jeśli ktoś jest ciekawy czy jego pomysł byłby możliwy do zrealizowania na tego typu urządzeniu to śmiało można o to zapytać.

    Jak ściągnąć i uruchomić kod.

    Kod można ściągnąć z repozystoriów na github:
    https://github.com/marcinszajner/Half-bridge-driver-MCU
    https://github.com/marcinszajner/Half-bridge-driver-python
    1. Zainstallować cygwin z make
    2. Dodać cygwin bin folder do zmiennych środowiska
    2. download gnu toolchain
    https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm
    3. Dodać gnu toolchain do zmiennych środowiska
    4. Zainstalować openOCD
    5. Dodać openOCD bin do zmiennych środowiska
    6. Zainstalować sterowniki st-link
    7. Sklonować repozytorium Half-bridge-driver-MCU
    8. Wywołać make w folderze projektu
    9. Aby zaflashować uC wykonaj make flash.

    1. Zainstaluj python 3.8
    2. Zainstaluj pyCharm i skonfiguruj go dla python 3.8
    3. Zainstaluj Qt designer
    4. Sklonuj repozytorium Half-bridge-driver-python zaciągnij project do pyCharm
    5. Zainstaluj requirements.txt (python -m pip install -r requirements.txt) lub zrób to poprzez pyCharm
    6. Uruchom main w pycharm

    Aby edytować interface graficzny polecam użyć Qt designer. Wystarczy w nim otworzyć plik gui.main.ui, edytować a następnie skryptem toPyCode.sh przerobić go w plik .py

    A jak to działa w praktyce? O to nagranie prezentujące działanie układu:




    Hardware

    Niestety schematy do aktualnej prototypowej wersji przepadły, jednak załączam schemat ideowy oraz opis użytych elementów.

    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Do pomiaru prądu wykorzystuję przekładnik prądowy (CS1050L). Sygnał z przekładnika przechodzi przez mostek prostowniczy a następnie na rezystor pomiarowy 15Ohm. Wykorzystując fakt że, wyjście przekładnika prądowego jest źródłem prądowym to diody w mostku prostowniczym nie wprowadzają błędu w pomiarze. Pomiar napięcia na rezystorze pomiarowym dokonuję poprzez ADC z uC. Chociaż na wejściu do ADC nie mam żadnego filtra dolnoprzepustowego to wyniki pomiaru w rezonansie dla pierwszej harmonicznej są bardzo dobre i porównywalne do I-prober 520. Jednakże sygnał na rezystorze jest mocno zniekształcony co wymaga poprawy w nowszej wersji PCB.


    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Jako sterownika half-bridge używam l6384. Nie jest to jednak najlepszy sterownik dla częstotliwości powyżej 100kHz. 500ns dead time jest zdecydowanie zauważalny.

    Falownik w topologii half-bridge na STM32G474 sterowany z PC

    A - opóźnienie spowodowane propagowaniem się sygnału w obwodzie. B – Dead time sterownika.
    Opóźnienie związane z propagacją sygnału sterującego nie powoduje żadnego problemu, jednak dead time o wartości 500ns co jest 1/20 całego sygnału poważnie wpływa na cały układ.



    400 mA source, oraz 650 mA sink current nie za bardzo nadają się do mosfetów z dużym ładunkiem bramki. Kiedy half bridge jest zasilany z 30V to nie ma takiego znaczenia, ale przy 325V będzie już miało duże znaczenie i powodować duże straty na komutowaniu kluczy.


    MCU
    Do celów energoelektronicznych na rynku są w sumie dostępne tylko dwa w miarę przystępne rodziny – C2000 od TI oraz seria dedykowanych SoCów od ST z cortex-m4. Zdecydowałem się na firmę ST i ich board NUCLEO64 z układem stm32g474. Jest to następca układu stm32f334. Głównym feature tego układu to HRTIM, który w wypadku aktualnego oprogramowania działa z częstotliwością… 2.72GHz co zapewnia rozdzielczość 368‬ps. Daje to możliwość bardzo dokładnego sterowania częstotliwością wyjściową półmostka.
    Pobocznymi dodatkami, które znajdziemy na tym SoC to między innymi:
    - Adaptive real-time accelerator
    - FPU, DSP instructions
    - CORDIC for trigonometric functions acceleration
    - FMAC: filter mathematical accelerator
    - CCM SRAM
    - amplifiers, ADC, DAC, comparators


    GUI PC

    Do wykonania części oprogramowania po stronie PC wykorzystałem język skryptowy PYTHON z biblioteką PyQt. Dlaczego? Chciałem nabrać trochę doświadczenia w tym języku i jego wykorzystania w tego typu projektach. Użycie Qt designera dość mocno ułatwia tworzenie GUI oraz jego modyfikowanie, a sam python o dziwo sprawdził się jako język do tego typu aplikacji, chociaż nie obyło się od niespodzianek typu dziwnego zachowania się wątków czy metod nie działających zgodnie z opisem, ale na szczęście sporadycznie.
    Ogólnie jestem zadowolony z wykorzystania Qt razem z python.

    Program na uC

    Ogólnie nie za wiele się tutaj dzieje. W funkcji main inicjalizujemy GPIO, ADC, crc, hrtim, USART z DMA. Następnie uruchomienie hrtim oraz przejście w stan mrugania diodą aby sprawdzać czy mikrokontroler nie zostaje za bardzo wywłaszczony przez przerwania.
    Komunikacja z PC polega na odebraniu wiadomości z żądaniem, odpowiednie przetworzenie i w razie potrzeby wysłania odpowiedzi. Kod po stronie PC dba aby była wysyłana tylko jedna wiadomość, która wymaga odpowiedzi. Aktualnie istnieją tylko dwa typy wiadomości:

    protocol_change – Wiadomość nie wymagająca odpowiedzi, zmieniająca stan pracy układu (aktualnie częstotliwość)
    protocol_data_req – Wiadomość z żądaniem o dane. Odpowiedzią jest protocol_data_resp

    Samo próbkowanie jest zrealizowane poprzez przerwanie od ADC w trybie inject. ADC jest triggerowane przez compare unit hrtimera, co zapewnia próbkowanie w odpowiednim punkcie na osi czasu (w odpowiedniej fazie). Niestety to rozwiązanie jest kiepskie gdyż pozwala mi osiągnąć około 2.5MHz częstotliwości próbkowania, co jest trochę za niskim wynikiem i będzie wymagało przepisania funkcjonalności zbierania próbek.

    USART z DMA działa prawie bezobsługowo, wystarczy podać pointer na początek bufforu oraz ilość bajtów do wysłania, tak więc nie zużywa za bardzo zasobów rdzenia.


    Teoria przetwarzania sygnału

    Fast fourier transformate jest algorytmem dla discrete fourier transfoemate, która to jest transformatą dla przestrzeni dyskretnej (nie ciągłej), a transformata fouriera zawiera się w transformacie Laplace.
    Najlepiej obrazuje to przedstawienie graficzne.

    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Jest to szczególny przypadek transformaty Laplace. Liczbę s możemy przedstawić jako parę σ + jω, a transformata fouriera to przypadek gdy σ (sigma) jest równa zero. Czym w ogóle jest sigma? Jest to tłumienie, gdy biegun będzie się znajdować na osi omegi to wzmocnienie dla takiego układu dla pewnej wartości omega, będzie wynosić nieskończoność. Taka sytuacja występuje np. w obwodzie RLC gdy R = 0.
    Tak więc korzystając z transformaty Fouriera tak naprawdę operujemy na wycinku transformaty Laplace dla sigma = 0. Niestety tracimy w takim wypadku informacje wynikające stanów przejściowych (nieustalonych), jak dla przykładu czasu zaniku sygnału dla filtra dolnoprzepustowego RC.
    Jednak, jeśli nie interesują nas stany przejściowe i chcemy skupić się na przebiegach okresowych to możemy zastąpić s wartością jω lub wykonać od razu transformatę Fouriera.

    Weźmy dla przykładu transfer function:


    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Przy technologii cyfrowej jednak nie analizujemy sygnału ciągłego (ani w czasie ani w wartościach) a pojedyncze punkty w przestrzeni – sygnał dyskretny.
    Nie chce w tym wypadku zagłębiać się już w transformatę Z oraz DFT, tylko przejść na poziom abstrakcji FFT (moduł numpy korzysta z algorytmu Cooley-Tukey).

    Poniżej przedstawię bardzo podstawowe informację, które jak najbardziej są użyteczne, jednak warto mieć świadomość że to nie wszystko co oferuje fft i DSP.
    FFT wykonujemy na N elementowym wektorze próbek. Sam algorytm nie wie nic o częstotliwości, tą informację dostarcza użytkownik podczas analizy otrzymanego wektora liczb zespolonych. Dokładnie tak, wynikiem w transformacie Laplace jest wektor liczb zespolonych. Liczby te niosą dla nas wszystkie istotne informacje – długość wektora oraz nachylenie wektora do dodatniej osi liczb rzeczywistych dla korespondującej częstotliwości. Myślę że dla większości pojęcie magnitude nie jest obce i jest dość dobrze zrozumiałe, jednak z fazą jest trochę gorzej.
    Czym jest faza? Faza nie jest niczym innym jak… czasem, a dokładnie czasem opóźnienia między jednym a drugim sygnałem. Jak to między dwoma sygnałami? Przecież w wektorze mamy tylko sygnał który próbkujemy. Tutaj musimy wspomnieć o oknie próbkowania. Aby uzyskać najlepszą dokładność dla algorytmu fft, pełna krotność okresu badanego sygnału powinna zawierać się w oknie próbkowania oraz powinna być to funkcja parzysta aby uzyskać zerowe przesunięcie w fazie. Jeśli zbadamy przebieg cos(50*2*pi*t) to uzyskamy piękną amplitudę oraz zerowe przesunięcie w fazie. Gdy jednak spróbujemy narysować cos(50*2*pi*(t+0.0025)) lub cos(50*2*pi*t + 0.785375) da nam przesunięcie w fazie 45 stopni.


    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Co jednak gdy próbki nie zawierają pełnej krotności badanego sygnału. Niestety wtedy jakość wyniku znacząco spada i pojawia się wyciek widma:


    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Aby temu przeciwdziałać możemy nałożyć funkcje okna, które pozwalają na zmniejszenie problemów wynikających z nie pełnej krotności badanego sygnału a przez to wyciekaniu widma.

    Z powyższego powodu założeniem mojego oprogramowania było synchroniczne próbkowanie w celu uzyskania pełnej krotności okresu badanego sygnału. Dzięki takiemu zabiegowi, możemy uzyskać bardzo dokładną fazę sygnału oraz amplitudę wykorzystując bardzo małą ilość próbek. Dodatkowo sygnał nie wymaga dodatkowej obróbki w postaci nakładania funkcji okna czy interpolacji, więc przetwarzanie cyfrowe takiego sygnału przebiega bardzo szybko czy to na uC czy na PC. Aktualny program niestety nie pozwala na uzyskanie zbyt dużej częstotliwości próbkowania (8 próbek na okres) co nie pozwala na uzyskanie poglądu dla wyższych harmonicznych badanego sygnału, jednak będę próbował usprawnić program aby uzyskać 16 lub nawet 64 próbki na okres (dla pewnego zakresu częstotliwości) co już pozwoli na pogląd satysfakcjonującej ilości harmonicznych.

    Sygnał pobieram z przekładnika prądowego z mostkiem prostowniczym, który wprowadza dwa znaczące zniekształcenia:
    1. Sygnał nie jest już sinusem/cosinusem
    2. Usuwa składową stałą

    Przywrócenie sinusa jest bardzo proste, bazując na ciągu fouriera dla sygnału wyprostowanego:


    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Sumując kolejne harmoniczne oraz składową stałą odtwarzamy przebieg oryginalny z przesunięciem fazowym oraz podwójną częstotliwością. Jednak te zniekształcenia mają charakter stały i możemy je usunąć w procesie późniejszej analizy wyniku fft.
    Większym problemem zaczyna się gdy badany układ posiada składową stałą. Jeśli mamy sygnał AC zawierający dodatkowo składową stałą to podejrzewam że jesteśmy ją w stanie analitycznie odtworzyć, jednak gdy składowa stała jest dominująca (sygnał jest DC) to nie widzę możliwości jej odtworzenia. Dlatego myślę o dodaniu rezystora pomiarowego aby na jego bazie mierzyć składową stałą sygnału i dodawać do uzyskanego sygnału z fft.


    źródła
    (1)
    https://books.google.pl/books?id=866PDwAAQBAJ&pg=PA55&dq=plot+laplace+transform+phase&hl=pl&sa=X&ved=2ahUKEwis5eit-pnqAhUR7KYKHSxmDigQ6AEwAHoECAMQAg#v=onepage&q=plot%20laplace%20transform%20phase&f=false

    (2)
    https://books.google.pl/books?id=wnpTDwAAQBAJ&pg=PA270&lpg=PA270&dq=plot+laplace+transform&source=bl&ots=FcSk3jh376&sig=ACfU3U0eA5GwlKq1iJLGtXDtzUCcCWRi9Q&hl=pl&sa=X&ved=2ahUKEwi0yIOhmInqAhVDy6QKHWx-AvsQ6AEwD3oECAkQAQ#v=onepage&q=plot%20laplace%20transform&f=false

    (3)
    https://download.ni.com/evaluation/pxi/Understanding%20FFTs%20and%20Windowing.pdf

    (4)
    https://books.google.pl/books?id=GV5mDwAAQBAJ&pg=PA206&lpg=PA206&dq=rectified+sine+reconstruct+to+sine&source=bl&ots=FDUoKM0BpL&sig=ACfU3U0NirCTAEx5VCE9Omno_ODg5KmpIA&hl=pl&sa=X&ved=2ahUKEwiX1cbhy-LpAhWODewKHcfrA6UQ6AEwCnoECAkQAQ#v=onepage&q=rectified%20sine%20reconstruct%20to%20sine&f=false

    Jako że za niedługo będę modernizować cały układ w między innymi bezprzewodową komunikację z PC, większą ilością wejść (3+1 przekładnik), poprawiał jakość torów pomiarowych i układu sterującego pół mostkiem to mam pytanie do was, co byście chcieli zobaczyć w takim układzie? Może układ dzięki dodatkowym funkcjonalnościom będzie przydatne większej rzeszy użytkowników?

    Cool? Ranking DIY
    About Author
    _lazor_
    Moderator of Designing
    Offline 
    Materiały video na temat energoelektroniki:
    https://www.youtube.com/user/sambenyaakov/videos
    Has specialization in: Programista embedded/ elektrotechnik
    _lazor_ wrote 3638 posts with rating 1058, helped 247 times. Live in city Wrocław. Been with us since 2016 year.
  • phoenixcontact
  • #2
    TechEkspert
    Editor
    Bardzo ciekawe próby, jednak nie wszystko rozumiem.

    "Do pomiaru prądu wykorzystuję przekładnik prądowy (CS1050L). Sygnał z przekładnika przechodzi przez mostek prostowniczy a następnie na rezystor pomiarowy 15Ohm. Wykorzystując fakt że, wyjście przekładnika prądowego jest źródłem prądowym to diody w mostku prostowniczym nie wprowadzają błędu w pomiarze."

    1. Czy chodzi o to, że źródło prądowe wymusza określony prąd i to niweluje nieliniowość diod?


    "Głównym feature tego układu to HRTIM, który w wypadku aktualnego oprogramowania działa z częstotliwością… 2.72GHz co zapewnia rozdzielczość 368‬ps. Daje to możliwość bardzo dokładnego sterowania częstotliwością wyjściową półmostka."

    2. Duża częstotliwość taktowania timera to wysoka rozdzielczość, ale czy też dokładność? Zakładam że jest tam PLL i jakiś wzorzec, od jego stabilności oraz pracy pętli będzie zależała wynikowa dokładność?


    "Program na uC
    Ogólnie nie za wiele się tutaj dzieje. W funkcji main inicjalizujemy GPIO, ADC, crc, hrtim, USART z DMA. Następnie uruchomienie hrtim oraz przejście w stan mrugania diodą aby sprawdzać czy mikrokontroler nie zostaje za bardzo wywłaszczony przez przerwania.
    Komunikacja z PC polega na odebraniu wiadomości z żądaniem, odpowiednie przetworzenie i w razie potrzeby wysłania odpowiedzi"


    3. Czy FFT robi teraz MCU czy próbki po akwizycji są przesyłane na PC i tam w pythonie obliczane FFT?


    "Fast fourier transformate jest algorytmem dla discrete fourier transfoemate, która to jest transformatą dla przestrzeni dyskretnej (nie ciągłej), a transformata fouriera zawiera się w transformacie Laplace."

    4. DFT (FFT) jako tako rozumiem, przydałby się kiedyś wytłumaczenie transformacie Laplaca ;)


    "Myślę że dla większości pojęcie magnitude nie jest obce i jest dość dobrze zrozumiałe, jednak z fazą jest trochę gorzej.
    Czym jest faza? Faza nie jest niczym innym jak… czasem, a dokładnie czasem opóźnienia między jednym a drugim sygnałem. Jak to między dwoma sygnałami? Przecież w wektorze mamy tylko sygnał który próbkujemy. Tutaj musimy wspomnieć o oknie próbkowania. Aby uzyskać najlepszą dokładność dla algorytmu fft, pełna krotność okresu badanego sygnału powinna zawierać się w oknie próbkowania oraz powinna być to funkcja parzysta aby uzyskać zerowe przesunięcie w fazie. Jeśli zbadamy przebieg cos(50*2*pi*t) to uzyskamy piękną amplitudę oraz zerowe przesunięcie w fazie. Gdy jednak spróbujemy narysować cos(50*2*pi*(t+0.0025)) lub cos(50*2*pi*t + 0.785375) da nam przesunięcie w fazie 45 stopni."


    5. Czyli faza w FFT ma sens dla sygnałów okresowych które kontrolujemy (np. generujemy) i możemy się zsynchronizować próbkowaniem i dobrać jego długość, ew. zsynchronizować się tak jak w oscyloskopie wyzwalaniem określonym napięciem powtarzającego się przebiegu?

    Czyli np. dla sygnału audio lub szumu, informacje o fazie nie dadzą nam sensownych informacji gdyż nie możemy zsynchronizować się z przebiegiem? Ew. ma sens gdy robimy FFT dla pomiarów nieprzewidywalnego sygnału w dwóch punktach np. przed wzmacniaczem i na jego wyjściu i wtedy zobaczymy jak wygląda przenoszenie na pasmach, ale także zmiana fazy?


    "Aby temu przeciwdziałać możemy nałożyć funkcje okna, które pozwalają na zmniejszenie problemów wynikających z nie pełnej krotności badanego sygnału a przez to wyciekaniu widma.

    Z powyższego powodu założeniem mojego oprogramowania było synchroniczne próbkowanie w celu uzyskania pełnej krotności okresu badanego sygnału. Dzięki takiemu zabiegowi, możemy uzyskać bardzo dokładną fazę sygnału oraz amplitudę wykorzystując bardzo małą ilość próbek. Dodatkowo sygnał nie wymaga dodatkowej obróbki w postaci nakładania funkcji okna czy interpolacji, więc przetwarzanie cyfrowe takiego sygnału przebiega bardzo szybko czy to na uC czy na PC."


    6. Czyli okna (są różne, nadal nie wiem jak je sensownie dobrać) stosujemy dla standardowych nieprzewidywalnych sygnałów, natomiast jeżeli ściśle kontrolujemy czas próbkowania i synchronizację z okresowym przebiegiem to funkcje okna wręcz powinniśmy pominąć?


    "Większym problemem zaczyna się gdy badany układ posiada składową stałą. Jeśli mamy sygnał AC zawierający dodatkowo składową stałą to podejrzewam że jesteśmy ją w stanie analitycznie odtworzyć, jednak gdy składowa stała jest dominująca (sygnał jest DC) to nie widzę możliwości jej odtworzenia. Dlatego myślę o dodaniu rezystora pomiarowego aby na jego bazie mierzyć składową stałą sygnału i dodawać do uzyskanego sygnału z fft."

    7. Czyli chcesz dodać taki dodatkowy kanał "woltomierza" dodającego informacje do układu akwizycji danych?


    "Jako że za niedługo będę modernizować cały układ w między innymi bezprzewodową komunikację z PC, większą ilością wejść (3+1 przekładnik), poprawiał jakość torów pomiarowych i układu sterującego pół mostkiem"

    8. Aktualnie płytka z MCU jest izolowana od płytki sterowania mocą i pomiarów, co daje połączenie bezprzewodowe, wygodę?

    Jaki rodzaj połączenia bezprzewodowego planujesz wykorzystać?

    Czy większa liczba wejść pomiarowych nie spowoduje problemu z jednoczesnością wykonywania pomiarów (przesunięcia czasowego między pomiarami na kolejnych kanałach)?
  • phoenixcontact
  • #3
    _lazor_
    Moderator of Designing
    Odpowiem na pytania tutaj, ale trochę mi to zajmie, więc będzie modyfikować ten post odpowiadając na kolejne pytania.

    Pytanie 1
    Tak, prąd płynący w przekładniku jest proporcjonalny do prądu płynącego w obwodzie badanych w pewnym zakresie niezależny od obciążenia. W pewnym zakresie, gdyż damy za duże obciążenie to część prądu będzie upływać do obwodu magnesowania rdzenia i przez co stracimy charakter liniowy a co za tym idzie wprowadzimy błąd w przekładniku.

    Pytanie 2
    Tutaj ST moim zdaniem się bardzo postarał i kalibracja HRTIM jest porządnie wykonana a sam obwód trzyma wystarczająco dokładnie częstotliwość nawet z zmianą temperatury (HRTIM posiada obwody kompensacji temperaturowej). Tak więc jitter jest w tym wypadku niezauważalny ;)

    Pytanie 3
    Aktualnie robię fft po stronie PC, ale gdy będę chciał robić sprzężenie zwrotne to jak najbardziej będzie to robić uC. ST dostarcza bibliotekę z gotową implementacją fft oraz koprocesor do trygonometrii, więc jest hardwarowe wsparcie do liczenia fazy (Atan2).

    Pytanie 4
    Jak najbardziej by się przydało przybliżyć transformatę Laplace oraz Z, jednak czas jest w tym wypadku bardzo mocnym czynnikiem limitującym.

    Pytanie 5

    Przy małej częstotliwości próbkowania nie da nam sensownych informacji, gdyż wszystko się rozleje i będzie mało przydatne. Dam tutaj kilka przykładów obrazujących. Pierw przebieg mieszczący 2 okresy cos 50Hz z przesunięciem 45 stopni w oknie z częstotliwością próbkowania 1600Hz


    Falownik w topologii half-bridge na STM32G474 sterowany z PC

    Cóż ten wykres też nie zawiera się do końca w oknie i już widać drobny wyciek, ale z grubsza jest ok (faza trochę za duża, ale to wina dokładności numerycznej, nie za bardzo mam chęci i czas by z tym walczyć by było idealnie)


    Kolejny wykres będzie już z dość poważniejszym nie zmieszczeniem się w okno

    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Jak widać, dodatkowe 15 próbek i wykres fazy jest już całkowicie bezużyteczny.


    Teraz zwiększmy znacząco częstotliwość próbkowania, powiedzmy do 12800Hz


    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Jak widzimy im większe próbkowanie tym wynik dokładniejszy, jednak trzeba próbkować wielokrotnie szybciej, dlatego synchronizacja jest tak bardzo ważna w moim projekcie, gdyż można uzyskać bardzo dużą dokładność z częstotliwością próbkowania raptem 8 razy większą niż sygnał bazowy.

    Poniżej kod do pythona:
    Code: python
    Log in, to see the code


    pytanie 6.
    Funkcję okna można by rzec, że nie możemy pominąć gdyż podstawowym oknem jest okno prostokątne. Czy warto wybrać inne okno, to rzecz już bardziej złożona, gdyż takie działanie wpływa na sygnał wejściowy (okna czasowe to w sumie filtry) i od sytuacji będzie zależało jakie okno jest odpowiednie.

    Pytanie 7 i 8
    Chce dodać kilka dodatkowych kanałów (ADC na SoC jest 5) i ich zastosowanie pozostawić użytkownikowi, czy będzie chciał mierzyć rezystor, czy dodatkowe uzwojenie transformatora (bias winding) czy też wyjściowe napięcia czy wszystko na raz.
    Jako że jest 5 samodzielnych ADC to nie ma problemu z ich jednoczesnym uruchomieniu, przez co nie będzie błędów w fazie.
    Połączenie bezprzewodowe da przede wszystkim wygodę i bezpieczeństwo. Majstrowanie blisko działającego urządzenia jest czasem dość nie przyjemnym doświadczeniem (mosfety uszkadzają się... efektownie). Dlatego sterowanie po stronie PC zapewni większe bezpieczeństwo i komfort (psychiczny) przy uruchamianiu i analizowaniu obwodów.

    Przy projektowaniu obwoód mocy dla full i half-bridge taki regulowany falownik to must have w warsztacie. Poprzez podłączenie transformatora do referencyjnej płytki jesteśmy w stanie stwierdzić czy nasze obliczenia się zgadzają z rzeczywistością.
    Uruchamianie własnego falownika + transformatora to są dwa potencjalne problemy i jak coś pójdzie nie tak to nigdy nie wiadomo co była przyczyną, a tak możemy jeden z nich wyeliminować na samym początku.
  • #4
    Sareph
    Level 24  
    TechEkspert wrote:
    2. Duża częstotliwość taktowania timera to wysoka rozdzielczość, ale czy też dokładność? Zakładam że jest tam PLL i jakiś wzorzec, od jego stabilności oraz pracy pętli będzie zależała wynikowa dokładność?
    HRTIM nie działa z taką wysoką częstotliwością, tylko z taką "częstotliwością ekwiwalentna", tam jest Delay-Locked Loop (DLL).
  • #5
    _lazor_
    Moderator of Designing
    Przygotowałem schemat ideowy dla nowej tablicy sterowania pół mostka:

    Falownik w topologii half-bridge na STM32G474 sterowany z PC


    Zaplanowałem te funkcje dla tej wersji
    - Zsynchronizowane próbkowanie wszystkich wejść ADC
    - Wykres amplitudy i fazy wejściowych ADC
    - Zmienna częstotliwość kontrolowana z komputera
    - Komunikacja bezprzewodowa
    - programowalny czas martwy, ale chroniony przed otwarciem dwóch przełączników izolowanym sterownikiem na diodzie.
    - Szybko wyłącz mosfet za pomocą tranzystora PNP w pobliżu bramki.
    - domyślny soft dla pomiaru i przetwarzania wszystkich 5 ADC
    - zabezpieczenie nadprądowe (programowalne)
    - 5 wejść ADC.
    - Pół-mostek zasilany zewnętrznie.

    Jaki jest pomysł na tablicę kontrolną do połowy mostu?
    Pomysł polega na skróceniu czasu i uproszczeniu procesu projektowania transformatorów SMPS. Widziałem, że wiele osób ma problem z tworzeniem własnego mostka, popełnianiem wielu błędów i wreszcie niepowodzeniem :( Moglibyśmy usunąć jeden obszar, w którym moglibyśmy popełnić błąd, co znacznie ułatwiłoby stworzenie własnego SMPS.
    Dodatkowo sondy prądowe są drogie, ale są nieocenione, gdy testujemy i mierzymy charakterystykę naszego transformatora. Planuję dodać możliwość pomiaru prądu przez rezystor szeregowo z wyjściem półmostkowym lub przez przekładnik prądowy. STM32G474 ma nieco wolny ADC (tylko maks. 4Msp), który nie jest zły do analizy sygnału, ale nie jest miły dla ludzkiego oka, dlatego planuję punkty testowe, aby podłączyć oscyloskop z dużą wydajnością. Mam I-prober 520, ale przez większość czasu używam (w płytce prototypowej) przekładnika prądowego, który wystarcza do przetestowania nowego transformatora i jest bardzo wygodny w użyciu.

    Planowałem, że napięcie pół mostka będzie zewnętrzne. Będzie górna granica napięcia (prawdopodobnie 600 V), ale każdy może użyć swojego źródła napięcia. Aktualny limit będzie zależeć od topologii i częstotliwości. Topologia przełączników twardych o wysokiej częstotliwości będzie miała znacznie niższy prąd niż topologia przełączników miękkich. Dodam program do obliczenia, czy płyta sterująca wytrzyma zaprojektowany transformator i obciążenie.

    Ponieważ program dla tablicy sterowniczej będzie open source, każdy może go zmodyfikować do własnych celów. Oczywiście dam kilka przykładów na łatwy start. Podobnie jak w przypadku oprogramowania koncepcyjnego - przykład z pomiarem i analizą danych wejściowych ADC w trybie zamiatania lub ręcznie. Wszystko będzie rozwijane z czasem.

    Teraz masz pytanie, czy widzisz możliwość ulepszenia tego pomysłu? Może funkcjonalność, która pomoże ci w opracowaniu projektu? A może coś miłego w tego rodzaju urządzeniu?
    Wszystkie komentarze są mile widziane!
  • #6
    TechEkspert
    Editor
    Projekt jest tak przemyślany, że trudno jeszcze coś dodać, natomiast pomyślałem o dodatkowych konfigurowalnych wyjściach wyzwalających dla oscyloskopu, np. można wyzwolić oscyloskop przed otwarciem klucza lub innym działaniem i w stabilny sposób obserwować co się dzieje.
    Nie wiem czy to ma zastosowanie i czy tak się robi.

    Gdy robiłem proste eksperymenty z załączaniem transformatorów w zerze lub w max. sinusoidy:
    https://www.elektroda.pl/rtvforum/topic3672449.html
    to takie "cyfrowe" wyzwalanie bardzo się przydawało.
  • #7
    _lazor_
    Moderator of Designing
    Zazwyczaj do wyzwalania oscyloskopu używałem sygnału sterującego mostkiem (pin na uC). Nawet jak używałem burst mode to nie było problemu z wyzwalaniem:




    Przy oscyloskopach cyfrowych również nie ma problemu z podejrzeniem co się działo trochę czasu przed wyzwoleniem.


    Ogólnie projekt znów ewoluował (i pewnie dalej będzie). Pomyślałem, że projektowanie toru analogowego o nie najgorszych parametrach bez możliwości odłączenia go od całego falownika to trochę strata zasobów, więc myślę nad wersją gdzie będzie osobny PCB dla części pomiarowej, a ona będzie dokładana jako shield do falownika.
    Pomału przekształca się to w pewną formę sondy aktywnej, z możliwością analizy sygnału na PC, komunikacją bezprzewodową oraz możliwością generowania sygnału prostokątnego do sterowania zasilaczy impulsowych różnej topologii (w takim wypadku można wpiąć "kartę" do przetwornic).