Universal-VFO 10 KHz-160 MHz mit Quasi-Analogskala
nach JF3HZB
( in Bearbeitung )

Version vom 29. Januar 2024 ( NEU: mit Hinweisen zu Kompilierungsproblemen )

automatic translation by GOOGLE :
https://www-kh--gps-de.translate.goog/vfo.htm?_x_tr_sch=http&_x_tr_sl=de&_x_tr_tl=en&_x_tr_hl=de&_x_tr_pto=wapp


Abb.1 VFO-Gesamtansicht

Kürzlich "stolperte" ich im Internet über ein von JF3HZB aus Japan stammendes ESP32-Projekt, bei dem es sich um einen universell verwendbaren Digital-VFO handelte, dessen Besonderheit darin bestand, dass ein TFT-Display benutzt wurde, um darauf eine quasi analoge Frequenzanzeige zu simulieren. Interessante Anwendungen schienen mir damit u.a. Mischoszillatoren in Verbindung mit allen Arten von Sendern, Superhetempfängern oder auch Messgeneratoren zu sein. Hinsichtlich ihrer Nutzung kann man dabei besonders auch an Fälle denken, bei denen derzeit noch mechanische Abstimmeinheiten Verwendung finden. Die Frequenzerzeugung als solche erfolgt bei diesem Projekt mit Hilfe eines PLL-Bausteins Si5351a und ermöglicht die Abdeckung eines weiten Frequenzbereiches von wenigen Kilohertz bis weit über 160 MHz.
Die VFO-Originalsoftware von JF3HZB ist zur Nutzung mit einem Amateurband-Superhetempfänger mit einer ZF von 9 MHz gedacht. Dabei kommen alle drei verfügbaren Signalausgänge des Si5351a zum Einsatz. Über den Ausgang CLK2 werden dabei jeweils 8998,5 Khz oberhalb der auf dem Display angezeigten Frequenz liegende Oszillatormischsignale ausgegeben. Weiterhin werden die Ausgänge CLK1 und CLK0 benutzt, um hierüber zwei untereinander in der Phase verschobene und für BFO-Nutzung gedachte fixe Mischsignale mit ebenfalls 8998,5 KHz bereitzustellen.

Abb.2 Musteraufbau mit Ansicht von oben

Erweiterte Version

Obwohl ich bereits die Originalversion mit ihrer simulierten analogen Skalenanzeige optisch als sehr reizvoll empfand, vermisste ich dennoch einige zusätzliche Funktionen. Daher begann ich mich etwas näher mit dem vom Verfasser dankenswerterweise bereitgestellten Programmcode [1[ zu beschäftigen und ihn entsprechend meiner Vorstellungen zu ändern, bzw. zu erweitern. Via CLK2 sollten dabei erst einmal auch nur die auf dem Display angezeigten Frequenzen ausgegeben werden, wofür der Wert "offset_frq" auf Null zu setzen war. Ebenso war mit dem Wert "car_frq" zu verfahren, was eine Sperre der zumindest vorerst nicht benötigten BFO-Signale an den Ausgängen CLK0 und CLK1 bewirkte.
Softwaremäßig hinzugefügt wurde dagegen eine Auswahlmöglichkeit für die bei Abstimmung mit einem Drehimpulsgeber* benutzten unterschiedlichen Frequenzschritte. Verfügbar sind danach 6  Schrittweiten beginnend von minimal 10 Hz bis maximal 1 MHz. Ihre Anwahl erfolgt über die Tasten "T1" ( -Step  ) und "T2" ( +Step ). Bei Inbetriebnahme wird hierbei immer eine mittlere Schrittweite von 1 KHz vorgewählt.

* In der Originalversion kommen an dieser Stelle ( wesentlich teurere ) optoelektronische Versionen zum Einsatz. Im Gegensatz zu ihnen, kann es bei Verwendung der hier stattdessen benutzten  Standard-Drehimpulsgeber u.U. zu kleinen Abweichungen bei den einzelnen Abstimmschritten kommen.

               mögliche Abstimmschritte ( STEPS ):
       10 Hz; 100Hz; 1 KHz; 10 KHz; 100 KHz; 1 MHz

Abb.3 noch mit alter Platine: Musteraufbau mit Ansicht von der Unterseite ( anklicken für Grossdarstellung )

Weiterhin hinzugekommen ist eine schnelle Anwahlmöglichkeit für 9 Memorykanäle. Entsprechend der Wünsche des Nutzers lassen sich hierzu beliebige Frequenzen fest im Programmcode abgelegen. Ihre Anwahl erfolgt über die Taste "T3". Dazu kommt eine zehnte, zum Aufruf der jeweiligen VFO-Startfrequenz reservierte Einstellung.

Um auch bei erneuten Inbetriebnahmen wieder zur vorher zuletzt genutzten VFO-Frequenz zurückkehren zu können, lässt sich diese abspeichern. Dazu ist nur der mit dem Drehimpulsgeber verbundene Taster kurz zu betätigen. Bis zu einer evtl. späteren Überschreibung ist diese danach dauerhaft als Startfrequenz verfügbar.


Abb.4 VFO-Gesamtschaltbild

NEU hinzugekommen ( und im Schaltbild Abb.4 noch nicht verzeichnet ) ist eine einfache Möglichkeit zur Richtungsumkehrung beim Drehimpulsgeber. Zur Umkehrung ist der Porteingang "19" mit Masse zu verbinden, wobei diese Funktion allerdings erst nach einem Neustart des Programmes wirksam wird.

NEU ist ebenfalls, dass sich dieser VFO jetzt zudem verwenden lässt, um mit ihm einen einfachen LW/KW-Direktmischempfänger aufbauen zu können [7]. Lückenlos deckt dieser dabei die Bereiche 135-550 KHz und 3.4-14.5 MHz ab und beruht dabei weitgehend wieder auf den schon in [5] und [6] beschriebenen Empfängerkonzepten. Die hierfür benutzte Empfängerplatine besitzt identische Abmessungen zur VFO-Version und ist mit dieser somit sehr einfach zu einer funktionalen Einheit zusammenfügbar. In diesem Zusammenhang neu hinzugekommen ( aber im Schaltbild Abb.4 noch nicht eigezeichnet ) ist die Nutzung des Ports "4" als Steuerausgang zur Umschaltung zwischen beiden möglichen Empfangsbereichen.

4 weitere Ports des ESP32 ( "12, 13, 14 und 33" ) sind für eventuelle spätere Erweiterungen vorgesehen und derzeit unbenutzt. 


Frequenzfeinkorrektur

Die Frequenzgenauigkeit des VFO's wird im Wesentlichen durch den zum Si5351a-Baustein gehörenden  (25MHz-) Steuerquarz bestimmt. Bei ihm handelt es sich um eine Standardversion, deren begrenzte Genauigkeit sich dabei auch abhängig von der erzeugten Frequenz negativ bemerkbar macht. Eine Korrektur kann durch Änderung des im Library-Unterprogramm "Si5351.cpp" zu findenden Wertes für "#define fxtal" erreicht werden. Dazu ist dieser vorher allerdings noch entsprechend der tatsächlichen Quarzfrequenz des verwendeten Einzelexemplars anzupassen. Hierfür ist der im Ursprungscode zu findende Wert von "25000000" gegen einen neu zu ermittelnden zu ersetzen. Dafür muss aber zuerst einmal die durch die Ungenauigkeit des Quarzes bewirkte Differenz zwischen der am Display angezeigten und der tatsächlich generierten VFO-Frequenz ermittelt werden. Vorzugsweise und auf einfachste Weise kann das mit einem möglichst genauen Frequenzzähler geschehen. Wenn nicht verfügbar, kann behelfsmäßig auch ein Empfänger ( nicht FM ) benutzt werden. mit dem ein in seiner Frequenz bekannter Sender ( z.B. eine Bake im 2m-Band ) empfangen und dabei ein Schwebungsnull mit dem Signal unseres VFO's erzeugt wird. Danach ist die so festgestellte Differenz zwischen bekannter Sender- und angezeigter VFO-Frequenz festzuhalten. Durch schrittweise Änderung des in "define fxtal" einzutragenden Wertes, lässt sich dann die Abweichung zwischen Soll- und Istfrequenz des VFO sukzessive minimieren.

TIPP: Nachdem sich die durch die Ungenauigkeit des si5351-Steuerquarzes bedingten Frequenzfehler umso stärker bemerkbar machen, je höher die vom VFO generierte Frequenz ist, ist es ratsam, die  Ermittlung des Ablagefehlers bei einer möglichst hohen eingestellten VFO-Frequenz durchzuführen. Daher bin ich dazu übergegangen, hierfür eine solche um 145 MHz zu wählen.


Nachbau

Zur Vereinfachung des VFO-Nachbaus wurde ein Platinenlayout entworfen. Nachdem besonders der Einbau der ESP32-Bausteine dabei allerdings nicht optimal gelöst war, entstand mit Unterstützung von Dirk Ruffing, DH4YM inzwischen eine neue, bei ihm auch erhältliche [2] durchkontaktierte Version mit der Bezeichnung: "DJ7OO_VFO_1d.lay6" ( siehe dazu auch die Bilder 5 und 6 auf dieser Seite ).
Näheres zu den sonstigen verwendeten Bauteilen incl. Hinweisen auf mögliche Bezugsquellen liefert die folgende Tabelle:

Stückzahl
Bauteilbezeichnung
mögliche Bezugsquellen
1
ESP32-Prozessorboard  Node MCU ( gem. Abbildung )
div. ( China- ) Anbieter, AZ-Delivery
1
1.8"-TFT-Display ( gem. Abbbildung )
div. ( China- ) Anbieter, AZ-Delivery
1
Drehimpulsgeber z.B. STEC12E08 ( ALPS )
Reichelt
1
Si5351-Board ( gem. Abbildung )
div. ( China- ) Anbieter
3
Kurzhubtaster z.B. 3301B ( JTP-1130 )
Reichelt
3
Widerstand 1/4W  2x 2200 Ohm ; 1x68 Ohm
div.

Tabelle 1

Aufgrund der Durchkontaktierung sind alle vormals erforderlich gewesenen Drahtbrücken inzwischen entfallen. Bei der Platinenbestückung ist aber zu berücksichtigen, dass der Widerstand R1 teilweise vom TFT-Display abgedeckt wird. Somit ist er zumindest bei Festeinlötung des Displays vorher noch zu bestücken.

TIPP: Wer ESP32-Board und/oder TFT-Display steckbar einbauen möchte, dem sei die Verwendung der schmalen 20pol. Steckleisten gem. Abb. empfohlenen, wobei diese je nach Anwendung noch entsprechend zu kürzen sind. Bei Fa. REICHELT sind sie unter der Bezeichnung: "BL 1X20G 2,54" erhältlich.    


schmale 20pol. Steckleiste

Die aktuelle Softwareversion kann unter [4] heruntergeladen werden.


  Abb.5  Layout der Oberseite "DJ7OO_VFO_V1d.lay6"  ( erstellt mit Sprint-Layout 6.0 )

 
Abb.6  Layout der Unterseite "DJ7OO_VFO_V1d.lay6"  ( erstellt mit Sprint-Layout 6.0 )
Anm: Bestückung des ESP32-Bausteins erfolgt auf dieser Seite


bei Kompilierungsproblemen
Nachdem bei IDE-Nutzung zu Beginn dieser Veröffentlichung kaum Kompilierungsprobleme auftraten, häuften sich diese in letzter Zeit. Dabei kam es z.B. zu Fehlermeldungen wie den Folgenden:    
>>>> section `.dram0.bss' will not fit in region `dram0_0_seg'
>>>> DRAM segment data does not fit.
>>>> region `dram0_0_seg' overflowed by xxxx bytes

Was mögliche Problemlösungen betraf, war ich danach zugegebenermassen erst einmal etwas ratlos, hörte mich aber bei ESP32-Spezialisten um. Dabei erhielt ich den Ratschlag, es in diesem auch etwas speziellen Fall einmal mit der Nutzung älterer Versionen der ESP32-Library zu versuchen. Gesagt getan, wechselte ich von der bei mir installierten Version "V2.14" auf "V2.05". Nachdem das allerdings noch nicht den gewünschten Durchbruch brachte, versuchte ich es danach mit der letzten, die Bezeichnung "V1.06" tragenden  V1-Version. Sofort waren die Fehlermeldungen verschwunden.

Zum Wechsel der ESP32-Library-Versionen ist im Detail folgendermassen vorzugehen: In der IDE ist nach Aufruf von: "Werkzeuge/Board/Boardverwalter" ein Doppelklick auszuführen und im erscheinenden Eingabefenster der Suchbegriff "esp32" einzugeben. Dabei sollte unter den möglichen Suchergebnissen auch "esp32 Espressif" mit Angabe der aktuell installierten Version zu finden sein. Zu deren Überschreibung lassen sich jetzt auch ältere Versionen anwählen, wobei es, wie schon oben erwähnt, bei mir die Version "V1.06" war.

Linkliste

[1] https://github.com/tjlab-jf3hzb/Digital_VFO_with_analog_dial
[1a] https://github.com/tjlab-jf3hzb/Digital_VFO_with_analog_dial_V2
[2] https://www.dh4ym.de/
[3] https://www.az-delivery.de/pages/search-results-page?q=esp-32
[4] http://www.kh-gps.de/vfo.zip
[5] http://www.kh-gps.de/fax-rx.htm

[6] http://www.kh-gps.de/lw-rx.htm
[7]
http://www.kh-gps.de/uni-rx.htm
[8] https://github.com/WA2FZW/It-s-Not-Just-Another-Digital-VFO-by-WA2FZW-VK3PE-and-G3ZQC

Nicht versäumen möchte ich eine Nennung der Seite von Rolf Sn. Auf ihr stellt er verschiedene, auf der Basis des JF3HZB-VFO's entstandene Varianten vor und liefert dazu auch Programmdaten im BIN- oder INO-Format sowie Platinenentwürfe. Durch Bereitstellung zugehöriger Batch-Dateien wird dabei das Programmieren der ESP32 mithilfe der BIN-Dateien zum Kinderspiel:   https://github.com/RSZ-Nld/VFO-1.8-Inch-Retro-scale




/