Anfängerfrage zur PWM / Denkmodell

Gast #1805021
Lesenswert?

Hallo Zusammen,

ich bin völlig unbefleckt in Sachen mx Programmierung und versuche so 
einige basics zu verstehen.
Thema : PWM im 8 Bit Modus

Aufgabe:
Dimme eine LED um 80%

Lösung :

Timer 1:
Zähle immer von 0 bis 255 in einer bestimmten Geschwindigkeit
bei 255 verzweige in ein Unterprogramm

Unterprogramm:
Ist der Zähler 255 ? Wenn ja , dann setzte ihn auf Null zurück
ansonsten mach weiter
ist der Zähler kleiner als 52 ? Wenn ja, dann mach das Licht an
ansonsten
lass das Licht aus
erhöhe den Zähler um 1

Ist mein Denkmodell richtig ?
Gast #1805028
Lesenswert?

Lösung :

>Timer 1:
>Zähle immer von 0 bis 255 in einer bestimmten Geschwindigkeit
>bei 255 verzweige in ein Unterprogramm

>Unterprogramm:
>Ist der Zähler 255 ? Wenn ja , dann setzte ihn auf Null zurück
>ansonsten mach weiter
>ist der Zähler kleiner als 52 ? Wenn ja, dann mach das Licht an
>ansonsten
>lass das Licht aus
>erhöhe den Zähler um 1

>Ist mein Denkmodell richtig ?

Jein.
52 sind nicht 80% von 255...

>Ist der Zähler 255 ? Wenn ja , dann setzte ihn auf Null zurück
>ansonsten mach weiter

Zähler, die auf 8 Bit begrenzt sind, können nicht weiter als 255 zählen. 
Dann kommt ein Überlauf.


Bei den meisten PWM geht es so:
Ist der Übergang 255==>0 erreicht? (auch "TOP", obere Begrenzung)
ja: Schalte die LED an.
ist der Vergleichswert erreicht?
ja: Schalte die LED aus.

AVR kann man sogar dazu bringen, das alles ganz von alleine zu machen...
Gast #1805034
Lesenswert?

> Ist mein Denkmodell richtig ?

Nein.


Zähle von 0 bis 255 und danach wieder ab 0 bis 255 und danach...

In JEDEM Durchlauf: Vergleiche ob der aktuelle Durchlaufzähler
kleiner ist als 52 und schalte dabei den Ausgang zur LED aus
oder grösser ist als 52 und schalte den Ausgang ein

(das geht softwaremässig sehr einfach, weil beim Vergleich oft
ein Carry-Bit gesetzt wird, und man das in einen Port schieben
kann oder gleich 8 verschiedene davon sammelt und 8 LEDs auf
ein mal in unterschiedliche Helligkeiten setzt).

Und an statt daß man das mit Software macht, haben viele uC
schon einen PWM Ausgang, wo man nur die 52 reinlädt und den
Timer passend programmmiert.
#1805039
Lesenswert?

Thomas schrieb:
> STK500-Besitzer schrieb:
>> Jein.
>>
>> 52 sind nicht 80% von 255...
>
> Das Stimmt. Ich wollte aber die LED um 80% dimmen. Also auf 20 %. Ist es
> denn dann so richtig ?

Rein rechnerisch sieht es zunächst so aus.
Aber jetzt gehts an Problemkreise an die du nie gedacht hast. Wetten :-)

Wenn die 20% nämlich 20% der Helligkeit einer voll brennenden LED 
bedeuten sollen, dann stimmt obiges nicht.

Helligkeiten haben eine logarithmische Kennlinie. d.h. um 20% Helligkeit 
einer voll brennenden LED zu erhalten muss die PWM kleiner sein :-)
Gast #1805048
Lesenswert?

> Wenn die 20% nämlich 20% der Helligkeit einer voll brennenden LED
> bedeuten sollen, dann stimmt obiges nicht.

> Helligkeiten haben eine logarithmische Kennlinie. d.h. um 20% Helligkeit
> einer voll brennenden LED zu erhalten muss die PWM kleiner sein :-)

Unsinn.

Ein Luxmeter das im einem Fall 100 anzeigt, zeigt im anderen Fall 20 an.

Perfekt um 80% gedimmt.

Die Helligkeit ist nicht logarithmisch.

Höchstens die Empfindlichkeit des Auges, deines Auges, du hättest besser 
hinsehen sollen.

Und weil PWM zeitlich dimmt und nicht durch verringerten Strom, haben 
auch Effekte wie höherer/niedrigerer Wirkungsgrad bei anderem Strom oder 
Farbverschiebung keine Auswirkung.

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