
HF-Generator und Morsegerät
Mit dem RPi Pico und seinen PWM-Einheiten lassen sich brauchbare
Hochfrequenz-Signalgeneratoren bauen. Damit kann man Empfänger testen,
Frequenzskalen kalibrieren und auch Sender und Empfänger steuern. Für
höchste Genauigkeit einer Ausgangsfrequenz von 10 MHz muss man die
verwendete Systemfrequenz beachten. Im Normalfall verwendet MicroPython
die Taktfrequenz 125 MHz, die über eine PLL und Nachteiler von der
Quarzfrequenz 12 MHz abgeleitet wird. Wählt man aber ein ganzzahliges
Vielfaches von 10 MHz, bekommt man genauere und reinere Signale. Hier
wird mit machine.freq(80000000) eine Taktfrequenz von 80
MHz gewählt. Alle PWM-Frequenzen entstehen durch ganzzahlige Teilung
von 80 MHz.
#HFgen.py Generator und Eichmarkengeber
from machine import Pin, PWM, Timer
import time
machine.freq(80000000)
pwm0 = PWM(Pin(0))
pwm0.freq(10000000) #10 MHz
pwm0.duty_u16(32000)
pwm1 = PWM(Pin(2))
pwm1.freq(1000000) #1 MHz
pwm1.duty_u16(5000)
pwm2 = PWM(Pin(4))
pwm2.freq(100000) #100 kHz
pwm2.duty_u16(5000)
An GP0 entstehen 10 MHz. Hier wurde bei einem Pico eine Abweichung von
nur 3 Hz gemessen. Das Signal lässt sich zur Überprüfung von
Frequenzzählern verwenden. Zwei weitere Signale mit 1 MHz und 100 kHz
dienen als Eichmarken. Die PWM-Impulse wurden dazu stark verkürzt.
Während ein symmetri-sches Rechtecksignal nur ungerade Oberwellen
besitzt, die mit steigender Ordnungszahl schwächer werden, liefern die
kurzen Impulse auch gerade und ungerade Oberwellen bis zu sehr hohen
Frequenzen. Man erhält damit einen Lattenzaun mit Signalen im Abstand 1
MHz bzw. 100 kHz, die im ganzen Kurzwellenbereich bis mindestens 30 MHz
empfangen werden können. Damit lassen sich Empfänger überprüfen und
ihre Skalen justieren.
Morsegerät im 80m-Band
Kleine Sender im Kurzwellenbereich verwenden oft einfache
Quarzoszillatoren, wobei allerdings oft ein teurer Spezialquarz
gebraucht wird. Will man diesen programmierbaren HF-Generator für einen
Sender einsetzen, sollte man eine Frequenz wählen, die sich durch
ganzzahliges Dividieren aus einer glatten Frequenz zwischen 12,000 MHz
und 125.000 MHz ableiten lässt. Hier wurde die Frequenz 64 MHz /
18 = 3,555555 MHz eingestellt, die im CW-Bereich des
80-m-Amateurfunkbands liegt und sich für QRP-Sender eignet.
#HFgen2.py 3,555 MHz, 80 m
from machine import Pin, PWM, Timer
import time
machine.freq(64000000)
pwm0 = PWM(Pin(0))
pwm0.freq(3555000) #3555 kHz
#pwm0.freq(711000) #711 kHz
pwm0.duty_u16(33767)
Für einen ersten Test reicht es, einen Draht an GP0 anzuschließen, der
als Berührungskontakt dient. Durch eine Berührung mit dem Finger wird
der eigene Körper zu einer Antenne. Das Signal wird dann laut und
deutlich in einem CW-Empfänger wie z.B. dem 80m-Direktmischer hörbar. Der Kontakt kann direkt als
Morsetaste verwendet werden, um Texte zu übertragen.
Das Gerät kann als einfacher Morsegenerator zum Beispiel in
Amateurfunk-Kursen verwendet werden, wobei der Einsatz üblicher
Kurzwellenempfänger ein zusätzlicher Anreiz ist. Allerdings sollte in
diesem Fall ein wirksames Tiefpassfilter zur Unterdrückung
unerwünschter Oberwellen angefügt werden.
AM-Generator und Morsedekoder
Dieses Morsegerät ist zugleich ein Übungsgerät mit Morsetaste und
Mithörton und ein Morse-Decoder, der den gemorsten Test erkennt und an
den PC sendet. Auf der Steckplatine gibt es einen Taster als einfache
Morsetaste. Noch besser kann hier eine richtige Morsetaste
angeschlossen werden.
Das Programm enthält eine Zeichentabelle mit allen Zeichen, die in der
Reihenfolge der erkannten Morsezeichen geordnet sind. Ein E besteht nur
aus einem Punkt und wird an der Stelle 2 (00000010) der Tabelle. Ein T
besteht aus einem Strich und steht an der Stelle 3 (00000011). Der
Morsecode besteht aus Nullen für Punkte und Einsen für Striche.
Zusätzlich ist eine 1 vorangestellt, um den Anfang der unterschiedlich
langen Zeichen zu markieren.
Die Töne werden über ein PWM-signal mit 700 Hz gebildet. Das Programm
misst die Tonlängen und die Pausenlängen und speichert kurze Töne als 0
und lange Töne als 1. An einer längeren Pause wird erkannt, dass ein
Zeichen beendet ist. Dann kann mit dem dekodierten Zeichen die
entsprechende Position der Zeichentabelle ausgelesen werden.
Die Morsegeschwindigkeit wird in Buchstaben pro Minute gemessen und ist
hier mit BPM=60 angegeben. Daraus wird die Punktlänge berechnet. Bei 60
BPM hat jeder Punkt eine Länge von 100 ms und ein Strich von 300 ms.
Die Pausen innerhalb eines Zeichens haben 100 ms, die zwischen wie
Wörtern haben 300 ms. Die Geschwindigkeit kann leicht angepasst werden,
indem man z.B. BPM=90 setzt.
#CW1.py
from machine import Pin, Timer, PWM
import time
import array
machine.freq(64000000)
pwm0 = PWM(Pin(0))
pwm0.freq(700) #700 Hz
#pwm0.freq(3555000) #3555 kHz
pwm0.duty_u16(0)
p15 = Pin(15, Pin.IN, Pin.PULL_UP)
x = array.array
('i',[32,32,69,84,73,65,78,77,83,85,82,87,68,75,71,79,72,86,70,32,76,32,80,74,66,88,67,89,90,81,32,32,53,52,32,51,32,32,32,50,32,32,32,32,32,32,32,49,54,32,32,32,32,32,32,32,55,32,32,32,56,32,57,48])
bpm=60
dot= 100*60/bpm
while (True):
cw=1
d=1
while(cw):
while(p15.value()):
pwm0.duty_u16(0)
time.sleep(0.002)
t=0
while(p15.value()==0):
pwm0.duty_u16(20000)
time.sleep(0.002)
t=t+2
d=d*2
if(t>(2*dot)):
d=d+1
t=0
while(p15.value() and t<(2*dot)):
pwm0.duty_u16(0)
time.sleep(0.002)
t=t+2
if t>=(2*dot):
if d>63:
d=1
print(chr(x[d]), end='')
cw=0
t=0
while(p15.value()):
time.sleep(0.002)
t=t+2
if t>=(2*dot):
print(" ", end='')
cw=0
An den PWM-Ausgang kann ein hochohmiger Lautsprecher oder ein Kopfhörer
mit Vorwiderstand angeschlossen werden. Für erste Tests reicht der
Taster, aber für echte Übungen sollte eine Morsetaste angeschlossen
werden. Das Gerät eignet sich nicht nur für erste Übungen, sondern auch
zur Überprüfung der eigenen „Handschrift“. Werden die Pausenlängen
richtige eingehalten, oder werden Zeichen verschmiert? Die Ausgabe auf
dem Bildschirm zeigt alle Schwächen. Das Bild zeigt einen dekodierten
Morsetext, in diesem Fall einen typischen allgemeinen Anruf (CQ-Ruf)
aus dem Amateurfunk. Hier wurde eine Morsetaste verwendet.
Statt eines Mithörtons kann man auch gleich ein HF-Signal ausgeben.
Weil hier ein PWM-Signal erzeugt wird, lässt sich die Frequenz mit
einer kleinen Änderung in den HF-Bereich verschieben, in diesem Fall in
das 80m-Band. Der Ton kommt dann aus dem eigenen Empfänger.
pwm0.freq(3555000) #3555 kHz
Analoge Amplituden-Modulation
Amplitudenmodulation wird vor allem von Rundfunksendern im Lang-
Mittel- und Kurzwellenbereich verwendet. Allerdings sind in vielen
Ländern bereits alle AM-Sender abgeschaltet. Wenn man ein schönes altes
Röhrenradio besitzt und den angenehmen Klang dieser alten Geräte
schätzt, kann ein eigener kleiner AM-Sender diese Lücke schließen.
#HFgen2.py 711 kHz, Mittelwelle
from machine import Pin, PWM, Timer
import time
machine.freq(64000000)
pwm0 = PWM(Pin(0))
pwm0.freq(711000) #711 kHz
pwm0.duty_u16(33767)
Hier wird der HF-Rechteckgenerator 711 kHz umgestellt. Mit einer Diode
und einem Spanungsteiler wird die Amplitude im Ruhezustand halbiert.
Eine zugeführte NF-Wechselspannung moduliert dann die Betriebsspannung
und damit die Amplitude. Man erhält auf diese eine sehr saubere
Modulation und einen guten Klang, der dem der alten AM-Rundfunksender
nicht nachsteht.
Um Oberwellen zu dämpfen wird ein Tiefpassfilter mit einem Kondensator
von 1000 pF angefügt. Die eigentliche Antenne ist eine Drahtschleife
mit einem Durchmesser bis zu einem Meter, die nahe an der Ferritantenne
des Radios platziert wird. Die abgestrahlte Leistung und die Reichweite
sind so gering, dass der kleine Sender alle gesetzlichen Bestimmungen
einhält.
AM-Automatiktaste
Eine automatische Morsetaste (EL-Bug) besitzt zwei Kontakte, einen für
Punkte und einen für Striche. Eine elektronische Steuerung macht daraus
perfekte Morsezeichen. Punkt-, Strich- und Pausenlängen innerhalb eines
Zeichens werden genau eingehalten. Bei der so genannten Squeeze-Taste
kann man Punkte und Striche gemeinsam drücken und erhält dadurch eine
Punt-Strich-Folge. Einige Zeichen wie zum Beispiel das C (-.-.) kommen
dadurch mit weniger Bewegung aus. Mit einer Automatiktaste kann ein
geübter Funker wesentlich schneller morsen als mit einer
konventionellen Morsetaste.
Hier wird eine automatische Morsetaste mit zwei Kontakten gebildet, die
auch den Squeeze-Betrieb ermöglichen. Der Ablauf ist ganz einfach: Man
fragt in einer Endlosschleife zwei Taster ab. Wenn der eine gedrückt
ist, wird ein Punkt erzeugt, wenn der andere gedrückt ist ein Strich.
Falls beide gedrückt bleiben, ergibt sich eine Punt-Strich-Folge.
#CW2.py AM-ELBUG 711 kHz
from machine import Pin, Timer, PWM
import time
machine.freq(64000000)
pwm0 = PWM(Pin(0))
pwm0.freq(711000) #711 kHz
#pwm0.freq(700)
pwm0.duty_u16(20000)
p8 = Pin(8, Pin.IN, Pin.PULL_UP)
p10 = Pin(10, Pin.IN, Pin.PULL_UP)
p13 = Pin(13, Pin.IN, Pin.PULL_UP)
p15 = Pin(15, Pin.IN, Pin.PULL_UP)
bpm=60
dot= 50*60/bpm
while (True):
if(p8.value()==0):
for t in range (dot):
pwm0.duty_u16(0)
time.sleep(0.001)
pwm0.duty_u16(20000)
time.sleep(0.001)
time.sleep(dot*0.002)
if(p15.value()==0):
for t in range (3*dot):
pwm0.duty_u16(0)
time.sleep(0.001)
pwm0.duty_u16(20000)
time.sleep(0.001)
time.sleep(dot*0.002)
Die PWM-Ausgabefrequenz ist auf 711 kHz eingestellt, also in den
Mittelwellenbereich. Ein normales Mittelwellenradio kann allerdings
keinen unmodulierten Träger (continuous wave, CW) hörbar machen, weil
ein Überlagerungsoszillator (BFO) fehlt. Deshalb wird hier ein
AM-Signal gebildet. Der Träger wird im Abstand einer Millisekunde
abwechselnd ein- und ausgeschaltet. Dabei entsteht ein aufmodulierter
Ton von 500 Hz. Wichtig ist, dass im Ruhezustand der Träger
eingeschaltet bleibt. Damit steuert die ALC im Radio die
Empfindlichkeit herunter und unterdrückt das Rauschen im Radio.
Die Schaltung und der Aufbau der Antenne entspricht weitgehend dem des
kleinen AM-Senders. Weil aber die Modulation diesmal per Software
erzeugt ist, braucht man keinen Modulator. Der Widerstand von 1 kΩ
reduziert den Antennenstrom, sodass mit einer Antennenschleife von
einem Meter Durchmesser die gesetzlichen Grenzwerte eingehalten werden.
Der Kondensator von 1000 pF parallel zur Schleife schwächt die
Oberwellen.
Dieses einfache Mose-Übungsgerät erzeugt einen gut hörbaren Klang im
Radio. Die drahtlose Übertragung erhöht den Reiz der Übungen. Wenn man
die Drahtschleife etwas weiter vom Radio platziert, bleiben ein
Restrauschen und eventuell Reste anderer Sender hörbar. Das macht die
Sache noch realistischer. Möglich ist auch die Verwendung von zwei
Picos mit eigenen Antennen, sodass zwei Personen einen regulären
Funkverkehr üben können.