SSB mit HackRF One           

 
Elektronik-Labor  Lernpakete  Projekte  HF  


 
Der HackRF One hat sich bereits als Empfänger bewährt, wobei im einfachsten Fall SDR Sharp verwendet wird. Das Gerät kann aber auch senden, und da steht SSB an oberster Stelle. Wenn das geht, hat man auch FT8 und vieles mehr im Griff. Als Werkzeug setze ich Gnu Radio ein. Dazu wurde RadioConda installiert und läuft jetzt auch unter Windows. So kann ich Gnu Radio Companion starten. Man verwendet dabei fertige Blöcke, verbindet sie passend und stellt Parameter ein. Der Entwurf wird dann zu einem Python-Programm kompiliert und ausgeführt. Zur Einführung habe ich diesen Kurs angesehen: https://greatscottgadgets.com/sdr/



SSB1.grc
 
Nach vielen andern Übungen habe ich mich an einen Vorversuch zum Thema SSB gewagt. Ich verwende zwei Blöcke vom Typ Signal Source, beides sind Sinusgeneratoren. Der obere erzeugt die Trägerfrequenz 10 kHz als komplexes Signal (Signalfarbe blau), also praktisch zwei Signale I und Q mit einer Phasendifferenz von 90 Grad. Der untere liefert die Modulationsfrequenz von 1 kHz und steht stellvertretend für das spätere Mikrofon-Signal. Dieses Signal ist vom Typ float, besteht also aus Realzahlen bis 1.

Das Modulationssignal durchläuft eine Hilbert-Transformation. So werden die komplexen IQ-Signale erzeugt, wobei jede Frequenz genau um 90 Grad verschoben wird. Hier passiert genau das, was ich mit einem RC-Phasenschieber zur SSB-Erzeugung versucht habe, aber es passiert wesentlich präziser, weil es auf reiner Mathematik basiert. Wie das genau funktioniert, habe ich noch nicht verstanden. Aber ich kann den Hilbert-Block als Back Box einsetzen.

Beide komplexe Signale werden dann multipliziert, und zwar Sample für Sample mit der gemeinsamen Taktrate von 32 kHz. So bildet man einen Mischer, oder genauer gesagt zwei Mischer für I und Q. Dabei sollte das fertige IQ-SSB-Signal entstehen. Um es zu sehen, verwende ich den QT GUI Frequency Sink, also praktisch eine FFT mit grafischer Ausgabe.


 
Und tatsächlich, bei 11 kHz sehe ich das Signal im oberen Seitenband, der Träger bei 10 kHz ist völlig verschwunden, und das untere Seitenband ist um fast 100 dB unterdrückt. Super, so genau hätte ich das mit Hardware niemals hinbekommen. Dann also der nächste Schritt mit einem echten Mikrofon und einem Sender im 20m-Band.
 


SSB2.grc

Für die Ausgabe verwende ich den Block Osmocom Sink, also eine Datensenke, die meine Zwischenfrequenz-Daten mit einer Bandbreite von 4 MHz über USB an den HackRF One sendet. Dort wird das Signal mit 12 MHz gemischt. Meine ZF liegt bei 2,15 MHz, sodass mein USB-Signal auf 14150 kHz erscheinen soll.

Die Sache wird etwas komplizierter, weil ich jetzt mit zwei verschiedenen Abtastraten arbeiten muss. Die Soundkarte frage ich mit 8 kHz ab. Danach kommt ein Filterblock für den Bereich 300 Hz bis 3 kHz. Dann folgt die Hilbert-Transformation und die FFT-Ausgane zur Kontrolle.

Mit dem Block Rationial Resampler setze ich die Abtastrate von 8 kHz auf 4 MHz um, indem jeweils 500 Werte interpoliert werden. Nur so kann der Mischer (Multiplikation) mit dem ZF-Trägersignal von 2,15 MHz funktionieren. Am Ausgang des Multipy-Blocks steht das fertige SSB-Signal bei 2150 kHz und kann an den HackRF One übergeben werden. Die FFT-Anzeige bestätigt, dass ein gutes SSB-Signal im oberen Seitenband erzeugt wurde.
 


Das Antennensignal wurde mit dem Elektor SDR-Shield und SDR # empfangen. Dabei kann ich mich selbst gut hören, weil das Signal durch alle Puffer und Verarbeitungsschritte um ca. eine Sekunde verzögert erscheint. Ob das noch verbessert werden kann, weiß ich nicht. Aber ich kenne das Phänomen aus dem realen Amateurfunk. Wer digital arbeitet, hat irgendwie eine verlängerte Reaktioniszeit bei der Umschaltung von Empfang auf Sendung.


Ansonsten sieht das Signal sehr gut aus und hört sich auch perfekt an. Vielleicht müsste man noch etwas bauen, um den Mikrofonpegel mit einer ALC zu optimieren.


Elektronik-Labor  Lernpakete  Projekte  HF