mikrocontroller.net

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


Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

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

Autor: Uwe Nagel (Gast)
Datum:

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

Autor: Thomas Burkhardt (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Uwe Nagel (Gast)
Datum:

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

Autor: Sebastian Wille (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hilft Dir der Atmel-Artikel dazu:

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

Gruß,
sebastian

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

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

Autor: Thomas (Gast)
Datum:

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


.

Autor: Stefan (Gast)
Datum:

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

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
numm spi schieberegister. kostet dich genau 4 pins und 3 bauteile

Autor: Ratber (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

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

Autor: Ratber (Gast)
Datum:

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

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.