
Das Wavy Media Center
Die guten Empfangseigenschaften des
Wavy-Bausatzes legten es nahe, daraus ein „richtiges“ Radio unter
Nutzung der wesentlichen Elektronik aus diesem Kit zu bauen. Vor allem
soll ein strapazierfähiges Gehäuse mit guter Basswiedergabe und
Stereowiedergabe entstehen.
Von einem anderen Projekt hatte ich noch einen Arduino Uno und ein
LCD-Display 20x4 sowie einen Endverstärker PAM8403 nebst 2
Lautsprechern 10W/4 Ohm übrig, welche ich für das hier beschriebene
WAVY-Radio nutzen wollte. Da mir schon immer mißfiel, dass bei
den älteren FM-Modulen keine Frequenzanzeige integriert
war, habe ich mir überlegt, die Analogspannung am Steuereingang des
WAVY-Moduls , die sich von 0...3,3 V bewegt und eine Frequenzvariation
von 87,5 … 108 MHz bewirkt, zur Realisierung einer Skala zu verwenden,
die auf dem 20x4 Display ausgegeben werden soll und über den
Analogeingang A0 des Arduino aufbereitet werden kann.
Das Display im einzelnen :
Zeile 1 :
Ausschrift „FM Tuner WAVY 2025“
Zeile2 :
Anzeige des numerischen Wertes der eingestellten Frequenz von 87,5 …
108 MHz , im geplanten Sketch in 100 kHz-Stufen
einstellbar
Zeile 3 :
Symbolhafte Linearskala aus senkrechten und waagerechten Strichen
Zeile 4 :
Ein Zeigersymbol, welches aus mehreren Pixeln besteht und je nach
eingestellter Spannung am Abstimmpoti von links nach rechts unterhalb
der Skala aus Zeile 3 wandert.
Der Class-D- Verstärker PAM8403 bietet ausreichend Leistung bei
niedrigem Stromverbrauch . Er soll auf externen NF-Eingang umgeschaltet
werden können, um auch andere Quellen wiedergeben zu können, wobei das
Display dann in Zeile 2 „Externer Eingang“ und in Zeile 3 die mit
dem Arduino Analogeingang A2 gemessene Batteriespannung anzeigt.
Das gesamte Radio soll von 2 Li-Ionen-Akkus 18650 in Serie (8,4 V)
betrieben werden, die extern nachgeladen werden können. Dazu habe
ich folgenden Sketch für den Arduino Uno geschrieben :
//Programm Skala WAVY
#include <LiquidCrystal.h>
// LCD-Pins: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
#define A0_PIN A0 // Analoger Eingang für die Frequenz-Steuerspannung
#define A2_PIN A2 // Batteriespannungs-Meßeingang
#define SWITCH_PIN 6 // Digitaler Pin zur Umschaltung
#define V_MIN 0.0 // Minimale Spannung (0V -> 87,5 MHz)
#define V_MAX 3.3 // Maximale Spannung (3.3V -> 108 MHz), evtl nur 3,0 V- messen und anpassen
#define F_MIN 87.5 // Minimaler Frequenzwert
#define F_MAX 108.0 // Maximaler Frequenzwert
#define BATTERY_MAX 8.4 // Maximale Batteriespannung
void setup() {
pinMode(SWITCH_PIN, INPUT_PULLUP); // Schalter-Pin mit internem Pullup-Widerstand
lcd.begin(20, 4);
lcd.print("FM Tuner WAVY 2025");
}
void loop() {
if (digitalRead(SWITCH_PIN) == LOW) {
// Externer Eingang aktiv
lcd.setCursor(0, 1);
lcd.print("Externer Eingang ");
// Batteriespannung messen, auf 5V max. geteilt bei Ub= 8.4 V
float batteryVoltage = analogRead(A2_PIN) * (5.0 / 1023.0) * (BATTERY_MAX / 5.0);
lcd.setCursor(0, 2);
lcd.print("Battery: ");
lcd.print(batteryVoltage, 2);
lcd.print(" V ");
// Leere Zeile 4
lcd.setCursor(0, 3);
lcd.print("
");
} else {
// Normale Anzeige
float voltage = analogRead(A0_PIN) * (5.0 / 1023.0); // Spannungswert berechnen
voltage = constrain(voltage, V_MIN, V_MAX); // Begrenzen auf den Bereich 0V - 3.3V
float frequency =
mapFloat(voltage, V_MIN, V_MAX, F_MIN, F_MAX); // Frequenz
berechnen
// Zeile 2: Frequenz ausgeben
lcd.setCursor(0, 1);
lcd.print(" FREQ: ");
lcd.print(frequency, 1);
lcd.print(" MHz ");
// Zeile 3: Skala anzeigen
lcd.setCursor(0, 2);
lcd.print("|----|----|----|---|");
// Zeile 4: Zeigerposition berechnen
int position = map(voltage * 100, V_MIN * 100, V_MAX * 100, 0, 19);
lcd.setCursor(0, 3);
lcd.print("
"); // Löschen
lcd.setCursor(position, 3);
lcd.write(byte(255)); // Zeigersymbol
}
delay(200); // Kurze Pause zum Aktualisieren der Anzeige
}
// Hilfsfunktion für Gleitkommazahlen
float mapFloat(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
// Ende
Die einzubindende Bibliothek LiquidCrystal bringt die Arduino IDE von
Haus aus mit. Die Hilfsfunktion für die Gleitkommazahlen mittels
floatmap erwies sich als nötig, um die Position des Zeigers in Zeile 4
etwa an die der Frequenz entsprechende Skalenstelle des Displays zu
mappen, da die Auflösung des AD-Wandlers mit 1024 Werten zu groß für
die Skala wäre. Die Frequenzrasterung der Anzeige wurde auf 100 kHz
festgelegt. Ansonsten ist der Sketch sehr einfach gehalten und erklärt
sich von selbst.
Sicherlich ist bei dem WAVY-Modul auch eine Ausgabe der Frequenz über
den I2C-Port des verbauten Prozessors PGS 134 möglich, aber da mir die
Interna dieses Prozessors fürs erste noch unbekannt sind und ich mich
erst in die Programmierung lt. Datasheet einarbeiten müßte, habe ich
den Weg über den mir näher bekannten Arduino Uno gewählt., der sich
über die Arduino IDE 1.8.19 bequem über USB flashen lässt.
Nach erfolgreichem Test mit obigem Sketch wurde das eingangs erwähnte
Konzept erstellt, mittels dieser Komponenten ein für den
Oster-Bastelwettbewerb geeignetes Stereo-Radio zu bauen, welches
die obengenannten Parameter erfüllt. Die Batteriespannung von max. 8,4V
aus den 2 in Serie geschalteten Li-Ionen-Akkus reicht aus, das
Wavy-Modul über dessen 9V-Eingang zu speisen, da intern daraus
ohnehin stabile 3,3 V (bzw. 3,0 V, messen und im Sketch entsprechend
anpassen) erzeugt werden, die zum Betrieb des Chips CL6017S
(Empfangs-IC) nötig und auch für das Abstimmpoti herausgeführt
sind. Eine Buchse an der Rückwand wurde zum Nachladen vorgesehen. Beim
Laden kann das Radio ausgeschaltet werden. Der Akku kann auch
entnommen werden und das Radio stattdessen über eine an der Ladebuchse
anliegende externe Spannung von ca. 9V = betrieben werden. Damit
ergab sich folgendes Schaltbild:
Der mechanische Aufbau erfolgte in bewährter Weise mittels Bau eines
Sperrholzgehäuses von 38 cm (B) x 14 cm (H) x 14 cm (T), welches
mahagonifarben gebeizt und mit Aufklebern (mit Front Designer von
Abacom erstellt) zur eindeutigen Funktionskennzeichnung
versehen wurde. Die Frontplatte wurde an ein etwas stärkeres
Holzbrettchen geschraubt, welches als Chassis dient, das Ganze wurde
dann in das vorbereitete Gehäuse von vorn eingeschoben und verschraubt.
Auf das Holzbrettchen wurden sämtliche nötigen elektronischen
Komponenten, die auf vorbereitete Universal-Leiterplatten montiert
wurden, mit kleinen Holzschrauben und Distanzröllchen verschraubt.
Bedingt durch das Holzgehäuse und die vom Class-D-NF-Verstärker
PAM8403 angesteuerten etwas größeren Lautsprecher 4 Ohm/10W ergab sich
ein sehr ausgewogener Klang mit guter Basswiedergabe und ausgeprägtem
Stereo-Effekt (das Zusammenmischen der beiden Stereokanäle des
Originalradios wurde aufgehoben) .
Das Bedienkonzept des Original-Wavy-Radios wurde beibehalten, indem die
Up/Down-Tasten an die Frontplatte gelegt wurden und der Einschalter an
der Rückwand eingebaut wurde. Im Normalfall nutzt man die
Durchstimmbarkeit des Frequenzbereiches zur Sendersuche wie im
Originalhandbuch als „Reiseradio“ beschrieben, zumal mit der
eingebauten Dipol-Antenne (Drahtschleife) der gesamte
UKW-Bereich von 87,5 – 108 MHz empfangbar ist.
Es ist aber problemlos ein Sendersuchlauf sowie ein
Senderspeichern, so wie im Originalradio-Handbuch
beschrieben, möglich. Damit ist das Radio auch seniorentauglich.
Das Radio hat jetzt einen Ehrenplatz in meiner Gästewohnung erhalten
und kann von elektronisch interessierten Gästen gern genutzt werden.
Die Stromaufnahme aus den Akkus beträgt bei voller Lautstärke ca.
100mA, wobei sich bei einer Kapazität der Akkus von 2Ah eine
theroretische Laufzeit von 20 h ohne Nachladen ergibt.
G. Zöppel
Ostern 2025