Ein FT8-QRP-Transceiver    

Elektronik-Labor  Lernpakete  Projekte  HF  




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

 


Elektronik-Labor  Lernpakete  Projekte  HF