Forum: HF, Funk und Felder DCF77 Digitalempfänger mit STM32


von Artjomka (Gast)


Lesenswert?

Die stm32 haben einen flotten ADC und genug Rechenleistung um DCF77 
direkt zu empfangen und zu verarbeiten.

Habe mir einen kleinen einstellbaren Verstärker für 3,3V gebastelt. Das 
soll es aber auch schon n externer Hardware gewesen sein. Als nächstes 
werde ich mal versuchen das Signal zu sampeln und auf Süd Karte weg zu 
schreiben um es dann am PC weiter analysieren und verarbeiten zu können.

Und genau hier ist jetzt die frage was man mit dem Signal machen sollte?

Ich hatte auch an eine. Mischer durch unterabtastung gedacht. Also z.B. 
mit 77000 Hz sampeln um danach die 500 Hz mit einem bandpass zu filtern.

Also externe Hardware so gering wie möglich und alle Verarbeitung auf 
dem Controller. Wie würdet ihr verfahren? Der Aufwand sollte auch noch 
im Rahmen bleiben...


Die Frage könnte auch genau so gut ins DSP Forum...

von Artjomka (Gast)


Lesenswert?

Schreibfehler sind android geschuldet, sorry.

von B e r n d W. (smiley46)


Lesenswert?

Könntest Du auch mit 310 kHz sampeln? Dann als Quadratursignal weiter 
verarbeiten. Ich kann nicht beurteilen, ob der STM32 das schafft.

Die Ferritantenne macht ja schon eine gewisse Vorselektion.

von Ulrich (Gast)


Lesenswert?

Unterabtasten verschenkt einiges an Dynamik. Wegen der nicht so 
perfekten Filter vor dem A/D ist eher eine höhere Abtastrate angesagt, 
sofern das die Leistungsaufnahme zulässt.

Ein erster möglicher Schritt für die Auswertung wäre ein digitales 
mischen mit z.B. 77,5 kHz auf I/Q Signale bei Frequenz 0. Danach kann 
man dann die Datenrate deutlich reduzieren. Es bleibt dann eigentlich 
nur entfernen von Ausreißern, normieren der Amplitude und ggf. 
Phase/Frequenz und schließlich ein Vergleich mit einer Schwelle bzw. den 
möglichen erwarteten Signalen.
Falls das ganze auch noch eine Stabile Ref. Frequenz geben soll, könnte 
man auch noch einmal das erkannte Zeitsignal für einen 2. Durchgang bei 
der Phase nutzen, um da noch die letzten mHz zu optimieren.

von Artjomka (Gast)


Lesenswert?

Also so wie ich eure Vorschläge bis jetzt verstanden habe:
1) Mit hoher Samplerate abtasten
2) Mit digitalen Träger von 77,5kHz komplex mischen
3) I/Q Komponenten durch Tiefpass schicken
4) Und nun? Reicht es das Quadrat zu bilden und danach zu demodulieren?

An welcher Stelle sollte man die Datenrate reduzieren? Nach dem Tiefpass 
oder?

Es gibt bestimmt noch schlauere Ansätze als das Signal zu quadrieren und 
direkt zu demodulieren, oder? Irgendwie mit irgendwas korrelieren... :-)

Braucht man zum Erzeugen der I/Q Komponenten nicht eine 
Hilbert-Transformation?


Die Informationstechnik-Vorlesung ist schon wieder ein Semester her, das 
meiste habe ich leider schon wieder vergessen :-(

von Hmm (Gast)


Lesenswert?

Ulrich schrieb:

> Falls das ganze auch noch eine Stabile Ref. Frequenz geben soll, könnte
> man auch noch einmal das erkannte Zeitsignal für einen 2. Durchgang bei
> der Phase nutzen, um da noch die letzten mHz zu optimieren.

Das interessiert mich. Könntest Du das bitte genauer erklären.

Welches Signal macht einen 2. Durchgang und wodurch?

von Artjomka (Gast)


Lesenswert?


von Ulrich (Gast)


Lesenswert?

Die Datenrate kann man nach Mischen und Tiefpass reduzieren. In der 
Regel geht das gleich zusammen mit dem Tiefpass, der dann für jeden 
neuen Datenpunkt so etwa wie den Mittelwert über eine feste Zahl an 
Ursprünglichen Werten bildet, ggf. auch mit unterschiedlicher Wichtung 
und überlappend.
Das komplexe mischen mit Tiefpassfilterung ist eine Umsetzung der 
Hilberttransformation.

Solange man nur am Zeitsignal interessiert ist, und keine extreme 
Empfindlichkeit braucht (d.h. es muss nicht viel besser werden als die 
üblichen analog aufgebauten Empfänger), reicht das Quadrieren zur 
Demodulation schon aus. Bei der Bewertung der Amplituden kann man sich 
dann ggf. noch etwas mehr mühe geben als es bei einem analogen Aufbau 
üblich ist. Man kann z.B. Ausnutzen, das die Reduzierte Amplitude genau 
mit 1 s Abstand startet und dann ein definierte Länge hat. Wenn man so 
will kann man das als Korrelation zwischen dem Signal und möglichen 
Mustern sehen.

Es geht aber auch besser, als nur mit dem Quadrat der Werte, also der 
momentanen Amplitude. Die I/Q werte kann man als Amplitude und Phase 
(atan (I/Q)) interpretieren. Aus den Werten für die Phase kann man den 
Träger rekonstruieren, also die genaue Trägerfrequenz (hier eher die 
genaue Frequenz des µC, da die Trägerfrequenz sehr genau fest liegt). Es 
gibt da einige Möglichkeiten: eine ist es mit den Werten für die Phase 
eine lineare Regression durchzuführen. Lineare Regression klingt 
kompliziert, geht aber per Formel recht schnell und einfach. Die 
Steigung für die Phase gibt die (Kreis-)Frequenz für die 
Zwischenfrequenz. Alternativ kann man auch direkt an die I/Q Werte eine 
Komplexe e Funktion anpassen - das braucht aber üblicherweise ein paar 
Iterationen, was bei der Signalverarbeitung eher unbeliebt ist. Wegen 
der Modulation mit dem Zeitsignal wäre zu überlegen für die 1. Näherung 
nur die Werte mit große Amplitude (z.B. >70% des Mittelwertes) zu 
nutzen.

Mit der bekannten Phase aus der Regression geht dann die Detektion des 
Zeitsignals auch über I/Q als Vektor, ohne Quadrieren mit etwas weniger 
Störungen. Dazu kann man dann ggf. auch noch die Zusatzinformationen 
demodulieren (Phase in den Lücken). Bei schlechtem Empfang kann man 
dabei auch ausnutzen das nur Pausen mit 2 definierten Längen Möglich 
sind, und der Abstand genau 1 Sekunde ist.

Wenn man es dann noch auf die Spitze treiben will, könnte man das 
erkannte Zeitsignal nutzen, um die Phase noch etwas genauer zu 
bestimmen, indem man das komplette Signal mit der Zeitinformation usw. 
anpasst. Mit dem Startwert aus dem 1. Durchgang reichen hier vermutlich 
auch schon 1-2 Iterationen, vor allem wenn man die Parameter gut wählt.

Ein noch offener Parameter ist dabei die Länge des Intervalls die man 
nutzt. Das kann z.B. 1 Sekunde oder auch 1 Minute sein, sofern der 
lokale Takt stabil genug ist.

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.