Ein FT8-QRP-Transceiver
Mein neues FSK-Modulationsverfahren
ist so einfach, dass es geradezu nach einem QRP-Projekt schreit. Ich
möchte deshalb versuchen, einen kleinen FT8-Transceiver für das
40m-Band auf einer 100 mm x 80 mm großen Platine zu bauen. Ich verwende
dazu eine durchgehende Kupferfläche und kleine Abschnitte einer
Streifenrasterplatine, die mit Drahtstücken aufgelötet werden. Damit
erreicht man eine gute Masseführung und die nötige mechanische
Stabilität. Außerdem ist der Aufbau sehr flexibel. Ich kann einfach mal
anfangen, auch wenn ich noch nicht alle Stufen genau überblicke. Bisher
ist nur festgelegt, dass ein Ardunino-Nano-Clone zum Einsatz kommen
soll und das SI5351-Board von Adafruit. Zum Start wurden die
Audiobuchsen und der Arduino montiert.
Das Blockschaltbild zeigt alle Stufen des Transceivers.
Als erstes habe ich den PLL-Baustein SI5351 mit dem Arduino verbunden.
Dazu werden nur drei Leitungen gebraucht, zwei für den I2C-Bus und eine
für die Betriebsspannung 5 V. Auf der Platine von Adafruit ist ein
3,3-V-Spannunsgregler für den PLL-Chip.
USB-Stecker rein, ein vorhandenes Beispiel in den Arduino geladen,
erster Test. An CLK1 messe ich ein Signal. Soweit funktioniert es. Als
nächstes folgt nun der Modulationseingang mit seinem Tiefpassfilter.
Die Dimensionierung ist nicht kritisch und wurde entsprechend den
vorhandenen und gut passenden Bauteilen geändert. Die Hilfsspannung von
3,3 V zur sichern Erkennung des Endes einer Übertragung habe ich mir
vom SI5351 und seinem Spannungsteiler geliehen. Ein RC-Filter mit 10 k
und 10 nF hat eine Grenzfrequenz von 1,6 kHz. Zwei zusammen liegen dann
knapp über 1 kHz. Das bedeutet, dass höhere Frequenzen nahe 2,5 kHz
bereits 5-fach geschwächt werden. Wegen der hohen Empfindlichkeit des
Komparators ist das jedoch unproblematisch. Bei 2,5 kHz reicht eine
Modulationsspannung von 100 mV zur Ansteuerung des Senders.
Jetzt fehlt nur noch die Firmware. Dazu brauchte ich nur mein Programm
für das SDR-Shield passend kürzen. Zusätzlich habe ich die LED am Pin
13 auf dem Arduino verwendet, um den Sendebtrieb anzutzeigen.
//FT8QRP
#include "si5351.h"
#include "Wire.h"
Si5351 si5351;
unsigned long freq;
void setup(void)
{
freq= 7074000;
word cal_factor = 0;
si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);
si5351.set_correction(cal_factor, SI5351_PLL_INPUT_XO);
si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
si5351.set_freq(freq*100ULL, SI5351_CLK1);
si5351.output_enable(SI5351_CLK1, 1);
si5351.set_freq(freq*100ULL, SI5351_CLK0);
si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_8MA);
si5351.output_enable(SI5351_CLK0, 0);
TCCR1A = 0x00;
TCCR1B = 0x01; // Timer1 Timer 16 MHz
TCCR1B = 0x81; // Timer1 Input Capture Noise Canceler
ACSR |= (1<<ACIC); // Analog Comparator Capture Input
pinMode(7, INPUT); //PD7 = AN1 = HiZ, PD6 = AN0 = 0
pinMode(13, OUTPUT);
}
void loop(void)
{
// Modulationsfrequenz messen über Analog Comparator Pin7 = AN1
unsigned int d1,d2;
int FSK = 10;
int FSKtx = 0;
while (FSK>0){
TCNT1 = 0;
while (ACSR &(1<<ACO)){
if (TCNT1>65000) {break;
}
} while ((ACSR &(1<<ACO))==0){
if (TCNT1>65000) {break;}
}
TCNT1 = 0;
while (ACSR &(1<<ACO)){
if (TCNT1>65000) {break;}
}
d1 = ICR1;
while ((ACSR &(1<<ACO))==0){
if (TCNT1>65000) {break;}
}
while (ACSR &(1<<ACO)){
if (TCNT1>65000) {break;}
}
d2 = ICR1;
if (TCNT1 < 65000){
unsigned long codefreq = 1600000000/(d2-d1);
if (codefreq < 350000){
if (FSKtx == 0){
digitalWrite(13,1);
si5351.output_enable(SI5351_CLK1, 0); //RX off
si5351.output_enable(SI5351_CLK0, 1); // TX on
}
si5351.set_freq((freq * 100 + codefreq), SI5351_CLK0);
FSKtx = 1;
}
}
else{
FSK--;
}
}
digitalWrite(13,0);
si5351.output_enable(SI5351_CLK0, 0); //TX off
si5351.output_enable(SI5351_CLK1, 1); //RX on
FSKtx = 0;
}
Der Direktmischer
Der Empfänger in diesem QRP-Transceiver soll ein einfacher
Direktmischer werden. Dafür würde man üblicherweise eine NE612 nehmen,
aber dieses IC ist nur noch schwer zu bekommen. Ein Balancemischer
dieser Art ist aber auch in vielen Radio-Chips eingebaut. Ich habe mich
für den CD2003 entscheiden, den ich gut kenne, weil ich ihn auch für
den Fledermausdetektor eingesetzt habe. Man kann sich am Datenblatt orientieren und muss sich nur alles wegdenken, was man nicht braucht.
Im ersten Versuch habe ich den CD2003-Direktmischer auf einer Steckplatine aufgebaut ...
... und provisorisch mit dem PLL-Chip SI5351 verbunden. Der Test zeigt gute Empfangseigenschaften.
Dann habe ich den Empfänger möglichst kompakt auf zwei Rasterstreifen aufgebaut...
... und schließlich in das Gerät eingesetzt.
Der Eingangskreis verwendet die Spule aus dem Franzis KW-Radio. Die
Antenne ist über einen kleinen Kondensator angeschlossen. Zusätzlich
gibt es einen Diodenbegrenzer. Damit soll es später möglich werden, den
Antennenanschluss direkt an den Ausgang der Sendeendstufe anzuschließen
und kein Antennenrelais einzusetzen. Das Oszillatorsignal mit 7074 kHz
wird an einen 100-R-Widersatnd am AM-Oszillatoreingang des Radio-ICs
gelegt. Am Mischerausgang Pin 4 würde normalerweise ein ZF-Filter
angeschlossen. Beim Betrieb als Direktmischer erscheint hier das
NF-Signal. Der Pegel passt gut zum direkten Anschluss an die
Soundkarte.
(Ein Hinweis von Wolfhard Röhr: Die Empfindlichkeit des Empfängers
stieg deutlich an, wenn der Koppelkondensator zum VFO auf 1,5 pF
verkleinert wurde. Meine Versuche mit dem RX2003 bestätigen, dass die
VFO-Amplitude nicht zu groß sein sollte. Ich habe dort einen
Spannungsteiler mit 1k/100R eingesetzt. Man kann also in diesem Fall
besser 1 k in Reihe schalten. Mit ist jetzt aufgefallen, dass ich im
FT8-TRX auch schon mit 330 R in Reihe experimentiert hatte.)
Ein Empfangsversuch zeigt, dass der Empfänger gut funktioniert. Gegen
Mittag waren zwar weniger Stationen zu empfangen als am Abend, aber
alle Ergebnisse sehen aus wie gewohnt. Damit die die Empfängerstufe des
Transceivers einsatzbereit.
Die Sendeendstufe
In der Sendeendstufe will ich den bewährten Power FET IRF720
einsetzen. Zusätzlich ist allerding noch eine Treiberstufe nötig. Ich
wollte schon länger mal ausprobieren, ob man dazu einen MOSFET-Treiber
MCP14E8-E/P einsetzen kann. Das IC habe ich eigentlich mal für einen
Motortreiber gekauft, und es ist eigentlich nicht für HF gedacht. Aber
es hat Anstiegszeiten von 23 ns bei einer Lastkapazität von 1000 pF. Da
müsste es bei 7 MHz gerade noch gehen. VDD darf maximal 20 V sein, mehr
als genug, um einen Power-FET anzusteuern.
Der erste Vorversuch lief wieder auf einer Steckplatine. Ich konnte
feststellen, dass das Treiber-IC sich redlich mühen musste, um die 7
MHz zu schaffen. Der Betriebsstrom steigt mit der Frequenz und der
Betriebsspannung. Mehr als 9 V sollte man vermeiden. Aber schon ab 6 V
wird der FET sauber durchgesteuert. Der MCP14E8 enthält einen
invertierenden und einen nicht invertierenden Treiber. Nur mit dem
invertierenden Treiber war die Ansteuerung optimal. Der andere
produzierte längere High-Signale als Low-Signale. Für die Versuche habe
ich verschiedene Widerstände im Drain-Kreis des FETs verwendet. Einer
ging völlig in Rauch auf, was für eine HF-Endstufe ein gutes Omen ist.
Jetzt ist die Endstufe in den Transceiver eingebaut. Der Power-FET hat
zwei kleine Kühlkörper bekommen, die eigentlich mal für einen Raspberry
vorgesehen waren. Zur 12V-Stromversorgung gibt es eine Netzteilbuchse.
Ein Spannungsregler 7808 liefert stabile 8 V für den FET-Treiber. Weil
der invertierende Treiber im Ruhezustand ein High-Signal liefert, ist
eine C-Kopplung nötig. Ein Spanungsteiler mit 4,7 k und 6,8 k legt die
Vorspannung beim Senden auf +2 V. Die Vorspannung wird beim Senden vom
Ausgang D13 des Arduino eingeschaltet.
Der Ausgangsübertrager der Eintakt-Endstufe verwendet einen
Doppellochkern. Primär hat er drei Windungen aus dickem Draht mit 0,6
mm, sekundär sechs Windungen mit dünnerem Draht. Damit wird die
Spannung im Verhältnis 1 : 2 und die Impedanz im Verhältnis 1 : 4
transformiert. Bei einer Ausgangslast von 50 Ohm sieht der Transistor
12,5 Ohm.
Nachfolgend sorgt ein Tiefpassfilter für die nötige Oberwellendämpfung.
Die Filterspulen haben ca. 0,5 µH. Ich habe zehn Windungen CuL 0,2 auf
eine LED als 5-mm-Wickeldorn gewickelt und dann eine elfte Windung so
um das Bündel geschlungen, dass die Wicklung mechanisch stabil bleibt.
Die äußeren Kondensatoren haben 560 pF, der mittlere 1500 pF.
Diese Werte sind nicht berechnet, sondern im Vergleich zu vorher
gebauten Filtern geschätzt. Eine Messung zeigte, dass das Filter für 7
MHz gut funktioniert.
Am Ausgang liegt der dreipolige Pfostenstecker, der inzwischen zu einem
Quasi-Standard für meine HF-Experimente geworden ist. Die äußeren Pinne
liegen an Masse, der mittlere trägt das Signal. Der Stecker ist damit
unverpolbar. Der Antenneneingang des Empfängers liegt direkt am Ausgang
des Übertragers. An der Stelle steht beim Senden eine HF-Spannung bis
ca. 20 V, die am Empfängerkreis durch zwei Dioden auf ca. 0,6 V begrenz
wird, Weil der Koppelkondensator nur 4,5 pF hat, fließt nur ein
geringer HF-Strom, sodass kaum Leistung verloren geht. Im Empfangsmodus
ist der Power-FET vollständig gesperrt und für den Empfänger ohne
Wirkung. So kommt man ohne einen eigentlichen Antennenumschalter aus.
Zur Messung der Ausgangsleistung habe ich mir eine kleine Dummy Load
gebaut. In der Bastelkiste fanden sich mehrere Widerstände mit 75 Ohm.
Jeweils drei Widerstände parallel und zwei Blöcke in Reihe kommen auf
50 Ohm. Mit dem Oszilloskop konnte ich dann die Spannung am
Lastwiderstand messen. Gemessen wurde eine Amplitude von 15 V. daraus
ergibt sich eine Leistung von 2,25 W. Eigentlich hatte ich etwa 5 W
angezielt. Aber 2 W reichen auch, wie ich schon mit dem SDR-Transceiver
feststellen konnte.
Hier das Zielfoto des ersten erfolgreichen QSOs, das ich mit diesem
QRP-Transceiver gefahren habe. Die erreichte Station steht in England,
zwischen Liverpool und Manchester, 689 km von Essen entfernt. Der
kleine Transceiver hat damit seinen ersten Praxistest bestanden.
Der Aufbau von Richard DL9OBU
Vielen Dank für deinen Bauvorschlag zu einem FT8 QRP Projekt. Ja, ich
habe es sofort nachgebaut. Er läuft ufb, ich habe viele Europa-QSOs
geführt und wieder viel Spaß am Amateurfunk gefunden. RX schon bis
Argentinien, und QSOs bis 2000km an einer Fuchskreis-Antenne.
Dieser Qrp TXRX ist der einfachste den ich je gebaut habe. Ich habe
wohl einen schlechten Doppellochkern und bekomme nur 750 mW, egal geht
trotzdem superklasse.
Zum Artikel in CQDL 3-2021
Den FT8-QRP-Transceiver habe ich in der CQ-DL vorgestellt. Nach dem
Erscheinen im März-Heft 2021 ist das Projekt auf reges Interesse
gestoßen. Heiko, DL2VER schrieb mir dazu: Beim TX ergibt sich bei mir
die Frage, inwieweit sich die Vorspannung des FET auf die Leistung
auswirkt? Im Text im CQ DL steht 4,7 k/6,8 k, im Schaltplan sind es
dann 5,6 k/4,7 k. Jetzt schreibt ja DL9OBU, dass er "nur" auf 0,5 Watt
Output kommt. Ist das evtl. die Ursache? Bzw. sollte eher auf 2 V
Vorspannung eingestellt werden? Im Probeaufbau wäre ja probeweise ein
Widerstandstrimmer für die Festlegung des Arbeitspunktes leicht
einzubauen.
Tatsächlich ist die Vorspannung kritisch und beeinflusst die
Ausgangsleistung deutlich. Man muss aufpassen, dass man nicht zu hoch
geht und der Transistor heiß wird. Ein Trimmer wäre sinnvoll, auch um
Streuungen der Transistoren auszugleichen. Übrigens habe inzwischen mit
gutem Erfolg auch mal den IRF510 eingesetzt.
CAT control support by Lajos Höss, HA8HL
Download ft8qrp_cat11.ino
I tried
your code and it works and I have made many QSOs successfully. Not only FT8 but
WSPR and JT65 too. The Covid
19 lock down has been a big problem for me, I cannot go to my main QTH and I do
not have access to my main rig either. It is also quite difficult for me to
source proper components, I mainly salvage parts from old PCBs. I built a very
simple direct receiver based on https://www.qsl.net/pa2ohh/09qrx1.htm. The vfo
was modified to use a SI5351A and your code. This receiver is using Polyakov's
mixer where the RX VFO is driven by half of transmit frequency.
The
transmitter stage is my own design based on BD329 transistor Class A
amplifier
and 74AC14. It was extremely difficult to make the stage output signal
clean
enough to comply with legal limits. I tried many designs with MOSFET
but
without any success. Ringing, instability occurred all the time with
low pass
filter and dummy load. The transistor-based transmitter is stable and
clean
with low pass filter. All harmonics and spurs bellow 50 dbc. This
transmitter
is very basic and experimental but works. The output power of my
transmitter with BD329 on different bands are: 80m – 3.4 watt, 40m –
3.4 watt, 30m – 1.8 watt, 20m – 1.4 watt.Currently I only have low pass
filter for these bands, I made them plug-in style. No relays involved.
I have a
problem with your code, at low audio frequency or high audio frequency it does
not work. I do not understand enough your code. I think low frequency overflows
the timer counter and the carry is not used. With high frequency I think the
resolution of one cycle sine wave is not enough for precise frequency
measurement. I am not a programmer, I cannot verify/modify the frequency
measuring routine. Any help is highly appreciated. I think many other FSK based
mode is supportable if low / high frequency problem is solved. At around 1500
Hz the original code works fine. (B.K.: My trx works between
500 Hz and
about 2 kHz. Below 500 Hz there will be an overflow resulting in
a completely wrong
output. And at higher frequencies it will work less exactly.)
Partially
working CAT control support added to your code. The fake split mode is working
now and the audio frequency is always between 1500-2000 Hz. The Arduino code
emulates basic Kenwood TS-2000 TRX now. It works with Wsjtx hamlib and Flrig.
Flrig requires disabling many unused CAT command polling. I have simple
computer controllable VFO now. SSB voice receive is also supported.
See
attached code. The code based on this (http://wa6pzb.blogspot.com/2015/03/prototype-radio-iv-cat-control.html?m=1), but modified to TS-2000 and
your design + half frequency receiver. I have many problems, I tried to debug
it with logic analyser and the help of the TS-2000 reference manual. I think
wsjtx hamlib code has some bugs or I have a mistake somewhere in my code, which
I could not figure out yet. The code works, but sometimes it crashes or a bad
frequency shift is being computed. Sometimes the frequency measuring code on TX
start or stop becomes invalid data, so I lowered with the code the limit
frequency range. For example 100 Hz is not an acceptable modulation frequency
input.
FT8-Transceiver für 40/30/20m von Rudi Frank, DL4NDM
Ich habe im Keller noch die Elektorplatine des DRM-Empfängers gefunden
und den so umgebaut, dass er quasi auf 0 Hertz heruntermischt. Das
Doppelsuper-Prinzip habe ich also belassen. Der Si5351 liefert auch die
passenden zwei Mischfrequenzen. Das geht prima. Als Sender habe ich
eine Class-E Endstufe gefunden aus dem QRP Labs für deren CW QRP TRX.
Ich habe nach dem ersten Erfolg auf 40m noch die Endstufen für 30m und
20m dazugebaut. Mit Treiber-ICs 74S00 (!) ist die Ansteuerung recht
schön und der Transistor dazu ist ein IRLR110, damit komme ich locker
auf 10W Ausgangsleistung bei guten 20V. Es reichen die rustikalen
Kupferkühlkörper, die so unordentlich aussehen. Aber mit
SMD-Transistoren ist es halt schwierig. Die drei Bänder verkraftet
meine Magnet-Loop Antenne mit einem dickeren Drehko. Auch das CAT
Interface habe ich zum Laufen gebracht, brauche ich eigentlich nicht.
Mit Jumper setze ich die Frequenzen für den Si5351 um.
Download: ft8_cat_40m_20m_06.zip
Ich habe eine gute Weile an der Periodendauermessung gearbeitet bis sie
endlich stabil funktioniert hat. Zunächst hat jede kleine
Programmänderung die Messung beeinflusst. Ich messe jetzt nacheinander
zwei volle Sinusschwingungen, addiere die beiden Zeiten und rechne dann
die Frequenz aus, dabei wird gleichzeitig die Summe halbiert.
Höhere Bänder von Klaus, DJ7OO
Mit Interesse hatte ich den Beitrag "Ein FT8-QRP-Transceiver" im CQ-DL
3/2021 gelesen. Nachdem es mir dabei speziell um die gewählte
Modulationsmethode ging, benutzte ich bei mir bereits vorhandene Boards
mit Atmega328-Prozessor und Si5351 um mit ihnen ( erst einmal ohne
zusätzliche Endstufe ) erste Übertragungsversuche durchzuführen. Die
bereitgestellte Firmware war nach geringer Anpassung dabei auch im 28
MHz-Bereich nutzbar. Probleme gab es allerdings in den mich speziell
interessierenden 50 MHz- und 70 MHz-Bereichen. Hier gelang das erst nach
Umstellung der Datentypen für "freq" und "cal_factor" auf "uint64_t".
Nach dieser Umstellung konnten einwandfrei decodierbare FT8-Signale auch
in den genannten Bändern generiert werden. Versuche mit passenden PA's
habe ich bisher allerdings noch nicht durchgeführt, sind aber geplant.
Gedanken habe ich mir auch in Richtung eines Konzeptes für einen
kompletten Transceiver für die Bänder 10m bis 4m gemacht. Nachdem das
mit nur dem CD2003 in der bisherigen Schaltanordnung kaum möglich sein
dürfte, kam die Idee, ihn lediglich zur Weiterverarbeitung von Signalen
auf einer ZF-Frequenz von z.B. 10.7 MHz zu nutzen. Mithilfe der
ursprünglich für den FM-Empfang vorgesehehen Baustufen eines zweiten
CD2003 könnte dabei die Mischung der jeweiligen FT8-Empfangssignale in
die genannte ZF-Lage erfolgen. Leicht würden sich hierfür auch die
erforderlichen Programmänderungen für die RX-Mischfrequenzen durchführen
lassen. Des Weiteren könnte eine kleine Programmerweiterung bewirken,
dass sich über den bisher unbenutzten CLK2-Ausgang des Si5351 auch noch
die 10.7 MHz-Signale erzeugten liessen, so wie sie jetzt beim
ursprünglichen CD2003 zur Mischung in die Tonfrequenzlage benötigt werden.
Die Schaltbildidee zeigt einen einfachen RX im Bereich bis etwa 75 MHz.
Der erste Mischer nach 10.7 MHz verwendet dabei die beim CD2003
ansonsten für den FM-Rundfunkempfang gedachten IC-Baustufen.
Für eine FT8-Nutzung würden sich z.B. folgende Frequenzkonstellationen ergeben:
10m-Band: Fin: 28.074 MHz; Fosc ( CLK1 ) : 17.374 MHz
6m-Band: Fin: 50.313 MHz; Fosc ( CLK1 ) : 39.613 MHz
4m-Band: Fin: 70.154 MHz; Fosc ( CLK1 ) : 59.454 MHz
Im zweiten CD2003 soll eine Mischung in die NF-Frequenzlage erfolgen.
Hierzu ist die Steuersoftware für den Si5351 noch dahingehend zu
erweitern, dass der ( derzeit noch unbenutzte ) Ausgang "CLK2"
eine Frequenz von 10.7 MHz bereitstellt.
Nachtrag 11/22: Beim FT8-RX für den oben KW- und unteren VHF-Bereich
gibt es einige Neuigkeiten. So habe ich für die Version mit den 2xCD2003
inzwischen ein Layout mit integriertem Si5351 und NANO erstellt, so dass
daraus ein eigenständiger RX wurde. Mit einer aufgebauten 6m- und in den
letzten Wochen besonders auch einer 10m-Band-Version konnten schon
unzählige FT8-Stationen aus aller Welt empfangen werden. Zur Zeit bin
ich auch noch an einer Version mit zusätzlichem Drehgeber zur Abstimmung
und OLED-Display zur Frequenzanzeige. Mit einem einfachen
vorgeschalteten Converter wird die Anordnung dann auch noch
QO-100-Empfang ermöglichen. Erste Vorversuche verliefen schon sehr
erfolgreich. Hier die entsprechende ( noch nicht ganz fertige ) Seite:
http://www.kh-gps.de/cd2003_rx.htm
Nachdem ich in den letzten Jahren auch ständig mit den
Frequenzungenauigkeiten der Si5351 "gekämpft" hatte, war es an der Zeit,
dagegen etwas zu unternehmen. So entstand auch noch das Programm
"Calfinder", mit dem sich auf einfache Weise die für den Programmcode
jedes einzelnen Si5351 Exemplares benötigten Cal-Werte ermitteln lassen.
Vielleicht kann das auch irgendwo anders nützlich verwendet werden.
http://www.kh-gps.de/calfinder.htm