Themabewertung:
  • 6 Bewertung(en) - 4.17 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Das Vietnam-Radio
#21
Hallo Jupp,

sehr schönes Projekt.
Das Schaltnetzeil ohne Abschirmung wirkt natürlich wie ein Sender, vielleicht solltest Du ein Stahlblechgehäuse dafür probieren und die Ausgangsspannungen auf Rippel kontrollieren, eventuell verdrosseln und abblocken.

Vielleicht wäre ein tradiotionelles Netzteil mit Trafo und Längsreglern hierfür die bessere Lösung für einen gedrängten Einbau.

Ich baue in meine Geräte gar kein Netzteil ein, ich verwende Li- Ionen- Akkus z.B. 18650, je nach Ausgangsleistung entsprechend viele.
Die Geräte laufen damit wochenlang, zum Nachladen gibt es eine Ladebuchse am Gerät wo ein entsprechendes Steckernetzteil angeschlossen wird.
Kleinere Geräte (Kofferadios) bis ~ 5W Leistung laufen mit mobilfunküblichen 4V, diese können mit gebräuchlichen Handy- Netzteilen über Mikro-USB geladen werden.
Durch den Akkubetrieb braucht man nur ein kleines "schwaches" handelsübliches Netzteil, da die Endstufen auch bei Vollaussteuerung durch die Akkus hervorragend gepuffert werden. Der permanente Netzbetrieb ist ebenso kein Problem, da die Ladeschlussspannung von 4,2V pro Zelle geregelt ist und nicht überschritten wird.

Bernd
Zitieren
#22
Hallo Jupp,
wieder Mal eine tolle Idee und Realisierung. Gefällt mir sehr gut.
Die Kiste hätte auch gut im Jeep von Fidel und Che stehen können.

Gruß
Wilhelm
Niemandes Herr, Niemandes Knecht,
so ist es gut, so ist es recht

von Fallersleben
Zitieren
#23
(02.11.2017, 21:38)Wilhelm schrieb: Die Kiste hätte auch gut im Jeep von Fidel und Che stehen können.

Den Gedanken hatte ich auch beim ersten Anblick!   Smiley32 

Nur mit dem Inhalt von Jupp wird man auf Kuba bald nicht mehr viel anfangen können. TV haben die ja seit ein paar Jahren schon umgestellt auf Digital, irgendein chinesischer Standard. Ich glaube DTMB. Radio soll laut Radio Habana Cuba bis 2020 auch komplett digitalisiert sein. DRM+ im UKW-Band war glaube das Ziel. China hilft wohl wieder tüchtig mit bei der Umstellung.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#24
Dieses alte Notebook Netzteil ist noch konventionell. Hebe ich die Frontplatte 2cm an ist das Brummen weg. Ich mache noch einen Versuch mit 2 Printtrafos die ich heute bestellt hab , wenn es damit weiterhin brummt baue ich auf Akku um. Oder vielleicht auch sowieso.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#25
   
VENCEREMOS!!!
Gruß,
Ivan
Zitieren
#26
Ivan, hast Du dort einen Che-Tower gebaut oder ein Fidel-Haus?

Gruß
Wilhelm

PS. Sorry Jupp, aber jetzt zurück zum Thema
Niemandes Herr, Niemandes Knecht,
so ist es gut, so ist es recht

von Fallersleben
Zitieren
#27
Nein gebaut dort habe ich nicht. Undecided
Zitieren
#28
Hätte ich gerne...Nein, Wilhelm,
Aber schönes Land und Leute. Und Fidel lebte noch...
Gruß,
Ivan
Zitieren
#29
hier gab es die erste Revision. Das Brummen des Netzteils bekam ich nicht in den Griff. Um auf Akku oder/und ein normales Netzteil mit nur einer Spannung umzubauen musste ich das Klangregelteil ersetzen. Das zuerst eingesetzte hat ja eine symmetrische Versorgung von 2 x 12-17V AC. Die Endstufe benötigt 6-12V DC. Dieses Klangregelteil ist vorteilhaft wenn man nur einen kleinen NF-Verstärker einsetzt und die Spannungsversorgung für Endstufe und Empfänger am Klangregelteil abgreift.
Jetzt habe ich ein Klangregelteil eingesetzt welches wie die Endstufe ebenfalls nur mit einer einfachen Spannung versorgt wird. Natürlich passte es mechanisch nicht 1:1. Ich musste die rechte Frontplattenhälfte neu konstruieren, und berücksichtigte dabei auch gleich die Mulden für die Potis, die nur bis max. 3mm Dicke der Frontplatte einsetzbar sind, bzw. ich versenkte die Zentralmuttern. Die DIN-Buchse, an der das alte Netzteil angesteckt war, belies ich zur Spannungsverteilung, drehte sie aber um, so das die Netzteilbuchse der Endstufe jetzt zugänglich ist und zur Spannungseinspeisung benutzt werden kann. Ein testweise angeklemmter 9V-Akku recht jetzt aus um das ganze Radio zu versorgen. Wenn ich mir im klaren bin welche Schaltelemente ich noch benötige und wie die Antenne genau aussehen soll erfolgt noch eine Revision des roten Front-Mittelteils.
Die Feststationstasten sind jetzt verdrahtet. Sie liefern mir 4 verschieden Spannungsteilerverhältnisse welche ich über einen einzelnen Analogport abfrage. Die genauen Binärwerte ermittelte ich mit dem seriellen Monitor und codierte sie mit genug Toleranz. Die Frequenzanzeige hat jetzt ihren Dezimalpunkt, und die aktuelle Empfangsfrequenz wird im EEPROM abgelegt und beim Einschalten des Radio wieder eingelesen. Jetzt könnte ich mir noch den Akkuzustand im Display anzeigen lassen, fertige codeschnippsel findet man problemlos. Mal sehen. Die software stelle ich am besten mal separat vor, da sie eigentlich nicht an das Radio gebunden ist.

   

   

   

   

   

   

   

   

   

   

   
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#30
Wie im Quelle Katalog oder wie man das von Computer Lautsprechern kennt!
Verstärker 2x15 Watt, betrieben mit einem 10Watt Trafo (oder einem kleinen 9V Akku...)
Die wundersame Leistungsvermehrung - die haben's echt drauf, die Chinesen Smiley34

(Musste jetzt mal ein bisschen stänkern, damit Du nicht NUR Lob kriegst für die Kiste - wäre ja langweilig Wink)
Gruß,
Uli
Zitieren
#31
gut das du mich wieder auf den Boden zurück holst, Uli :-)

Immerhin ist der NF-Baustein für den Einsatz prädestiniert:

Zitat:DESCRIPTION The TDA7297 is a dual bridge amplifier specially designed for TV and PortableRadio applications
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#32
kommen wir nun zur software. Die wollte ich eigentlich unabhängig vom Vietnam-Radio vorstellen, aber ich finde kein geeignetes Forum. Die software ist trotzdem recht universell. Sie gilt für einen SI4703-Radiobaustein, der von einem Arduino gesteuert wird. Zur Abstimmung wird ein rotary encoder benutzt, ausserdem gibt es 4 fest programmierte Stationstasten. Die Verdrahtung ergibt sich zum Teil aus der Konstellation, zum Teil hab ich Festlegungen getroffen. Die Signalleitungen zum encoder sowie zu den preset-Tasten führe ich zur Entstörung über RC-Glieder. Der I2C-Bus und die RST-Leitung des SI4703 werden von einem level-converter von 5V auf 3,3V umgesetzt.

Nicht änderbar sind die Belegungen D3 und D7 zum encoder, weil diese I/O's interruptfähig sind. Es sei denn man verzichtet auf die Interrupts. Auch nicht änderbar A4=SDIO und A5=SCLK sowie D2=RST für den I2C-Bus. Das gilt jedenfalls für die meisten Arduino-Modelle (Mini, Nano..).

Frei festgelegt sind hingegen D11 für die AFC-LED, D12 für die Stereo-Anzeige und A0 für das preset-Netzwerk.

Ein Schaltplan wird bei Gelgenheit nachgereicht, der ist im Moment noch eine Skizze.

Dem sketch zugrunde liegt die SI4703_Breakout library von Simon Monk. Bitte hier auf einen aktuellen Stand achten. Die Vorversion hat abweichende Syntax. Ich hatte auch mit anderen Bibliotheken experimentiert, aber favorisiere inzwischen die Monk-Bibliotheken.

Auch bei der LiquidCrystal_I2C library gibt es unterschiedliche Versionen. Bei der einen geschieht die Initialisierung mit lcd.begin(); , bei einer anderen mit lcd.init();. Ansonsten sind beide Varianten einsetzbar.

Der sketch soll mir auch für andere Projekte dienen. Dazu sind immer nur kleinere Änderungen notwendig. Für eine LED-Stripe-Ausgabe habe ich D4 vorgesehen, die software dazu allerdings der Übersicht wegen aus dem gezeigten sketch entfernt. Im Labormuster verwendete ich eine Analogausgabe der Frequenz. Dazu wird ein port mit PWM-Fähigkeit benötigt. Bei einem 1mA-Instrument ist ein Vorwiderstand von 4,9K nötig. Auch eine Poti-Abstimmung ist denkbar. Dazu muss das Poti von der internen oder einer externen Referenzspannung versorgt werden. Auch hier ist ein RC-Glied zur Glättung erforderlich sowie geeignete Software-Massnahmen für eine stabile Frequenzausgabe. Das war übrigends eine der schwierigsten Aufgaben auf meinem Weg zum µPC-Radio.

Kommen wir zurück zum Vietnam-Radio. In den Sub-Routinen SI4703_seekUpAuto und SI4703_seekDnAuto gibt es noch einen erwähnenswerten Parameter. Der tune-Wert in der Zeile "if(((SI4703AFC_Tune==false)&&(SI4703RSSI_Tune>15)))" , das ist hier die 15, bestimmt die Schaltschwelle des Suchlaufes. Ja, ich benutze eine Suchlauffunktion zur manuellen Abstimmung. Möglicherweise bin ich der einzige im Netz der sowas macht. Es ist superbequem den Encoder nur eine Raste in eine Richtung zu bewegen und der nächste empfangbare Sender in dieser Richtung wird automatisch eingestellt. Mit dem Wert 15 stoppt der Suchlauf schon bei jeder Störung, und empfängt daher auch schwache Sender. Mit dem Wert 20 sind nur die starken Ortssender zu empfangen. Hier gibt es also Spielraum.

Code:
/// SI4703 Nano Rotary sketch mit der SI4703_Breakout library von Simon Monk. Auf die aktuellere Version achten! Diese
/// hat bei der Objektdefinition 4 Parameter (resetPin, SDIO, SCLK, RDSInterruptPin), die alte Version nur 3.
/// Jupp Haffner 9.11.2017
///
/// Wiring
/// ------
/// The SI4703 board has to be connected by using the following connections:
/// | Arduino UNO pin    | Radio chip signal  |
/// | -------------------| -------------------|
/// | 3.3V (red)         | VCC                |
/// | GND (black)        | GND                |
/// | A5 or SCL (yellow) | SCLK               |
/// | A4 or SDA (blue)   | SDIO               |
/// | D2 (white)         | RST                |

#include <Arduino.h>
#include <Wire.h>
#include <radio.h>
#include <Si4703_Breakout.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>

/*SI4703 - Pins*/
int resetPin = 2;
int SDIO = A4;
int SCLK = A5;
int RDSInterruptPin = 3; // GPIO2 for RDS Interrupt

int AF_LED    = 11;
int StereoLED = 12;

/*EEPROM*/
int ChannelEEP=0x01;
//int VolumeEEP=0x02;

int volume = 30;
int rssi; //signal-level
int tune; //AFC
int stereo;

/*Init SI4703 Driver*/
Si4703_Breakout radio(resetPin, SDIO, SCLK, RDSInterruptPin);

//Rotary Encoder http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/keyes-ky-040-arduino-rotary-encoder-user-manual/
int clk = 3;  // Connected to CLK on KY-040
int dt = 7;  // Connected to DT on KY-040
volatile int channel = 1017; //vorbelegt für den ersten Start
volatile byte INTFLAG1 = 0; //interrupt status flag
volatile byte UP_FLAG = 0; //seekUp
volatile byte DOWN_FLAG = 0; //seekDn

int seek = 0; //Zählvariable für channel
int analogport = A0; //Analogpin für preset-Netzwerk
int analog = 0; //Zählvariable für preset-Netzwerk

LiquidCrystal_I2C lcd(0x3F,16,2);

void setup()
{
 
  //Rotary Encoder KY-040 pull up's built in
  pinMode (clk, INPUT);
  pinMode (dt, INPUT);
  // interrupt 1 digital pin 3 positive edge trigger
  attachInterrupt(digitalPinToInterrupt(clk), flag, RISING);

  //Read last channel and volume
  GetDataFromEEP();
       
  //Initialize and Power up the SI4703
  radio.powerOn();
  radio.powerOn();
  radio.setVolume(volume);
  //radio.setChannel(channel);

  lcd.begin();
  //lcd.init();
  lcd.clear();
  lcd.setBacklight(1);
}

void loop()
{

if (channel != seek) {
  radio.setChannel(channel);
  seek = channel;
  displayInfo();
  SetDataToEEP();
}
 
  //Rotary Encoder
  if (INTFLAG1)   {
       //ISP ausgelöst
       if (UP_FLAG) SI4703_seekUpAuto();
       if (DOWN_FLAG) SI4703_seekDnAuto();
       // clear flags
       INTFLAG1 = 0;
       UP_FLAG = 0;
       DOWN_FLAG = 0;
       displayInfo();
       delay(40);
  }

  analog = analogRead(analogport);
 
  switch(analog)
  {
    case 100 ... 150:
      channel = 880;
      break;
    case 250 ... 300:
      channel = 955;
      break;
    case 380 ... 420:
      channel = 1009;
      break;
    case 500 ... 550:
      channel = 1017;
      break;
  }
   
}

//ISR for Encoder: http://www.bristolwatch.com/arduino/arduino2.htm
void flag() {
  INTFLAG1 = 1;
  // CW
  if (digitalRead(clk) && digitalRead(dt)) {
    UP_FLAG = 1;
  }
  // CCW
  if (digitalRead(clk) && !digitalRead(dt)) {
    DOWN_FLAG = 1;
  }
}

void displayInfo (void)
   {
   rssi=radio.getRSSI();
   tune=radio.getTune();
   stereo=radio.getStereo();
   
   lcd.setCursor(0,0);
   lcd.print("Vietnam "); lcd.print(float(seek)/10,1); lcd.print("MHz ");
   lcd.setCursor(0,1);
   if (stereo) lcd.print("STEREO "); else lcd.print("MONO   ");
   if(tune==0){lcd.print("RSSI:"); lcd.print(rssi); lcd.print("db");}
   if(tune==1){lcd.setCursor(0,1); lcd.print("Tuning.stay.cool.");}
   }

void SI4703_seekUpAuto (void)
{
      channel+=1;
      radio.setVolume(0);
      radio.setChannel(channel);
      delay(100);
      for(seek=channel;; seek++)
      {
         if(seek>1080)seek=875;
         radio.setChannel(seek);
         displayInfo();
         delay(30);
         int SI4703AFC_Tune=radio.getTune();
         int SI4703RSSI_Tune=radio.getRSSI();
         delay((SI4703RSSI_Tune*4));
         if(((SI4703AFC_Tune==false)&&(SI4703RSSI_Tune>15)))
         {
            radio.setVolume(volume);
            channel=seek;
            SetDataToEEP();
            break;
         }
      }     
}

void SI4703_seekDnAuto (void)
{
      channel-=1;
      radio.setVolume(0);
      radio.setChannel(channel);
      delay(100);
      for(seek=channel;; seek--)
      {         
         if(seek<=875)seek=1080;
         radio.setChannel(seek);
         displayInfo();
         delay(30);
         int SI4703AFC_Tune=radio.getTune();
         int SI4703RSSI_Tune=radio.getRSSI();
         delay((SI4703RSSI_Tune*4));
         if(((SI4703AFC_Tune==false)&&(SI4703RSSI_Tune>15)))
         {
            radio.setVolume(volume);
            channel=seek;
            SetDataToEEP();
            break;
         }
      }
}

void GetDataFromEEP (void)
{
  channel=EEPROM.read(ChannelEEP)+875;
  //volume=EEPROM.read(VolumeEEP);
}

void SetDataToEEP (void)
{  EEPROM.write(ChannelEEP,channel-875);
  //EEPROM.write(VolumeEEP,volume);
}
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#33
mit der Dokumentation tat ich mich schwer. Eagle war ungeeignet, dagegen gefiel mir aber die Darstellung von fritzing. Nicht aber die libraries, und neu schreiben wollte ich sie nicht. Dann hab ich in Word etwas gebastelt mit Produktfotos, Ausschnitten von fritzing und den Zeichenfunktionen von Word. Ich denke es ist ganz übersichtlich geworden, wenn auch etwas krackselig.

   
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren


Gehe zu: