Hallo Leute, konkret möchte ich einen vorhandenen 35 MHz PPM Sender und Empfänger auf PCM umprogrammieren, auf beiden Seiten werkelt aus verschiedneen Gründen bereits ein AVR. Meine Frage dürfte aber für jede serielle Funkstrecke mit 2 Symbolen gelten, bei dem der µC das Signal erst nach FM-Demodulation und Komparator zu sehen bekommt. ------ FRAGE: ------ Wie liest der µC am zuverlässigsten ein gestörtes Signal? Welche Ideen gibt es, außer einem Tiefpassfilter? Ziel ist z. B. ein Bit korrekt zu erkennen, von dem nur noch 2/3 vorhanden sind, weil es total mit Spikes durchsetzt ist. Ist das AVR Uart mit passendem RC-Filter dafür geeignet? Wie funktioniert das bei bestehenden Modellbau-Empfängern ----- Ziel: ----- Bits "entprellen" lernen auch für AFU Ein nettes Bastelprojekt, das nachher gut funktioniert und ein bisschen mehr bietet (Checksumme/Failsafe) ----------- Nicht Ziel: ----------- Es geht hier nicht um die Fehlerbehandlung (Checksumme, Fehlerkorrektur). Da werde ich vermutlich ein bekanntes Protokoll nehmen und gut ist: https://www.aerodesign.de/peter/2000/PCM/pcm_systeme.gif
Krümelmonster meinte:
> Wie liest der µC am zuverlässigsten ein gestörtes Signal?
In dem Du jedes Bit mehrfach abtastest und eine Mehrheitsentscheidung
machst, ob das Bit nun 0 oder 1 ist.
Um so feiner die Abtastung um so besser ist die Entscheidung, aber
um so mehr wird der Prozessor auch belastet.
mfg
~Mercedes~ schrieb: > Um so feiner die Abtastung um so besser ist die Entscheidung, aber > um so mehr wird der Prozessor auch belastet. Das muss nicht zwingend den Prozessor belasten - die UART macht das auch, aber in Hardware. Je nach Ausführung/Programmierung mit 8- oder 16-facher Abtastung (das ist auch der Grund dafür, warum der Takt, der dem Baudratengenerator der UART zugeführt wird, entsprechen dem 8- oder 16-fachen der maximal möglichne Baudrate entspricht). Wenn 8- oder 16-fache Abtastung genügt, könnte hier also eine UART verwendet werden.
Moin, Krümelmonster schrieb: > Wie liest der µC am zuverlässigsten ein gestörtes Signal? > Welche Ideen gibt es, außer einem Tiefpassfilter? Mit einem "matched Filter". Ansonsten wirds auch wichtig sein, irgendwie auf der Empfangsseite moeglichst exakt rauszukriegen, wann genau das Maximum der Energie des empfangenen Bits aus dem matched Filter purzelt - dann klappts auch leichter mit der Entscheidung ob's 1 oder 0 war... Gruss WK
~Mercedes~ schrieb: > In dem Du jedes Bit mehrfach abtastest und eine Mehrheitsentscheidung > machst, ob das Bit nun 0 oder 1 ist. Ok, das verstehe ich. Worüber ich nun grübele, ist, wie ich das über Bitgrenzen hinweg mache. Sobald ich auf eine Sendung synchronisiert bin, ist das ja relativ einfach, aber was mache ich, wenn ich auf den Sendungsanfang lausche? Rufus Τ. F. schrieb: > Wenn 8- oder 16-fache Abtastung genügt, könnte hier also eine UART > verwendet werden. Wieder was gelernt, dankeschön. Ich habe gerade mal nachgerechnet: Übliche Zeichendauer = 0,3 ms / Baudrate 3333,3... AVR Takt 16MHz, AVR tastet alle 160 Takte ab 16MHz / 128 * 0,0003s ergibt 30 Samples je Zeichen. Angenommen F_AVR=16MHz und T_Symbol=0,3ms sind fest... Könnte man noch etwas machen? Höher Abtastfrequenz geht eher nicht mehr, ich will meine Bits ja auch noch verarbeiten können? So wie's aussieht probier ich's erstmal mit dem Hardware UART.
Moin, Krümelmonster schrieb: > Dergute W. schrieb: >> matched Filter > > Was ist das? Ein Bandpass für meine Baudrate? Sowas hier: https://de.wikipedia.org/wiki/Optimalfilter Ueblicherweise nimmt man nicht direkt naggisches "Rechteck" z.B. aus einem UART, um damit einen Sender zu modulieren - die Bandbreite des Sendesignals ist dann arg hoch. Da legt man auf der Sendeseite erst einen Tiefpass drueber. Der sollte so das Signal beeinflussen, dass die Bandbreite moeglichst klein bleibt, sich aber einzelne Bits nicht gegenseitig beeinflussen. "In echt" gerne einen mit z.b. root-raised-cosine Charakteristik. Wenn man dann auf der Empfangsseite das Signal moeglichst gut aus dem Rauschen rausfischen will, geht das mit einem "matched Filter", dessen Impulsantwort entspricht dann der Impulsantwort des Sendefilters, nur "zeitlich umgedreht". Wenn man doch "nur" mit Rechtecken operiert, dann ist das matched Filter dazu auch ein Filter mit einer rechteckigen Impulsantwort. Das ist dann das, was meine Vorschreiber schon mit Mehrfachabtastung, Mehrheitsentscheidung,etc. beschrieben hatten. Gruss WK
Dergute W. schrieb: > Ueblicherweise nimmt man nicht direkt naggisches "Rechteck" z.B. aus > einem UART Ich habe die Senderplatine so gelassen, wie sie war und nur den µC durch einen AVR ersetzt. Soweit ich sehe, wird das PPM-Signal C und R abgerundet. Rufus Τ. F. schrieb: > Wenn 8- oder 16-fache Abtastung genügt, könnte hier also eine UART > verwendet werden. Von 16 nach 8, das ist wohl das, was mit dieser Anweisung passiert? UCSRA |= (1 << U2X);
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.