Forum: Mikrocontroller und Digitale Elektronik 12 Taster auf 7 Pins?


von Thomas W. (thomas0906)


Lesenswert?

Hallo

Ich habe hier ein Tastenfeld 3x4 mit 12+1 Ausgängen. Leider sind die 
Taster alle auf einer Seite miteinander verbunden, da kann ich auch 
nichts ändern.

Ich überlege jetzt, wie ich das irgendwie an 7-8 Pins bekomme?

Das wird wohl nur aktiv gehen, also mit Spannungsversorgung und Logik 
dahinter? Oder gibt es da andere Tricks? Spannungsversorgung ist 
natürlich lästig.

Wenn es nicht ohne Spannung geht, dann favorisiere ich eine Lösung mit 
einem nachgeschalteten PIC, der alles an EINEM Ausgang seriell 
rausschickt. Dann kann ich die Tastatur an alle meine Testschaltungen an 
nur EINEN Eingang anschließen. Das hat auch was...

Gruß
Thomas

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> wie ich das irgendwie an 7-8 Pins bekomme?
Ich würde da einfach die übliche Schieberegisterlösung mit dem 74hc165 
nehmen...

von MCUA (Gast)


Lesenswert?

einfach ein paar MUX-ICs nehmen

von Jens (Gast)


Lesenswert?

STichwort Schieberegister! 2 Stück a 8Stufen oder 3 a 4Stufen. 
Stichwort:

74164.

..oder Multiplexer:

74151

Kanäle nacheinander auswählen und auf einen Prozessor Pin schalten und 
dann Zustand angucken.

Du kannst das auch mit einer Diodenmatrix lösen, oder mit 
Prioritäsencoder...

Oder ein Widerstandsnetzwerk und dann mit AD Wandler einlesen...

J.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> die übliche Schieberegisterlösung
Und da ist der Artikel:
http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI

von Jens (Gast)


Lesenswert?


von Tip (Gast)


Lesenswert?

Da wird wohl ein ADC-Pin und eine Reihenschaltung von Widerständen, 
deren Abgriffe durch die Taster z.B. nach Gnd verbinden werden, die 
einfachste Lösung sein. Voraussetzung sind halbwegs gut definierte 
Übergangswiderstände der Schalter.

von MCUA (Gast)


Lesenswert?

>Da wird wohl ein ADC-Pin und eine Reihenschaltung von Widerständen,
>deren Abgriffe durch die Taster z.B. nach Gnd verbinden werden, die
>einfachste Lösung sein. Voraussetzung sind halbwegs gut definierte
>Übergangswiderstände der Schalter.
Tasten-Mehrfach-Detektierung (gleichzeitges Drücken von Tasten) geht 
darüber nicht, es sei denn, er nutzt ein 12 Bit ADC.

von Thomas W. (thomas0906)


Lesenswert?

Je länger ich drüber nachdenke...

...werd ich wohl doch einen PIC nehmen. (Kosten 1-2 Euro)
Anschluß dann über +5V/Masse und eine Datenleitung.

Damit kann ich beliebig Doppelclicks, Mehrfachtastendruck, ja sogar 
ganze eingegebene Zahlenfolgen übertragen. Ein einfaches Protokoll mit 
Pulsweiten sollte reichen. 3 Byte (Kennung, Daten, XOR Prüfsumme) mit 
warten auf Rückantwort sollten reichen.

Gruß
Thomas

von ich (Gast)


Lesenswert?

Gibt auch noch folgende Möglichkeit. Man legt über einen Widerstand an 
einen ADC-Eingang ein PWM mit 50/50, glättet das ein bisschen und misst 
die Spannung. Ist die Spannung dort ca. Vcc/2, dann ist keine Taste 
gedrückt.
Jetzt kommen an den gleichen Pin eine Taste 1 gegen GND und eine Taste 2 
gegen Vcc. Ist Taste 1 gedrückt, misst der ADC irgendwas bei 0V, ist 
Taste 2 gedrückt, wird Vcc gemessen.
Schwups, kann man auf einem ADC-Pin drei mögliche Zustände abfragen.

Natürlich bräuchte man bei der Lösung für 12 Tasten 6 ADC-Pins... Die 
Lösung mit der Widerstandsmatrix hört sich auch gut an. Vielleicht das 
Tastenfeld aufteilen in 2 Teilbereiche...

von MCUA (Gast)


Lesenswert?

>einfach ein paar MUX-ICs nehmen
kostet ca 1/10 von PIC.
warum umständlich wenns auch einfach geht?

von Jens (Gast)


Lesenswert?

...bei 12 Tasten musst du einen 16:1 mux nehmen. Welchen würdest du 
empfehlen?

Wenn es 12 Widerstände a 1206 machen, warum dann einen mux nutzen?

kostet ca 1/10 von MUX.
warum umständlich wenns auch einfach geht?

J

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Ich steh bei sowas auf PCF8574, zwar relativ teuer im Vergleich zu Shift 
Registern, aber sehr einfach per I2C zu steuern und mit ner dritten 
Leitung auch Interrupt. Jeder Taster einzeln auslesbar/generiert 
Interrupt.

von MCUA (Gast)


Lesenswert?

>...bei 12 Tasten musst du einen 16:1 mux nehmen. Welchen würdest du
>empfehlen?
Falsch. Du muss ja nicht alles auf eine Leitung muxen.


>Wenn es 12 Widerstände a 1206 machen, warum dann einen mux nutzen?
Dann aber mur mit ADC, Problem oben schon erwähnt
>kostet ca 1/10 von MUX.
nein, im Endeffekt ist das teurer. Oder nimmst du für 8000 LogicGatter 
auch 8000 diskrete Widerstände?

von Thomas W. (thomas0906)


Lesenswert?

Hi

Geld spielt keine Rolle! ;-)

Also, wenn ich es mit einem PIC mache, dann kann ich sogar die Tasten 
vervielfachen, wenn ich einen Bank Umschalter vorsehe. Außerdem noch ein 
kleines LCD dran, dann kann man sehen, was man eingegeben hat.
Das LCD könnte über eine zweite Leitung an eine Schaltung dran, dann 
kann ich über ZWEI!!! PINs mehre Keypad Bänke einlesen und Werte an ein 
LCD senden. Dafür bau ich mir dann eine LIB...

Danke für eure Alternativen...

Gruß
Thomas

von Löter (Gast)


Lesenswert?

Ein separater Controller bietet natürlich die größte Flexibilität. Ein 
PIC hat hierbei allerdings den Nachteil das er nur an vier Pins interne 
Pullups hat. Sollte sich das inzwischen geändert haben würde ich mich 
über einen entsprechenden Hinweis freuen.

Unabhängig davon:
Wenn es sich bei dem Gerät um ein Einzelstück oder eine Kleinserie 
handelt ist alles in Ordnung. Ansonsten gibt es bei jedem zusätzlichen 
Controller das Problem das er auch programmiert werden muss. Und der 
Aufwand um das zu tun sollte nicht unterschätzt werden.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Bänke umschalten kannst du auch mit PCF8574ern, Display geht auch am 
jetzigen Controller, mit Muxen bekommst du auch zig zig zig Tastern 
dran, mit billigst shift registern bekommste du 64 Taster auf nichmal 
einen kompletten Port...

Alles einfacher als ein Controller... Musst du wissen ;)

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.