mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unkonventionelle (?) Tastaturanbindung


Autor: mr. chip (Gast)
Datum:

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

Autor: tomafa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Vielleicht hilft dir das

http://www.atmel.com/dyn/resources/prod_documents/...

mfg

Tomafa

Autor: Andreas Dörr (ADoerr) (Gast)
Datum:

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

Autor: Andreas Dörr (ADoerr) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eh, das muß "2^12 Zustände" heißen.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du in der Matrix zu jedem Taster eine Diode zur Entkopplung
spendierst, kannst Du sogar eindeutig erkennen, wenn beliebig viele
Tasten gedrückt sind.

Autor: DAU-xxl (Gast)
Datum:

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

Autor: Feadi (Gast)
Datum:

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

Autor: mr. chip (Gast)
Datum:

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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit zwei "Prioritätsencodern" 74xx147 oder 148 müßte eine
Tastenabfrage zu lösen sein, 2*74xx148 + (3/4)*74xx00 gibt einen
Encoder mit 16 Eingängen und 4 Bit Ausgang. Die höchstwertige Taste
gewinnt, wenn mehrere gedrückt sind.

Autor: Uwe Große-Wortmann (Gast)
Datum:
Angehängte Dateien:

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

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.