| Start | Gästebuch | Kontakt | Impressum |

08. 09. 2010

ATmega8 Testboard...
DDS Generator...
EVG Steuerung...

Würfel...
Zeitschalter...
Lichtabh. Schalter...
Nostalgie...
Servotester...
Experimentierkoffer...

M-Unit...
M-Unit 2.x...
MICRO...
LCD Display...
DCF Uhr...
Infrarot mit RC5...
UKW PLL...
Videodisplay...
EPROM Programmer...
DCF Modul...
Testboard...
CC1 Programmer...
Temperatur Analog...
Elektronik Poti...
C-Control und USB...
MICRO Würfel...
E/A Port Anpassung...
DA Ausgang...
Inkrementalgeber...

TCP/IP Basic...
Netzwerk 1...
Netzwerk 2...
Terminal...
Ein neuer PC...
Video am PC...
DSL...
WLAN...
VoIP...

Libanon...
Montreal...
Québec...
Ein Tag in den USA...
Stockholm...

Gasometer...
Greifswald...


Inkrementalgeber an der C-Control M-Unit 2.0x

Interrupt - mächtig gewaltig!

Der Eine oder Andere erinnert sich vielleicht noch an eine dänische Kinofilm Serie, in welcher ein Tresor der Marke „Franz Jäger - Berlin“ eine wichtige Rolle spielte. Um den Tresor zu öffnen musste man einen einzelnen Drehknopf durch links, rechts Drehung in bestimmte Positionen bringen. Für die Nachbildung dieses Verfahrens eignet sich ein Inkrementalgeber.

mechanischer Inkrementalgeber

Inkrementalgeber, auch Drehimpulsgeber oder Encoder genannt, bestehen im Prinzip aus zwei Schaltern, welche durch Drehung einer Achse Impulse erzeugen. Die Schalter können durch die Achse mechanisch oder kontaktlos (z.B. Lichtschranken) betätigt werden. Unabhängig von der Bauart sind die Schalter so angeordnet, dass die Betätigung Zeit versetzt, nacheinander erfolgt. Wird die Achse gedreht ist es somit möglich, neben der Anzahl der Impulse (wie weit wurde gedreht), auch die Drehrichtung (links oder rechts) zu erfassen. Mechanische Inkrementalgeber  sind meistens für die Betätigung durch den Menschen hergestellt und rasten, damit man überhaupt ein Gefühl für die Betätigung bekommt. Die Rasteranzahl je Umdrehung ist Hersteller abhängig. Solche Inkrementalgeber finden sich in vielen Geräten der Unterhaltungselektronik und ersetzen gemeinsam mit zwei, drei Tasten ganze Tastaturen. Elektronische Inkrementalgeber kann man zur Erfassung von Drehzahl und Drehrichtung rotierender Teile nutzen. Inkrementalgeber haben keinen Anschlag wie ein Potentiometer.

In diesem Beispiel verwende ich einen einfachen, mechanischen Inkrementalgeber.

Impulsverlauf

Das Bild zeigt den Signalverlauf an den Schaltern A und B. Wenn der Schalter A nach GND schließt (low), ist Schalter B entweder offen (high) oder geschlossen (low). Ist Schalter B geschlossen wurde nach links gedreht, ist Schalter B offen wurde nach rechts gedreht.

C-Control muss also den Zustand von Schalter B genau dann erfassen, wenn Schalter A betätigt wird. Für diese Aufgabe ist der Interrupt Pin gut geeignet. Ein low an diesem Pin ruft einen Programmteil auf, welcher vorher definiert worden ist. Dabei wird das laufende Programm unterbrochen. Man kann also den Zustand von Schalter B des Inkrementalgebers genau dann erfassen, wenn der Inkrementalgeber betätigt wird. Das erfolgt unabhängig davon, was das Programm gerade macht.
Ein Interrupt Programmteil sollte immer so kurz wie möglich ausgeführt werden. In den unten aufgeführten Beispielen wird das nicht vollständig beachtet, aber die Programme erfüllen ihren Zweck. Immer dann, wenn man den Inkrementalgeber betätigt, wird eine Variable um eins erhöht (Rechtsdrehung) oder verringert (Linksdrehung). Der Wert der Variablen wird auf den Bereich von 0 bis 9 begrenzt. Es wird zusätzlich ein Bit (flag) gesetzt. Die weitere Verarbeitung von Variable und flag erfolgt im Hauptprogramm.

Schaltplan

Das Bild zeigt den Schaltungsvorschlag. Inkrementalgeber Schalter A wird an den Interrupteingang der M-Unit 2.0 angeschlossen. Inkrementalgeber Schalter B kann an einen beliebigen Port geschaltet werden, hier Port1. An diesem Port muss der Pull-up Widerstand aktiviert sein. Beide Schalter werden mit je 100nF Kondensatoren gegen GND entprellt.
Benutzt man das M-Unit2 Applikationsboard entfallen die übrigen Bauteile.

Die Datei enc-test.zip im Downloadbereich enthält zwei Demo Programme.

Das Programm "increment_test.bas" ist ein Demo für die Abfrage eines Inkrementalgebers. Der Wert wird auf den Bereich 0 - 9 begrenzt. Die Ausgabe erfolgt am Applikationsboard LCD und am Terminalprogramm.

Mit dem Programm "code_test.bas" wird versucht, das eingangs angeführte Verhalten des Tresorschlosses nachzubilden. Man muss den Inkrementalgeber nacheinander eine bestimmte Anzahl von Rasterstellungen nach rechts bzw. nach links drehen, um eine LED zum Leuchten zu bringen, das ist der Code. Um ohne zusätzliche Taster auszukommen muss man ein bestimmtes Timing einhalten. Das Programm wartet auf die Betätigung des Inkrementalgebers. Nach Betätigung hat man rund drei Sekunden Zeit die erste Codezahl einzustellen. Nach dieser Zeit wird der aktuelle Wert des Inkrementalgebers gespeichert und es wird auf die nächste Betätigung gewartet. Auf diese Art werden vier Eingaben erwartet. Sind die Eingaben korrekt, dann leuchtet die LED (LCD Hintergrundbeleuchtung Applikationsboard 2.0) für rund drei Sekunden. Die Pausen zwischen den Eingaben werden zeitlich begrenzt. Das Programm läuft somit weiter, auch wenn nach der ersten Eingabe keine weiteren Eingaben erfolgen. Wenn man einen falschen Code eingibt oder das Timing nicht einhält, muss man etwa 24s warten, dann ist das Programm wieder am Anfang und man kann neu beginnen. Man sollte für den Code immer unterschiedliche Zahlen wählen. Wird als Code z.B. die Zahl 1111 genommen, dann braucht man den Inkrementalgeber nur einmal nach rechts zu drehen, warten und nach rund 21s ist die LED an. Die LCD und Terminal Ausgaben sind nur zur Demonstration.

Beispiel:
3x rechts, Pause, 6x rechts, Pause, 7x links, Pause, 2x rechts.
Es werden die Zahlen 3, 9, 2 und 4 übergeben. Daraus errechnet das Programm die Codezahl 3924.

Ersetzt man die LED durch ein Relais (R1 entfällt dann, Schutzdiode nicht vergessen), kann man z.B. einen Türöffner steuern und hat ein Codeschloss mit nur einem Bauteil zur Code Eingabe. Das Programm ist leicht erweiterbar um z.B. Versuche zu protokollieren oder die Codezahlen über den COM Port zu verändern usw. Auch die Codeanzahl ist leicht zu erweitern.

Bezug nehmend auf den Anfang dieses Beitrages:
Mit einem Stethoskop kann man diesem Codeschloss nicht beikommen. Bei Rasierschaum währe ich mir nicht so sicher.

M.L. 05/2006

Meine große Liebe hat mich verraten, als ich 13 war. Jetzt liebe ich Jesus. Ich habe alles, was ich brauche.

Download...
Links...
Logbuch...
Über Mich...

Aktualisierung:
06.07.2009

Diese Webseite ist für IE ab Version 6 optimiert.
Copyright 2001 - 2010
webmaster

Webdesign:
MaLo-WEB