“Gib’ mir fünf!” reloaded – Ein kompakter SSB-Transceiver für 5 Bänder in SMD-Bauweise – Oszillatoren und Digitales etc.

Wie im Einführungsartikel zu diesem Gerät erwähnt, handelt es sich bei den digitalen Baugruppen in diesem Transceiver um vorgefertigte Module, die nur mehr oder weniger sinnvoll zusammengefügt wurden. ;-).

Diese Module sind:

  • AD9850 als VFO, ein in China hergestelltes No-Name-Board,
  • Si5351 als lokaler Oszillator (LO) produziert von “Adafruit”,
  • Arduino Pro Mini mit einem ATMgea328p als Microcontroller (uC, MCU), ein “No-Name”-Produkt
  • ST7735 Farb-LCD, ebenfalls “No-Name”,
  • MCP4725 als Digital-Analog-Wandler zur Vorgabe der Senderverstärkung über MCU, ein “Sparkfun”-Clone aus China.

Alle Baugruppen können mit 5 V betrieben werden, was das Layout des Schaltplans vereinfacht, da nur ein 5V/1A-Spannungsregler verwendet werden musste.

 

DK7IH Multiband QRP Transceiver for 5 Bands 2020 - Digital unit with VFO, LO, MCU, DAC and LCD (low res.)
DK7IH Multiband QRP Transceiver für 5 Bänder 2020 – Digitalteil (hohe Auflösung)

Hinweise:

a) Die Leitungen für ISP (MOSI, MISO, SCK, RESET und GND) wurden nicht eingezeichnet, aber die Lage zu den jeweiligen Ports ist in der Tabelle in der rechten oberen Ecke angegeben. Der RESET erfordert wie bei AVR-Microcontrollern üblich, 10 kOhm gegen +5V und einen 0,1 uF-Kondensator gegen GND.

b) Bestimmte Klone des MCP4725 DAC-Moduls erzeugen I²C-Buskonflikte mit der I²C/TWI-Adresse des Si5351 LO-Moduls. Die Original “Sparkfun”-Boards haben die I²C/TWI-Adresse 0x60, 0x61 oder 0x62 (je nach Literatur/Web-Ressource, aus der Sie diese Informationen erhalten). Ggf. muss man also die Adressdaten korrigieren.

Die entsprechende Adresse im MCP4725 wird vom Hersteller auf Kundenwunsch (i. e. der Großhändler, die Teile später auf den Markt wirft) innerhalb der Hardware gesetzt. Andererseits haben die in China hergestellten Module, die ich verwende, die Basisadresse 0xC0, welche auch die Adresse des Si5351 ist. Dadurch kommt es zu den erwähnten Konflikten auf dem I2C/TWI-Bus. Eine Lösung besteht darin, eine Lötbrücke auf +VDD auf der sehr kleinen DAC-Platine zu schließen, die die Adresse auf 0xC2 setzt.

c) Für die 4(!) Benutzerschalter (nicht 3 wie im Foto oben!) wird der Pull-up-Widerstand an PORT PC0 eingeschaltet. An jedem Schalter befindet sich ein Widerstand (im Bereich zwischen 560 Ohm und 2,2 kOhm), der beim Drücken der jeweiligen Taste Spannung auf GND zieht. Dies führt zu einem Spannungsabfall am analogen Eingang, der vom entsprechenden ADC-Kanal erkannt wird.

Dieser Spannungsabfall hängt vom Pull-up-Widerstand und einigen anderen Faktoren ab und muss daher für jedes Controller-Setup individuell ermittelt werden. Um dies zu lösen, befindet sich in der jeweiligen Funktion, die den Zahlenwert für die gedrückte Taste zurückgibt, ein kleiner auskommentierter Code, den Sie vorübergehend aktivieren müssen:

//Read keys via ADC0

int get_keys(void)
{
    int key_value[] = {39, 76, 103, 135};
    int t1;
 int adcval = get_adc(0);

    //TEST display of ADC value 
    /*
        lcd_putstring(0, 5, " ", 0, 0); 
        oled_putnumber(0, 5, adcval, -1, 0, 0); 
    */
    for(t1 = 0; t1 < 4; t1++)
    {
        if(adcval > key_value[t1] - 10 && adcval < key_value[t1] + 10)
        {
            return t1 + 1;
        }
    }
    return 0;
}

Laden Sie die dann Software auf den Controller hoch, drücken Sie jede Taste, geben Sie den angezeigten Tastenwert in den Code ein (Zeile 4) und kommentieren Sie die orangefarbenen Zeilen erneut aus, wenn alle Werte ermittelt sind. Laden Sie anschließend die Software erneut auf den Controller hoch.

d) Der Quellcode in C ist in meinem Github-Repository verfügbar. Bitte beachten Sie, dass der Code auch bei Verwendung eines Arduino Pro Mini MCU-Boards nicht für die Arduino-“Welt” ausgelegt ist. Es verwendet keine Funktionen der Arduino-Umgebung und funktioniert möglicherweise nicht mit dem Arduino-Bootloader.

Um den C-Quellcode zu kompilieren und das HEX-File zu generieren, benötigen Sie den GNU C Compiler entweder für Windows oder Linux.

 

73 de Peter (DK7IH) und Danke für den Besuch meiner Seite!