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


zurück zu Elektronik, Homepage


3. Demonstrationsbeispiel 1

Das folgende Beispiel dient nur zur Demonstration. Es zeigt eine mögliche Einbindung des zuvor beschriebenen Unterprogramms.

nach oben

3.1. Hardware

Die Abbildung 3 zeigt die sehr einfache Schaltung für das erste Demonstrationsbeispiel.

Demonstrationsbeispiel 1 (Schaltung)

Bei diesem Demonstrationsbeispiel besteht die Kerze aus drei roten Leuchtdioden (D2 bis D4) und einer gelben Leuchtdiode (D1). Die drei roten Leuchtdioden repräsentieren das Wachs der Kerze und die gelbe Leuchtdiode die Flamme.

Als Mikrocontroller (IC1) dient hier ein PIC12F629. Auffällig beim Mikrocontroller ist die fehlende Oszillatorschaltung sowie die fehlende Resetschaltung. Die Oszillatorschaltung ist hier auch nicht notwendig, da diese Anwendung nicht zeitkritisch ist und daher der interne 4-MHz-Oszillator verwendet werden kann.

Wichtig:
Bei der Konfiguration des Mikrocontrollers müssen die entsprechenden Bits für die Verwendung des internen Oszillators und des internen Reset werden!

Der Kondensator C1 dient zur Entkoppelung der Betriebsspannung für den Mikrocontroller IC1. Für diesen Koppelkondensator sollte ein Keramiktyp verwendet werden. Dieser muss möglichst nahe beim Mikrocontroller angebracht werden.

nach oben

3.2. Anmerkungen zur Software

Die Software zum Demonstrationsbeispiel befindet sich im Download-Bereich auf dieser Seite

Der Quellcode für dieses Demonstrationsbeispiel wurde in C mit der freien Demoversion des CC5x-Compilers erstellt. (Anmerkung: Der CC5x-Compiler lässt sich sehr einfach in die Entwicklungsumgebung MPLAB des PIC-Herstellers Microchip einbinden).

Die Software besteht im Wesentlichen aus einem sehr kurzen Hauptprogramm, einer kurzen Interrupt-Service-Routine (kurz ISR, das im Abschnitt 2. (Realisierungsidee) besprochen Unterprogramm zur Erzeugung des Flackerlicht und einem Unterprogramm zur Initialisierung des Mikrocontrollers (Unterprogramm INIT).

Die ISR wird alle 512 µs aufgerufen und besitzt hier nur die Aufgabe eine 512-µs-Zeitbasis zu erzeugen, indem sie ein Botschaftsflag für das Hauptprogramm erzeugt. Das Hauptprogramm reagiert auf dieses Botschaftsflag, indem es das Unterprogramm zur Erzeugung des Flackerlichts aufruft. Durch diesen Mechanismus wird dieses Unterprogramm zyklisch, alle 512µs aufgerufen.
Die Zeit von 512µs ergibt sich, weil als Takt der interne 4-MHz-Takt verwendet wird, und weil der Vorteiler (VT) mit dem Wert 1:2 (TMR0 Rate, Zeile 210) geladen wird. Für diese Zeit gilt:

Das Hauptprogramm (main) befindet sich nach der Initialisierung (Unterprogramm INIT) in einer Endlosschleife. Diese Schleife besitzt nur die Aufgabe ständig das Botschaftsflag (hier das Bit FLAGZEITBASIS) zu prüfen. Ist dieses Botschaftsflag gesetzt, so muss vom Hauptprogramm eine bestimmte Aufgabe ausgeführt werden. Diese Aufgaben sind in Form von Unterprogrammen vorhanden. Hier ist die Aufgabe das Unterprogramm zur Erzeugung des Flackerlichts aufzurufen. Wichtig ist, dass das Botschaftsflag wieder gelöscht werden muss.

Das Unterprogramm INIT dient zur Initialisierung des Mikrocontrollers. Hier werden unter anderem die Ports konfiguriert (Port dient als Eingang oder als Ausgang), der oder die Timer eingestellt usw. Dieses Unterprogramm ist vom Controllertyp abhängig und je nach Anwendung mehr oder weniger umfangreich.
In diesem Unterprogramm werden auch noch die für die Erzeugung der Flackerlichter notwendigen Register initialisier, und zum Schluss dieses Unterprogramms erfolgt die Freigabe des hier benötigten Timer-0-Interrupt.

Das für die Erzeugung des Flackerlichts wesentliche Unterprogramm FLACKERLICHT wurde bereits im Abschnitt 2. (Realisierungsidee) behandelt und wird daher hier nicht nocheinmal beschrieben.

Am Beginn des Quellcodes befinden sich die folgenden Definitionen und Einstellungen für die Anwendung des Mikrocontrollers als "elektronische Kerze":

nach oben


zurück zu Elektronik, Homepage

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