PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastaturmatrix



Andun
18.10.2007, 20:09
Hi

Ich hatte das Thema schon mal thematisiert, aber hier kommt nun eine vernünfige Frage: ^^

Ich möchte immer noch die Tastatur eines alten V-Tech Lerncomputers auslesen. Die Tastenbelegung habe ich schon analysiert und es handelt sich um eine einfache Matrix von 8x10 Tastern. (D.h. es befinden sich keine(!) Dioden oder ähnliches in der Tastatur.)

Um diese Tasten sinnvoll auszulesen habe ich mir folgende Lösung auf I2C Basis überlegt: Der I/O Portexpander Bausten PCF8574 von Phillips stellt die nötigen Ports zur Verfügung + 2 Eingänge am Atmega16 direkt. (Ja, der ist überdimensioniert, aber im moment egal)

Mein "Problem" ist nun, ob folgende Überlegung richtig ist, oder was ihr dazu sagt. Danke

In der Matrix werde ich nacheinander jede Zeile auf GND ziehen (der rest ist auf 5V) und teste dann ob ich an den Spalten irgendwo GND messe und nicht die 5V die ich durch einen Pull-Up an die Spalten anlege.

Falls mehrere Tasten gleichzeitig gedrückt werden, habe ich ein Problem, da ich diese nicht vernünftig auslesen kann, aber ich möchte wenigstens verhindern, dass wenn ich GND anlege an eine Zeile diese eine direkte Verbindung zu den 5V an einer anderen Zeile zustande bringt und dann Strom zieht, wie sau. (hoffentlich kann man mir folgen) Um diesem Problem entgegenzuwirken habe ich Dioden integriert.
(Speziell zu diesem Punkt hätte ich gerne eure Rückmeldung)

Wenn nun ganz normal eine Taste gedrückt wird, so wird eine Verbindung vom GND an den Zeilen über die Taste zur Spalte wo der PCF8574 als Eingang dient und auf GND gezogen wurde, vom PullUp weg. Muss in diese Schaltung ein Strom-begrenzender Widerstand vor, z.b., die Zeilen? (so hab ich es erstmal eingezeichnet.)

Also, falls ihr mir folgen konntet, hier der Schaltplan. (Vielleicht hilft der auch zum Verständnis) An die 10 Anschüße kommen jeweils die Spalten, bzw. Zeilen.

Meine Fragen:
1. Ist die Diode so richtig und sinnvoll? (Die Bezeichnung im Scheme sind irrelevant, da ich die erstbeste aus der Eagle Bibliothek genommen hab)
2. Ist der PullUp so richtig? Und wenn ja, wie groß sollte dieser dimensioniert sein?
3. Gleiche Frage für den Strombegrenzenden Widerstand.

Achja, die Leiterbahnen und Taster der Tastatur bieten selbst wohl auch einen großen Widerstand, also auch die Frage, ob dies evtl. schon selbst ausreichen könnte?

Vielen Dank

Andun
http://web3.vps101.serverservice.info/files/sch-ansteuerung_matrix.jpg

Besserwessi
18.10.2007, 23:44
Die Dioden sind durchaus eine Möglichkeit den "Kurzschluss" beim Drücken von 2 Tasten zu verhindern. Ab es reicht entweder die Strombegrenzungs Widerstände oder die Dioden zu verwenden. Bei Logik ICs gibt es auch gleich open Collektor bzw. open Drain Ausgänge, die die Funktion der Dioden gleich drin haben.

Die Pullup Widerstände hängen von der Art der Eingänge (TTL,CMOS,..) und den Möglichen eingekoppelten Störungen ab. Für CMOS Eingänge kann man z.B. 10K .. 100 K nehmen. Echte TTL Eingänge gehen auch ohne, da dort ein offener Eingang als definiert high gilt, aber nicht besonders störsicher. Die Strombegrenzungswiderstände müssen deutlich kleiner als die Pull Ups sein. Die untere Grenze ergibt sich aus der Treiberleistung bzw. die Belastbarkeit der Tasten. Ein Wert von 1 K wäre mein Vorschlag.

Andun
19.10.2007, 07:36
Hi

Vielen Dank für deine Zahlen.

Also die PullUps kommen mit 10k dran.

Zum Strombegrenzungswiderstand, bzw. der Diode: (nur um das nochmal zu verstehen, aus formuliert ... :D ) Der Eingang stellt ja ansich kein Potential dar, oder? Ein kleiner Strom fließt also dann nur durch den Pullup, durch die Diode in den Zeilentreiber. Deswegen ist dass kein Problem und an der Spalte messe ich ein Potential auf GND Niveau.

Das hab ich doch so richtig verstanden, oder?

Falls ja, dann vielen Dank, dann werde ich das System so aufbauen.

mfg
Andun