Forum: Mikrocontroller und Digitale Elektronik Tastermatrix über Schieberegister


von Matrix-Neuling (Gast)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

ich plane derzeit eine Schaltung mit einem ATmega32U2, an die 64 Taster 
angeschlossen werden sollen.
Wie man eine Tastermatrix mittels AVR Portpins aufbaut weiss ich, aber 
leider habe ich keine 16 IOs mehr frei.
Dafür ist das SPI aber noch unbelegt, daher habe ich daran gedacht, das 
ganze mittels Schieberegistern zu lösen.

Klar, ich könnte einfach 8 von den hc165 hintereinander hängen, aber 
diese Lösung braucht sehr viel Platz und ist wie ich finde nicht so 
schön wie eine Matrix.

Ich will also einen hc595 ( Zeilentreiber ) und einen hc165 ( 
Spaltenleser ) einsetzen.
Das Problem ist jedoch, wenn eine Zeile aktiv ( auf GND gezogen ) ist, 
sollen die anderen Zeilen hochohmig sein. Der hc595 kann aber kein 
Tristate.
Kann ich das ganze so wie in der Zeichnung ( Skizze, der Einfachheit 
halber nur mit 3x3-Matrix ) gezeigt realisieren ?
Die Transistoren müssten doch die Zeilen hochohmig schalten, wenn an der 
Basis GND anliegt.

Ach ja, was wäre in dem Fall ein guter Wert für die Basiswiderstände ? 
470 Ohm ?

Gruß,
A.

von Thomas E. (thomase)


Lesenswert?

Matrix-Neuling schrieb:
> Kann ich das ganze so wie in der Zeichnung ( Skizze, der Einfachheit
>
> halber nur mit 3x3-Matrix ) gezeigt realisieren ?

Genauso macht man das.

Matrix-Neuling schrieb:
> Die Transistoren müssten doch die Zeilen hochohmig schalten, wenn an der
>
> Basis GND anliegt.

Die Transistoren kannst du weglassen. Da geht TTL-Ausgang auf 
TTL-Eingang.

Matrix-Neuling schrieb:
> Ach ja, was wäre in dem Fall ein guter Wert für die Basiswiderstände ?
>
> 470 Ohm ?
Viel zu klein. 10 KOhm.

mfg.

von Peter D. (peda)


Lesenswert?

Matrix-Neuling schrieb:
> Das Problem ist jedoch, wenn eine Zeile aktiv ( auf GND gezogen ) ist,
> sollen die anderen Zeilen hochohmig sein. Der hc595 kann aber kein
> Tristate.

Das geht auch mit ner Diode.
Bei 74HC ist low bis 1,35V erlaubt.


Peter

von Thomas E. (thomase)


Lesenswert?

Peter Dannegger schrieb:
> Das geht auch mit ner Diode.
>
> Bei 74HC ist low bis 1,35V erlaubt.

Richtig! Das sind ja Taster und keine LEDs.


Thomas Eckmann schrieb:
> Matrix-Neuling schrieb:
>
>> Kann ich das ganze so wie in der Zeichnung ( Skizze, der Einfachheit
>
>>
>
>> halber nur mit 3x3-Matrix ) gezeigt realisieren ?
>
>
>
> Genauso macht man das.

Wenn ich nochmal darüber nachdenke, habe ich das eigentlich immer ganz 
anders gemacht. Mit zwei 8:1 Multiplexern/Demultiplexern. 4051 oder 
sowas ähnliches.


mfg.

von ingo (Gast)


Angehängte Dateien:

Lesenswert?

Habe mal eine Variante angehängt, die ich gern in solchen Situationen 
nutze:
Matrix hängt statisch zwischen Widerständen und Transistorbasen, wird 
eine Taste gedrückt, geht das Potential am Spalten-Widerstand runter 
(auf Basispotential), der Transistor (für die Zeile) schaltet durch. Bei 
einem Tastendruck gehen also immer 2 Nullen zum Schieberegister. Macht 
bei meiner 4x4 Telefontastatur 1 Widerstandsnetzwerk, 4 Transisoren und 
1 4021 (würde der HC165 genausogut machen) und 3 Portpins zum µC.
mfG ingo

von Matrix-Neuling (Gast)


Angehängte Dateien:

Lesenswert?

Wow, so viele Ideen auf einmal ... da weiss man gar nicht, was man 
machen soll :)

@Peter Dannegger:
So richtig habe ich das mit der Diode noch nicht verstanden, wie sie da 
rein soll. Habe ein Bild davon gemacht, wie ich es mir in etwa denke, 
aber das wird vermutlich falsch sein.

@ingo:
Die Idee hat auch etwas. Damit lässt sich aber nur eine Taste 
einwandfrei erkennen, oder ? ( im Falle einer "normalen" Tastenmatrix 
kann man ja immerhin bis zu 2 Tasten gleichzeitig erkennen )

Also im Grunde rechne ich damit, dass bei mir immer nur eine Taste 
gedrückt wird, aber es wäre trotzdem schön, mehrere erkennen zu können.

@Thomas Eckmann:
Mehrere 4051er hätte ich sogar hier herumliegen. Das Problem wird aber 
sein, dass ich dann wohl insgesamt 8 IOs brauche ( 2 für die 
eigentlichen Signale und 2*3 für die A,B,C Leitungen der beiden 4051er 
).
Mit Mühe und Not komme ich im Moment auf 7 freie IOs ( SPI-Pins 
mitgezählt ).

Vielen Dank für die bisherigen Informationen.

Gruß,
A.

von ingo (Gast)


Lesenswert?

> Damit lässt sich aber nur eine Taste
> einwandfrei erkennen, oder ?

Stimmt, hatte ich versäumt zu erwähnen, ausserdem wird diese Variante, 
bei größeren Matritzen, unwirtschaftlicher.

Für eine eindeutige Erkennung mehrerer unabhängiger Tasten, müsstest Du 
ohnehin vor jeder Taste noch eine Diode vorsehen, mit den Zeilendioden 
verhinderst Du nur Kurzschlüsse zwischen Zeilen, wenn 2 Tasten einer 
Zeile gleichzeitig gedrückt werden.

mfG ingo

von Peter D. (peda)


Lesenswert?

Matrix-Neuling schrieb:
> @Peter Dannegger:
> So richtig habe ich das mit der Diode noch nicht verstanden, wie sie da
> rein soll. Habe ein Bild davon gemacht, wie ich es mir in etwa denke,
> aber das wird vermutlich falsch sein.

Nö, das ist vollkommen richtig so.
Es reichen aber auch kleinere Dioden (1N4148).


Peter

von Matrix-Neuling (Gast)


Lesenswert?

Ok, vielen Dank, dann werde ich das wohl so machen.

von Edimahler (Gast)


Lesenswert?

Ich weiss, ich weiss, der Thread ist fast 6 Jahre alt, bitte nicht 
hauen...

Aber ich bin gerade über Google hier drauf gestossen und dachte mir, 
dass der folgende Link auch für andere sicherlich nach wie vor von 
grossem Interesse sein könnte, das MUSS ich in meinem Lieblingsforum 
einfach teilen :-):

http://www.sprut.de/electronic/pic/grund/tasten/tasten.htm

Schaut mal das dritte Bild dort an. Da habe ich jahrelang immer 
2*SQRT(Anz.Tasten) an Pins verschleudert, dabei ginge es auch so viel 
sparsamer - solange nur eine Taste aufs Mal gedrückt wird. Finde ich der 
Hammer...

(Alternativ ginge natürlich dann auch noch die ADC-Variante, da liessen 
sich über nur einen Pin einige hundert Tasten anschliessen, wenn jedem 
Taster ein Widerstandswert zugeordnet wird. Da kommen dann aber noch 
andere Probleme, unsauberes Schliessen des Tasters, Toleranzen der 
Widerstände, ADC-Noise etc...)

Vielleicht nützt es einem? Liebe Grüsse jedenfalls,
Edi

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.