mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zur PWM / Denkmodell


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Andreas R. (rebirama)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ist der Zähler kleiner als 52 ?
wird vom Compiler wegoptimiert werden, weil er beim Aufruf den 
Unterprogramms schon weiß, das Zähler == 255.

;-)

Wenn schon:

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe LED-Fading

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.