Hallo,
ich habe eine Fernbedinung, welche ihre Signale per Funk an den
Empfänger schickt. Den Empfänger möchte ich nun gerne mit über eine
Universal-Fernbedinung steuern. Diese sendet aber nur IR-Signale.
In der originalen Fernbedinung ist eine kleine Platine verbaut, welche
über einen Folienverbinder mit der Tastenmatrix verbunden ist.
Die Belegung dieser Matrix liegt vor.
An Pin 1-8 des Folienverbinders liegen jeweils 3V an. Diese werden bei
Tastendruck mit einem der Pins 9-19 verbunden.
Die Tastaturmatrix möchte ich nun gerne durch einen Atmega8L ersetzen,
dieser soll dann die IR-Signale meiner Universal-Ferbedinung
entgegennehmen (funktioniert bereits) und dann entsprechend der
Tastaturmatrix die Platine der original Fernbedinung ansteuern. Der AVR
läuft dabei mit 3V.
Mein Problem besteht jetzt darin, das ich nicht weiß, wie ich diese
Tastaturmatrix mit dem AVR emulieren kann.
Für eure Antworten bedanke ich micht bereits im vorraus.
Gruß
Dennis
Hallo,
>An Pin 1-8 des Folienverbinders liegen jeweils 3V an. Diese werden bei>Tastendruck mit einem der Pins 9-19 verbunden.
Die Infos werden Dir nicht reichen. Das ist ja sehr wahrscheinkich eine
Matrix, die der Fernbediencontroller abfragt.
Möglichkeit wäre z.B.: Pin 9-19 sind Eingänge mit PollDown.
Wenn jetzt eine Taste der Matrix gedrückt wird, erkennt der Prozessor
das H an einer der Leitungen. Da jetzt noch die Zuordnung der Taste zu
den Ausgängen unklar ist, kann er der Reihe nach Pin 1...8 auf L legen
und schauen, wann das H wieder verschwindet. Dann hat er beide
Koordinaten.
Er kann aber z.B. auch Pin 1-8 auf Eingang schalten und an alle Pin 9-19
gleichzeitig H anlegen und schauen, wo es bei 1.8 wieder rauskommt.
Oder er kann...
Was er wirklich macht, das muß Du rausfinden...
Sonst bleibt Dir wohl nur die Version, alle Tsten durch Reedrelais zu
ersetzen und vom AVR anzusteuern...
Gruß aus Berlin
Michael
Die zweite Möglichkeit kann ich schonmal ausschliessen, da es auch
möglich ist mindestens 2 verschiedene Tasten gleichzeitig zu drücken,
welche dann auch sicher erkannt werden.
Ich habe noch festgestellt, dass wenn ich an einen der Pins 11-19 VCC
anlege von der Platine etwas an den Empfänger gesendet wird. Ich kann
leider nur nicht beeinflussen welcher Tastendruck dadurch emulilert
wird. (Da ja für die Platine nicht klar ist welcher von Pin 1-8 dafür
genutzt wurde)
Testweise habe ich jetzt einfach mal Pin 1 auf einen Eingang am AVR und
Pin 9 auf einen Ausgang gelegt. Dann im main-Loop abgefragt ob der
Eingang High ist und wenn dies der Fall war, den Ausgang auch auf High
gelegt. Leider genau das gleiche Verhalten wie oben beschrieben,
irgendwas wird ans Gerät gesendet und erkannt, aber nicht es kann nicht
kontrolliert werden was.
Der AVR lief dabei auf 1Mhz, werde testweise den Takt mal etwas
hochschrauben und nochmal testen.
Außerdem werde ich ein Oszilloskop an Pin 1-8 hängen um mal genauer zu
gucken was sich da so tut.
Gruß
Dennis
Wenn das eine echte Matrix ist, dann müßte man einen echten Taster
simulieren. Und das geht am einfachsten mit CMOS-Analogschaltern, z.B.
CD4066
Die Dinger haben durchgeschaltet einen Widerstand von 50 - 150 Ohm, das
entspricht einem sehr guten neuen Gummitaster. Der Stromverbrauch dieser
CMOS-Schalter ist vernachlässigbar, irgendwo im µA-Bereich.
Versorgungsbereich: 3 - 15V
CMOS-Analogschalter möchte ich, wenn möglich, vermeiden.
Ich habe gerade mit dem Oszilloskop gemessen. Dabei kam folgendes raus:
Pin 1-8 liegen auf dauerhaft auf VCC. Legt man nun VCC an einen der Pins
9-19, ist auf dem Scope zu erkennen, das nun VCC in Impulsen an Pin 1-8
anliegt. Ich habe dummerweise gerade nur ein Eingangskabel für das Scope
zur Verfügung, aber ich vermute, dass Pin 1-8 nacheinander kurz auf VCC
liegt.
Das müsste doch mit einem AVR zu emulieren sein?
Gruß
Dennis
Ich habe nun den Atmega8L über den internen Osizlator auf 8 Mhz
gestellt.
Dann im Quellcode einen Pin als Eingang festgelegt (Pull-Up)
deaktiviert. Und einen Pin als Ausgang festgelegt. Danach wird in einer
endlos Schleife dem Ausgangspin der Wert des Eingangspins zugewiesen.
Liegen auf dem Eingangspin 3V an, kommen laut Multimeter auf dem
Ausgangspin 3V raus.
Liegt auf dem Eingangspin nichts an, liegt auf dem Ausgangspin 1,9V an.
Sollte dies nicht bedeutend weniger sein?
Danke und Gruß
Dennis
Danke für die Tips und Hinweise.
Ich muss mich nochmal selbst korrigieren. Die Matrix in der
Fernbedienung arbeit wie folgt. Pin Angaben sind auf die Platine in der
Fernbedienung bezogen, wo die Folientastatur dran ist.
- Pin 1-8 sind High (3V)
- Pin 9-19 sind Low
- Verbindet man z.B. Pin 1 und 9 lässt sich mit einem Osziloskop von GND
zu dieser Verbindung messen, das für 1.5ms auf High geschaltet ist und
für 0.075ms auf Low
- Pins 2-8 sind dabei weiterhin durchgehend auf High
Könnt ihr mir Tips geben, wie ich das mit einem Atmega8L emulieren kann?
Danke und Gruß
Dennis
Ich hab es nun hinbekommen. Mein Problem war, das och vorher immer die
Ein und Ausgänge falsch herum hatte.
Pin 1-8 hatte ich auf Eingänge gelegt, da ich dachte, das die Impulse
von dort ausgehen.
Pin 11-19 waren dementsprechend Ausgänge.
Nun habe ich Pin 1-8 auf Ausgänge gelegt, Pin 11-19 auf Eingänge.
Soll eine Taste gedrückt werden, aktiviere ich den internen Pull-Up am
entsprechenden Eingang, dadurch liegt VCC am Eingang an und die Platine
der Fernbedinung fängt an Impulse zu senden. Diese Impulse lege ich nun
auf den entsprechenden Ausgang, die Platine empfängt so nun die Impulse
und drückt die entsprechende Taste.
Nochmal vielen Dank für eure Tips und Hinweise
Gruß
Dennis