Hallo Radiofreunde,
da ich nun zur dunklen Seite der Macht gewechselt bin und mich mit digitalen Lösungen beschäftige möchte ich hier mein neuestes Spielzeug vorstellen. Es ist eine kleine Platine die einen komplettes "Software Defined Radio" (SDR) enthält, und zwar mit Empfangs- und Sendefunktion. Dieses über "Crowd Funding" realisierte Projekt hat zwei Produkte hervorgebracht den "Lime SDR" und den "Lime SDR Mini".
Ich habe den Lime SDR Mini bestellt und am Wochenende hat meine liebe Frau das Teil aus den USA nun mit nach "good old Germany" gebracht. Hier die Originalbox:
und hier das kleine Board:
Dieses Board wird von GNU Radio unterstützt, also musste ich gleich die entsprechenden Module installieren was auf der verlinkten Seite unter den Punkten 5 und 6 verlinkt und dort auch sehr gut erklärt ist....Läuft.
Um etwas zu üben dachte ich ein UKW Sender wäre doch ein guter Einstieg. Die Blöcke für eine Monoversion waren schnell zusammen geklickt und funktionierten quasi auf Anhieb. Hier das Blockdiagramm in GNU Radio:
Dermaßen ermutigt wollte ich nun auch eine Stereoversion. Auch hier gilt wie bei AM Stereo, dass eine Lösung wie man sie in Hardware machen würde nicht immer die ideale Umsetzung in GNU Radio darstellt. Ein Beispiel:
In Hardware würde ich einen 38kHz Hilfsträger erzeugen und den 19kHz Pilotton dann mit einem Teiler /2 gewinnen. In GNU Radio habe ich nun keine Funktion gefunden die eine Frequenz durch zwei teilt, also habe ich den umgekehrten Weg beschritten und ein 19kHz Signal verdoppelt. Das wiederum geht in GNU Radio sehr einfach mit einem Multiplizierer dem man 2x das gleiche Signal zuführt.
Um keine Laufzeitprobleme zu bekommen habe ich auch die Erzeugung des Multiplexsignals etwas ungewöhnlich gemacht. Es handelt sich im Prinzip um einen Schaltencoder der aber weich mit Sinusschwingungen zwischen dem Linken und rechten Kanal hin und her blendet. Das gleiche Prinzip hatte ich schon mit meinem Röhrenencoder verwandt. Wie funktioniert das? Nun ich füge dem Hilfsträger einen Gleichanteil hinzu und multipliziere den rechten Kanal mit diesem Signal. Beim Linken Kanal wird das gleiche gemacht nur ist hier der Hilfsträger um 180° gedreht. Hier die Erzeugung von Hilfsträger und Pilotton:
38kc_and_Pilot_gen.png (Größe: 17,95 KB / Downloads: 444)
Und dieser Teil stellt den eigentlichen Stereoencoder dar:
Mux_and_Pilot_Adder.png (Größe: 5,25 KB / Downloads: 446)
In Formeln ausgedrückt ergibt das folgendes:
R*(1+Cos(2¶*38kHz)) + L*(1-Cos(2¶*38kHz)) Löst man die Klammern auf so ergibt sich:
(R+L) + (R-L)*Cos(2¶*38kHz)
Das ist aber genau die Formel eines FM Multiplexsignals, es fehlt nur noch der Pilotton. Diesen braucht man nur noch der Summe beizufügen und schon ist das FM Stereo Multiplexsignal fertig. Um die Phase des Pilottons einstellbar zu machen habe ich noch eine Verzögerungsblock (Delay) eingefügt. Damit kann die Kanaltrennung optimiert werden, und diese ist extrem gut in dieser Schaltung! Der Term in der ersten Klammer ist das Summensignal und der zweite Term ist das geträgerte Differenzsignal. Durch den symmetrischen Aufbau der Blöcke können Phasenverschiebungen vermieden werden was sich sonst negativ auf die Kanaltrennung auswirken würde.
Hier einige Bilder des Multiplexsignals mit einem 1kHz Signal:
FMST_L=0_R=1_P=0.png (Größe: 23,03 KB / Downloads: 450)
Signal nur mit Rechts, Links ist aus
FMST_L=R=1_P=0.png (Größe: 22,35 KB / Downloads: 443)
Signal bei dem Links und Rechts gleich sind (Monosignal)
FMST_L=-R_P=0.png (Größe: 23,73 KB / Downloads: 448)
Sonderfall L=-R hier ist das Summensignal null und es entsteht nur das geträgerte Differenzsignal.
Natürlich darf eine Preemphase nicht fehlen und das Signal wird mit 10-fachem Oversampling verarbeitet:
Preemphasis_and_Upsampling.png (Größe: 17,58 KB / Downloads: 442)
Die Ausgabe erfolgt über das Lime SDR Sink Modul in GNU Radio, vorher muss das Multiplexsignal natürlich noch frequenzmoduliert werden. Auch hier ist wie beim Phasenmodulator der FM Modulator nur mit zwei Ports ausgestattet. Er moduliert quasi mit der Trägerfrequenz von 0. In Realität erzeugt dieser Block die für die FM üblichen Besselfunktionen in der komplexen Zahlenebene. Das Lime SDR Modul spendiert dann den Träger hier 101MHz.
Hier die komplette Blockschaltung:
Das war mein erstes Projekt mit dem Lime SDR mini und ich muss sagen ich bin begeistert! Ich habe noch viele Ideen was man damit alles anstellen kann: DAB+ Sender, DVB-T bzw. DVB-T2 und auch historische Verfahren wie "World Space Radio" könnte man sicher damit simulieren. Bis ich das hinbekomme muss ich aber noch einiges lernen, da mein Wissen aus dem Studium dank 30 Jahren im Vertrieb und Marketing doch etwas verblasst ist...
da ich nun zur dunklen Seite der Macht gewechselt bin und mich mit digitalen Lösungen beschäftige möchte ich hier mein neuestes Spielzeug vorstellen. Es ist eine kleine Platine die einen komplettes "Software Defined Radio" (SDR) enthält, und zwar mit Empfangs- und Sendefunktion. Dieses über "Crowd Funding" realisierte Projekt hat zwei Produkte hervorgebracht den "Lime SDR" und den "Lime SDR Mini".
Ich habe den Lime SDR Mini bestellt und am Wochenende hat meine liebe Frau das Teil aus den USA nun mit nach "good old Germany" gebracht. Hier die Originalbox:
und hier das kleine Board:
Dieses Board wird von GNU Radio unterstützt, also musste ich gleich die entsprechenden Module installieren was auf der verlinkten Seite unter den Punkten 5 und 6 verlinkt und dort auch sehr gut erklärt ist....Läuft.
Um etwas zu üben dachte ich ein UKW Sender wäre doch ein guter Einstieg. Die Blöcke für eine Monoversion waren schnell zusammen geklickt und funktionierten quasi auf Anhieb. Hier das Blockdiagramm in GNU Radio:
Dermaßen ermutigt wollte ich nun auch eine Stereoversion. Auch hier gilt wie bei AM Stereo, dass eine Lösung wie man sie in Hardware machen würde nicht immer die ideale Umsetzung in GNU Radio darstellt. Ein Beispiel:
In Hardware würde ich einen 38kHz Hilfsträger erzeugen und den 19kHz Pilotton dann mit einem Teiler /2 gewinnen. In GNU Radio habe ich nun keine Funktion gefunden die eine Frequenz durch zwei teilt, also habe ich den umgekehrten Weg beschritten und ein 19kHz Signal verdoppelt. Das wiederum geht in GNU Radio sehr einfach mit einem Multiplizierer dem man 2x das gleiche Signal zuführt.
Um keine Laufzeitprobleme zu bekommen habe ich auch die Erzeugung des Multiplexsignals etwas ungewöhnlich gemacht. Es handelt sich im Prinzip um einen Schaltencoder der aber weich mit Sinusschwingungen zwischen dem Linken und rechten Kanal hin und her blendet. Das gleiche Prinzip hatte ich schon mit meinem Röhrenencoder verwandt. Wie funktioniert das? Nun ich füge dem Hilfsträger einen Gleichanteil hinzu und multipliziere den rechten Kanal mit diesem Signal. Beim Linken Kanal wird das gleiche gemacht nur ist hier der Hilfsträger um 180° gedreht. Hier die Erzeugung von Hilfsträger und Pilotton:
38kc_and_Pilot_gen.png (Größe: 17,95 KB / Downloads: 444)
Und dieser Teil stellt den eigentlichen Stereoencoder dar:
Mux_and_Pilot_Adder.png (Größe: 5,25 KB / Downloads: 446)
In Formeln ausgedrückt ergibt das folgendes:
R*(1+Cos(2¶*38kHz)) + L*(1-Cos(2¶*38kHz)) Löst man die Klammern auf so ergibt sich:
(R+L) + (R-L)*Cos(2¶*38kHz)
Das ist aber genau die Formel eines FM Multiplexsignals, es fehlt nur noch der Pilotton. Diesen braucht man nur noch der Summe beizufügen und schon ist das FM Stereo Multiplexsignal fertig. Um die Phase des Pilottons einstellbar zu machen habe ich noch eine Verzögerungsblock (Delay) eingefügt. Damit kann die Kanaltrennung optimiert werden, und diese ist extrem gut in dieser Schaltung! Der Term in der ersten Klammer ist das Summensignal und der zweite Term ist das geträgerte Differenzsignal. Durch den symmetrischen Aufbau der Blöcke können Phasenverschiebungen vermieden werden was sich sonst negativ auf die Kanaltrennung auswirken würde.
Hier einige Bilder des Multiplexsignals mit einem 1kHz Signal:
FMST_L=0_R=1_P=0.png (Größe: 23,03 KB / Downloads: 450)
Signal nur mit Rechts, Links ist aus
FMST_L=R=1_P=0.png (Größe: 22,35 KB / Downloads: 443)
Signal bei dem Links und Rechts gleich sind (Monosignal)
FMST_L=-R_P=0.png (Größe: 23,73 KB / Downloads: 448)
Sonderfall L=-R hier ist das Summensignal null und es entsteht nur das geträgerte Differenzsignal.
Natürlich darf eine Preemphase nicht fehlen und das Signal wird mit 10-fachem Oversampling verarbeitet:
Preemphasis_and_Upsampling.png (Größe: 17,58 KB / Downloads: 442)
Die Ausgabe erfolgt über das Lime SDR Sink Modul in GNU Radio, vorher muss das Multiplexsignal natürlich noch frequenzmoduliert werden. Auch hier ist wie beim Phasenmodulator der FM Modulator nur mit zwei Ports ausgestattet. Er moduliert quasi mit der Trägerfrequenz von 0. In Realität erzeugt dieser Block die für die FM üblichen Besselfunktionen in der komplexen Zahlenebene. Das Lime SDR Modul spendiert dann den Träger hier 101MHz.
Hier die komplette Blockschaltung:
Das war mein erstes Projekt mit dem Lime SDR mini und ich muss sagen ich bin begeistert! Ich habe noch viele Ideen was man damit alles anstellen kann: DAB+ Sender, DVB-T bzw. DVB-T2 und auch historische Verfahren wie "World Space Radio" könnte man sicher damit simulieren. Bis ich das hinbekomme muss ich aber noch einiges lernen, da mein Wissen aus dem Studium dank 30 Jahren im Vertrieb und Marketing doch etwas verblasst ist...
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)