Umwandlung Inkrementalgeber zu Drucktasten

Bisweilen kommt es vor, dass eine Schaltung mit 2 Tasten für „Hoch“ und „Runter“ bestückt ist. Man möchte gerne dazu einen Inkrementalgeber (Drehknopf) parallel schalten. Direkt geht das leider nicht.

Voraussetzung ist, dass die Tastenreaktion flink genug erfolgt, bspw. Zählerschaltkreise oder flinkes Mikrocontrollerprogramm.

Im vorliegenden Beispiel war es wünschenswert, die beiden Interrupteingänge eines ATmega16 zu verwenden; den Mikrocontroller ansonsten in den Tiefschlafmodus zu versetzen (Oszillator aus), um Funkstörungen gänzlich zu vermeiden. Der ATmega16 hat leider keinen Pin-Change-Interrupt, um einen Inkrementalgeber mit der gleichen Funktionalität direkt anzuschließen.

Inkrementalgeber-Typen

Alle bekannten Inkrementalgeber haben zwei (auch Opto-)Kontakte, genannt A und B. Aber es gibt Unterschiede im Signalverlauf, die zu beachten sind!

Im folgenden wird unterschieden nach:

  • Anzahl der Pegelwechsel (beider Kontakte) pro Raststufe
  • symmetrischer oder unsymmetrischer Signalverlauf

    Pegelwechsel pro Raststufesymmetrischunsymmetrisch
    1 Signalverlauf
    1 Pegelwechsel pro Rastung, symmetrisch („1s“)
    Ein Inkrementalgeber mit 1 Pegelwechsel pro Rastung ist nur symmetrisch denkbar.
    2 Signalverlauf
    2 Pegelwechsel pro Rastung, symmetrisch (häufigster Typ „2s“)
    Signalverlauf
    2 Pegelwechsel pro Rastung, unsymmetrisch („2u“)
    4

    In den Raststellungen fließt kein Ruhestrom. Mikrocontroller ohne Pin-Change-Interrupt (bspw. ATmega16, ATmega128) lassen sich aus dem Tiefschlaf (Oszillator aus) aufwecken.

    Nicht gesehen Signalverlauf
    4 Pegelwechsel pro Rastung, unsymmetrisch („4u“)

    Um Ruhestrom bei B zu vermeiden, muss in Raststellung der Pull-Up für B abgeschaltet werden. Nur ein interruptfähiger Eingang nötig.

    Die folgenden Ausführungen beziehen sich auf den Typ „2s“. Die Mikrocontroller-Lösung wird gerade für den Typ „4u“ angepasst.

    Wie die Bezeichnung „symmetrisch“ schon andeutet darf A und B vertauscht werden, es ändert sich nur der Richtungssinn. Bei „unsymmetrisch“ darf A und B nicht vertauscht werden!

    Lösung mit Gattern

    Diese sieht so aus:
    Lösung mit XOR-Gattern (Eagle-Quelle)
    Die Gatter IC1A und IC1C differenzieren die Flanken der Inkrementalgeber-Kontakte und liefern High-Impulse Das Gatter IC1B liefert High-Pegel im Übergangsbereich des Gebers und Low-Pegel in den Raststellungen. Schließlich verknüpfen die Transistoren diese Signale und stellen Open-Collector-Ausgänge bereit, die zu den vorhandenen Tasten parallel geschaltet werden können (Trickschaltung).

    Diese Schaltung simuliert Tastendrücke je nach Bauart des Inkrementalgebers und Beschaltung von Pin 13 von IC1D bei Eintritt oder Verlassen des (nichtrastenden) Übergangsbereiches. Inkorrekterweise wird auch dann ein Impuls erzeugt, wenn der Drehknopf in den Übergangsbereich gedreht und dann zurückgedreht wird. Auch ist sie nicht prellsicher. Eine Schaltung, die diese Probleme nicht hat, wäre ungleich aufwändiger.

    Lösung mit Mikrocontroller

    Alles was der Mikrocontroller braucht sind zwei Eingänge (am besten mit internen Pull-Ups) und zwei Open-Collector-Ausgänge. Also reicht jeder moderne 8beinige Chip aus.

    Als Mikrocontroller bieten sich an:

    Eigenschaften: Mit einem ATtiny12 wurde die Schaltung auf einem Steckbrett aufgebaut. An Stelle der nachfolgenden Schaltung sind einfach zwei Leuchtdioden. Auf dem Steckbrett ebenfalls zu sehen ist ein denkbar einfaches und vielfältiges Programmierkabel; man braucht nur eine ruhige Hand für die Beschriftung der Einzeladern.
    Funktionsnachweis auf Steckbrett
    Die Firmware Einsicht (in AVR-Assembler) ist ziemlich kurz. Ich habe sie mittels PonyProg gebrannt. Die Fuses bleiben auf Werksvorgabe.

    Die Anschlüsse kann man sich (fast) nach Belieben am Mikrocontroller verteilt werden; dazu sind die #defines am Programmanfang anzupassen. Nicht vergessen, den Reset-Anschluss mit 5 V zu verbinden! So wie die .HEX-Datei compiliert ist, gilt:

    Resümee