Forum: Mikrocontroller und Digitale Elektronik Matrix PIN pad mit zweitem Controller steuern


von Sebastian G. (huehnerhose)


Lesenswert?

Hallo,

ich habe ein fertiges gekauftes Gerät, welches ein PIN-Pad (4x4 Matrix) 
hat und ich möchte mit "meinem" Gerät tasten bei diesem Gerät "drücken".

Nach einigen Irrwegen habe ich verstanden, dass solche Pin-Pads 
mehrschrittig (Interrupt auf Spalte, dann Scan über Zeilen) gelesen 
werden. Das kann ich auch schön im Oszi nachvollziehen.

Jetzt dachte ich, ich muss einfach die "Sequenz" der Ereignisse 
imitieren. Sprich: Spalte auf LOW ziehen, dann den Scanmode erkennen 
(Spalte wieder HIGH) und "im richtigen Moment" (wenn Zeile LOW ist), die 
Spalte auf LOW ziehen.

Im Oszi sehe ich, dass eine Zeile für ca. 80µs im LOW-State ist und ca. 
3mal so lange im HIGH State. Das fühlt sich also alles richtig an / so 
an als würden meine Annahmen erstmal stimmen.

Ich versuche das ganze mit einem ESP8266 zu steuern. Und renne hier 
gerade in das Problem, das ein (Adruino) loop Up/down "zu langsam" ist. 
Sprich die erwartete Frequenz um Größenordnungen verfehlt wird. Aber das 
ist nur der aktuelle Stolperstein in einer langen Kette.

Meine konkrete Frage: Ist es überhaupt realistisch  sinnvoll  in euren 
Augen machbar so einen Tastendruck zu "imitieren"? Oder bin ich hier auf 
den letzten Metern eines langen Holzweges?

Danke!

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian G. schrieb:
> Nach einigen Irrwegen habe ich verstanden, dass solche Pin-Pads
> mehrschrittig (Interrupt auf Spalte, dann Scan über Zeilen) gelesen
> werden. Das kann ich auch schön im Oszi nachvollziehen.
Da wird eine "handelsübliche" Matrixabfrage gemacht. Ein Interrupt kommt 
wird dafür darin normalerweise nicht benötigt. Allerdings kann die 
Umschaltung der Zeilen/Spalten und die Auswertung auch in einem 
Timerinterrupt passieren.

> Jetzt dachte ich, ich muss einfach die "Sequenz" der Ereignisse
> imitieren. Sprich: Spalte auf LOW ziehen, dann den Scanmode erkennen
> (Spalte wieder HIGH) und "im richtigen Moment" (wenn Zeile LOW ist), die
> Spalte auf LOW ziehen.
Wenn du die Matrix simulieren willst, dann musst da nichts immitieren, 
sondern blitzschnell reagieren. Denn das Timing bestimmt ja der 
Controller im Pinpad, der da einfach die einen Signale umschaltet und 
die Reaktionen auswertet.

> Meine konkrete Frage: Ist es überhaupt realistisch  sinnvoll  in euren
> Augen machbar so einen Tastendruck zu "imitieren"?
Das geht nur, wenn du das recht knappe Timing schnell genug nachbauen 
und entsprechend schnell regieren kannst.

> ich habe ein fertiges gekauftes Gerät, welches ein PIN-Pad (4x4 Matrix)
> hat und ich möchte mit "meinem" Gerät tasten bei diesem Gerät "drücken".
Was spricht gegen Relais über den bzw. statt der Tasten?

von H.Joachim S. (crazyhorse)


Lesenswert?

Lothar M. schrieb:
> Was spricht gegen Relais über den bzw. statt der Tasten?

Oder Optokoppler. Klein und billig.

von Peter D. (peda)


Lesenswert?

Nimm 2 Stück 74HC4051.

von HildeK (Gast)


Lesenswert?

Oder Analogschalter.

Ich hab das vor Jahrzehnten (198x) mal mit einem EEPROM gemacht, für 
eine elektrische Schreibmaschine.
Ein Teil der Adressen waren die Scanleitungen, der zweite Teil das zu 
druckende Zeichen und der Ausgang hat dann die Leseleitung bedient.

von Sebastian G. (huehnerhose)


Lesenswert?

Vielen Dank für die Antworten.

1. Warum keine Relais?
Geschmackssache :) Um ehrlich zu sein, hätte das alles vor Wochen fertig 
sein können, wenn ich das mit Relais realisiert hätte. Es fühlt sich nur 
irgendwie unelegant an.

2. Blitzschnell reagieren
Das ist der Punkt den ich immer mehr realisiere, wie schnell das sein 
muss. Sagen wir aber mal, dass ich das hinbekomme - im zweifel mit ASM 
oder noch größeren Kanonen (dickerer Controller, FPGA what not). Stimmt 
rein die Logik, dass man, wenn man im "ScanMode" ist, "nur" die FALLING 
Flanke erkennen und so lange die Spalte LOW hält, bis wieder die RISING 
Flanke da ist?

3. Analogschalter (74HC4051)
Das ist nen Weg der sich nicht ganz nach Niederlage anfühlt... irgendwie 
ist das zwar fast SSR, aber das kann ich mir schön reden.

4. "ich habe das in den 1980er"...
Kudos... im Ernst: Ohne die ganzen Internetquellen ist das für mich 
schwer vorstellbar. Ich erinnere mich an die Wochen, die ich zugebracht 
habe das Atmega8 Datenblatt zu lesen :)

von da1l6 (Gast)


Lesenswert?

Hallo,

Wenn die fallende Flanke zum lesen einer Zeile erkennst ist es bereits 
zu spät. Triggere statt dessen auf die steigende Flanke der vorherigen 
Zeile um die nächste "vorzubereiten".
Je nachdem wie viel Zeit dazwischen liegt, hast du VIELLEICHT eine 
Chance.

Zeichne mal Timing Diagramme mit nem Osszi auf.


2x 74HC4051 erscheint aber immer noch am einfachsten.

Grüße,
da1l6

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian G. schrieb:
> Stimmt rein die Logik, dass man, wenn man im "ScanMode" ist, "nur" die
> FALLING Flanke erkennen und so lange die Spalte LOW hält, bis wieder die
> RISING Flanke da ist?
Ja, so macht das eine gedrückte Taste auch. Nur eben mit 0µs 
Verzögerung....

Sebastian G. schrieb:
> Im Oszi sehe ich, dass eine Zeile für ca. 80µs im LOW-State ist und ca.
> 3mal so lange im HIGH State.
D.h. also, dass irgendwann vor Ablauf der 80µs der Wert (ggfs. auch 
mehrfach) eingelesen wird. Ich würde sagen, du hast da realsistisch 
20-30µs Zeit zum Anlegen der "Antwort" an die Returnleitungen. Schaffst 
du das mit dem Rechenboliden?

Praktisch würde ich diese "Antwort" aber schon vorher (wie gesagt: nach 
der vorherigen steigenden Flanke) anlegen. Das geht aber natürlich nur, 
wenn die selbe Matrix (bzw. deren Returnleitungen) nicht auch für 
Ausgaben verwendet wird. Oder eben ein Tristate-Gatter 
dazwischenschalten, das dann mit den (verUNDeten) low-aktiven 
Scanleitungen auf Durchlass geschaltet wird. So hast du dann 300µs mehr 
Zeit und das Ganze entspannt sich gewaltig.

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.