ich möchte mit einem avr µC digitale daten über funk übertragen und hab mir deshalb ein funk sende/empfangsmodul bei conrad gekauft(Bestnr.:130428) habe aber erst im nachhinein erfahren dass dieser sender ein manchester codiertes signal zum senden benötigt es müssen ja wenn ich das richtig sehe die daten codiert zum sender und danach die empfangenen signale am empfänger wieder decodiert werden. nur tu ich mir beim codieren und decodieren ein wenig schwer, ich möchte die programme in assembler schreiben und jeweils einen µC zum senden und empfangen verwenden. ich wär über tipps oder beispielcodes, wie man das umsetzen kann dankbar bitte sagt mir nicht dass es zu schwer für anfänger sei ;-) ich will das echt hin bekommen und streng mich dementsprechend an
Hi
>ich will das echt hin bekommen und streng mich dementsprechend an
Du kannst es dir auch einfach machen. Bei den AT90PWMxyz gibt es einige,
die eine EUSART besitzen. Die kann Manchester in Hardware.
MfG Spess
Hallo Chris, das Ansteuern eines Funkmoduls mit einem Manchester Code ist nicht ganz so einfach wie es auf den ersten Blick aussieht. Bei einer "guten" Drahtverbindung brauchst Du Dich um Rauschen und sonstige Störungen nicht zu kümmern, bei einer Funkverbindung ist das anders. Zudem brauchst Du zur Modulation des Senders ein fast gleichsannungsfreies Signal, deshalb auch der Manchestercode. In der Praxis sieht das von der Schaltung her etwa so aus:
1 | port1 |
2 | -----WIDERSTAND---------+ |
3 | | C |
4 | +----------------| |----------> Funkmodul |
5 | port2 | |
6 | -----WIDERSTAND---------+ |
In der Ruhephase ist port1 auf high und port2 auf low, damit stellt sich am Kondensator Ubatt/2 ein. Beim Senden, sind beide Ports entweder low (low-Symbol) oder high (High-Symbol). Das Eigentliche Protokoll besteht aus einer steigenden Flanke für high und einer fallenden Flanke für low. Damit es vom Empfänger richtig empfangen wird, sendet man als Takt-sync erst 16 mal "1" damit kann sich die PLL des Empfängers "einstellen". Danach sollte ein besonderes Muster als Frame-Sync kommen, z.B. langes Symbol, kurzes Symbol, langes Symbol. Dies kommt im normalen Code nicht vor, weil immer zwei kurze Symbole nacheinander kommen müssen. Dann anschliessend die Datenbytes, gefolgt von einer "Frame Check Sequence" (FCS), das ist bis ca. 16bytes pro Frame ein LRC-Check (0x00 XOR Byte1 XOR Byte2 .....) oder ein CRC Check. Wie Du siehst, wird das ganze schon etwas aufwändig, wenn es richtig funktionieren soll. Ich würde das ganze erst mal mit einem Kabel verbinden bevor Du mit dem Funken anfängst. Aber es ist ein Interessantes Thema .... und überleg' Dir ob Du es nicht in C programmierst, damit wirds einfacher. Das ist eine ideale Anwendung für eine Finit State Machine (FSM) aber das ist ein anderes Thema.... Viel Spass, Andreas
Ich hab das einfacher gelöst... Die Funkmodule können wohl nur "1" erkennen, weil dann der Sender eingeschaltet ist, und so die Frequenz erkannt werden kann. "0" führt dazu, daß das Signal im Rauschen untergeht... Ich nehme jedes Byte und wandle es in 2 Bytes um, indem ich jedes einzelne Bit in "01" oder "10" unwandle (verdopple). So gibt es max. 2x"0" und der Empfänger funktioniert. Ansonsten gibt es normale Start- und Stop-Bits. Funktioniert hier prima. Vor dem Senden schaltet man den Sender für etliche Bits ein, dann schwingt sich alles ein und der Empfänger-UART hat einen passenden 1-Pegel. Bei Nichtbenutzung wird der Sender abgeschaltet...
Bernd Rüter schrieb: > Die Funkmodule können wohl nur "1" erkennen, weil dann der Sender > eingeschaltet ist, und so die Frequenz erkannt werden kann. Das ist so nicht generell richtig. In Deinem Fall wird die Modulation über das Ein/Ausschalten des HF-Signals des Senders gemacht. Die meisten Funkmodule arbeiten aber mit FM-Modulation, dann geht das so nicht. > Ich nehme jedes Byte und wandle es in 2 Bytes um, indem ich jedes > einzelne Bit in "01" oder "10" unwandle (verdopple). So gibt es max. > 2x"0" und der Empfänger funktioniert. Ansonsten gibt es normale Start- > und Stop-Bits. > > Funktioniert hier prima. Wie siehts denn bei schwachem Empfangssignal aus, -100dbm z.B. Gehts dann auch noch?
Hab es neulich so ähnlich wie
> Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
gemacht.
Allerdings ist dieses Funkmodul 130428 von C wirklich
nicht sehr überzeugend. Bei nur 1 m Abstand klappt es gerade
mal mit 600 Bd. - Sooo teuer ist Kupfer nun auch nicht...
Ich hab mir mal das Datenblatt des Moduls angeschaut: AM-Modulation, 2KHz Bandbreite. D.H. nach Abtasttheorem kannst Du maximal 1KHz Signale übertragen. Im Fall der Manchester Codierung heißt das für kurze Symbole Minimalzeit 1ms, demnach sind Lange Symbole 2ms lang.
Bernd Rüter schrieb: > Ich hab das einfacher gelöst... > Ich nehme jedes Byte und wandle es in 2 Bytes um, indem ich jedes > einzelne Bit in "01" oder "10" unwandle (verdopple). Das ist Manchester Kodierung :)
Nagele die Funkmodule als warnendes Beispiel an die Wand - zusammen mit einem grossen Zettel: "erst informieren, dann kaufen" Irgendwie bekommt man die schon zum laufen - sinnvoll ist es nicht. Du wirst jede Menge Zeit verplempern. Es gibt genügend Funkmodule (auch zum kleinen Preis), die dir das Leben einfacher machen.
wäre das eine gute alternative für "einfachere" bedienung eines funk moduls ?, verstehe ich das richtig das hier alles bei dem chip über SPI programmiert wird ? und wo finde ich angaben dazu wie die einstellungen programmiert werden weil da steht : - programmierbare TX-Frequenz-Abweichung (von 15 bis 240 kHz) - programmierbare Empfänger-Bandbreite (von 67 bis 400 kHz) (datenblatt angehängt)
Tja, das ist schwierig. Auf den ersten Blick sieht das geeignet aus, aber .... Da fällt mir spontan ein: - Zulassung duch RegTp? -> falls nicht, würde ich es ausserhalb eines Abschirmkäfigs nicht benutzen. Die Folgen könnten eventuell teuer werden. Aber ich bin kein HF Spezialist, vielleicht gibts ja ein Band, wo jeder ohne Zulassung rumfunken kann. Vielleicht gibts hier im Forum einen Spezialisten?
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.