Archiv der Kategorie: Eigenbau

Kurzwelle portabel – mcHF im Gerätepark

Für den Urlaub plante ich ein portables Kurzwellengerät anzuschaffen. Bei den Recherchen stieß ich auf einen SDR-Transceiver von Chris, M0NKA mit dem Namen mcHF. Das Gerät besteht aus zwei Platinen, die ich in der Version 0.5 bereits mit den SMD-Teilen vorbestückt geliefert bekommen habe. In diesem Kit sind alle Taster, Rotary-Encoder, Display, Mischer, Relais, sowie alle erforderlichen Ringkerne mit genug Kupferlackdraht für die Tiefpässe und Transformatoren enthalten.

Vorbestückte Platinen UI und RF – Innenseiten

Vorbestückte Platinen UI und RF – Außenseiten

Nicht enthalten sind Gehäuse mit Knöpfen und Tasterkappen, Endstufentransistoren, Lautsprecher und Netzteil.

Es gibt ein (englischsprachiges) Yahoo-Forum und ein DARC Ortsverband Sulingen (I40), die sich intensiv mit dem Aufbau des Gerätes beschäftigen. Hauptsächlich ist hier einer der Initiatoren Andreas, DF8OE. Andreas ist maßgeblich an der Entwicklung des Bootloaders und der Firmware beteiligt.

Die mechanischen Bauteile habe ich als erstes bestückt, wie Taster, Encoder, USB- und Antennenbuchse, dann das Schutzlämpchen gegen knackige Impulse von außen, sowie die 3,5mm-Buchsen und die Hohlbuchse für den 12V-Anschluss. Ebenso das Display. Dann wollte ich die Pfostenleiste und den Pfostenstecker einbauen und stellte erstmal fest, dass die Lötreihe fast unter dem Display lag. Klappte aber noch. Also: Erst Pfostenstecker und -leiste bestücken, dann das Display. Einige Trafos noch aufgelötet und dann weiter zum nächsten Schritt.

Vorbereiten zur ersten Inbetriebnahme

Vor der ersten Inbetriebnahme zeigt sich ein weißer Bildschirm beim Einschalten. Der Strom bei 13V Versorgungsspannung sollte nicht höher als 270mA betragen. Es empfiehlt sich die Versorgung über ein Labornetzteil mit Strombegrenzung. Außerdem werden die Spannungsregler relativ warm (heiß), so dass diese mit einem Kühlkörper versehen werden sollten. Bei später voll aufgedrehtem Display wird ein Strom von etwa 370mA verbraucht.

Für Windows gibt es das Programm mchf-manager von M0NKA. Ich habe aber einen Linux-Rechner, der auf Grund seiner Leistungsfähigkeit nicht unbedingt eine virtuelle Maschine abbilden kann. Also habe ich nach den Angaben von DF8OE die Installation mit Linux-Tools vorgenommen.

Dazu wird das Konsolen-Programm dfu-util installiert:

sudo apt-get install dfu-util

Installation Bootloader unter Linux

Für die Installation des Bootloaders muss ein Jumper P6 gesetzt werden. Das habe ich zunächst mit einer Drahtbrücke vorgenommen. Außerdem habe ich den Ein/Aus-Taster (S17) mit einem Schalter überbrückt, damit der Ladevorgang nicht durch Wackler unterbrochen wird. Der Jumper P6 soll eigentlich nur für den Bootloader genutzt werden. Für die weitere Installation der Firmware wird dieser Jumper nicht benötigt.

Ich habe den mcHF direkt mit dem PC über USB an der kleinen USB-Schnittstelle verbunden. Über einen USB-Hub hat das nicht funktioniert.

Einschalten des mcHF mit gedrücktem S14-Taster (BAND+). Sobald über lsusb die ST-Microelectronics-Schnittstelle angezeigt wird, kann man den Bootloader mit folgendem Konsolenbefehl in den mcHF schieben.

dfu-util -D pfad-zum-bootloader/bootloader.dfu -R -a 0

Im Github bei DF8OE https://github.com/df8oe/mchf-github kann man die aktuellen Releases herunterladen. In der Regel besteht das Release aus vier Dateien:

  • bootloader.bin
  • bootloader.dfu
  • mchf.bin
  • mchf.dfu

DF8OE hat den Bootloader 2.0.x so konfiguriert, dass mit Einstecken eines USB-Sticks am großen USB-Port die .bin-Datei automatisch erkannt und installiert wird. Ich hab das noch nicht getestet.

Installation Firmware unter Linux

Die Firmware wurde, wie oben beschrieben, ebenfalls korrekt installiert. Allerdings kam nichts aus dem Audio-Codec-Chip heraus. Kein Audiosignal am Phone-Ausgang. Nichts im Display, kein Scope, kein Waterfall. Kein Signal am Line-Out. Nach einigen Tagen im Forum, wurde entdeckt, dass bei einem fehlenden EEPROM (nicht unbedingt notwendig, später aber brauchbar), der Codec-Chip nicht funktioniert, wenn man die Firmware von DF8OE einsetzt. Die Firmware von M0NKA indes funktioniert auf Anhieb, eben aber auch mit weniger Funktionen, als in der FW von DF8OE. Diese wurde von ihm in einem neuen Softwarestand angepasst, bei mir installiert und getestet. Jetzt kam auch Audio mit der Firmware durch den Signalweg hindurch.

Als Anmerkung kann ich noch hinzufügen, dass das Antennensignal erst dann in das Gerät kommt, wenn es die Power/SWR-Spulen (T2, T3) und die Lowpassfilter mit den zu bewickelnden Ringkernen durchlaufen hat. Diese sind also vor der ersten Inbetriebnahme zu bestücken. Beim Anfertigen bzw. Einbau der Ringkerne ist beim Löten darauf zu achten, dass der Lack auf dem mitgelieferten Spulendraht an den Lötstellen sehr penibel entfernt wird. Auch bei Lötkolben-Temperaturen über 400°C schmilzt der Lack nicht rückstandsfrei weg. Dabei ist dann der Signalweg zum AudioCodec unterbrochen, und es werden nur Koppelsignale ausgewertet. Ein Durchgangsprüfer nach jedem Lötvorgang ist hier unverzichtbar.

Wenn aber alles soweit bestückt ist, gibt der Empfänger eine ungeheure Audio-Qualität wider, sowie eine enorme Trennschärfe, grad abends momentan (April 2017)  im 80m-Band, wenn alle 2,5kHz eine andere Station sendet. Mit diversen regelbaren Noise-Reduction- und Notchfiltern (automatisch oder manuell)  kann man jedes noch so leises Signal herauskitzeln. Das macht Freude!

Wichtig: EEPROM

Damit der Prozessor mit seinem Speicher nicht irgendwann einmal seine Arbeit einstellt – und das tut er unweigerlich irgendwann, sollte ein EEPROM (optional) eingesetzt werden. Die erste Lieferung mit der Angabe aus dem Schaltplan eines 24LC01 mit dem dazugehörigen C99 brachte keinen Erfolg. Denn dieser wird mit der neuesten Firmware nicht mehr erkannt.

U7 24LC01 und C99 eingebaut

24LC01 wird nicht erkannt

So habe ich dann ein EEPROM vom Type 24LC1026 eingebaut. Hier ist keine Modifikation notwendig. Nach dem zweiten Einschalten hat der mcHF den Speicher erfolgreich erkannt. Ich empfehle also DRINGEND das EEPROM einzusetzen, auch wenn es nur als Option vorgesehen ist.

EEPROM 24LC1026 eingebaut

Bevor die Endstufentransistoren eingesetzt wurden, mussten noch die Schweinenasenringkerne, die Ausgangstransformatoren gewickelt und eingebaut werden. Es sind dies die Trafos T5, T7 und T6. Dabei ist der T7 der wichtigste Transformator. Nach Rücksprache mit DF8OE, den ich auf dem funk.tag in Kassel traf, soll dieser Trafo statt 2:3 mit 2:4 Wicklungen versehen werden. Ansonsten reicht es aus, sich nach den Vorgaben von M0NKA zu halten. Mit einem Oszilloskop habe ich dann die ersten “Sende”-Signale am Eingang der Endstufe betrachten können. Nun konnte auch der RFC8, eine Drossel zur Stromversorgung der Endstufentransistoren, mit einer Wicklung eingebaut werden.

Bewickelte Ringkerne der LPF mit Heißkleber befestigt

Noch ein Wort zum T7: es gibt eine Menge Modifikationen für diesen Übertrager. Da der mcHF jedoch eine Open Source Entwicklung ist, bleibt genug Spielraum für eigene Kreationen. Ich dagegen habe für den Anfang die Originalwicklung mit dem Hinweis von Andreas (s.o. 2:4 statt 2:3) umgesetzt.

Jetzt die Transistoren. Die erste Lieferung aus China zu einem Spottpreis brachte lediglich irgendwelche Fakes. Jetzt weiß ich, dass Halbleiter aus China mit der Angabe wie z.B. NEW oder BRAND NEW oder REPRINTED alles nur Fakes sind. Nach dem Einschalten brauchte es nur einen Bruchteil einer Sekunde, um die Dinger zum Glühen zu bringen. Die Brandblase am Finger ist grad am Abklingen. 10 Stück für knapp 10 Euro war dann doch etwas zu günstig um wahr zu sein. Nun, Lehrgeld halt.

Als NEW gelieferte (neu bedruckte) Dreibeiner. Was da drin ist, weiß keiner.

Also dann die Transistoren bei einem deutschen Händler zu einem Preis von knapp sieben Euro pro Stück nachbestellt und eingebaut.

Das Finale

Eingeschaltet, Strom beobachtet …. alles gut! Keine Hitze!

Jetzt nach den Anleitungen zum Kalibrieren der PA den Ruhestrom auf 500 mA eingestellt und vorsichtig auf 0,5 W die PTT getastet. Hervorragend! Es kommt HF am Ausgang. Weitere Einstellungen für alle Bänder mit 5 Watt vorgenommen und die Einstellungen als Backup im EEPROM abgespeichert.

Allerdings steigt der Ruhestrom ohne ausreichende Kühlung der Transistoren sehr schnell an. Auf eine ausreichende Kühlung ist dringend zu achten!

Antenne dran, und das erste mal auf 40m auf Sendung gegangen, einer italienischen CQ rufenden Station geantwortet, und ich wurde sofort gehört. 73, danke!

Für die anderen Bänder habe ich mir noch einen Portabeltuner MFJ971 zugelegt. Der passt dann alles, was an seinem Antennenausgang hängt, gnadenlos auf eine 0 Watt Rücklaufleistung an. So kann auch dieses Gerät mit in den Urlaub. Die Skala kann mittels eines Jumpers auf der Platine von der Umschaltung 30/300 Watt auf 6/30 Watt gesetzt werden.

Umschalten der 300-Watt- auf die 6-Watt-Skala mittels Jumper

mcHF v0.5 mit MFJ-971 als Duo

Abgleich

Den Abgleich habe ich nach der Anleitung aus dem Github-Wiki vorgenommen. Die Endstufentransistoren können mehr als 5 Watt Ausgangsleistung erzeugen. Dann sind aber dringend die 100V-Kapazitäten in der PA-Sektion des Boards auszutauschen gegen Typen mit 200V Spannungsfestigkeit.

So!

Ab in den Urlaub!


Hier noch ein paar Bilder vom Einbau ins Gehäuse. Das habe ich von SP3OSJ bekommen.

Vorgefertigtes Gehäuse von SP3OSJ – gab es nur noch in schwarz

USB- und Antennendurchlass

Vorbereitet für 3,5mm-Buchsen

Die Abstandshalter werden gar nicht benötigt

Die Abstandshalter werden wirklich nicht benötigt

Ein erster Blick – leider musste an den Löchern noch etwas gefeilt werden – der Preis eines Preiswert-Gehäuses

Sieht doch gut aus…

So passt es

…und so auch

M3x10 Senkkopfschrauben aus Messing im Baumarkt besorgt und Muttern aufgelötet

Gut gemessen ist schon halb gebohrt

Gebohrt…

…und versenkt

Drin!

Durchgangsprüfer für empfindliche elektronische Bauteile – Beeper

Für unsere Bauprojekte mit SMD- und empfindlichen CMOS-Bauteilen haben wir uns einen einfachen und genialen Durchgangsprüfer zusammen gebaut. Von Harold, W4ZCB haben wir uns das Schaltungsdesign besorgt und noch ein wenig modifiziert. Weil wir als SMD-Baustein keinen passenden Piezosummer bekommen haben, haben wir einen weiteren OpAmp aus dem LM339 für einen kleinen Tongenerator benutzt.. Zusätzlich wurde eine Auto-Power-Off-Schaltung nach VK3YC gleich mit eingeplant.

An den Prüfspitzen steht eine Spannung von weniger als 100 mV an. Der Kurzschlussstrom ist kleiner als 1 mA. Der Beeper ignoriert sogar Werte über etwa 60-70 Ohm. Mit diesen Voraussetzungen kann eigentlich kein CMOS-Bauteil beschädigt werden, auch nicht auf bestückten Platinen.

Hier das Originalschaltbild von W4ZCB:

Durchgangssummer nach W4ZCB

Automatische Abschaltung des Durchgangsprüfers nach VK3YC

Automatische Abschaltung nach VK3YC

Oszillator für den Piezosummer

Oszillator zur Ansteuerung eines Piezosummers

Stefan, DG4AAE hat nach der nun modifizierten Schaltung eine kleine Platine mit SMD-Bestückung entworfen und anfertigen lassen. Die Platine passt in ein kleines Flachgehäuse (Etui-Halbschalengehäuse) von Strapubox mit 9V-Batterie-Fach. Und wir haben nicht an den Messspitzen gespart. Stefan hat da wirklich tolle Profispitzen gefunden und bestellt. Bedruckte Folie drauf und fertig…

Durchgangsprüfer fertig im Gehäuse

 

2m Bandpass

Für mein 2m WebSDR brauchte ich noch ein Bandpassfilter für das 2m-Band und habe eine mechanische Lösung bei Mile Kokotov Z33T gefunden. Hier werden zwei lose gekoppelte Parallelschwingkreise in einem Kupfergehäuse untergebracht. Zugegeben ist für einen RX-Filter der Aufwand enorm, aber im Sendefall treten am Kondensator extrem hohe Spannungen auf, die in diesem Selbstbau als abstimmbare Plattenkapazitäten auch mehr als 300 Watt Sendeleistung vertragen.

Das Filter hat in den -3 dB Punkten eine Bandbreite von etwa 5 MHz, einen Verlust von etwa 1,4 dB und ist abstimmbar von etwa 120 MHz bis 160 MHz.

Hier ein Foto:

Die Maße des Gehäuses (doppelseitig kaschiertes Platinenmaterial) betragen 120x90x50 mm. Die Spulen L1, L2 habe ich aus 4 mm² (2 mm) Kupferdraht geformt und haben einen Abstand von 58 mm (Mitte Spule). Es sind 6 Windungen auf 36 mm Länge zzgl. 15 mm zum Boden und 10 mm zur Kondensatorplatte. Der Durchmesser der Spulen sollte etwa 23 mm betragen. Bei vorigen Versuchen hatte ich größere Durchmesser, kam somit nicht annähernd an 145 MHz heran. Die Kondensatoren sind aus Kupferblech geschnitten und sollten etwa 32 mm im Durchmesser betragen. Damit erhält man jeweils eine regelbare Kapazität zwischen 0,5 und 5 pF. Die Platten sollten rund geschnitten sein. Der Einfachheit halber habe ich sie zunächst quadratisch geschnitten und die Ecken dann diagonal abgetrennt. Nicht ganz sauber, weil es könnten an den Ecken bei hohen Leistungen Überschläge stattfinden. Ich will hier aber vorerst nur empfangen, dafür reicht das.

Die Koaxbuchsen habe ich etwas zu hoch angebracht, sie sollten in etwa 1″ Abstand vom Boden eingesetzt werden. So ist die Ankopplung etwas lang geraten. Direkt nach einer Viertel Windung sitzt die Einspeisung bei gut 50 Ohm. Die Spulen sind gleichsinnig gewickelt, werden aber daher um 180° verdreht eingesetzt. Die Wicklungen beginnen und enden somit auf entgegengesetzten Seiten.

Die Schrauben sind Standard M4x40 mit M4-Muttern.

So verbaut und grob abgeglichen ergibt sich folgende Durchlasskurve im mini-VNA:

Dazu noch die Markerdaten:

Und nun Deckel darauf, neu abgleichen und Einsatz.

 

Datenübertragung im Subaudiobereich

Im Amateurfunk wird es auf den frequenzmodulierten VHF und UHF-Bändern immer enger. Die Bandbreiten schrumpfen. Wenn man also mal eine Datenübertragung parallel zum Träger und der Sprachsignale übertragen will (ähnlich RDS im UKW-Rundfunk), bleibt eigentlich nur noch der Bereich unter 300 Hertz. Normalerweise ist dieser Bereich für CTCSS-Töne “reserviert”. Also nutzen wir sie doch experimentell… Sprachfrequenzen werden im Audiobereich 300 … 2700 Hz übertragen. Da stört sich also nix.

Hier eine Idee, wie man z.B. einen Arduino Nano beibringen könnte Daten in diesem Bereich dem Trägersignal hinzuzusetzen. Die eingebaute Tone()-Funktion erzeugt 5V-Rechtecksignale von 31 … 65535 Hz. So also mal schnell ein Arduino-Sketch niedergeschrieben und in den Nano geschoben:

Fakt ist: Die tone()-Funktion des Arduino kann nur unsigned int Werte annehmen. Bis hinunter zu 31 Hz kann ein Signal unterhalb 300 Hz erzeugt werden. Aber eben nur ganzzahlige Werte. Ein CTCSS-Pilotton von 88,5 Hz ist demnach nicht darstellbar. Was bleibt ist die Erzeugung der 10-fachen Frequenz und dann mit einem Teiler-IC durch 10 zu teilen. Das kann dann ein CD4018 erledigen, also 885 : 10 = 88,5.

Hier die Idee:

CD 4018 Beschaltung als Teiler durch 10

CD 4018 Beschaltung als Teiler durch 10

Hier der aktuelle Arduino-Sketch:

/*
  Dieser Sketch wurde mit dem Arduino Nano entwickelt
  und sollte aber auch auf allen anderen Arduinotypen lauffähig sein.
  Ich hatte eben keinen anderen, die Dinger sind so saubillig geworden...
  Natürlich kann man immer etwas verbessern, also tu es, ich tu auch was
  
  Carsten Koch, DL8AAP - Letzter Stand 22.9.2016
*/

// Der Timer muss eingebunden werden
#include "TimerOne.h"

//            0   1   2   3   4   5   6   7   8   9  Beg End
int T[12] = {915,693,710,719,744,770,797,825,854,885,670,2541}; // CTCSS-Frequenzen mal 10 in Hertz, werden später durch Hardware durch 10 geteilt
int dur = 180;                                                  // Dauer eines Datenbits in ms
int dur_roger = 120;                                            // Dauer des Rogerbeep in ms
int freq_roger = 3000;                                          // Frequenz des Rogerbeep in Hertz
int dur_break = 500;                                            // Pause zum nächsten Datenwort in ms
int pin_id = 10;                                                // Ausgabepin für die zu sendende String-ID
int pin_roger = 11;                                             // Ausgabepin für den Rogerbeep
String ID = "1234567890";                                       // zu sendende Ziffern
String zeichen = "";                                            // Puffervariable
int x;                                                          // Puffervariable
int pttPin = 7;                                                 // Pin 7 ist HIGH, schaltet nach Masse auf LOW als PTT gedrückt
int ledPin = 13;                                                // Visuelle Darstellung des PTT-Status
long intervall = 10000;                                         // Timerintervall in µsek
int send_id = 1;                                                // 0=String-ID aus, 1=String-ID an
int send_roger = 1;                                             // 0=Rogerbeep aus, 1=Rogerbeep an
int play = 0;                                                   // Zusatzvariable für den Rogerbeep

void setup() {
  pinMode(pttPin, INPUT_PULLUP);             // pttPin wird als Input mit einem Pullup-Widerstand auf HIGH gesetzt
  pinMode(ledPin, OUTPUT);                   // ledPin wird als Output gesetzt
  Timer1.initialize(intervall);              // Der Timer wird mit dem Timerintervall gesetzt
  Timer1.attachInterrupt(switch_ptt_state);  // Die Funktion switch_ptt_state wird als Timer-Funktion gesetzt
}

void loop() {
  // In der loop() wird der ID-String an der pin_id ausgegeben
  // aber nur, wenn der Schalter send_id auf 1 steht
  if (send_id == 1) {
    start_id();
    for(int i = 0; i<ID.length(); i++) {
      zeichen = ID[i];
      x = zeichen.toInt();
      play_id(T[x]);
    }
    end_id();
    pause_id();
  }
}

// Weitere eigene Funktionen

void switch_ptt_state() {
  // Diese Funktion wird vorrangig vor der loop()-Funktion aufgerufen
  //digitalWrite(ledPin,digitalRead(ledPin)^1);
  if (digitalRead(pttPin) == LOW) {
    // Wenn die PTT getastet wird = LOW, dann sind wir im TX-Modus
    //ptt = tx;
    digitalWrite(ledPin,HIGH); // Lass die TX-Lampe brennen
    play = 1; // Um den Rogerbeep später auszulösen, wird play auf 1 gesetzt
  }
  else {
    //ptt = rx;
    // Sobald wir im RX Modus sind und der Rogerbeep gesendet werden soll, dann tu das
    if (play==1) {
      // Wenn der Rogerbeep gesendet werden soll,
      if (send_roger == 1) {
        // Dann unterbreche den Pin bei dem, was er grad spielt
        noTone(pin_id);
        // und spiele den Rogerbeep
        play_roger(); 
      }
      // Der Rogerbeep wurde erzeugt, play kann wieder auf 0 gesetzt werden
      play = 0;
    }
    // Schalte die TX-Lampe aus
    digitalWrite(ledPin,LOW);
  }
}

void start_id() {
  // Startsignal für Datenwort
  // wird doppelt so lange gespielt, wie ein Datenbit
  tone(pin_id,T[10],dur*2);
  delay(dur*2+10);
}

void play_id(unsigned int f) {
  // Datenbit eines Datenworts
  // f=übergebene Frequenz des Tones
  tone(pin_id,f,dur);
  delay(dur+10);
}

void end_id() {
  // Endsignal für Datenwort
  // wird doppelt so lange gespielt, wie ein Datenbit
  tone(pin_id,T[11],dur*2);
  delay(dur*2+10);
}

void pause_id() {
  // Pause zum nächsten Datenwort
  noTone(pin_id);
  delay(dur_break);
}

void play_roger() {
  // Rogerbeep
  tone(pin_roger,freq_roger,dur_roger);
  delay(dur+10);
}

Danach durchläuft das Signal einen aktiven Tiefpassfilter 4. Ordnung mit einer Grenzfrequenz von 300 Hz nach vorheriger Verstärkung von 3 dB. Das Signal des Rogerbeeps (ca. 1 … 3 kHz) wird daran vorbei geschleust. Damit werden dann alle Obertöne des Rechtecksignals unterdrückt. Im Idealfall bleibt ein (relativ) sauberer Sinus als Nutzsignal.

Auf http://www.analog.com/designtools/en/filterwizard/ kann man sich seinen Filter zusammen stellen. Die Ergebnisse für meine Zwecke sehen dann in der Theorie wie folgt aus:

TP-Filter Vorgaben

TP-Filter Vorgaben 3dB Verstärkung mit 300 Hz Grenzfrequenz, 40 dB Dämpfung bei 1 kHz

TP-Filter 4. Ordnung nach Sallen Key

TP-Filter 4. Ordnung nach Sallen Key

TP-Filter 2 x 2. Ordnung

TP-Filter 2 x 2. Ordnung

TP-Filter zu erwartende Kurve

TP-Filter zu erwartende Kurve

Eine entsprechende Schaltung habe ich mal mit LTSpice simuliert. Dabei habe ich die Werte eines TL084 OP benutzt und komme auf die gleichen Filterergebnisse.

300 Hz Tiefpassfilter in der Spice-Simulation

300 Hz Tiefpassfilter in der Spice-Simulation

250 Hz-Signal - rot=Input, grün = Output,

250 Hz-Signal – rot=Input, grün = Output,

Das 500 Hz-Signal (grün) wird schon deutlich vom Eingangssignal (rot) gedämpft

Das 500 Hz-Signal (grün) wird schon deutlich vom Eingangssignal (rot) gedämpft

Deutlich ist die Dämpfung des Signals von fast 50 dB bei 1 kHz zu erkennen.

Deutlich ist die Dämpfung des Signals von fast 50 dB bei 1 kHz zu erkennen.

Blockschaltbild Subaudio-Encoder

Blockschaltbild Subaudio-Encoder mit Rogerbeep

Soweit die Theorie…

Wohlgemerkt, es handelt sich hier zunächst erstmal um einen Encoder. Um das Decodieren kümmern wir uns an anderer Stelle.

Nun geht’s an die Praxis!

Sinus-Generator / Funktionsgenerator

Mal zugegeben… einen Sinusgenerator im NF-Bereich ohne Induktivitäten aufzubauen… da war ich doch recht skeptisch, musste aber sein. Nur durfte ich mich eines besseren belehren lassen, denn das Zauberwort heißt hier Wien-Robinson-Oszillator. Dabei wird ein Operationsverstärker mit RC-Gliedern zum Rückkoppeln am nichtinvertierenden Eingang gebracht. Bei diesen RC-Gliedern handelt es sich jeweils um einen Hoch- und einen Tiefpass, Die Amplitudenstabilisierung wird durch eine Glühlampe vorgenommen, die als PTC dient. Anleitungen und Funktionsweise findet man im Internet auf unzähligen Seiten.

Prinzip-Schaltbild der Wien-Robinson-Brücke

Prinzip-Schaltbild der Wien-Robinson-Brücke

Bei den Recherchen nach einer geeigneten Schaltung fand ich zwei annehmbare Exemplare aus denen ich die Vorteile beider Schaltungen heraus arbeitete. Beide nutzen hier den OP TL084. Dieser ist mit vier OP-Amps bestückt und liefert genau das, was ich benötige, Nämlich einen klirrarmen Sinusgenerator. Zunächst habe ich eine Schaltung auf einem Breadboard aufgebaut und diese dann nach getesteter Funktion auf eine Lochrasterplatine übertragen. Ein geeignetes Gehäuse habe ich in der Bucht gefunden. Leider war es doch etwas kleiner, als ich dachte. Aber die Bedienelemente habe ich doch noch unterbringen können.

Die Schaltung verbraucht nicht mehr als 15mA bei 10V Betriebsspannung. Somit ist dann auch der Betrieb mit einer 9V-Batterie möglich. Ein entsprechender Umschalter steuert das.

In vier sich überlappenden Bereichen steht ein verzerrungsarmes Sinussignal von etwa 10 Hertz bis 60 kHz mit bis zu 6Vss an einem 600 Ohm-Ausgang zur Verfügung. Diesem Ausgang können noch bis zu ±2V Gleichspannung regelbar hinzugefügt werden. Ein weiterer Op-Amp erzeugt aus dem eingeschwungenen Sinusoszillator ein Rechtecksignal der selben Frequenz, dessen Pulsweite von etwa 5…95% geregelt werden kann.

Die Schaltung auf dem Breadboard wurde fast ausschließlich aus Beute-Teilen aus der Kramkiste angefertigt und im wilden Drahtverhau auf die Lochrasterplatine in das Gehäuse übertragen. Es hat sich schon auf dem Breadboard gezeigt, dass besonders im hohen kHz-Bereich die Verkabelung schon eine gewisse Bedeutung zum Anschwingen des Oszillators erhält. Hier spielen Eigenkapazitäten eine große Rolle, die es gilt zu vermeiden. Darum habe ich versucht die Kabel so kurz wie möglich zu halten, nur leider ist es an Hand der vielen Bedienelemente an der Frontplatte nicht immer möglich. Wichtig ist auch einen (!) Massepunkt festzulegen, um Rauschen und Brummeinstreuungen entgegen zu wirken.

Ich gelobe, dass der zweite Aufbau schöner wird und schließlich noch eine ansprechende Frontplatte erhält.
Das Ziel: Die Platine mit SMD-Bauteilen ist direkt an den Bedienelementen (Schalter, Potis) angelötet und montiert.

Dieses kleine Helferlein hat mir bei einigen Versuchen und Reparaturen bereits auf dem Breadboard gute Dienste geleistet.

Hier die Fotodokumentation:

0_img_0002

0_img_0003

0_img_0004

Die Schaltung verbraucht nicht mehr als 15 mA

Die Schaltung verbraucht nicht mehr als 15 mA

a_img_0001

a_img_0002

a_img_0003

a_img_0004

a_img_0005

b_img_0001

b_img_0002

b_img_0003

b_img_0004

b_img_0005

b_img_0006

b_img_0007

b_img_0008

b_img_0009

b_img_0010

b_img_0011

b_img_0012

c_img_0001

c_img_0002

c_img_0003

c_img_0005

c_img_0004

Der Spannungsregler wird auch gegen die Gehäusemasse abgeschirmt. Doppelseitiges Klebeband geht prima.

d_img_0001

d_img_0002

d_img_0003

Dummerweise habe ich mir mit dieser Einbaubuchse den ersten IC zerstört. Der Minuspol der Stromversorgung ist hier mit der Gehäusemasse verbunden. Jedoch wird die negative Versorgungsspannung des ICs virtuell erzeugt, indem die im Gerät benutzen 10 Volt geteilt werden in +5 V und -5 V. Also raus damit…

d_img_0004

d_img_0005

d_img_0006

d_img_0007

d_img_0008

d_img_0009

d_img_0010

e_img_0001

Neue Einbaubuchse für die Stromversorgung, getrennt von der Gehäusemasse.

e_img_0002

Einsatzbereit – beim nächsten Exemplar wird die Anordnung und die Frontplatte schöner.

Bedienelemente von links nach rechts und oben nach unten:

  • Frequenzbandschalter (in rot)
    A: 10 Hz … 100 Hz,
    B: 100 Hz … 1000 Hz,
    C: 1 kHz … 10 kHz,
    D: 10 kHz … 100 kHz (theoretisch, praktisch in dieser Schaltungsanordnung bis etwa 60 kHz)
  • Stufenloser Frequenzregler (in rot)
  • Wahlschalter für Sinus (oben) oder Rechtecksignal (unten)
  • Stufenlose Einstellung des Tastverhältnisses des Rechtecksignals ( ca. 5-95%)
  • Pegeleinstellung 0 … 6 Vss
  • Signal-Ausgang mit 600 Ohm Impedanz
  • Stufenlose Regelung einer Gleichspannung von +/- 2 Volt zum Ausgangssignal
  • Wahlschalter für AC (unten) oder DC (oben) gekoppelter Ausgang

Der Schaltplan kann gerne angefordert werden.

Mal ganz schnell Hochfrequenz…

Für die kommenden Projekte (wie z.B. den Spektrumanalyzer) habe ich mir einen kleinen Baustein angeschafft, der mir zwei unabhängige Oszillatoren auf drei Ausgänge (50 Ohm) erzeugt. Hierauf ist ein Si5351 mit einem 25 MHz Takt verbaut. Durch eine geschickte Frequenzteilung werden an den Ausgängen Rechtecksignale im Bereich von 8 kHz bis 160 MHz mit einer Ausgangsspannung von 3 VSS erzeugt. In einem Langzeittest hat sich die Schaltung auf meinem Werktisch als sehr stabil erwiesen, obwohl der Steuerquarz keine Temperaturstabilisierung hat.

Programmiert wird dieser Baustein über einen Arduino Nano oder Mini. Die erforderliche Bibliothek ist bei Adafruit erhältlich. Ein paar Zeilen Programmcode und in den Arduino hochgeladen, und schon steht die programmierte Frequenz am gewünschten Ausgang zur Verfügung.

Hier der Minimal-Code für den Arduino:

#include "si5351.h"
#include "Wire.h"

Si5351 si5351;

void setup() {
  si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0);
  si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
  // Setzen der Frequenz 29,700.000.00 MHz
  si5351.set_freq(2970000000ULL, 0ULL, SI5351_CLK0);
}

void loop() {
  // der Inhalt dieser loop()-Funktion darf auch gerne leer sein
  // oder man baut sich in dieser Schleife noch Abfragen für Up/Down-Taster hinzu
  si5351.update_status();
  delay(100);
}
Arduino und Si5351

Arduino und Si5351

Si5351 mit 400 Hz Offset

Si5351 mit 400 Hz zuviel – kann aber über eine Correction-Funktion angepasst werden

Der Si5351 "stört" sogar auf der richtigen Frequenz

Der Si5351 “stört” sogar auf der richtigen Frequenz

Arduino Code für den Si5351

Arduino Code für den Si5351

Wenn man also mal ganz schnell eine Frequenz benötigt – so wie ich für 64 MHz, so ist man mit Kosten von insgesamt weniger als 15 € für die beiden Bausteine bestens ausgestattet.

Noch mehr im Sachen im Internet rund um den Si5351:

 

DIY Programmierkabel Yaesu FT-7900

Es ist schon recht mühselig das Yaesu FT-7900 über das Panel zu programmieren. Zugegeben es geht auch, aber über ein Programm ist das wesentlich komfortabler und übersichtlicher. So habe ich mir von G4HFQ ein kleines (aber mächtiges) Programm mit dem Namen FTB7900 für Windows herunter geladen, installiert und gekauft. Diese 15 Euro waren es mir wert.

Das FT-7900 hat an der Rückseite einen 6-poligen Eingang angebracht, über den der Speicherinhalt übertragen werden kann. Außerdem kann hier auch ein TNC angeschlossen werden. Die Belegung dieser Buchse sieht so aus:

6-pin FT-7900

6-pin FT-7900 von der Rückseite betrachtet

Ein altes PS/2-Kabel diente dabei als Grundlage.

6-pin Stecker PS/2

6-pin Stecker PS/2

Für eine Zweidraht-Programmierung des Gerätes benötigt man lediglich den Pin 2 GND und Pin 3 PTT. Ja, richtig, PTT. Hierüber wird die Schnittstelle mit Daten gefüttert, sowohl aus dem Gerät heraus, als auch in das Gerät hinein. Dabei sollte man aber bitte auf die richtigen Pegel achten. Also brauchte ich noch einen RS232-TTL-Konverter.

Fündig wurde ich bei DL8WA, der eine solche Konverter-Schaltung auf seiner Seite veröffentlich hat.

DL8WA 2-wire level converter

DL8WA 2-wire level converter

Diese kleine Schaltung habe ich kurzerhand mit Bauteilen und Kabelresten aus der Kiste auf einer Lochstreifenplatine aufgebaut.

Stückliste

  • D1,D2 = 1N4148 oder 1N4001 oder ähnlich
  • C1 = 4,7µF, 35V
  • T1,T2,T3 = BC546B oder ähnlich
  • R1 = 470 Ohm
  • R2=1 kOhm
  • R4,R6 = 10 kOhm
  • R3,R5 = 100 kOhm
  • D3 = Zener Diode 5,6V
  • P1 = Trimmer 10kOhm
    (So einstellen, dass eine Spannung von 3,3V zwischen Data und GND anliegt, bezogen auf einen nicht angeschlossenen VX-3)

Hier das Ergebnis:

RS232-TTL Konverter nach DL8WA

RS232-TTL Konverter nach DL8WA

Yaesu FT-7900 Programmierkabel

Yaesu FT-7900 Programmierkabel

Nun, schön sieht das Ganze nicht aus, aber es funktioniert hervorragend!

Noch ein Hinweis:
(damit ich das nicht vergesse und hier immer wieder nachschlagen kann)

Um das Yaesu FT-7900 in den Programmiermodus zu versetzen geht man folgendermaßen vor:

  • Taste MHz/PRI gedrückt halten und dabei das Gerät einschalten
  • Mit dem Abstimmknopf die Funktion auf F-7 Clone drehen
  • Taste BAND/SET eine 1/2 Sek. lang drücken Dabei geht das Gerät kurz aus und schaltet sich wieder ein.
  • Zum Empfangen von Daten nun Taste LOW/ACC drücken. Es erscheint — — RX — —
    Software zum Schreiben in das FT-7900 setzen
  • Zum Senden von Daten Taste V/M/MW drücken. Es erscheint — — TX — —
    Software zum Empfang vom FT-7900 setzen
  • Danach FT-7900 ausschalten und wieder normal einschalten

Wenn irgendwas schief geht erscheint ERROR

Mit der selben Prozedur kann man übrigens die Speicher und Konfiguration des Gerätes auf ein anderes FT-7900 klonen.

Nachtrag

Diese erste Schaltung eines anderen OMs hat nicht funktioniert. Die Pegel reichten nicht aus, um annähernd die 3,3V auf TTL zu bringen.

RS232-TTL Konverter nicht brauchbar

RS232-TTL Konverter nicht brauchbar