Forum: Mikrocontroller und Digitale Elektronik Lernfähige Fernbedienung - wie wird vom Prinzip her gemacht?


von Norbert S. (norberts)


Angehängte Dateien:

Lesenswert?

Hi,

es geht um diese lernfähigen Fernbedienungen die man programmiert, indem 
man die Originalfernbedienung gegenüberlegt und die entsprechenden 
Tasten drückt.
Das Ding hat ja keine Ahnung welches Protokoll das ist, wie wird das 
gemacht oder wie würdet Ihr das machen?
Da gibt es ja x verschiedene Codierungen mit Startbit oder -byte, 
Wiederholung, Manchester oder PWM (das Bit betreffend), kompliziert und 
variiert wie man nur denken kann.
Wie erkennt bzw speichert man das?
Stumpf sehr fein abtasten und das Muster mit einer gewissen Toleranz 
vergleichen kanns ja wohl nicht sein.
Das Protokoll am abgetasteten Muster erkennen und dann Adresse, Befehl 
usw. einlesen?
Ich müsste eigentlich nur zwei Tasten speichern, also z.B. "+" und "-" 
oder irgendwas aber ich sehe nicht, wie das das Problem vereinfacht, 
wenn es mit allen möglichen Fernbedienungen laufen soll.
Ok, ich könnte das Muster stupf im EEprom speichern (zur Not 512 Byte 
also 4kbit breit mit dem längsten Signal das ich finden kann) aber das - 
wie gesagt - kann es ja nicht sein. Wie soll man das auswerten, Flanke 
zu Flanke mit einer gewissen Toleranz? Banal ist das sicher auch nicht.
Wie soll ich mehrere Signale von einem langen unterscheiden, die 
Wiederholungen? Mensch kann das am Oszi auswerten und zuordnen aber wie 
giesst man das mit vertretbarem Aufwand in Code?

Wie wird sowas "richtig" gemacht?

Am ehesten sehe ich noch:
Am Muster des Starts und erster Bits das Protokoll erkennen und dann 
erst im zweiten Anlauf Adresse und Befehle einlesen.

Gruß,
Norbert

von Dominik S. (dasd)


Lesenswert?


von holger (Gast)


Lesenswert?

>Wie wird sowas "richtig" gemacht?

Signal schnell genug abtasten. Längere Pausen
vorne und hinten abschneiden. Muster speichern.

von Norbert S. (norberts)


Lesenswert?

Hi,

Edit: @ Dominik:

oh mann, wie blöd kann man sein...

Da hab ich erstmal was zu lesen.
Daraus kann ich mir ne veinfachte Variante für meine Anforderungen 
bauen.

Allerdings hatte ich eine so umfassende Sammlung der Codierungen bisher 
nicht gefunden und ich befasse mich schon länger mit der Thematik.

Und dann steht das ausgerechnet hier...

DANKE!

Gruß,
Norbert

von Norbert S. (norberts)


Lesenswert?

Hi,

hoppla, das ist ja ekelig viel.
Das tue ich mir nicht an und abkupfern kann (ist C) und will ich nicht.
Die Info über die ganzen Protokolle ist aber sehr wertvoll.

Eher Quick'n'dirty, was meint Ihr, ob das so geht:

Aufzeichnen bzw. einlesen:
Alle Pulse unter 50µs werden erstmal ignoriert.
Ich zähle mit einem Timer ein Word alle 2µs hoch.
Das Muster kommt in ein Word-Array(100), das reicht für 50 Zeichen inkl. 
Start usw. und passt noch in das Eeprom eines ATMega8.
Also erster Puls -> Zeit in 2µs 1. Word
Erste Pause 2. Word
Zweiter Puls 3. Word usw...

Bei > 20ms wird die Erkennung beendet und der Rest vom Array wird mit 
&hFFFF aufgefüllt.

Beim Lernen kommt das Array dann ins Eeprom, im normalen Betrieb wird 
das eingelesene Array mit denen im Eeprom verglichen, Element für 
Element mit einer Toleranz von +-20% oder so.

Ich denke das sollte für so ziemlich alle Protokolle hinhauen und lässt 
sich recht übersichtlich und einfach programmieren.

Nur wie ich 36, 38 und 40kHz abdecken soll ohne die drei Decoder in 
Hardware einzusetzen ist mir schleierhaft.

Gruß,
Norbert

von Herr M. (herrmueller)


Lesenswert?

Norbert S. schrieb:
>
> Nur wie ich 36, 38 und 40kHz abdecken soll ohne die drei Decoder in
> Hardware einzusetzen ist mir schleierhaft.
>
> Gruß,
> Norbert

Wenn Du nur 38kHz nimmst, reichts auch. Es geht halt auf Kosten der 
Reichweite.

von Norbert S. (norberts)


Lesenswert?

Herr Mueller schrieb:


> Wenn Du nur 38kHz nimmst, reichts auch. Es geht halt auf Kosten der
> Reichweite.

Weiß ich und für Tests des ersten Teils reicht das sicherlich. Wobei das 
aber schon dramatisch ist. Viel mehr als 2-3m sind dann ja nicht drin.
Später brauche ich aber schon die bestmögliche Reichweite.

Gruß,
Norbert

von Herr M. (herrmueller)


Lesenswert?

Ich hatte mal eine Beschreiburg des Universalfernbedienung-Prinzips 
gelesen. Wenn ich mich noch recht erinnere, haben die nur einen 
Fototransistor als Eingang und erkennen jede Schwingung. Abgespeichert 
wird dann 1 mal die Periodendauer und für eine Taste die Anzahl der 
Schwingungen für jeden Impuls. Das braucht natuerlich jede Menge 
Speicher.

von Norbert S. (norberts)


Lesenswert?

Hi,

ich habe nicht nur eine Beschreibung gelesen sondern mich damit schon 
reichlich beschäftigt. Die Perfomance der TSOP173X und Konsorten braucht 
man gar nicht erst zu versuchen nachzubauen.
Ich habe es probiert.
Das würde ein OPAmp-Grab werden, mehrere Filterstufen usw.

Sorry, das war jetzt nicht hilfreich.

Gruß,
Norbert

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Norbert S. schrieb:
> Das Ding hat ja keine Ahnung welches Protokoll das ist, wie wird das
> gemacht oder wie würdet Ihr das machen?

Ich hatte kürzlich mal einen Artikel über eine "DIY Lernfähige 
Fernbedienung" geschrieben:

  http://www.mikrocontroller.net/articles/DIY_Lernf%C3%A4hige_Fernbedienung_mit_IRMP

Die Software benutzt IRMP, um zu lernen, und IRSND, um die erlernten 
Codes wieder zu senden. Es sind zwar "nur" 5 Tasten (auf 3 Ebenen, also 
insg. 15 Tasten), aber die FB ist makrofähig, d.h. sie kann mit einer 
Taste auch mehrere Kommandos (mit programmierbaren Pausen) lernen und 
senden.

Ich glaube, damit wird das Prinzip klar, wie solche Universal-FBs 
funktionieren.

Gruß,

Frank

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.