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

STM32 - generacja sinusoidy 50Hz za pomocą PWM.

ebson1307 22 Sep 2020 21:32 420 2
  • #1
    ebson1307
    Level 3  
    Witam, chciałbym zrozumieć w jaki sposób generuje się sinusoidę za pomocą PWM, na przykład do sterowania kluczami w falowniku. Wiem, że trzeba zmieniać wypełnienie PWM, albo czas trwania impulsów PWM tak by po odfiltrowaniu otrzymać sinusoidę. Czytałem o tym trochę, ale nie moge zrozumieć jak się do tego zabrać w praktyce. Czy powinno się wygenerować PWM o częstotliwości kilku kHz i w pętli zmieniać wypełnienie tak by otrzymać sinusa? Coś w stylu wysyłania "próbek" jak w DAC? Czytałem, że tak sie to robi i wysyła się odpowiednie wypełnienie z przygotowanej tablicy wartości. Chcialbym wykonać coś takiego na swoim STM32 w celach nauki. Nie rozumiem też jak otrzymać ujemną połówkę sinusoidy skoro PWM to wartości od 0 do 100%, nie ma tam napięcia ujemnego. Czy ktoś mógłby mi wytłumaczyć schemat postępowania jak powinienem to wykonać? Pozdrawiam.
  • #2
    tmf
    Moderator of Microcontroller designs
    Od końca - połówkę ujemną robisz tak, że przyjmujesz, że 50% to zero. Wtedy 100% to 1, a 0% to -1. Przygotowujesz tabelę zawierającą wypełnienia, wypełnienia są wartościami sinusa dla danego kąta. Dane z tej tabeli najlepiej ładować do rejestru wypełnienia timera przy pomocy DMA - nie musisz w trakcie zaprzęgać w to programu. Na wyjściu PWM dajesz filtr dolnoprzepustowy i powinieneś otrzymać sinus.
  • #3
    ebson1307
    Level 3  
    Z pomocą angielskiej strony udało mi się stworzyć sinusoidę za pomocą PWM. Zrobione to zostało w ten sposób, że jeden timer co jakiś czas odlicza czas w którym DMA wysyła wartości wypełnienia do drugiego timera. Tablicę również znalazłem gotową, zawierała ona 128 wartości, czyli próbek. Po przefiltrowaniu przebiegu PWM przez filtr RC dostałem sinusa. Tylko wciąż nie rozumiem w jaki sposób realizuje się to w falownikach 3f. Tam są 3 przebiegi PWM przesunięte w fazie o 120 stopni podawane na tranzystory mocy a filtrem jest silnik? Czy jeśli tak jest to w jaki sposób uzyskuje sie przesuniecie 3 sygnałów PWM o 120 stopni? I czy na każdy tranzystor podaje się PWM odpowiadający pełnemu sinusowi czy tylko jego części? Oczywiście, wiem że górny i dolny tranzystor w jednej gałęzi mostka mocy nie może przewodzić jedncześnie. Nie wiem też w jaki sposób eleiminowana jest składowa stała z przebiegu? Trochę tego nie rozumiem bo prawidłowy przebieg sinusoidalny na oscyloskopie pokazał mi się wtedy, gdy wyłączyłem składową stałą.