Unkonventionelle (?) Tastaturanbindung

Gast #302388
Lesenswert?

Hallo!

Ich hab hier eine Tastatur mit 12 Tasten herumliegen. Diese Tastatur
hat nun für jede Taste einen einzelnen Anschluss. Ich habe mir lange
den Kopf zerbrochen, wie ich sie anbinden könnte. Denn 12 Pins an
meinem Mega8 will ich ja wirklich nicht hergeben... Habe an
irgendwelche Multiplexereien gedacht, doch auch damit wird das ein
riesiger Salat mit Unmengen an Verbindungen.

Nun hatte ich folgende Idee: An jeden Anschluss der Tastatur wird ein
jeweils anderer Widerstand angeschlossen, und das ganze kommt
schliesslich an einen ADC-Pin. Je nach dem, welche Taste gedrückt wird,
bekomme ich dort eine andere Spannung. Sollte doch funktionieren, oder?


Nun habe ich aber noch ein Problem: Wie teile ich dem uC mit, dass
überhaupt eine Taste gedrückt wurde? Natürlich, ich könnte dauernd den
ADC auslösen, aber da gäbe es sicher eine bessere Lösung? Gibt es z.B.
einen Interrupt, sobald der ADC einen Wert ungleich 0 liefert?

Gruss

Michael
Gast #302390
Lesenswert?

Deine Idee wird nicht ganz so leicht umzusetzen sein. Wenn jemand 2 oder
mehr Tasten zugleich drückt, werden deine einzeln abgestimmten
Widerstände keinen sauberen Wert mehr liefern.
Prinzipiell wäre auch das machbar, aber

  1. müßtest Du zwischen 12^2 Zuständen unterscheiden können
  2. wird die Realisierung nicht einfach, da die Widerstände
"parallel" geschaltet sind.

D.h. konkret, daß Du für eine sauberen Umsetzung mind. einen 12bit
ADC-Wandler brauchst. Ich bin mit dem Mega nicht vertraut, aber in
einem anderen Thread sucht jemand einen uC mit 12bit-ADC und die sind
wohl nicht so zahlreich.
Punkt 2 ist nicht unbedingt ein Problem, ist halt etwas rumrechnen ;).
Am besten geht man die Sache über die Leitwerte an, dann wird die
Parallelschaltung einfacher handhabbar.
Allerdings kommt noch ein weiteres Problem hinzu ... die Genauigkeit.
Bei 12bit hast Du eine verdammt feine Abstufung, die genau abgeglichene
 Widerstände mit sehr geringen Toleranzen vorraussetzt. Alterung und
Temperaturprobleme sind da noch ein weiteres Thema.

Besorg Dir lieber ein 12adriges Kabel oder verdrahte die Tastatur in
einer Matrix. Dann werden es nur noch 7 Leitungen (3x4 Matrix).

Wird einfacher umzusetzen sein (wenn auch dein Ansatz interessanter ist
;)).

Bis denne, Andreas
Gast #302393
Lesenswert?

Hallo !

hm solche tastenfelder habe ich hier leider auch rumliegen
ist leider nich möglich da etwas an der matrix zu manipulieren

bliebe wohl dafür nur die wiederstands-metode
geht nicht mal mit kascade weil alle tasten eine gemeinsamme leitung nr
13 haben .....  rrrrrrr   :-((
Gast #302394
Lesenswert?

Das C-Control 1 fragt seine Tastatur mit Widerständen am ADC ab.
Für das CControl findest Du auch Programmbeispiele.
Dort kannst Du nachschauen, es gibt sicher einige Leute die Erfahrung
damit haben.

Feadi
Gast #302395
Lesenswert?

Hallo

Ich habe meine Idee noch etwas abgeändert:

Die Widerstände (alle gleicher Wert) würden in Reihe geschaltet (R0 -
R12). An R0 kommt GND. Zwischen R0/R1 kommt der ADC.  Zwischen R1/R2
bis zwischen R11/R12 kommen die Datenleitungen der Tastatur. An die
Masseleitung der Tastatur wird nun Vref angehängt. Je nachdem, welche
Taste gedrückt wird, wird Vref nun an eine unterschiedliche Position in
der Widerstandskette durchgeschaltet. Die Spannung über R0 ist also
unterschiedlich gross.

Wenn 2 Tasten gedrückt werden, gibts zwar tatsächlich Probleme. Die
Tastatur lässt dies aber kaum zu (relativ hoher Druck notwendig). Zudem
kann ich damit leben, wenn dadurch ab und an mal ein Fehler entsteht.

Gruss

Michael
Gast #302397
Lesenswert?

Mal zurück zur ADC-Lösung: Teil doch einfach deine Tastatur auf zwei
Kanäle auf! Beim Asuro (Roboterbausatz) werden mit deiner Methode 6
Tasten abgefragt, und das scheint offenbar zu funktionieren (auch mit
ungeregelter Batterieversorgung und interner Referenzspannung!).
Zusätzlich ist die Leitung an einen externen Interrupt gehängt, um
einen Tastendruck zu erkennen. Ich hab mal den Schaltplan mit den
Widerstandwerten angehängt. Deine gemeinsame Leitung für alle Tasten
würde dann die Masseleitung werden. Vielleicht wäre es auch noch
vorteilhaft, die 1M-Widerstand zu verkleinern und dann den INT über
einen  Komparator laufen zu lassen...
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren