Drehimpulsgeber (Dekodierung mit PIC-Mikrocontroller, Elektronik)


zurück zu Elektronik, Homepage


4. Demonstrationsbeispiel

Das folgende Beispiel dient nur zur Demonstration der Auswertesoftware. Sie zeigt eine mögliche Einbindung des für die Dekodierung wichtigen Unterprogramms "INKRROUTINE".
nach oben

4.1. Hardware

Schaltung der Demonstration des Drehimpulsgebers

Die Drehrichtung des Drehimpulsgeber (S1) wird hier vom PIC-Mikrocontroller PIC16F84 (IC1) an den Portpins RA3 und RA4 mit je einem Pull-Up-Widerstand (R1 und R2) erfasst und ausgewertet. Die Taster-Funktion der Achse wird mit dem Pull-Up-Widerstand R3 am Portpin RA2 angeschlossen (In der Software wird diese Taster–Funktion allerdings noch nicht ausgewertet!).

Die Drehbewegung des Drehimpulsgebers wird optisch mit Leuchtdioden (D1 bis D8 mit den Vorwiderständen R6 bis R13) am Port B angezeigt. Zu Beginn leuchtet eine der mittleren Leuchtdiode. Durch Drehen am Drehimpulsgeber wandert dieser Leuchtpunkt in die jeweilige Drehrichtung.

Für die Takterzeugung dient eine Standardbeschaltung bestehend aus einem 4-MHz-Quarz (X1), zwei Kondensatoren (C3, C4) und einem Widerstand (R5). Das RC-Glied (R4, C1) erzeugt einen definierten Reset beim Anlegen der Betriebsspannung.

Die Diode D9 verhindert eine Zerstörung des Mikrocontrollers bei einer Falschpolung der Betriebsspannung. Als Betriebsspannung muss eine stabile 5-V-Spannungsquelle verwendet werden.

nach oben

4.2. Anmerkungen zur Software

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

Die Software besteht im wesentlichen aus einem kurzen Hauptprogramm, einer Interrupt-Service-Routine (kurz ISR) und den Unterprogrammen INIT, INKRROUTINE, INKRRECHTSDREHUNG und INKRLINKSDREHUNG.

Die ISR wird alle 4ms aufgerufen und besitzt nur die Aufgabe das Unterprogramm INKRROUTINE zyklisch (eben alle 4 ms) aufzurufen. Dieses Unterprogramm wurde bereits im Abschnitt 3.4. Unterprogramm "INKRROUTINE" ausführlich beschrieben. Bei eigenen Anwendungen muss in diesem Unterprogramm nur der verwendete Port angepasst werden.
Das Hauptprogramm besteht nach der Initialisierung (Unterprogramm INIT) und der Interruptfreigabe nur mehr aus einer Endlosschleife. Diese Endlosschleife prüft also ununterbrochen die beiden Flags INKRLINKS und INKRRECHTS. Wird vom Unterprogramm INKRROUTINE eines dieser beiden Flags gesetzt – am Drehimpulsgeber wurde also gedreht – so wird das entsprechende Unterprogramm (INKRRECHTSDREHUNG bzw. INKRLINKSDREHUNG) aufgerufen. In diesen beiden Unterprogrammen erfolgen nun die Anweisungen, die bei einer Drehung (in diese Richtung) erfolgen sollen. Diese beiden Unterprogramme sind daher projektspezifisch. Also in jeder Anwendung unterschiedlich. Hier soll zur Demonstration nur das gesetzte Bit am Port B entweder nach links oder nach rechts geschoben werden.

Das Unterprogramm INIT dient zur Initialisierung des Controller. Hier werden u.a. 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. Hier muss zusätzlich der Startzustand des Drehimpulsgebers am Port A eingelesen werden. Siehe auch Abschnitt 3.3. Initialisierung (Unterprogramm "INIT")

nach oben


zurück zu Elektronik, Homepage

Autor: Buchgeher Stefan
Erstellt: 30. September 2003
Letzte Änderung: 10. Oktober 2004