PWM jako DAC: zvlnění proti rychlosti
Mikrokontrolér má obvykle víc časovačů než převodníků, takže se analogové napětí často dělá tak, že se pin spíná a výsledek se vyfiltruje. Funguje to — a má to jeden kompromis, ze kterého se nedá utéct.
Střední hodnota je snadná část
Osmibitový časovač dá 256 kroků, tedy 12,9 mV na krok při 3,3 V. Rozlišení tedy máš zadarmo. Co zadarmo nemáš, je klid.
Kompromis, který má vzorec
Za dolní propustí zůstane zvlnění. Pro časovou konstantu výrazně delší než perioda vyjde:
a doba, za kterou se výstup ustálí na n bitů, je táž rovnice jako u ADC:
Tady je ten kompromis vidět jako identita: τ je v obou vzorcích, v jednom ve jmenovateli a ve druhém v čitateli. Desetkrát větší filtr je desetkrát menší zvlnění a desetkrát pomalejší odezva — přesně, ne přibližně. Filtrem se to tedy vyřešit nedá; dá se to jen posunout.
Jediná páka, která je zadarmo
Ve vzorci pro zvlnění je perioda T. Vyšší frekvence nosné je menší zvlnění a nestojí to nic — ustálení se nezmění vůbec, protože v něm T není. Odtud pravidlo: nosná co nejvýš, a teprve pak se řeší filtr.
Cena je ale jinde: u mikrokontroléru se rozlišení PWM a frekvence dělí o tentýž čítač. Vyšší frekvence znamená méně kroků střídy — a o tom je celá kapitola v McuLabu.
Kdy tohle nestačí
| úloha | PWM + RC? |
|---|---|
| referenční napětí, podsvícení, žádaná hodnota | ano, ideální |
| audio | ano, ale s pořádným filtrem a vysokou nosnou |
| rychlá regulační smyčka | ne — filtr přidá zpoždění do smyčky |
| přesnost nad 10 bitů | ne — zvlnění a nesymetrie hran to sníží |