Forum: Mikrocontroller und Digitale Elektronik PWM berechnen


von PWM (Gast)


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.

von Nico W. (nico_w)


Lesenswert?

Du suchst nach delta-sigma.

von Klaus R. (klara)


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

: Bearbeitet durch User
von PWM (Gast)


Lesenswert?

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.

von Klaus R. (klara)


Lesenswert?

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

von PWM (Gast)


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?

von spess53 (Gast)


Lesenswert?

Hi

Um welchen Controller handelt es sich denn?

MfG Spess

von PWM (Gast)


Lesenswert?

Die Frequenz ist 1000 Hz. Und zwar maximal. Über die Erhöhung brauchen 
wir nicht zu reden. Wenn das ginge, wäre die Frage unsinnig.

Folglich gehen festen Pulslängen nicht, sondern das HL-Verhältnis muss 
skaliert werden, z.B. kleinster gemeinsamer Nenner oder so in der 
Richtung.

von PWM (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
> Um welchen Controller handelt es sich denn?
>
> MfG Spess

??

Jeder Controller kann mit 1000 Hz einen Pin von H auf L und umgekehrt 
schalten.

von PWM (Gast)


Lesenswert?

Gut, ich lass das jetzt und nehme die Tabelle.

Danke für die Teilnahme.

von Axel S. (a-za-z0-9)


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.

von Dussel (Gast)


Lesenswert?

Nur mal am Rande, du solltest Zeiten nicht in Siemens angeben. Hier ist 
klar, was gemeint ist, aber in irgendwelchen Formeln könnte das 
Verwirrung geben.

von spess53 (Gast)


Lesenswert?

Hi

>Jeder Controller kann mit 1000 Hz einen Pin von H auf L und umgekehrt
>schalten.

Danke für die erschöpfende Antwort.

MfG Spess

von Nico W. (nico_w)


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.

: Bearbeitet durch User
von Martin (Gast)


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?

von my2ct (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.