Forum: Mikrocontroller und Digitale Elektronik Viele Taster -->Mikrocontroller


von Dirk Hoffmann (Gast)


Lesenswert?

Hallo,

wie schließe ich am besten ca. 30 Taster an einen AVR an??

Habe da an ein Schieberegister gedacht (74xx165) oder gibts da noch eine 
bessere Möglichkeit??

von Alex W. (Firma: FH) (olek)


Lesenswert?

Eine Matrix 2x2 = 4 Taster oder 8x8 usw. auslesen kannst das dann wie 
ein Touchscren, mit coordinaten.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Dirk Hoffmann schrieb:
> Hallo,
>
> wie schließe ich am besten ca. 30 Taster an einen AVR an??
>
> Habe da an ein Schieberegister gedacht (74xx165) oder gibts da noch eine
> bessere Möglichkeit??

EIN Schieberegister wird bei einer Matrix von 5 x 6 (=30 Tasten) nicht 
ausreichen, da brauchst du ca. 1,45 Schieberegister (11 bit)

von ba5zwh54 (Gast)


Lesenswert?

I/O-Interfaces via I2C wären auch eine Lösung, wenn man möglichst viele 
µC-Pins sparen möchte. Nebenbei hatman dann auch garantiert keine 
Beeinflussung von Tastern bei gleichzeitigem Drücken von mehreren 
Tastern.

von Dirk Hoffmann (Gast)


Lesenswert?

Das ist eben ein bissen ungeschickt, da die Taster alle in einer Reihe 
angeordnet sind

von kopfkratzer (Gast)


Lesenswert?

Sollen alle Schalter auch gleichzeitig erkannt werden ?
Wieviele PINs hat Dein Controller dafür übrig ?

von Jürgen (Gast)


Lesenswert?

Für 30 Tasten benötigst du 6 Pins. Anleitung siehe hier unter Punkt 4:

http://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm

von ba5zwh54 (Gast)


Lesenswert?

Was geneu meinst Du mit "da die Taster alle in einer Reihe
angeordnet sind"?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Auch denkbar ist eine analoge Abfrage der Tasten. Dies würde mit 5 
ADC-Pins und je 6 binär widerstandskodierten Tasten funktionieren.

von Jürgen (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Auch denkbar ist eine analoge Abfrage der Tasten. Dies würde mit 5
> ADC-Pins und je 6 binär widerstandskodierten Tasten funktionieren.

Warum nicht mit einem ADC-Pin und 30 Widerständen?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Jürgen schrieb:
> Warum nicht mit einem ADC-Pin und 30 Widerständen?

Weil die Auflösung für alle denkbaren Tastenkombinationen dann nicht 
mehr gegeben ist. 6 Bit kann man auch mit Bauteiletoleranzen noch ganz 
gut auswerten und sicher erkennen, wenn mehrere Tasten zeitgleich 
gedrückt sind.

von MaWin (Gast)


Lesenswert?

> wie schließe ich am besten ca. 30 Taster an einen AVR an??

Jede blöde PC Tastatur kann problemlos 102 Tasten einm einem uC 
erkennen.

Multiplex heisst das Zauberwort.

Damit kann ein AVR problemlos 64 Tasten an 16 Pins verwalten.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

MaWin schrieb:
> Jede blöde PC Tastatur kann problemlos 102 Tasten einm einem uC
> erkennen.

Aufgrund der fehlenden Dioden leider nicht alle Kombinationen. Merkt man 
schnell, wenn man auf der Tastatur mal Klavier spielen muss...

MaWin schrieb:

> Multiplex heisst das Zauberwort.
>
> Damit kann ein AVR problemlos 64 Tasten an 16 Pins verwalten.

Wissen wir doch. Erfordert aber trotzdem jede Menge Leitungen zwischen 
den Tastern. Die analoge Variante würde mit 5 Leitungen + Masse 
auskommen, die man an den Schaltergruppen ohne Kreuzungen vorbeiführen 
kann, gerade wenn die Tasten in einer Reihe angeordnet sind.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Knut Ballhause schrieb:
> Jürgen schrieb:
>> Warum nicht mit einem ADC-Pin und 30 Widerständen?
>
> Weil die Auflösung für alle denkbaren Tastenkombinationen dann nicht
> mehr gegeben ist. 6 Bit kann man auch mit Bauteiletoleranzen noch ganz
> gut auswerten und sicher erkennen, wenn mehrere Tasten zeitgleich
> gedrückt sind.

Jein. 30 unterschiedliche Widerstände kann man locker unterscheiden, 
wenn gesichert ist, dass es nicht zwei gleiche Widerstandswerte gibt. 
Beispiel:
30 Widerstände in Reihe hängen – als Spannungsteiler zwischen AVCC und 
GND. Die Leitungsknoten zwischen den Widerständen dann jeweils per 
Taster auf einen ADC-Eingang legen.

Wenn man den Bauteil-Toleranzen nicht traut, dann muss man die Schaltung 
eben kalibrieren : Der Mikrocontroller nimmt die Referenz-Werte für 
jede Taste auf und stellt sie ins EEPROM . Dann ist man auf alle Fälle 
auf der sicheren Seite – auch mit mehr als 30 Tasten.

Auf diese Weise reicht ein einziger Pin eines ATtiny13A, um eine ganze 
Tastatur abzufragen.

von Dietrich L. (dietrichl)


Lesenswert?

Markus W. schrieb:
> 30 Widerstände in Reihe hängen – als Spannungsteiler zwischen AVCC und
> GND. Die Leitungsknoten zwischen den Widerständen dann jeweils per
> Taster auf einen ADC-Eingang legen.

Dann dürfen nie 2 Taster gleichzeitig gedrückt werden.

Markus W. schrieb:
> Wenn man den Bauteil-Toleranzen nicht traut, dann muss man die Schaltung
> eben kalibrieren :

Das ist meiner Meinung deswegen Murks, weil es viel Aufwand ist im 
Vergleich zu Alternativen wie Porterweiterung, Schieberegister ...

Markus W. schrieb:
> Auf diese Weise reicht ein einziger Pin eines ATtiny13A, um eine ganze
> Tastatur abzufragen.

Das ist schon recht optimistisch, und man muss Alterung, 
Temperaturabhängigkeit und Störeinstrahlung einfach ignorieren...

Nicht geht über eine Schaltung, die auch im Worst-Case einfach nur 
funktioniert ;-))

Gruß Dietrich

von Jobst M. (jobstens-de)


Lesenswert?

Drei Portpins / 22 Tasten
-> Beitrag "5Tasten an 3 Ports Matrix"


Gruß

Jobst

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.