PWM berechnen

Gast #5741829
Lesenswert?

Für die Helligkeitsregulierung von LEDs will ich einen Timer von 1KHz 
einsetzen, also kleinstmögliche Periodendauer=1mS.

Größte Helligkeit ist 100%, also dauerhaft anliegender H-Pegel.
Kleinste Helligkeit entsprechen 0%, dauerhaft anliegender L-Pegel.

Wenn man nach einfachem Dreisatz das Tastverhältnis ausrechnet, käme man 
bei 50% zu einem Rechtecksignal, das da lautet: 500mS H-Pegel, 500ms 
L-Pegel.

Die lED wird also nicht helligkeitsreguliert, sondern sie blinkt. Das 
ist natürlich nicht gewollt.

In dem Beispiel erkennt man ohne Taschenrechner, dass 50% Helligkeit 
auch anders ereicht werden: Nämlich wenn alle 1mS der Pegel wechselt.

Soweit ist mir das klar. Aber wie berechnet man das grundsätzlich? Sagen 
wir, in 1%-Schritten? Ziel ist natürlich nicht nur die mathematische 
Berechnung, sondern ein möglichst gutes Tastverhältnis hin zu bekommen, 
mit kleinstmöglicher Periodendauer. Gibt es dazu eine Formel? Danke für 
Tipps.
#5741854
Lesenswert?

PWM schrieb:
> Wenn man nach einfachem Dreisatz das Tastverhältnis ausrechnet, käme man
> bei 50% zu einem Rechtecksignal, das da lautet: 500mS H-Pegel, 500ms
> L-Pegel.
>
> Die lED wird also nicht helligkeitsreguliert, sondern sie blinkt. Das
> ist natürlich nicht gewollt.

Dann mußt Du eben bei 50% so schnell blinken das es Dein Auge nicht mehr 
als blinken wahrnimmt. Das geht bei 50 Hz sicher schon los und bei 100 
Hz ist es dann eher entspannter. Also Deine 1 kHz sind viel zu niedrig.

Warum arbeitest Du nicht mit 20 kHz oder auch mehr? Die MOSFETs für ein 
paar Cent schaffen dies locker.
mfg Klaus
Gast #5741940
Lesenswert?

Klaus R. schrieb:
> PWM schrieb:
>> Nur für ein paar LEDs ist mir das zuviel Overhead, und mir zu
>> kompliziert. Also keine einfache Formel mögl. ?
>
> Dann setze doch Deine 1% an 100 Hz an. Tastverhältnis 1:100.
> 10% wären dann 10:100
> 100% wären dann 100:100
>
> Also sollte Deine Grundfrequenz 100 Hz x 100 = 10 kHz betragen?
> War das so schwer?
> mfg Klaus

Ach Klaus, das führt doch nicht zum Ziel.
Poste eine Liste in 1% Schritten, dann wirst du es selbst sehen
Mit einer for-Schleife ist das für dich sicher nicht schwer.
oder doch?
#5741983
Lesenswert?

PWM schrieb:
> Für die Helligkeitsregulierung von LEDs will ich einen Timer von 1KHz
> einsetzen, also kleinstmögliche Periodendauer=1mS.
>
> Wenn man nach einfachem Dreisatz das Tastverhältnis ausrechnet, käme man
> bei 50% zu einem Rechtecksignal, das da lautet: 500mS H-Pegel, 500ms
> L-Pegel.

Das wäre nur dann so, wenn man sich dämlich anstellen würde. Bei PWM 
arbeitet man normalerweise mit konstanter Wiederholfrequenz und macht 
die nicht vom eingestellten Tastverhältnis abhängig.

> In dem Beispiel erkennt man ohne Taschenrechner, dass 50% Helligkeit
> auch anders ereicht werden: Nämlich wenn alle 1mS der Pegel wechselt.
>
> Soweit ist mir das klar. Aber wie berechnet man das grundsätzlich? Sagen
> wir, in 1%-Schritten?

Man nimmt einen hinreichend schnell getakteten Timer. Wenn man sagen wir 
200Hz Wiederholfrequenz will und 1% Schritte, dann braucht man

200Hz × (100% ÷ 1%) = 200Hz × 100 = 20kHz

Taktfrequenz bzw. eine Grundperiode von 50µs. Für n% Helligkeit schaltet 
man dann für n Perioden auf H und für (100-n) Perioden auf L. Für 1% 
also 50µs H und 4950µs auf L. Für 50% sind es 2500µs H und 2500µs L.

H- und L-Zeit addieren sich also immer zu 5000µs = 5ms. Was gerade die 
Periodendauer der angestrebten 200Hz sind.

Für richtig hohe Auflösung braucht man Frequenzen im MHz-Bereich. 
Deswegen macht man das dann auch besser in Hardware. Die meisten µC 
haben heute PWM-Kanäle. Meist mehrere.
#5742080
Lesenswert?

PWM schrieb:
> Nico W. schrieb:
>> Du suchst nach delta-sigma.
>
> Nur für ein paar LEDs ist mir das zuviel Overhead, und mir zu
> kompliziert. Also keine einfache Formel mögl. ? Gut, dann lege ich die
> PWM-Pattern eben in einer kleinen Tabelle ab. Dachte nur, es geht per
> Formel vielleicht preisgünstiger.


Zu viel Overhead bei 1kHz?

Im Prinzip sind es nur 10 Zeilen Code inklusive Formatierung.
https://github.com/Traumflug/Teacup_Firmware/blob/master/heater.c#L274:L283

Das do_heater ist ein einfaches an bzw
 Ausschalten.
Gast #5743543
Lesenswert?

PWM schrieb:
> Für die Helligkeitsregulierung von LEDs will ich einen Timer von 1KHz
> einsetzen, also kleinstmögliche Periodendauer=1mS.

Du solltest dir mal den Begriff "Periodendauer" zu gemüte führen und 
schauen was er bedeutet. Wenn du wirklich das meinst was du schreibst 
wären 50 % gleich 500µs H-Pegel und 500µs L. Das nimmst du bestimmt 
nicht mehr als blinken war.
Was willst du da eigentlich rechnen und von was für einer Tabelle 
sprichst du?
Gast #5744024
Lesenswert?

PWM schrieb:
> ... Timer von 1KHz einsetzen, also kleinstmögliche Periodendauer=1mS.
> ...
> Wenn man nach einfachem Dreisatz das Tastverhältnis ausrechnet, käme man
> bei 50% zu einem Rechtecksignal, das da lautet: 500mS H-Pegel, 500ms
> L-Pegel.

Mein Physiklehrer würde sich im Grabe umdrehen, wenn er das liest.
https://de.wikipedia.org/wiki/Internationales_Einheitensystem#SI-Basiseinheiten
https://de.wikipedia.org/wiki/Vorsätze_für_Maßeinheiten

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren