Habe mir gerade Gedanken gemacht, wie ich eine 4x3 Matrix-Tastatur an meinen AtMega8 anschließen kann.Hatte dabei, die im Anhang befindliche Idee, mit jeder verschiedenen Taste eine andere Spannung zu erzeugen, die dann über einen Addierer auf den A/D-Wandler zu "jagen". Die Frage ist jetzt ob das überhaupt prinzipiell möglich ist, oder ob ich die Idee verwerfen sollte? Was haltet ihr davon? (Die Widerstands- und Spannungswerte hab ich einfach ohne Überlegung frei gewählt.Also keine Bedeutung)
Wenn Du dafür sorgst, dass jede Taste wirklich eine andere Spannung erzeugt sollte das gehen! Alternativvorschlag : 16 gleiche Widerstände in Reihe zwischen +5V und Masse. An jeder Anzapfung eine Taste zum A/D-Wandler.
Hi, wenn du mehrere Tasten gleichzeitig erkennen willst, solltest du die Spannungsstufen so wählen, dass jeder Schalter einer Potenz von zwei erzeugt. Wichtig ist sicherlich auch, weit genug von der Auflösungsgrenze des Wandlers wegzukommen, um Fehlerkennungen auszuschliessen. Viele Grüße
@ Uwe Das geht net weil die Tastatur fest verdrahtet ist und ich nur 7 Pins (4Reihen; 3Spalten) nach aussen geführt hab. MFG Thomas
Die OP-Beschaltung ist auch nicht korrekt, fällt mir gerade auf. Pin 2 und 3 vertauschen würde schon helfen, aber eine negative Ausgangsspannung erzeugen. Deshalb Pin 3 dann auf einen Spannungsteiler und nicht auf GND.
Hi Thomas, wenn ich es recht verstehe, kannst Du auch nicht abfragen, ob 2 oder mehr Taster gleichzeitig gedrückt werden. Und 2x 1kOhm gibt auch 2kOhm... Wie unterscheidet das der AVR? Sebastian
Also ich würde zum Auslesen Schieberegister verwenden. Damit kann man auch mehrere Tasten gleichzeitig drücken und man braucht den ADC nicht. Du kannst dir die Schieberegister natürlich auch sparen und die 7 Anschlüsse direkt an den uC anschliessen. Belegt dann halt 7 IO Ports. Wofür die völlig unnötige Umwandlung in eine analoge Spannung? Auslesen geht so: Du legst High auf eine der 4 Zeilen. Die anderen 3 auf Low. Dann Liest du die 3 Spalten aus um zu sehen welche High sind. Damit hast du schon mal sämtliche Tasten der 1. Zeile ausgelesen. Das wiederholst du mit den anderen drei Zeilen.
Vielleicht hilft Dir der Atmel-Artikel dazu: http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf Gruß, sebastian
Wie wärs denn mit der Schaltung im Anhang und folgenden Werten ? R1 = 1,8K R2 = 560 R3 = 12K R4 = 1,8K R5 = 2,7K R6 = 1K R7 = 6,8K R8 = 4,7K R9 = 2,7K Die Benutze ich immer wenn ich knapp an Ports bin und nen nen AD-Eingang übrig habe uuuuuund die Zuleitung nicht kritisch ist (Einstreuung usw. aber da kann man ja auch noch was tricksen) Mit dieser Einteilung der Werte geht einiges.
@Sebastian Wenn man 2 Taster drückt addiert der OP die 2 Spannungen. Also müsste es funktionieren. Die Widerstände muss man natürlich so wählen das es keine Überschneidungen gibt! @Stefan Ich will keine 7 pins für ne "doofe" Tastatur verschwenden. Und mal ausprobieren ob es auch anders geht! .
Du hast aber 12 Tasten. Damit hast du 2^12 mögliche Kombinationen. Aber nur einen 10bit Wandler, der nur 2^10 verschiedene Zustände unterscheiden kann. Da kannst du wohl doch nicht mehrere Tasten gleichzeitig drücken. Also ich bin immer noch für die Schieberegister.
@Stefan <Du hast aber 12 Tasten. Damit hast du 2^12 mögliche Kombinationen. <Aber <nur einen 10bit Wandler, der nur 2^10 verschiedene Zustände <unterscheiden kann. <Da kannst du wohl doch nicht mehrere Tasten gleichzeitig drücken. 2^12 2^10 Is alles richtig was du sagst aber ich frage mich wieviele Finger du hast ? Ich habe nur 10 und ich habe maximal 4 gleichzeitig auf der Tastatur hängen ;);)
Gut. Bei 4 Tasten gleichzeitig sind es nur noch 12*11*10*9/(4*3*2) = 495 mögliche Kombinationen. Jetzt musst du nur noch die passenden Widerstandswerte finden.
@Stefan Damit das nicht falsch verstanden wird. Ich wollte nur dazu anregen das Ganze nicht so absolut zu sehen. Ich glaube das die Variante da oben auch für die meisten fälle ausreichend sein sollte. In meinem Falle nutze ich die angegebene Kombination schon ne ganze weile und mit den angegebenen Widerstandswerten sind 2 gleichzeitig gedrückte Tasten mit ausreichender sicherheit identifizierbar was auch Spezielle Tastenkombinationen ermöglicht. Eine andere Variante ,die mit wenigen Ports auskommt ist die Version einer normalen Matrix über I2C die auch in einer Appnote verbaut ist. Allerdings kostet es dann auch einwenig mehr aber man kann dann auch gleich mehrere Tastenfelder kombinieren. Der vollständigkeit halber ist auch die Variante mit Scheiberegister gut brauchbar. Muß halt jeder selber wissen was er nehmen will. Sollte also alles nur mal zum nachdenken anregen.
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.