Forum: Mikrocontroller und Digitale Elektronik Bits und gestörte Funkstrecke


von Krümelmonster (Gast)


Lesenswert?

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

von ~Mercedes~ (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

~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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Krümelmonster (Gast)


Lesenswert?

~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.

von Krümelmonster (Gast)


Lesenswert?

Dergute W. schrieb:
> matched Filter

Was ist das? Ein Bandpass für meine Baudrate?

von Dergute W. (derguteweka)


Lesenswert?

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

von Krümelmonster (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.