Forum: Mikrocontroller und Digitale Elektronik Eingangs- Ausgangsstrom an Tastatur-Matrix


von Beginner (Gast)


Lesenswert?

Hallo, eine kurze Frage.

Habe ich  eine übliche Tastaturmatrix-Schaltung (z.B. 
http://www.mikrocontroller.net/attachment/353/matrix.txt),  und die 
Spalten sind GPIO-Ausgänge, dann sehe ich zu, dass sequentiell immer nur 
eine einzige Spalte auf 0 gelegt wird.

Frage ich dann die vier Eingänge ab, sehe ich, welche Tasten in dieser 
Spalte gedrückt sind. Anschließend lege ich die Spalte wieder auf 1, und 
setze die nächste Spalte auf 0, um erneut die vier Eingänge abzufragen.

Eine Taste schließt also immer einen Ausgang mit einem Eingang kurz.

Wenn der Ausgang aber gerade auf 1 liegt (Spalte wird gerade nicht 
abgefragt), dann fließ bei gedrückter Taste ein Strom direkt vom Ausgang 
in den Eingang.

Sind die Eingänge immer so hochohmig, dass ein Ausgang davon nicht 
überlastet wird?

(Allgemeine Frage – speziell geht es mir um einen µC Atmel ARM mit 
Cortex M3).

von Bestromer (Gast)


Lesenswert?

Beginner schrieb:
> Sind die Eingänge immer so hochohmig, dass ein Ausgang davon nicht
> überlastet wird?

Gegenfrage: macht ein niederohmiger Eingang an einem Mikrocontroller 
Sinn?

Interessanter ist aber die Frage, was passiert bei einem 
Programmierfehler, wenn unbeabsichtigt beide Pins auf Ausgang geschalten 
sind und diese unterschiedliche Pegel haben ohne Widerstand dazwischen?

von Peter D. (peda)


Lesenswert?

Alle Anschlüsse einer Matrix sollten entweder Ausgang-low oder Eingang 
mit Pullup sein, d.h. nie Ausgang-high.
Sonst kommt es beim Drücken mehrerer Tasten zu Datenkämpfen.

von Beginner (Gast)


Lesenswert?

Bestromer schrieb:
> Gegenfrage: macht ein niederohmiger Eingang an einem Mikrocontroller
> Sinn?

Nein, macht natürlich keinen Sinn.

Insofern gäbe es also nur ein Problem, wenn zwei Taster der gleichen 
Zeile gleichzeitig gedrückt werden, und deren beide Spaltenausgänge 
unterschiedliche Ausgangspotentiale haben.

Also muss ich nach dem Lesen einer Spalte deren Ausgangspin immer wieder 
auf Eingang zurückschalten, bevor ich die nächste Spalte auf Ausgang und 
low lege.

Danke!

von Georg (Gast)


Lesenswert?

Beginner schrieb:
> Also muss ich nach dem Lesen einer Spalte deren Ausgangspin immer wieder
> auf Eingang zurückschalten, bevor ich die nächste Spalte auf Ausgang und
> low lege.

Du schaltest die Spaltentreiber ein und aus, lässt sie aber immer auf Lo 
- dann ist die Sache sicher.

Eine typische Matrix hat z.B. npn-Transitoren als Spaltentreiber, die 
jeweils eine Spalte mit GND verbinden, und die Zeilen sind jeweils mit 
einem Pullup-Widerstand und einem Eingang verbunden. Dann gibt es ein 
logisches Durcheinadnder, wenn mehr als eine Taste gedrückt ist (was man 
mit Dioden verhindern kann), aber keinen Kurzschluss. Entsprechend 
programmierst du deine Spalten-Ausgänge wie Open Collector Ausgänge.

Hallo Klugscheisser: natürlich kann man Spalten und Zeilen vertauschen, 
funktioniert entsprechend.

Georg

von MaWin (Gast)


Lesenswert?

Beginner schrieb:
> Sind die Eingänge immer so hochohmig, dass ein Ausgang davon nicht
> überlastet wird?

Ja.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.