mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tastermatrix über Schieberegister


Autor: Matrix-Neuling (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ingo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Matrix-Neuling (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matrix-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, vielen Dank, dann werde ich das wohl so machen.

Autor: Edimahler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.