Hallo Zusammen!
Manchester mal wieder, hoffe ich. Ich hab hier einen Raspberry PI der
mit einem 433MHz Empfänger über GPIO verbunden ist. Der Empfang rennt.
Soweit so gut - was ich nicht verstehe ist das Signal. (Das Signal wird
von einer Handelsüblichen Funk-Fernbedienung für Steckdosen erzeugt)
Das Signal lese ich mit einem selbst geschrieben C-Programm aus, da der
ganze Quatsch im Netz (433Utils mit wiringPI, etc) nicht funktioniert.
Das Programm läuft in einer Schleife und misst die Zeit zwischen Pegeln.
Folgendes kam dabei heraus:
#____##____##__####__####____##__####____##____##__####____##____##____#
#__####__####__####____##__####__####__####____##_______________________
_______
Jedes # oder _ steht für ca. 300us. Zur Validierung habe ich einen der
Anderen Knöpfe auf der Fernbedieung gedrückt und das Signal
aufgezeichnet:
#____##____##__####__####____##__####____##____##__####____##____##____#
#____##__####__####____##__####__####____##____##_______________________
_______
Sehr ähnlich, logischerweise. Und nun zu meinem Verständnisproblem.
Alles was ich zu Manchester im Netz finden konnte erklärt nicht was die
4-fach-Highpegel sind, ebenso wenig die 4x-Low-Pegel. Wie erklären sich
diese Ausschnitte?
Mein Plan sieht vor das Signal per Software zu erkennen und zu
dekodieren.
Wie gehts nun weiter? Wie kann ich das "Paket" identifizieren?
Vielen Dank im Vorraus!
Beste Grüße
Harald
Spontan würde ich sagen die 4fach Sequenzen kommen durch den Wechsel
zwischen 0/1 bzw 1/0.
Bei den 2fach-Seq. kommen demnach mehrere 0 bzw 1 hintereinander.
Wie würde dann dann das dekodierte binäre Ergebnis aussehen? Und welche
Flanken des Signals können zur Dekodierung verwendet werden.
Wenn ich das Signal in 4er-Blöcke aufspalte, bleibt am Anfang #____
über. Das scheint mir unplausibel 300us High-Pegel gefolgt von 1200us
Low-Pegel.
Grüße
Das sieht nach der Übertragung von 20 Bit aus, mit dem ersten "#" zur
Synchronisation und dann folgen die Datenbits mit jeweils sechs deiner
300µs Symbole.
#____##____##__####__####____##__####____##____##__####____##____##____#
s11111122222233333344444455555566666677777788888899999900000011111122222
#__####__####__####____##__####__####__####____##_______________________
2333333444444555555666666777777888888999999000000
_____
Von Atmel gibt es eine Application Note dazu „Manchester Coding Basics“,
einen Link findest Du im Artikel
http://www.mikrocontroller.net/articles/ManchesterHarald schrieb:> Wie würde dann dann das dekodierte binäre Ergebnis aussehen? Und welche> Flanken des Signals können zur Dekodierung verwendet werden.>> Wenn ich das Signal in 4er-Blöcke aufspalte, bleibt am Anfang #____> über. Das scheint mir unplausibel 300us High-Pegel gefolgt von 1200us> Low-Pegel.
Das am Anfang ist ja nur die erste Flanke, zwischen den Flanken ergeben
sich kurze (2 x 300us) und lange Abstande (4 x 300us).
Zum dekodieren gibt es sicherlich viele Ansatzmöglichkeiten, z.B.
Erste Flanke abwarten
Dann Einfach nur alle 1200us schauen ob Pin high oder low ist.
Oder aber
Fallende Flanke nach lang = 0
Steigende Flanke nach lang = 1
erste Flanke nach kurz ignorieren, zweite Flanke zählt wie nach lang
Schaus Dir am besten noch mal an. Ich denke der Anfang mit dem halben
kurz (einmal 300us) hat dich etwas irritiert.
Edit: Die Bedeutung steigende/fallende Flanke kann natürlich auch
umgekehrt sein. Für andere Anwendung müsste man unter Umständen auch
synchronisieren und wartet dann dazu auf einen langen Übergang.
Ich würde auch sagen, Wolfgang A. und Winfried J. haben da richtig
interpretiert, dass es eher eine PWM mit zwei unterschiedlichen
Verhältnissen ist (1:2, 2:1). Zumindest lässt es sich damit vollständig
auflösen.
Gibts denn einen dekodierten Bitstrom, mit dem man die Annahme
verifizieren kann?
...also wenn's mit zwei unterschiedlichen Tastverhältnissen moduliert
wird, heißt es Pulsweitenmodulation ;)
http://de.wikipedia.org/wiki/Pulsweitenmodulation
Die Intertechno-Modulation ist ja schon wieder eine andere. Da fällt mir
auch gerade kein Name zu ein.
Beim genaueren Hingucken sieht es ein bisschen so aus, als wäre die Mod.
von Intertechno auch eine PWM. Es werden zur Übertragung von einem
Nutzbit eben immer zwei Bits gesendet 00 -> 0, 10 -> 1.
Also sind zwischen allen Nutzbits immer Nullen eingefügt (auch am
Anfang).
Guest schrieb:> ...also wenn's mit zwei unterschiedlichen Tastverhältnissen moduliert> wird, heißt es Pulsweitenmodulation ;)
Aber nur dann, wenn die Pausen dazwischen gleiche Länge haben.
Wir haben hier einen Mischmasch aus Pulse Distance (es gibt nur eine
Pulslänge und zwei verschiedene Pausenlängen) und Pulse Width (es gibt
zwei verschiedene Pulslängen und nur eine Pausenlänge).
Ich habe deshalb diese Kodierung im IRMP-Artikel "Pulse Distance
Width" genannt:
http://www.mikrocontroller.net/articles/IRMP#Kodierungen
Eine offizielle Bezeichnung habe ich jedoch nirgendwo gefunden.
Winfried J. schrieb:
Guest schrieb:> Beim genaueren Hingucken sieht es ein bisschen so aus, als wäre die Mod.> von Intertechno auch eine PWM. Es werden zur Übertragung von einem> Nutzbit eben immer zwei Bits gesendet 00 -> 0, 10 -> 1.
Ja, genau so ist es.
Frank M. schrieb:> Aber nur dann, wenn die Pausen dazwischen gleiche Länge haben.
Ja, nee, eine Pulsweitenmodulation basiert ja auf einer festen Frequenz
und einer dementsprechend gleichlangen Periodendauer. Geändert wird das
Verhältnis zwischen High- und Low-Level, also haben die Pausen bei einer
PWM keine feste Länge.
"Dabei wird bei konstanter Frequenz der Tastgrad eines Rechteckpulses
moduliert, also die Breite der ihn bildenden Impulse."
Die Kodierung mit gleicher Pausenlänge gibt es sicherlich auch, jedoch
finde ich es in dem IRMP-Artikel etwas unglücklich, die Bezeichnung mit
der der PWM zum verwechseln ähnlich zu wählen.
Guest schrieb:> Ja, nee, eine Pulsweitenmodulation basiert ja auf einer festen Frequenz> und einer dementsprechend gleichlangen Periodendauer. Geändert wird das> Verhältnis zwischen High- und Low-Level, also haben die Pausen bei einer> PWM keine feste Länge.
Beim IR-Signal wird die PWM genutzt, um den Modulationsträger zu
erzeugen - z.B. mit 38kHz. Die eigentlichen Nutzsignale werden aber über
ein (wesentlich) höheres Vielfaches dieser Länge gebildet.
> "Dabei wird bei konstanter Frequenz der Tastgrad eines Rechteckpulses> moduliert, also die Breite der ihn bildenden Impulse."
Ja, aber da steckt (jedenfalls bei IR) keinerlei Information drin.
Entweder die PWM ist an ("Puls" (besser ein ganzes Pulspaket)) oder sie
ist aus.
> Die Kodierung mit gleicher Pausenlänge gibt es sicherlich auch, [...]
Ja, gibt es, jede Sony-Fernbedienung benutzt gleichlange Pausen.
> jedoch> finde ich es in dem IRMP-Artikel etwas unglücklich, die Bezeichnung mit> der der PWM zum verwechseln ähnlich zu wählen.
Hm, kann ich so nicht nachvollziehen. Für mich sind das 2 vollkommen
verschiedene paar Schuhe. Die einzige Gemeinsamkeit der PWM für die
Modulationsfrequenz und des eigentlichen Nutzsignals ist die Tatsache,
dass die Pulspakete und die Pausen ein ganzzahliges Vielfaches der
Grundfrequenzlänge haben.... einfach weil die Dinger in den FBs mit
Zählern arbeiten, die mit der PWM-Frequenz getaktet werden.
Aber ich verstehe Dich schon. Du meinst mit PWM nicht die Erzeugung der
Modulation, sondern benutzt diese für das Signal selbst. Klar, dann muss
die Gesamtlänge eines Bits immer gleich sein. In diesem konkreten Fall
hier passt das natürlich, weil alle Bits die Gesamtlänge 6 haben.
IR-Fernbedienungen arbeiten aber zu 99% anders. Die Bitlängen (also die
Summe von Pulspaket und Pause) sind hier verschieden und können daher
nicht über eine (weitere) PWM erzeugt werden, welche der Modulations-PWM
überlagert wird.
Nichtsdestotrotz könnte man das obige Signal mit IRMP auswerten.
@ TO, Harald:
Moin, ich beschäftige mich mit dem gleichen Thema, versuche p. Assembler
die Decodierung zu erledigen.
Stichwort: Steckdosen-Fernbedienung. In meinem FB-Sender werkelt ein
PT2262.
Das verwendete Modulationsverfahren heißt u.a. Pulsweitenmodulation,
siehe WIKI:
http://de.wikipedia.org/wiki/Pulsbreitenmodulation
Im Anhang d. Seite 4 des Datenblattes PT2262.
Viel Erfolg,
fredl