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
Hallo, Vielleicht hilft dir das http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf mfg Tomafa
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
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.
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 :-((
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
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
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.