Elektronische Kerze - Flackerlicht mit PIC-Mikrocontroller (für PIC-Mikrocontroller, Elektronik)


zurück zu Elektronik, Homepage


2. Realisierungsidee

Für das Nachbilden einer Kerze wird hier eine Tabelle verwendet, wobei die Tabellenwerte ein Maß für die Helligkeit der Leuchtdioden sind. Die Leuchtdiode leuchtet mal hell mal etwas dunkler, wieder eine Spur heller usw., so wie es die Werte in der Tabelle vorgeben. Wenn diese Helligkeitsänderungen sehr schnell sind, nimmt das menschliche Auge dies als Flackern war, so wie das Flackern einer Kerze.
Da eine Tabelle aber nur eine begrenzte Anzahl an Werten beinhaltet, wiederholt sich dieses Flackern immer wieder. Je länger die Tabelle ist, desto unbedeutender wird dieser kleine Nachteil. Hier, bei dieser Arbeit, wiederholt sich das Flackern erst nach ca. 20 Sekunden, was genau genommen schon sehr lange ist.

Die Abbildung 1 zeigt die Tabellenwerte in grafischer Form für eine mögliche Flackersequenz, wobei null gleich bedeutend mit dunkel ist (die Leuchtdiode oder eine Glühlampe leuchtet nicht) und beim Maximalwert von 31 leuchten die Leuchtdiode (oder eine Glühlampe) mit voller Helligkeit. Bei den Werten zwischen 0 und 31 leuchtet diese dementsprechend weniger hell.

Abbildung 1. Flackerzyklus (Tabelle)

Die zur Abbildung 1 dazugehörigen Tabellenwerte sind in Listing 1 so wie sie auch im Quellcode für den Mikrocontroller verwendet werden angegeben. Bei diesem Listing handelt es sich um einen Auszug aus dem gesamten Quellcode, der im Abschnitt 3.2 vollständig abgedruckt ist. Die Zeilennummern in Listing 1 entsprechen denen vom Gesamtquelltext (Listing) von Abschnitt 3.2.

Listing 1: Tabelle TabFlackerlicht

Für die Ausgabe des analogen Tabellenwertes an einem digitalen Ausgang wird das Prinzip der Puls-Weiten-Modulation (kurz: PWM) verwendet. Die Abbildung 2 zeigt das Prinzip der Puls-Weiten-Modulation in Form von Zeitdiagrammen.

Flackerzyklus (Zeitdiagramme)

Bei der Puls-Weiten-Modulation wird eine rechteckförmige Ausgangsspannung mit fixer Periodendauer T, aber variabler Impulsdauer ti erzeugt. Ist die Impulsdauer ti sehr kurz im Vergleich zur Pausendauer tp, dann ist die "Fläche" sehr klein. Für den Verbraucher (hier für die Leuchtdiode) bedeutet dies eine kleine Spannung. Die Leuchtdiode leuchtet daher schwach, oder gar nicht. Ist die Impulsdauer ti dagegen groß, dann ist die Pausendauer tp gering, und die "Fläche" ist daher groß, und die Leuchtdiode leuchtet sehr hell. Das Verhältnis zwischen Pulsdauer und Pausendauer bestimmt daher die Helligkeit der Leuchtdiode. Wichtig ist nur, dass die Periodendauer T (also die Summe von Impulsdauer ti und Pausendauer tp) immer gleich bleibt (T = ti + tp).
In Abbildung 2 ist dies im unteren Teil noch einmal grafisch für einige Fälle dargestellt: links ist ti = 1/4 T (c), daher ist auch die Ausgangsspannung Ua nur ein viertel der maximal möglichen Spannung (d). Beim Fall etwa in der Mitte ist ti = tp = 1/2 T, daher ist auch die Ausgangsspannung Ua nur die Hälfte der maximal möglichen Spannung. Im letzen Fall ist ti = 7/8 T, und die Ausgangsspannung Ua ist daher auch nur 7/8 der maximal möglichen Spannung.

Damit das Fackern auch vom Auge als Flackern wahrgenommen wird, darf die Periodendauer T nicht zu groß werden, andererseits darf das Flackern auch nicht zu schnell erfolgen, das Flackern einer "echten" Kerze ist relativ langsam. Ein realistisches Flackern lässt sich etwa mit einer Periodendauer T von ca. 16ms (entspricht einer Frequenz von ca. 61Hz) erzeugen, und wenn jede "Periode" fünf mal wiederholt wird, dann ist das Flackern schon sehr realitätsgetreu.

Listing 2 zeigt die für die softwaretechnische Realisierung des hier beschriebenen Flackerlichts das wichtigste Unterprogramm. Dieses Unterprogramm muss regelmäßig (hier alle 512µs) aufgerufen werden.

Unterprogramm FLACKERLICHT

Dieses Unterprogramm ist sehr einfach, und erzeugt genau das Zeitdiagramm gemäss den Abbildungen 2a) und 2b). Anzumerken ist, dass dies gleichzeitig für drei Leuchtdioden (unabhängig voneinander) erfolgt. Daher sind auch jeweils drei Register notwendig. Das Register Gleichheitsszaehler ist für das fünfmalige Wiederholen notwendig. Die Konstante KONST_GLEICHHEIT beinhaltet demnach den Wert 5.
Bei LED1 bis LED3 handelt es sich um die Portpins, an denen die Leuchtdioden angeschlossen sind.
Die Register TabZaehler1 bis TabZaehler3 geben an, welcher Wert aus der Tabelle gelesen werden soll, und die Register PWM_LED1 bis PWM_LED3 beinhalten den Wert aus der Tabelle und somit die "Impulsdauer".
Die Konstante KONST_PWM_OBERGRENZE beinhaltet den Wert 32, und somit die Periodendauer.

Damit alle benötigten Register klar deinierte Startwert besitzen müssen diese vor dem ersten Aufruf des Unterprogramms FLACKERLICHT initialisiert werden. Diese Aufgabe übernimmt unter anderem ein Unterprogramm namens INIT.

Wichtig:
Das Unterprogramm FLACKERLICHT muss regelmässig vom Hauptprogramm aufgerufen werden.
nach oben


zurück zu Elektronik, Homepage

Autor: Stefan Buchgeher
Erstellt: 12. Juli 2009
Letzte Änderung: