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/Manchester Harald 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.
:
Bearbeitet durch User
Harald schrieb: > Manchester mal wieder p.s. Warum meinst du, dass die Kodierung irgendetwas mit Manchester-Code zu tun hat?
#____##____##__####__####____##__####____##____##__####____##____##____# s11111122222233333344444455555566666677777788888899999900000011111122222 S 0 0 1 1 0 1 0 0 1 0 0 0 #__####__####__####____##__####__####__####____##_______________________ 2333333444444555555666666777777888888999999000000 1 1 1 0 1 1 1 0 sssssssssssssssssssssss ___ sssss
:
Bearbeitet durch User
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?
Stimmt, bei Manchester dürfte es keine lang-kurz-lang Übergänge geben. Hat das eigentlich dann irgendeinen speziellen Namen?
Bei den Intertechno Steckdosen aus dem Baumarkt habe ich die folgende Kodierung herausgemessen. Wie diese sich nennt weis ich aber nicht.
...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:
1 | > #____##____##__####__####____##__####____##____##__####____##____##____# |
2 | > s11111122222233333344444455555566666677777788888899999900000011111122222 |
3 | > S 0 0 1 1 0 1 0 0 1 0 0 0 |
Die Bits könnten auch mit ## anfangen, was wahrscheinlicher ist. Dann:
1 | #____##____##__####__####____##__####____##____##__####____##____##____ |
2 | sssss111111222222333333444444555555666666777777888888999999000000111111 |
Also: ##____ = 1 ####__ = 0 oder umgekehrt: ##____ = 0 ####__ = 1 Aber das ist lediglich Definitionssache.
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
Nachtrag zum oben nicht erwähnten Synchronbit: Verhältis der Pulsweiten: "0"-bit (H/L) = 4/12/4/12 "1"-bit (H/L) = 12/4/12/4 Synchron-bit (H/L) = 4/128 (s. S.5 Datenblatt PT2262) fredl
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.