Liebe Freunde der Wellenbastelei,
Ich möchte Euch meinen «Besselin0» vorstellen. Ein FM Frequenzubmesser nach dem Prinzip der «Bessel Null» Methode (Quelle 1).
Das Prinzip ist wie folgt:
- Audioausgang wird mit dem Mikrofon verbunden.
- Antennenausgang über einen Abschwächer mit dem RF Eingang des Messgerätes.
- Das abgeschwächtes RF Signal wird auf eine IF von ~ 10.7 Mhz gemischt.
- Die IF geht durch ein ca. 250 Hz breites Ladder Quarzfilter.
- Danach wird das Signal verstärkt und geht in ein AD8307.
- Das DC Ausgangssignal des AD8307 wird einem AD Wandler des Arduino Nano’s zugeführt.
- Der Arduino steuert den SI5351, der das LO Signal erzeugt, den AD9833, der das NF Signal generiert und das LCD Display.
- Über die Bandtaste kann man zwei Bänder aussuchen: 2m (145.000.000) und 11m (27.205.000).
- Mittels der RF/NF Taste kann man auswählen, ob man die Filtermitte sucht, oder den NF Bereich durchläuft, um Bessel 0 zu finden.
- Mit der Sweep Taste wird der Scan gestartet.
Beispiel:
TRX auf 145.000.000 stellen.
Bandauswahl am Besselin0 auf 2m stellen.
RF Carrier Modus wählen, PTT drücken und Sweep starten.
Der SI5351 erzeugt ein Signal von 145 Mhz - IF - 500 Hz bis 145 Mhz - IF + 500 hz. Die Frequenz wird in Schritten von 5Hz verändert. Nach jeder Änderung misst der AD-Wander 35 mal mittels der Exponential Moving Average Methode (alpha = 0.2). Die LO Frequenz, bei der der höchste Wert gemessen wurde, wird gespeichert (rf_peak).
Dieser RF Sweep findet statt, um sicherzustellen, dass das Trägersignal genau in der Mitte des sehr schmalen Filters liegt (der SI5351 ist zwar kalibriert aber eben nicht temperaturstabil und auch das zu vermessende Funkgerät liegt vielleicht nicht genau auf der Frequenz)
Dann wechselt man auf den NF Bessel Modus. Das LO Signal wird automatisch auf die entsprechende rf_peak Frequenz angepasst. Bei einen NF Sweep wird der AD9833 eingeschaltet und die NF Frequenz wird von 400 Hz bis 2.5 Khz (2 Khz im 11m Bereich) ebenfalls in 5Hz Schritte durchgefahren (die PTT Taste ist natürlich wieder zu drücken). Diesmal merkt sich der Arduino allerdings die NF Frequenz mit dem tiefsten Wert. Der Audio Scan benötigt ca. 3 Sekunden.
Aus der NF Frequenz berechnet sich dann der FM Hub in Khz.
(FM Hub in Khz = 2.40483 * NF Frequenz bei welcher der Träger verschwindet / 1000)
Das Diplay zeigt das folgende an:
- Die RF Frequenz bei welcher der max. Peak gefunden wurde und den Eingangspegel in Prozent vom ADC Maximalwert.
- Den Frequenzhub in Khz und ebenso den Pegel in Prozent vom ADC Maximalwert.
Der SI5351 und der AD9833 wurden kalibriert.
Nach meiner Erfahrung liegt die Wiederholgenauigkeit der Messung mit 5 Hz Schritten und 35 ADC Zyklen bei ca. 0.02 Khz (rechnerisch bei 0.012 Khz mit 5 Hz Schritten).
Messung: mit "Narrow" Setting an einem Team Tecom Duo 2m/70cm Handfunkgerät
Messung: mit "Wide" Setting an einem Team Tecom Duo 2m/70cm Handfunkgerät
Technischer Teil:
- Der Mixer ist Pin kompatibel mit einem SBL-1 (gab es mal sehr günstig an der «Küste»).
- Das Ladder Filter ist nach meiner üblichen Methode «ich löte solange Kondensatoren an die Quarze, bis mir das Resultat auf dem FA-NTW2 gefällt» entstanden. Die Anpassung ist, sagen wir mal optimistisch «mässig» gelungen. Der Verlust ist recht hoch (–5 dB, wenn ich mich recht erinnere). Der 50 Ohm Abschlusswiderstand am Mixer machte den Verlust auch nicht besser, reduzierte aber die Mischprodukte laut meinem Tiny SA erheblich.
- Der RF Verstärker ist ein TIA AGC nach w7zoi (Quelle 2). Das AGC muss allerdings zwingend abgeschaltet sein. Ein solcher Verstärker lag schlicht zusammengebastelt in der «Ich mach irgendwann mal was ganz tolles damit»-Kiste.
- Der Arduino bekam eine externe 2.5 V ADC Referenz. Per Skript wird eine Spannung von 2.4 Volt als 100% angesehen.
- Der Audio-Buffer ist mit einem NE5534 aufgebaut.
- Dann gibt es noch einen p-MOS Reverse-Protection-Schussel-Schutz (Quelle 3).
- Das Skript ist zum grössten Teil mit ChatGPT o1 geschrieben.
Alles zusammen steckt in einem ELV Gehäuse.
Das Projekt startete schon vor einem Jahr. Damals noch mit Drehgeber und Analog Instrument um den Peak bzw. Null-Punkt zu finden. Die Software blieb aber immer wieder hängen und ich fand das Problem nicht. Vor einigen Wochen habe ich es dann auf den automatischen Scan Modus umgebaut. Lief toll, aber auf 2m crashte der Arduino sofort. Nach langer Diskussion mit ChatGPT wurde das Problem dann erkannt. Irgendwo ging verloren, dass die SI5351 Library die Frequenz doch gerne als Integer hätte, vorallem bei so grossen Zahlen wie im 2m Band. Nachdem dies korrigiert wurde, lief es.
Nun..., ich hätte auch einfach meinen Heathkit IM-4180 nehmen können, aber der ist eben in der anderen, noch viel grösseren Kiste, auf der steht: «ich kümmere mich irgendwann ganz sicher darum, was da nicht geht...».
Aber so ist das nun mal mit dem Basteln, es muss einfach nur Spass machen.
73 aus Basel,
Matthias
Quellen:
1) w2aew: How to measure FM Frequency Deviation without special equipment using Carrier / Bessel Null

2) Wes Hayward, w7zoi: Adding AGC to a Termination Insensitive Amplifier
https://w7zoi.net/tia+agc.pdf
3) afrotechmods: Wie schützt man Stromkreise vor umgekehrter Polarität?
https://www.youtube.com/results?search_query=reverse%20protection