Forum: Mikrocontroller und Digitale Elektronik Matrix-Tastatur. Geht das so?


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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)

von Uwe Nagel (Gast)


Lesenswert?

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.

von Thomas Burkhardt (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

@ Uwe
Das geht net weil die Tastatur fest verdrahtet ist und ich nur 7 Pins
(4Reihen; 3Spalten) nach aussen geführt hab.

MFG
Thomas

von Uwe Nagel (Gast)


Lesenswert?

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.

von Sebastian Wille (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

Vielleicht hilft Dir der Atmel-Artikel dazu:

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

Gruß,
sebastian

von Ratber (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

@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!


.

von Stefan (Gast)


Lesenswert?

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.

von Tobi (Gast)


Lesenswert?

numm spi schieberegister. kostet dich genau 4 pins und 3 bauteile

von Ratber (Gast)


Lesenswert?

@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  ;);)

von Stefan (Gast)


Lesenswert?

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.

von Ratber (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.