PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastatur verkabeln / auslesen



Andun
21.05.2007, 17:19
Hi

Ich hab mal was neues/altes ausprobiert. Ich hab im Keller ein alten V-Tech Lerncomputer ausgebuddelt, dem ich eine neue Funktion als UART Terminal oder sonst was verpassen will.

Das Problem ist die Ansteuerung und das auslesen der Tastatur.
Ich hab eine 10x10 Matrix. Also ich muss an 10 Leitungen nacheinander ne Spannung anlegen und dann schauen ob wo was rauskommt. Um Pins am Atmel zu sparen möchte ich Portexpander verwenden.

Hab mir das auch schon im Wiki durchgelesen, aber ich bin auf die Idee gekommen, dass das ganze vielleicht auch besser als mit nem Schieberegister gehen könnte, da ich nacheinander bei jedem Takt genau einen Pin weiter auf 1 schalten möchte. Gibts da nichts einfacheres als ein Schieberegister, dem ich immer sieben 0 und eine 1 schicke?

Ich werd euch dann später sicherlich auch hier mal mit dem Auslesealgorithmus nerven, aber das kommt später.

Vielen Dank

Andun

user529
21.05.2007, 17:59
du könntest den ic aus einer alten PS2 tastertur verwenden, der kann eine 12*10 matrix ab, entprellt und speichert bis zu 8zeichen bis zu einer abfrage.

wenn du willst stell ich den schaltplan der tastertur rein.

mfg clemens

BastelWastel
21.05.2007, 18:06
Mach mal, würd mich auch interessieren...hab noch keine zerlegt ^^

Andun
21.05.2007, 18:45
Hi

Ja, der Schaltplan würde mich tatsächlich auch interessieren. Geht das auch mit den alten Tastaturen die noch über einen Adapter dann auch an PS2 angeglichen wurden? (Haben die also den selben Chip?)

Wäre toll, wenn du da was zu hast, werd mich aber auch selbst mal umschauen.

Andun

user529
22.05.2007, 16:50
hier sit die leiterbahn der tastertur(klicken):
http://img524.imageshack.us/img524/8452/leitercb2.jpg (http://img462.imageshack.us/img462/3372/leiterkh7.jpg)

es ist bei dieser (von der anderen habe ich keine photos) leider nur ein 8x15er matrix.

an den pins 1-8 (von rechts)
1) F6 F5 F4 Esc alt G Ä hoch einfügen entf
2)F7 Ü +*~ 4 5 6 F3 Tab runter rauf T Z links
3)F8 F9 ? `´ Entf F1 F2 °^ Strg 2x 5 6 einf pos1 bild hoch
4)druck F12 F11 F10 4 3 2 1 7 8 9 0 bild runter ende
5)rollen Pos1 8 9 P O + J U Q W E R
6)ende 2 3 enter Ö L K J A S D F
7)/ Num Pause Y X C V B M ; : groß STRG LF #
8)- links runter rechts (taste unter -) altgr NB space

liegen diese tasten (reihenfolge noch nicht)

mfg clemens

Andun
22.05.2007, 18:49
Hi

Vielen Dank erstmal dafür. Ich hab mich jetzt auch soweit mal mit dem Thema beschäftigt und mich erkundigt.

Der alte V-Tech macht das ganze wohl auch direkt im Chip. Der holt sich alle Leitungen von der Tastatur direkt in den Chip. 10 davon schickt er aber durch nen Bustreiber.

Naja, da ich ja aber vermeiden möchte die 20 Kanäle im AVR zu haben, such ich einen Keyboard Controller, bzw. Decoder. Ich hab auch schon ein DataSheet zum KR9600 gefunden( http://www.datasheetcatalog.net/datasheets_pdf/K/R/9/6/KR9602.shtml ) aber leider kann ich diesen exotischen (und vielleicht älteren Chip) nicht in den bekannten Shops finden.

Führen die keine Tastatur encoder Chips oder bin ich bloß zu doof zum suchen?

Vielen Dank

BastelWastel
22.05.2007, 19:09
Hm.. ne5 Euro Tastatur von Aldi ausschlachten?
Aber so wie ich die kenne wir der dann direkt auf ner Folie und vergossen sein :?

user529
22.05.2007, 19:11
flohmart is die bessere alternative (0,5-1€)

sicher dass das eine 10x10er ist und nicht eine 8*12?
welchen vtech hast du (finde da massenweiße)?

diese ics können eine 8*12er verwalten:
http://www.datasheetcatalog.com/datasheets_pdf/E/M/8/3/EM83049.shtml

Andun
22.05.2007, 19:11
Ja, hab ich mir auch schon mit gleichem Ergebnis überlegt.

Notfalls schlachte ich ne super alte Tastatur hier und kauf mir ne Neue, aber das ist auch nciht so die super Idee, da meine Tastaturen nicht soo alt sind, dass die Chips sinnvollerweise da nur gesockelt drauf wären.

Andun

Andun
22.05.2007, 19:20
So, sry, hab zuerst nur den ersten Post gesehen und drauf geantwortet. Deswegen jetzt der Doppelpost:

Also ich hab ehrlcih gesagt ncoh keinen Plan obs wirklich 10x10 ist. Ist nur am schnellsten drauf zu kommen, da cih hier zu 10polige Kabel habe. Die Matrix ist leider von der Tastatur auf eine Programmauswahl erweitert, die unter einer Folie liegt, die ich noch nicht abgerissen habe. Also konnte ich die Matrix nicht ganz nach vollziehen bisher.

Aber Pin Technisch müsste 8*12 wohl auch gehen. (8+12=20 :D)

Ich werd das morgen mal aufreißen und rein schauen. Muss ja eh rauskriegen was die Spalten und was die Zeilen sind. (Obwohl das bei dieser Variante ohne Dioden wohl eh egal wäre...)

Morgen werd ich mir dann auch mal ne Kamera schnappen udn das ganze knipsen.


Danke erstmal

Andun

Andun
27.05.2007, 14:46
Hi

So, ich hab mich mal weiter beschäftigt. :D Mein Layout ist eine 8x10 Matrix für die Tasten. Ich hab mal ne Tabelle gemacht. Ist im Bild zusehen.

http://www.subms.de/files/vTech/zuordnung.jpg

Das ganze sieht insgesamt so aus:

http://www.subms.de/files/vTech/gesamt01.jpg

Jetzt habe ich also nur noch das Problem, dass ich den oben genannten Chip EM83049 nicht in den bekannten deutschen Shops gefunden hab ...

Kennt noch jmd nen guten Shop außer Re und Co? Bei Farnell hab ich auch nur kleine 3x5 Controller gefunden ... Falls ich keinen Chip finde, dann werde ich das ganze umständlich mit nem AVR lösen.

Mal schauen. Falls ncoh jmd Ideen hat, immer her damit.

Danke

Andun

Andun
31.05.2007, 21:40
Hi

Das sich wohl kein Chip auftreiben lässt, werde ich das ganze jetzt in Handarbeit lösen ...

Da ich bei einer Bestellung beim großen C für die Schule noch 4 Cent (!) brauchte, um über die Gutschein-Mindestbestell-Grenze von 25€ zu kommen, hab ich noch schnell einen Mega48 rein geworfen. Hab damit dann wegen dem 7,50€ Gutschein der sonst verfällt 2€ gespart. :D

Aber, B2T: Der Mega48 erscheint mir eigentlich recht sinnvoll, als Tastaturausleser zu dienen. Damit die Pins aber auch ausreichen, brauch ich wohl nen Portexpander.

Den Artikel im Wiki über die SPI-Port Expander (https://www.roboternetz.de/wissen/index.php/Portexpander_am_AVR) habe ich gelesen und das wäre wohl möglich. Grade bin ich aber auch ncoh auf den I2C Expander PCF8574 gestoßen. (Ein Link beim SPI Exp. wäre sinnvoll ...)

Der Vorteil der I2C Variante ist ja, dass ich damit auch die Eingänge auslesen kann, wobei ich ja nur reagieren brauche, wenn der Interrupt anzeigt, dass sich was getan hat, an den Eingängen.
Falls der Interrupt keine Änderung anzeigt, würde ich mit dem 1. Chip das nächste Bit einschalten und in der Tastenmatrix also die 2. Spalte prüfen in dem ich wieder aufs Interrupt schaue.

Was meint ihr? Ist das so sinnvoll? Ich kann der Interrupt doch auch einfach als Input nehmen, weil mir das gar nicht so sehr sinnvoll erscheint, den wirklich als Interruppt zu programmieren, wenn ich die Matrix auslese.

Ist das overkill, oder dauert das vielleicht zu lange beim auslesen, so dass ich nur alle 2 Sekunden auf ne Taste reagieren würde? (Anders gefragt: Braucht das I2C Protokoll im Vergleich zum SPI Protokoll durch die Adresse vorne dran, viel zu lange?)

Um meine Frage mal halb selbst zu beantworten: Da ich ja nur 8 versch. Eingänge setzen muss nacheinander, sollte das schon mehrmals in der Sekunde möglich sein, auch über I2C, nech? :D

Vielen Dank, dass ihr meinen Kram gelesen habt :D

Andun

plaicy
04.06.2007, 01:05
Ja, der Schaltplan würde mich tatsächlich auch interessieren. Geht das auch mit den alten Tastaturen die noch über einen Adapter dann auch an PS2 angeglichen wurden? (Haben die also den selben Chip?)

Es unterscheidet sich nur der Stecker. Siehe http://de.wikipedia.org/wiki/PS/2-Schnittstelle#Anschluss

Statt zwei PORT-Expander von Philipps würde ich einfach einen Mega8 verwenden. Wenn man den Reset-Eingang und zwei Pins für I2C wegnimmt, bleiben genau 20 übrig. Das sollte dachte ich reichen. Dann kannst du dir noch überlegen, ob du nicht die ganze Tastaturlogic in den Mega8 bringst und dein anderer muC direkt Scan-Codes bekommt.

Oder bekommst du die zwei Philipps-Port-Expander günstiger als die 1,85 EUR (Reichelt)?

Andun
04.06.2007, 09:37
Moin

Also ... mh ... ja, deine Überlegung ist auch richtig ... mir war irgendwie nicht so wohl bei dem Gedanken, alles voll zu kloppen mit Eingängen...

Werd ich aber auch nochmal in Betracht ziehen.

Hier hab ich es schonmal mit den Expandern versucht. Sieht schön komplizert aus: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=31289

Danke

Andun

plaicy
04.06.2007, 11:45
Also du kannst ja schon die Hauptanwendung auf dem MEGA48 oder was du dir auch immer vorgestellt hast bauen. Ich denke nur, dass ein MEGA8 zusätzlich günstiger ist, als zwei Philipps IO-Expander zusätzlich. Der MEGA8 kannst du dann natürlich auch mit I2C ansteuern.

Andun
05.06.2007, 21:25
Hi

Ja, ich stimmt dir zu. Ich hatte eh vor für die eigentliche Hauptanwendung einen größeren Controller bzw. einen 2. zu beanspruchen. Dieser bekommt dann nämlich auch ein Display aufgedrückt.

Ich werde mich aber wohl für die beiden Portexpander entscheiden, weil ich dann noch Leitungen frei habe um auch 2 Schieber aus zu lesen. (Diese haben 2, bzw. 3 mögliche Stellungen) Das sind leider dann so viele Leitungen, dass ich ohne Expander nicht mehr auskomme.

Was mir noch einfällt ist die Problematik, wenn ich über I2C sowohl mit dem Hauptchip reden will und auch mit den Chips: Kann ich den Haupt-IC als Slave ansprechen oder störe ich dabei ständig bei irgendwelchen Routinen? Oder ist es genauso einfach einen FIFO Buffer an I2C zu realisieren, wie über einen Interupt an einem UART Anschluss. (Ein solcher Buffer scheint mir sinnvoll :D)

Abgesehen von dieser Frage, habe ich noch eine zum Transistor, mit welchem ich die Schaltung betreiben will:
Ich habe einen Taster, der schon so nett mit EIN beschriftet ist. Ich dachte mir, dass ich diesen an 5V anschließe und das andere Ende an die Basis von nem Tranistor, der dann erst die 5V an den Rest der Schaltung weiterreicht. Ein Port des Controllers soll dann die Schaltung am Leben erhalten.

Drei Fragen:
1. Ein BC 140-10 (bei Reichelt gefunden) sollte genügen, oder? Bis 1A sollte bei mir ja nicht das Problem sein.
2. Da steht für typische Basis-Emitter Spannung 1,2V. Einfach über nen Widerstand die 5V runterbrechen oder gibts noch besser Transitoren in meiner Reichweite bei 5V. (Kenn mich mit den Transistoren nciht so aus, und verlier da in der Produktauswahl voll die Übersicht, weil ich keine Ahnung hab, worin sich die Transitore unterscheiden, durch die unterschiedlichen Anfangsbuchstaben, außerdem Gehäuse...)
3. Wenn der Taster gedrückt wird, kommt es ja vermutlich zum Prellen. Das ist ja, vermutlich nicht so günstig für die Schaltung, da der Controller ja auch nen Moment braucht, bis er den Port schaltet. Habt ihr ne Idee? Nen Kondensator zum ausgleich davor oder ähnliches? (Das Problem besteht beim Programmieren natürlich auch, aber da werd ich vermutlich einen nen Schalter für Dauerstromversorgung ein bauen)

So, vielen Dank für eure Mühe

Andun

plaicy
05.06.2007, 22:34
Ich werde mich aber wohl für die beiden Portexpander entscheiden, weil ich dann noch Leitungen frei habe um auch 2 Schieber aus zu lesen. (Diese haben 2, bzw. 3 mögliche Stellungen) Das sind leider dann so viele Leitungen, dass ich ohne Expander nicht mehr auskomme.

Das verstehe ich nicht, wenn du einen MEGA48 (oder MEGA8) verwendest, zähle ich abzüglich der Leitungen für die Kommunikation 20+2*8=36 Pins.

Wenn du zwei Kontroller verwendest (z.B. einen als Master und einen als Slave) zähle ich 2*20 = 40 Pins.

Aber mit dem Expandern sparst du dir es natürlich einen zweiten Controller zu programmieren.

Andun
06.06.2007, 13:25
Hi

Ok :D Hab mich wohl misslich ausgedrückt:

Ich möchte den Hauptcontroller wirlich nur für das Display und vll ne IR Schnittstelle und ne UART Schnittstelle nutzen. Der soll alle Tastatur oder Schieberegler auswertungen schon fertig aufbereitet bekommen.

Deswegen will ich alle Tasten in einen Controller stecken. Scheint mir jetzt für den Anfang erstmal einfacher.

Aber danke für deine Ideen.

Falls noch jemand ne Idee zu den 3 Fragen, aus meinem vorigen Post hat, wäre das auch toll!

Andun