Das Elektor SDR-Shield 2_0
Im Heft Juli/August 2018 stellt Elektor die neue Version 2.0 des
SDR-Shields vor. die erste Version stammte von 2016 und wurde auch im
Elektronik-Labor gezeigt: SDRshield .
Nun war eine Neuauflage fällig, für die ich mir eine kleine
Erweiterung gewünscht habe. Die vier Anschlüsse A bis D sind neu
hinzugekommen.
A: Ausgang CLK0 des SI5351
B: Ausgang CLK2 des SI5351
C: ZF-Ausgang Links, DC-gekoppelt
D: ZF-Ausgang Rechts, DC-gekoppelt
Damit
werden viele spezielle Anwendungen einfacher, die teilweise schon hier
vorgestellt wurden, bis hin zum CW/WSPR-Transceiver. Aber auch viele
Messaufgaben könne entwickelt werden, die dann noch in den folgenden
Artikeln in Elektor gezeigt werden.
Mein Freund Rainer hat den
Artikel auch schon gelesen und im Abschnitt Antennentipps seinen
Ringkernübertrager wiedererkannt, den wir mal für seinen SDR gewickelt
haben (siehe Amateurfunkantennen im Test).

Der
Artikel in Elektor 7/8 2018 stellt neue Software vor, die
insbesondere auch die VFO-Kanäle an den Ausgängen CLK0 und CLK2
unterstützt.

Im Download findet man das VB-Programm mit EXE und Quelltext sowie die zugehörige Arduino-Firmware.
//SI5351_vfo + LCD + output CLK0, Clk2
#include "si5351.h"
#include "Wire.h"
#include <LiquidCrystal.h>
Si5351 si5351;
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
unsigned long freq;
void setup(void)
{
Serial.begin(9600);
Serial.println("Si5351 Clockgen"); Serial.println("");
si5351.set_correction(162100);
si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0);
Serial.println(10100);
si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
si5351.set_freq(4040000000ULL, SI5351_PLL_FIXED, SI5351_CLK1);
si5351.output_enable(SI5351_CLK1, 1);
freq = 10100;
lcd.begin(16, 2);
lcd.print(freq);
}
static void flush_input(void)
{
while (Serial.available() > 0)
Serial.read();
}
void loop(void)
{
si5351.update_status();
if (si5351.dev_status.SYS_INIT == 1) {
setup();
delay(500);
}
if (Serial.available()) {
int ch = Serial.read();
freq = Serial.parseInt();
// flush_input;
// Serial.println (ch);
Serial.println(ch);
Serial.println (freq);
int ch2 = Serial.read();
Serial.println (ch2);
lcd.setCursor(0, 1);
lcd.print(ch);
lcd.print(" ");
lcd.print(ch2);
ch2 = Serial.read();
if (freq> 20){
lcd.setCursor(0, 0);
lcd.print(freq);
lcd.print(" ");
if (ch == 32) si5351.set_freq(freq*400000ULL, SI5351_PLL_FIXED, SI5351_CLK1); //" "
if (ch == 70) si5351.set_freq(freq*400000ULL, SI5351_PLL_FIXED, SI5351_CLK1); //F
if (ch == 102) si5351.set_freq(freq*400ULL, SI5351_PLL_FIXED, SI5351_CLK1); //f
if (ch == 65) si5351.set_freq(freq*100000ULL, SI5351_PLL_FIXED, SI5351_CLK0); //A
if (ch == 97) si5351.set_freq(freq*100ULL, SI5351_PLL_FIXED, SI5351_CLK0); //a
if (ch == 66) si5351.set_freq(freq*100000ULL, SI5351_PLL_FIXED, SI5351_CLK2); //B
if (ch == 98) si5351.set_freq(freq*100ULL, SI5351_PLL_FIXED, SI5351_CLK2); //b
}
if (freq==0){
if (ch == 65) si5351.output_enable(SI5351_CLK0, 0);
if (ch == 66) si5351.output_enable(SI5351_CLK2, 0);
if (ch == 70) si5351.output_enable(SI5351_CLK1, 0);
}
if (freq==1){
if (ch == 65) si5351.output_enable(SI5351_CLK0, 1);
if (ch == 66) si5351.output_enable(SI5351_CLK2, 1);
if (ch == 70) si5351.output_enable(SI5351_CLK1, 1);
}
}
}