RC values for PWM DAC in English
RC values for PWM DAC in English

RC-Glied eines PWM-DAC

Die­se Sei­te er­for­dert Ja­va­script!
Sie ha­ben Ja­va­script de­ak­ti­viert oder Ihr Brow­ser un­ter­stützt kein Ja­va­script.
Die­se Sei­te wird so nicht funk­tio­nie­ren.

Die einfache Schaltung des PWM-DACsDie­se Sei­te be­rech­net die Min­dest­wer­te von R und C für ei­nen PWM-DAC bei ge­ge­be­ner Fre­quenz.

Hier se­hen Sie die wirk­lich über­schau­ba­re Schal­tung. Ein RC-Tief­pass fil­tert das PWM-Si­gnal so dass da­r­aus ei­ne weit­ge­hend AC-freie Span­nung ent­steht.

Üb­li­cher­wei­se er­zeugt ein Timer Ihres Mi­cro­con­trol­lers das PWM-Si­gnal. Er zählt pau­sen­los von 0 bis n und der Aus­gang ist 1 ab ei­nem ge­wis­sen Schwell­wert, der dann das Tast­ver­hält­nis be­stimmt.

Der End­wert n ist da­bei kon­stant, so dass wir ei­ne fes­te Fre­quenz er­hal­ten, de­ren Tast­ver­hält­nis nur durch den Schwell­wert be­stimmt wird.

Der Trick bei der Di­men­sio­nie­rung ist, die rich­ti­ge Zeit­kon­stan­te τ zu wäh­len. τ er­rech­net sich aus R×C. Ist τ zu klein er­hal­ten wir ei­ne zu ho­he Wel­lig­keit des Aus­gangs­si­gnals (Ripple), ist es zu groß ver­län­gert sich die Ein­schwing­zeit un­nö­ti­ger­wei­se.

Dieses For­mu­lar ver­wen­det für den Kon­den­sa­tor stets 1 µF, der in den meis­ten re­a­lis­ti­schen Fäl­len ein gu­ter Start­punkt sein dürf­te, nur der da­zu pas­sen­de Wi­der­stand wird so be­rech­net, dass der Ripple klei­ner als ½ LSB ist. Die be­rech­ne­te Ein­schwing­zeit ist die Zeit, die nö­tig ist, bis sich das Aus­gangs­si­gnal auf ½ LSB an­ge­nä­hert hat.

Sie kön­nen R und C dann nach Be­lie­ben ver­än­dern und se­hen da­r­un­ter das Er­geb­nis. Die Knöp­fe Rmin Be­rech­nen und Cmin be­rech­nen kön­nen da­bei hilf­reich sein.

Mei­ne Pro­phe­zei­ung: wenn Sie bei Ka­pa­zi­tä­ten von 10 nF..10 µF kei­ne re­a­lis­ti­schen Wi­der­stän­de (10 kΩ..10 MΩ) er­hal­ten dürf­te die Schal­tung in der Re­a­li­tät pro­ble­ma­tisch bis un­brauch­bar sein.


Takt­fre­quenz
Hz
PWM-Fre­quenz
Hz
Auf­lö­sung
Bit
Min­dest-Tau
s
To­le­ranz
%
Min­dest-R
Ω
Min­dest-C
F
Tau (ge­än­dert)
s
Ein­schwing­zeit
s
Ripple (VSS)
LSB


Hin­weis:
Taugeändert ist die no­mi­nel­le Zeit­kon­stan­te, al­so R×C.
Die Ein­schwing­zeit ist be­rech­net bei ma­xi­ma­ler Plus-To­le­ranz und der
Ripple ist be­rech­net bei ma­xi­ma­ler Mi­nus-To­le­ranz.


Be­ach­ten Sie auch die To­le­ran­zen der Bau­tei­le! Der Ripple ist am größ­ten bei Mi­nus-To­le­ranz, die Ein­schwing­zeit bei Plus-To­le­ranz.

Des­halb gibt es auch die Mög­lich­keit, ei­ne To­le­ranz an­zu­ge­ben. Die To­le­ranz ist da­bei die Sum­me aus den To­le­ran­zen für R und C. Die Er­geb­nis­se sind dann Safe Values.

Design Prozedur

Die De­sign-Pro­ze­dur mit die­sem For­mu­lar ist wie folgt:

Zahlenbeispiel

Nichts ist an­schau­li­cher als ein re­a­les Bei­spiel! Ge­rech­net mit ide­a­len Wer­ten, al­so 0 % To­le­ranz:

Bei den Vor­ga­be­wer­ten mit 3,6864 MHz Timer-Clock und 8 Bit Auf­lö­sung be­kom­men wir ei­ne PWM-Fre­quenz von 14,4 kHz und ein τmin von 8,872 ms. Dieses müs­sen wir um die To­le­ran­zen von R und C er­hö­hen um si­cher zu sein, al­so wäh­len wir R=12 kΩ (dies ent­sprä­che 35 %).

Ach­tung: auch die Rück­wärts-Rech­nung (Rselected - To­le­ranz) darf nicht zu ei­nem un­zu­läs­sig ho­hen Ripple füh­ren! Dies be­darf ei­ni­ger wei­te­rer Ma­the­ma­tik, die in die­sem For­mu­lar je­doch be­rück­sich­tigt ist. Sie ist aber auch der Grund, wa­r­um Rmin grö­ßer ist als Sie es an­hand des Min­dest-τ er­war­ten wür­den.

Dann er­hal­ten wir ei­ne Ein­schwing­zeit von 66,54 ms. Wenn die To­le­ran­zen von R und C zu­fäl­lig bei­de po­si­tiv sind, müs­sen wir die­se aber noch da­zu schla­gen, al­so ist die worst-case Ein­schwing­zeit um rund 25 % hö­her (20 % C plus 5 % R), al­so min­des­tens 84 ms. Nur das kön­nen wir ga­ran­tie­ren. Es kann bes­ser sein, muss aber nicht.

Wenn wir 25 % To­le­ranz an­ge­ben wird die­se au­to­ma­tisch da­zu­ge­rech­net, so­wohl beim Min­dest-τ als auch bei der Ein­schwing­zeit. Da es ei­nen 11,83 kΩ-Wi­der­stand nicht zu kau­fen gibt müs­sen wir hier trotz­dem ma­nu­ell 12 kΩ ein­stel­len um die end­gül­ti­ge (worst-case) Ein­schwing­zeit zu se­hen.

Na­tür­lich kön­nen Sie auch Kon­den­sa­to­ren mit 5 % und Wi­der­stän­de mit 1 % ver­wen­den (al­so zu­sam­men 6 %), was in ei­ner re­du­zier­ten Ein­schwing­zeit von un­ter 60 ms re­sul­tiert, so­fern das nö­tig sein soll­te und die Mehr­kos­ten to­le­rier­bar sind.


Viel­leicht fra­gen Sie sich, wa­r­um sie nir­gends ei­ne Span­nung ein­ge­ben müs­sen (oder kön­nen), aber die Span­nung kürzt sich in al­len Glei­chun­gen he­r­aus. Nur PWM-Fre­quenz und Zeit­kon­stan­te be­stim­men Auf­lö­sung und Ein­schwing­zeit der Schal­tung, egal ob Sie die­se mit 3,3 V, 5 V oder 255 V be­trei­ben.

Ver­wen­den Sie be­vor­zugt Fo­li­en­kon­den­sa­to­ren da ke­ra­mi­sche Kon­den­sa­to­ren (z.B. X7R, von Y5V will ich gar nicht re­den 😉) auch ei­ne er­heb­li­che Span­nungs­ab­hän­gig­keit der Ka­pa­zi­tät auf­wei­sen. Der Ripple wür­de des­halb bei hö­he­ren Span­nun­gen an­stei­gen, mög­li­cher­wei­se bis weit über die rech­ne­ri­schen Wer­te.

Ke­ra­mik-Kon­den­sa­to­ren mit NP0/C0G soll­ten aber auch gut funk­tio­nie­ren.

Grenzen der Schaltung

Na­tür­lich konnen Sie hier the­o­re­tisch auch ei­nen 24-Bit DAC be­rech­nen aber er wird nicht funk­tio­nie­ren! Dies liegt nicht nur an der To­le­ranz der Bau­tei­le, son­dern ins­be­son­de­re auch an der Qua­li­tät der PWM. Sie wird nicht pi­co­se­kun­den­ge­nau schal­ten und auch der In­nen­wi­der­stand (der auch a­sym­me­trisch sein wird, d.h. un­ter­schied­lich ge­gen VCC und ge­gen GND) kann dann nicht mehr ver­nach­läs­sigt wer­den.

Sie wer­den auch se­hen, dass Sie dann Ein­schwing­zei­ten im Be­reich von Jah­ren(!) be­kom­men. Selbst wenn das ak­zep­ta­bel wä­re kä­men da­bei kei­ne 24 Bit Ge­nau­ig­keit he­r­aus.

Dazu kom­men noch Leck­strö­me und Tem­pe­ra­tur-Ab­hän­gig­kei­ten, die selbst bei nur stun­den­lan­ger Wand­lungs­zeit durch­aus ins Ge­wicht fal­len kön­nen.

Ich ge­he da­von aus, dass mehr als 8, 10 oder ma­xi­mal 12 Bit mit die­ser Schal­tung nicht sinn­voll mög­lich sind.

Be­ach­ten Sie auch, dass je­des Bit mehr die PWM-Fre­quenz hal­biert! Dies führt schnell zu un­prak­ti­ka­blen Bau­teil­wer­ten und ho­hen Ein­schwing­zei­ten (sie wird mit je­dem zu­sätz­li­chen Bit et­wa ver­vier­facht!). Bei 12 Bit kann selbst ein 24 MHz-Timer nur noch 5,8 kHz PWM lie­fern was in ei­ner Ein­schwing­zeit von fast 5 s re­sul­tiert. Zu An­zei­ge­zweck­en mag das ak­zep­ta­bel sein, aber für ein au­to­ma­ti­sier­tes Test­sys­tem ist es ein­fach zu lang­sam.

Zu­sam­men­fas­send kann ich sa­gen, ein PWM-DAC kann re­la­tiv ge­nau sein, ist spott­bil­lig aber hat den Nach­teil von be­acht­lich ho­hen Ein­schwing­zei­ten, die ihn für vie­le Fäl­le dis­qua­li­fi­zie­ren. Zudem ist sein Si­gnal eben kein DC-Wert wie bei ei­nem käuf­li­chen DAC son­dern ent­hält im­mer auch ei­nen ge­wis­sen Ripple, was in vie­len Fäl­len aber tat­säch­­lich kein Pro­blem sein mag.


Rückwärtsrechnung

Diesen Teil ha­be ich nur aus Spaß und Neu­gier­de im­ple­men­tiert (aber auch um zu se­hen, ob die Vor­wärts-Rech­nung kor­rekt ist), er wird in der Pra­xis kaum ge­braucht, aber Sie kön­nen da­mit ei­nen vor­ge­ge­be­nen PWM-DAC auf sei­ne Per­for­mance über­prü­fen.

Geben Sie die PWM-Fre­quenz, R und C so­wie die To­le­ranz ein und Sie se­hen die er­reich­ba­re Auf­lö­sung (d.h. wenn der Ripple ≤ ½ LSB ist) und die Ein­schwing­zeit (bis auf ½ LSB).

Auch hier wird die Auf­lö­sung bei Mi­nus-To­le­ranz und die Ein­schwing­zeit bei Plus-To­le­ranz ge­rech­net so dass die Er­geb­nis­se wie­der Safe Values sind.

Wenn Sie hier ei­ne ge­rin­ge­re Auf­lö­sung be­kom­men als ver­spro­chen, ha­ben Sie mehr als ½ LSB Ripple, wenn Sie mehr als die ver­spro­che­ne Ein­schwing­zeit be­kom­men, kommt der Wert in die­ser Zeit nicht auf ½LSB an den Ziel­wert he­r­an.

Viel­leicht kom­men Sie auf die Idee, R zu ver­grö­ßern und Sie kom­men schnell auf Traum­wer­te. Be­hal­ten Sie da­bei aber den letz­ten Wert, die min­des­tens er­for­der­li­che Takt­fre­quenz im Au­ge! Wenn Sie die PWM-Fre­quenz nicht ent­spre­chend ver­rin­gern be­kom­men Sie hier schnell un­re­a­lis­ti­sche Wer­te!

 

PWM-Fre­quenz
Hz
R
Ω
C
F
To­le­ranz
%
Auf­lö­sung
Bit
Auf­lö­sung
Cnts
Ein­schwing­zeit
s
Takt­fre­quenz
Hz

Al­le Er­geb­nis­se oh­ne Gewähr. Die Ver­wen­dung er­folgt auf ei­ge­ne Ver­ant­wor­tung. © 2024, Ro­bert Loos