Kalkulator częstotliwości PWM

Oblicz częstotliwość, okres i wypełnienie PWM z zegara timera, preskalera, TOP oraz wartości compare dla liczenia w górę lub góra–dół.

Oblicz częstotliwość i wypełnienie PWM

Od danych do świadomej decyzji

  1. Dane
  2. Obliczenie
  3. Wykres
  4. Decyzja
Przykład obliczenia

Dla 16 MHz, preskalera 64 i TOP=255 fast PWM ma 976,5625 Hz

Najpierw ustal rzeczywisty zegar wejściowy timera

Pole zegara nie zawsze jest równe częstotliwości rdzenia mikrokontrolera. Timer może korzystać z osobnej magistrali, dzielnika peryferiów, oscylatora pomocniczego albo zegara pomnożonego przez sprzęt. Wartość trzeba odczytać z konfiguracji drzewa zegarowego.

W przykładzie przyjmujemy, że do bloku timera dociera 16 000 000 Hz. Każdy okres tego zegara trwa 62,5 ns. Dopiero po ustaleniu tego punktu można poprawnie uwzględnić preskaler i rejestr okresu.

Jeśli mierzony PWM jest dokładnie dwa razy wolniejszy lub szybszy od obliczenia, częstą przyczyną jest właśnie inny zegar peryferium. Nie koryguj wtedy wzoru przypadkowym mnożnikiem; sprawdź dokumentację układu i ustawienia źródła.

Preskaler 64 zmniejsza taktowanie licznika do 250 kHz

Preskaler dzieli zegar przed licznikiem. Dla 16 MHz i N=64 otrzymujemy 250 000 zliczeń na sekundę. Jeden krok licznika trwa 1/250 000 s, czyli 4 µs.

Preskaler zwiększa dostępny okres bez potrzeby bardzo szerokiego rejestru, ale pogarsza rozdzielczość czasową. Przy N=1 krok miałby 62,5 ns, natomiast przy N=1024 — 64 µs. Wybór zależy od częstotliwości i wymaganej dokładności impulsu.

Wpisuj wartość dzielnika, na przykład 64, a nie numer bitów konfiguracyjnych czy nazwę opcji z menu. Nie każdy timer udostępnia dowolny preskaler; kalkulator wykona rachunek także dla liczby, której konkretny układ nie obsługuje.

Licznik 0…255 wykonuje 256 kroków, nie 255

W trybie fast PWM licznik przechodzi od 0 przez kolejne wartości aż do TOP włącznie, a następnie wraca do początku. Dla TOP=255 odwiedza 256 stanów. Dlatego w mianowniku występuje TOP+1.

Częstotliwość wynosi 16 000 000/[64·(255+1)]=976,5625 Hz. Okres jest odwrotnością: 1/976,5625=0,001024 s, czyli 1,024 ms. Pomylenie TOP z liczbą kroków daje błąd o jeden takt.

Microchip podaje ten sam układ zależności dla fast PWM: fPWM=fclk/[N·(1+TOP)]. Szczegóły wartości skrajnych i sposobu sterowania pinem zależą jednak od trybu wyjściowego konkretnego timera.

fPWM=16 MHz/[64·256]=976,5625 Hz; T=1,024 ms

Rejestr porównania ustala szerokość impulsu, a nie częstotliwość bazową

Przykład obliczenia

Compare=128 odpowiada 128 taktom z 256

W uproszczonym nieodwróconym modelu fast PWM stan wysoki trwa liczbę taktów odpowiadającą compare. Dla compare=128 i 256 kroków okresu otrzymujemy 128/256=0,5, czyli 50% wypełnienia.

Okres 1,024 ms dzielony na pół daje 0,512 ms stanu wysokiego i 0,512 ms stanu niskiego. Częstotliwość nadal wynosi 976,5625 Hz, ponieważ moment porównania nie zmienia chwili przepełnienia licznika.

W niektórych timerach rejestr porównania jest interpretowany jako compare+1, w innych występują specjalne zachowania dla zera i TOP. Dokumentacja MSP430 pokazuje na przykład zależność zależną od trybu Set/Reset. Kalkulator stosuje jawnie opisany model liczby aktywnych taktów.

D=128/(255+1)=50%; tH=0,512 ms

Wyjście odwrócone zamienia udział stanu wysokiego i niskiego

W trybie nieodwróconym większe compare zwykle zwiększa czas wysoki. W trybie odwróconym ten sam punkt porównania może dawać wypełnienie 100%−D. Dla 50% wynik pozostaje taki sam, lecz dla 25% zmieni się na 75%.

Odwrócenie polaryzacji nie zmienia częstotliwości ani okresu. Zmienia jedynie logiczne znaczenie fragmentów cyklu. Jest to istotne przy tranzystorach aktywnych stanem niskim, sterownikach bramek i wyjściach z dodatkową inwersją sprzętową.

Nie utożsamiaj wypełnienia logicznego z napięciem średnim pod obciążeniem. Spadki napięcia, czas narastania, martwy czas i filtr wyjściowy wpływają na rzeczywisty sygnał oraz energię dostarczaną do odbiornika.

Wartości skrajne compare mogą mieć zachowanie specjalne

Idealny model pozwala wpisać compare od 0 do TOP+1, co odpowiada 0–100%. Sprzęt może jednak generować wąski impuls przy zerze albo stały poziom przy compare równym TOP, zależnie od trybu wyjścia.

Microchip ostrzega, że BOTTOM i TOP są przypadkami szczególnymi. Przed użyciem dokładnych 0% lub 100% sprawdź rozdział Output Compare w nocie układu. Czasem pewniejszym rozwiązaniem jest odłączenie funkcji PWM i wymuszenie GPIO.

Sterowanie tranzystorem mocy wymaga ponadto minimalnego czasu włączenia, wyłączenia i ewentualnego dead-time. Matematyczne 0,4% może być krótsze niż możliwości sterownika lub obiektu, mimo że rejestr potrafi taką liczbę zapisać.

Tryb góra–dół ma inny okres niż fast PWM z liczeniem tylko w górę

W dual-slope licznik pokonuje drogę w obie strony

Tryb phase-correct lub up-down liczy od dołu do TOP, a następnie z powrotem. Pełny cykl obejmuje w przybliżeniu 2·TOP taktów timera, dlatego częstotliwość jest około fclk/(2·N·TOP).

Dla 16 MHz, N=64 i TOP=255 otrzymujemy około 490,196 Hz, czyli mniej więcej połowę częstotliwości fast PWM. Dokładny sposób liczenia końców zależy od architektury, dlatego kalkulator nazywa ten wariant modelem góra–dół.

Zaletą symetrycznego PWM jest umieszczenie zboczy względem środka okresu, co bywa korzystne w sterowaniu silnikiem, przetwornicach i próbkowaniu ADC. Sama niższa częstotliwość nie oznacza gorszego sygnału.

fup-down≈fclk/(2·N·TOP)

Nazwy trybów i wzory różnią się między rodzinami układów

AVR używa nazw fast PWM i phase correct, moduły C2000 mówią o count up, down i up-down, a inne mikrokontrolery mają osobne rejestry period oraz reload. Ta sama nazwa użytkowa nie gwarantuje identycznego liczenia granic.

Niektóre peryferia dzielą zegar dodatkowo, używają dwóch preskalerów lub automatycznie podwajają zegar timera względem magistrali. Za każdym razem trzeba prześledzić: źródło zegara, dzielniki, kierunek liczenia, wartość przeładowania i akcję compare.

Kalkulator pomaga sprawdzić skalę i typowy rachunek. Konfigurację rejestrów buduj na podstawie rozdziału timera w aktualnej nocie katalogowej oraz przykładów producenta dla konkretnego numeru układu.

Podwójne buforowanie chroni okres przed chwilowym błędem

W wielu timerach TOP i compare są buforowane, a nowe wartości wchodzą w życie dopiero na granicy cyklu. Zapobiega to skróceniu bieżącego okresu, jeśli rejestr zostanie zmniejszony poniżej aktualnej wartości licznika.

Microchip wskazuje, że wybór buforowanego rejestru jako TOP jest ważny przy aktywnej zmianie częstotliwości. Bez właściwej synchronizacji może pojawić się jeden bardzo długi albo krótki impuls, choć stan ustalony zgadza się z obliczeniem.

Przy dynamicznym sterowaniu sprawdź moment aktualizacji, flagę przepełnienia i zachowanie wielu kanałów współdzielących okres. Częstotliwość statyczna jest tylko jednym aspektem poprawnego PWM.

Częstotliwość, rozdzielczość i jakość impulsu tworzą kompromis projektowy

Większy TOP daje więcej poziomów, ale niższą częstotliwość

Dla TOP=255 dostępnych jest 256 kroków, czyli osiem bitów rozdzielczości. Zwiększenie TOP do 65535 daje 65 536 kroków, lecz przy tym samym zegarze i preskalerze obniża częstotliwość 256 razy.

Przy stałym fclk przybliżona zależność brzmi fclock=fPWM·2^b dla pełnej b-bitowej skali bez dodatkowego preskalera. Nie można jednocześnie dowolnie zwiększać częstotliwości i liczby poziomów. Pomagają szybszy zegar, dithering lub specjalny moduł high-resolution PWM.

W sterowaniu jasnością LED częstotliwość musi uniknąć widocznego migotania i artefaktów kamery, a rozdzielczość zapewnić płynne ciemne poziomy. W przetwornicy ważniejsze mogą być straty przełączania, filtr i pasmo pętli.

Wypełnienie z rejestru nie uwzględnia czasu martwego i zboczy

Przy sygnałach komplementarnych dead-time celowo wyłącza oba tranzystory na krótki czas, aby zapobiec zwarciu gałęzi. Efektywne czasy przewodzenia są wtedy krótsze od prostego compare·tick.

Pin, bufor i tranzystor mają skończony czas narastania i opadania. Przy wysokiej częstotliwości zbocza zajmują istotną część okresu, a napięcie średnie i straty odbiegają od idealnego prostokąta.

Obciążenie może odwracać lub filtrować sygnał. Silnik reaguje na prąd i moment, a nie na sam procent rejestru. Po obliczeniu parametrów cyfrowych trzeba sprawdzić rzeczywisty układ w warunkach minimalnego i maksymalnego obciążenia.

Oscyloskop lub licznik potwierdza zegar i konfigurację

Zmierz czas między dwoma kolejnymi identycznymi zboczami. Jego odwrotność to częstotliwość. Następnie zmierz czas stanu wysokiego i podziel przez pełny okres, aby otrzymać rzeczywiste wypełnienie.

Dla przykładu oczekujemy około 1,024 ms i 0,512 ms stanu wysokiego. Niewielka różnica może wynikać z tolerancji oscylatora. Duża, stała proporcja wskazuje częściej zły preskaler, TOP, tryb liczenia lub zegar peryferium.

W raporcie konfiguracji zapisz źródło zegara, jego częstotliwość, preskaler, tryb, TOP, compare, polaryzację oraz zmierzone parametry. Taki zestaw pozwala odtworzyć ustawienie po zmianie firmware’u lub mikrokontrolera.

Najczęstsze pytania

Dlaczego we wzorze występuje TOP+1?

Licznik odwiedza wszystkie wartości od 0 do TOP włącznie, więc liczba taktów wynosi TOP+1.

Czy compare zmienia częstotliwość PWM?

Nie w typowej konfiguracji. Ustala moment zbocza i wypełnienie, a okres wyznaczają zegar, preskaler i TOP.

Co zmienia wyjście odwrócone?

Zamienia udział stanu wysokiego i niskiego, nie zmieniając częstotliwości.

Dlaczego phase-correct jest wolniejszy?

Licznik przechodzi do TOP i wraca, więc pełny okres obejmuje drogę w obu kierunkach.

Czy można ufać dokładnym 0% i 100% z compare?

Trzeba sprawdzić kartę timera, bo wartości skrajne mogą generować specjalne zachowanie lub wąski impuls.

Jak sprawdzić obliczenia na gotowym układzie?

Zmierz oscyloskopem okres między identycznymi zboczami oraz czas stanu wysokiego, a potem porównaj z konfiguracją zegara.

Źródła i dalsza lektura

  1. Microchip. (n.d.). Fast PWM Mode.
  2. Texas Instruments. (n.d.). TI Precision Labs: PWM basics overview.
  3. IEC. (n.d.). International Electrotechnical Commission standards.

Podobne wpisy