SI4735 in der Küche
[Nachträglich hinzugefügte Info: Das Projekt ist mittlerweile beendet, die Unterlagen sind hier zu finden!]
Ich brauche ein neues Küchenradio. Könnte man kaufen – oder selbst bauen. Selbst bauen hat den Vorteil, dass man die Sache sehr wertig machen kann und nicht überall auf die Kosten zu schauen braucht um die Gewinne zu erhöhen. Also, gleich selbst machen und das auch noch möglichst gut.
Als Herzstück kommt ein amerikanischer Tuner-Chip von Silicon Labs zum Einsatz, ein SI4735. Dieser nur 3x3mm kleine Chip beherbergt den kompletten Empfänger auf DSP-Basis. Dieses neuartige Konzept macht unschlagbare Empfangseigenschaften möglich. Glasklarer und rauschfreier Empfang von selbst schwachen Sendern. Von der Leistungsfähigkeit dieser Chip-Familie konnte ich mich schon bei einem chinesischen Tuner überzeugen lassen, den ich kürzlich bestellt hatte.

Der Chip wird per I2C-Bus gesteuert. Die Ansteuerung habe ich durch einen ATmega8-Microcontroller von Atmel realisiert. Dieser Controller verwaltet die Stationstasten, Tasten für Lautstärke und Frequenzwahl. Ausserdem wird ein Display (2 Zeilen, je 20 Zeichen) angesteuert auf dem alle Informationen bis hin zu RDS-Radiotext angezeigt werden sollen.
Im unteren Bereich finden sich zwei kleine Audioverstärker (LM386) zur Versorgung der Lautsprecher. Als Stromversorgung habe ich wieder ein bewährtes Schaltnetzteil verwendet. Die Taktversorgung des Controllers ist ein 4-MHz-Quarzoszillator der auch gleichzeitig die Frequenzbasis des Empfängerchips darstellt.
Bei der ganzen Sache muss man allerdings sehr vorsichtig sein: Der Empfängerchip verträgt an seinen Eingängen (Bus und Takt) maximal 3,3 Volt – der Rest der Schaltung arbeitet aber mit 5 Volt. Der I2C-Bus läuft trotzdem einwandfrei da das System nur einen Low-Pegel und einen Nicht-Low-Pegel definiert so dass 3,3 Volt auch als Nicht-Low gelten und somit als High. Aber: Ein kleiner Programmierfehler und der Chip bekommt 5 Volt ab – und 35 Euro gehen in Rauch auf.
Im Moment sieht es so aus: Beim Einschalten gibt der Microcontroller über den Bus diverse Befehle an den Tuner-Chip aus. Dieser wird in der Betriebsart FM initialisiert und bekommt diverse Informationen über Emphasensettings und Antennenankopplung. Dann übergibt der Controller noch meine gewünschte Empfangsfrequenz und die gewünschte Lautstärke. Diese Startprozedur dauert knapp eine Sekunde, dann läuft die Musik.
In den nächsten Tagen und Wochen werde ich die Software weiterentwickeln damit am Ende auch alle Tasten funktionieren. Dann kommt das Display an die Reihe und die Auswertung der RDS-Informationen. Und ganz am Ende muss noch ein Gehäuse gemacht werden. Aber das Wetter bleibt ja noch eine Weile so schlecht ;-)
Hallo,
ich habe auch ein Radio mit dem SI4735 aufgebaut. Angesteuert wird es durch einen Atmega64, weiterhin gibt es noch ein GLCD 128×64 und das ganze soll ein Radiowecker werden. Bis auf eine Sache funktioniert der SI4735 einwandfrei. Der SI4735 besitzt 64 Stufen für die Einstellung der Lautstärke. Bei der kleinste Stufe(ganz Leise) sind starke Audioverzerrungen hörbar, diese Verzerrungen verringern sich mit Zunahme der Lautstärke. Ab einer Lautstärkestufe von 35 sind die Verzerrungen nicht mehr hörbar. Das Audiosignal ist dann gut. Am nachfolgenden TDA7035 liegt es nicht, dass habe ich getestet, es kommt definitiv aus dem SI4735.
Wie ist es bei deinem Radio, ist das Audiosignal im gesamten Lautstärkebereich sauber???
Ich habe das Gerät nun softwareseitig so gut wie fertig, auch die Auswertungen der RDS-Funtkionalitäten wie PS, Radiotext, Uhrzeit funktionieren einwandfrei. Ich habe mich also in den letzten Tagen mehr um die Software gekümmert und die Hardware in ihrem “Prototyp-Stadium” belassen.
Bei mir ist das gleiche Phänomen wie bei dir zu beobachten. Allerdings habe ich das Problem bislang auf nicht ausreichende Abschirmung geschoben (der ATmega macht ja schon ein bisschen Störnebel und das Netzteil tut ein Übriges). Das werde ich demnächst beheben.
Ein weiterer Punkt ist der I2C-Bus, der teilweise deutlich im Audio hörbar ist. Auch das wollte ich demnächst mit veränderten Pull-Ups und Serienwiderständen in den Griff bekommen.
Könnten die Störgeräusche bei dir von den genannten Punkten kommen?
Hallo Stefan,
danke für die schnelle Antwort.Störgeräusche habe ich nicht im Audiosignal. Die Verzerrungen des Audiosignals die ich meine, hören sich genauso an, als wenn man ein Verstärker stark übersteuert. Zum testen des SI4735 hatte ich zu beginn ein Steckboard verwendet. Die Störgeräusche vom I2C-Bus waren auch vorhanden. Mit 10K Widerständen in den Leitungen SCL und SDA sind die Störungen jetzt kaum noch zu hören. Bei ELEXS haben sie die auch eingebaut. Die Störungen sind aber nur aufgetreten wenn der SI4735 über den I2C-Bus angesprochen wurde. Auf dem Steckboard hatte ich den SI4735 meistens mit fast max. Ausgangslautstärke betrieben, dass Signal dann über ein Poti auf ein LM386 geführt. Die Laustärke hatte ich dann über das Poti eingestellt. Nur zum Anfang hatte ich die Lautstärkeeinstellung vom SI4735 benutzt,ich bin mir nicht mehr ganz sicher, es ist auch schon eine Weile her, aber ich glaube die Verzerrungen waren damals auch schon da. Den SI4735 hatte ich auch Stand-alone zu laufen, bei laufendem SI4735 habe ich den Atmel von der Versorgungsspannung genommen. Die Lautstärke des SI4735 war damals in dem Moment fast max. gewesen, ich hatte ein sehr guten Klang und das anschließende Abschalten des Atmel hatte nichts verursacht, der Klang blieb gut. Jetzt befindet sich die ganze Schaltung auf einer Zweiseitigen Platine. Schaltplan und Layout sind mit Eagle entstanden und die Platine hat BetaLayout gefertig. Wie gesagt, bei einer höheren Lautstärkeeinstellung des SI4735 habe ich keine Probleme, der Audioklang ist gut(sauberer Klang)und Störgeräusche müssten dann ja trotzdem zu hören sein. Momentan denke ich der SI4735 hat ein Problem mit der Lautstärkeeinstellung. Die Datenblätter vom SI4735 habe ich auch schon rauf und runter gelesen und nichts gefunden. In der Elektor 11.2009 wurde der SI4735 vorgestellt, da habe ich auch nichts auffälliges gefunden. Vielleicht frage ich mal bei Elektor oder ELEXS nach ob die dieses Problem auch haben. Wenn alle Stricke reißen nehme ich ein DS1803 und stelle die Lautstärke über den ein, der SI4735 läuft dann immer auf max. Lautstärke, bei der das Audiosignal ja Verzerrungsfrei ist.
Richtig, die Widerstände in den Busleitungen sind definitiv nötig – Den Datenverkehr zu minimieren ist in meinem Fall nicht machbar: Durch die RDS-Funktionen und den scrollenden Radiotext brauche ich ständig die Daten vom SI4735.
Das von dir beschriebene Problem habe ich auch. Mir scheint aber, als wäre das verzerrte Signal leise immer zu hören, nur dass es bei normaler bis hoher Lautstärke vom Nutzsignal überlagert wird und somit nicht zur Geltung kommt. Wäre wirklich sehr interessant was Elektor oder Elexs dazu sagen!
Ich vermute aber, das Silicon Labs die Funktion der Lautstärke-Einstellung gar nicht so gedacht hat, sondern sie eher zur einmaligen Anpassung in ein Gesamtsystem dienen soll. Silabs unterscheidet ja zwischen COMMANDS (die bei laufendem Betrieb immer wieder angepasst werden sollen) und PROPERTY (die beim Initalisieren normalerweise nur einmalig zu setzende Befehle sind). Und die Lautstärke-Einstellung ist ein PROPERTY. So nach dem Motto “Stelle die Lautstärke auf deinen Nennpegel ein beim Einschalten, alles weitere mache dann mit einem externen Regler”. Die Vermutung kommt zumindest auf.
Ich werde mich mit dem Problem beschäftigen wenn ich alles andere am Laufen habe.
Und vielleicht gibt es ja auch noch eine Alternative zum DS1803? Er ist relativ teuer und scheint in der DIP-Version derzeit nicht einfach zu beschaffen zu sein :-(