MP3-Player
September 2002

Das Radiohören wurde in den letzten Jahren immer unerträglicher, heute müssen die Sender ihre Hörer schon mit Geld oder günstigem Benzin ködern, damit sie nicht abschalten. Auf die Idee, statt des Einheitsbreis, mal wieder ein ordentliches Programm zu machen, ist leider noch keiner gekommen.

Um nun auch im Auto Musik nach eigenem Geschmack hören zu können, verfolge ich schon seit ein paar Jahren die Idee, einen MP3-Player zu bauen. Zunächst sollte es ein kleiner Industrie-PC sein, der unter Linux läuft und mittels xmms MP3s abspielen könnte. Daneben könnte man natürlich auch noch Navigationssoftware und anderes laufen lassen. Diese winzigen PC-Boards sind aber doch sehr teuer, dafür aber meist recht langsam, auch ist es nicht so einfach, im Auto noch ein Display unterzubringen. Über das Stadium der Marktforschung und des Prospekte sammelns kam ich damit nicht hinaus.


top next   Das Projekt

Als ich mit einem Freund mal wieder darüber diskutierte, machten wir mal schnell eine Recherche im Internet und stießen auf das Projekt yampp.

Schnell entschlossen bestellten wir Platinen und Spezialbauteile im Webshop in Schweden, wo die Umsatzsteuer mit 25% besonders hoch ist. Den Rest besorgte ich vor allem bei Segor, einen kleinen Teil steuerte Conrad bei.

Also bauten wir den yampp-3/USB, der neben einer seriellen Schnittstelle auch einen USB-Anschluß besitzt. Außer über die Tasten am Gerät ist auch eine Steuerung mittels Infrarot-Fernbedienung möglich. Das Gerät besitzt einen Kopfhörerausgang und ist für den Betrieb am 12V-Bordnetz vorgesehen. Die Musik lagert auf einer 2,5"-Notebook-Festplatte, die bei uns 20GB aufnehmen kann. Da passen dann etwa 5000 Songs drauf, zwei Wochen ununterbrochener Musikgenuß, wenn man nicht auch mal schlafen müßte...

MP3-Player
Fertig aufgebauter MP3-Player

Herausgekommen ist nun ein schönes kleines Gerät mit den Maßen 111x73x37mm^3 und einem Gewicht von 310g, der Stromverbrauch beträgt 300mA bei 12V.




top next   Aufbau

Beginnend mit der Hauptplatine war zunächst einiges an SMD-Bauteilen zu bestücken. Das Besorgen der Bauteile war nicht ganz so einfach, da ja auch möglichst alles ins vorgegebene Raster der Leiterplatte passen sollte. Für diejenigen aus der Gegend gibt es hier meine Bauteileliste mit den Bestellnummern von Segor bzw. Conrad.


Bestückte Hauptplatine

Die Platine paßt von der Größe her genau auf eine 2,5" Notebook-Festplatte und ich hatte natürlich den Ehrgeiz, daß das ganze Gerät auch nicht viel größer wird. So wurde auch die Bauhöhe gegenüber dem Original deutlich reduziert, indem einige Bauteile umgelegt und die überstehenden Pins auf der Unterseite der Platine extrem kurz gehalten wurden. So kann eine weitere Platine in geringem Abstand oberhalb mittels 8mm-Distanzhülsen befestigt werden. Die Eingangsbeschaltung für die Stromversorgung wurde nach oben verlagert, um Freiraum für eine Stromversorgungsbuchse zu schaffen.

Diese I/O-Platine ermöglicht es, das Benutzerinterface aus LCD-Display, Tasten und Infrarot-Empfänger sehr platzsparend aufzubauen. Die Tasten wurden über Dioden entkoppelt, um zu verhindern, daß der Datenbus kurzgeschlossen wird, wenn zwei Tasten gleichzeitig gedrückt werden.


I/O-Platine

Auf der Unterseite finden die Buchsen für die Stromversorgung, die serielle Schnittstelle sowie einen externen Infrarot-Empfänger nebst Umschalter Platz.


Unterseite der I/O-Platine

Die Verbindung der beiden Platinen erfolgt direkt über die Pfostenleisten, deren Pins auf passende Länge gebracht werden müssen. Nur bei der seriellen Schnittstelle ist dafür kein Platz und es wird ein dreiadriges Kabel mit Steckverbindung auf der Platinenoberseite verwendet. Das LCD-Display wurde etwas versenkt eingebaut. Wie man an den zu groß geratenen Ausschnitten sieht, hatte ich zunächst mit einem breiteren 2x24 LCD-Display geliebäugelt. Aber dann sollte alles doch in erster Linie klein werden und so blieb es bei 2x16. Auch auf eine Beleuchtung wurde zugunsten der niedrigeren Bauhöhe verzichtet.

Die Hauptplatine wird mittels 8mm langen M3-Abstandsbolzen mit Innen- und Außengewinde auf die Festplatte geschraubt, wobei alle Gewinde auf passende Länge gekürzt werden müssen. Zwei Unterlegscheiben übereinander sorgen hier für einen Abstand von 0,8mm zwischen Festplatte und Platine. Bei der Platine müssen zu lange Pins gekürzt werden, auch habe ich hier vorsichtshalber eine Folie zur Isolierung dazwischengelegt. Die I/O-Platine wird ebenfalls mittels 8mm langen Abstandsbolzen auf die Hauptplatine geschraubt. Hierauf kommt dann später die Frontplatte.


Aufbau des MP3-Players

Aus Platzgründen wurde für die serielle Schnittstelle nur eine Klinkenbuchse eingebaut. Ein Adapterkabel sorgt für die normgerechte Verbindung. Da die Buchse am Flachbandkabel zum AVR-Programmer ebenfalls zu breit ist, kommt auch hierfür ein Adapter zur Verlängerung zum Einsatz. Alternativ hätte man auch eine Stiftleiste mit deutlich längeren Stiften verwenden können.


Adapter für RS232 und Programmer



top next   Gehäuse

Trotz intensiver Suche habe ich kein Gehäuse gefunden, bei dem nicht jede Menge Platz verschwendet worden wäre. So entschloß ich mich, selbst ein Gehäuse aus einseitig kupferkaschierten Leiterplatten zu bauen.


Seitenwände des Gehäuses

Zwei Seitenwände an der Festplatte montiert

Aus den Seitenwänden wird zunächst ein Rahmen aufgebaut, der zunächst nur an ein paar Punkten zusammengelötet wird. Vorher sind alle benötigten Bohrungen und Ausbrüchen für die Steckverbindungen zu erstellen. Anschließend kann dann eine Bodenplatte, ebenfalls aus einer Leiterplatte, eingepaßt werden. Unterhalb der Festplatte habe ich einen Millimeter Luft vorgesehen. Die Sichtseite wurde während der Bearbeitung durch Abkleben mit Tesa Packband 4124 braun geschützt, das auch wieder rückstandslos entfernt werden konnte.

Gehäuse
Gehäuse aus Cu-kaschierten Epoxy-Leiterplatten

Die Frontplatte besteht ebenfalls aus einer Leiterplatte, so daß der MP3-Player durch die Kupferflächen rundum abgeschirmt ist. Darauf kommt eine Folie mit Beschriftung, die durch eine dünne Plexiglasplatte abgedeckt wird. Mangels geeignetem Material wurde hierfür eine 1,2mm dicke CD-Hülle zweckentfremdet, die während der Bearbeitung wieder beidseitig mit Packband gegen Kratzer geschützt wurde.


Aufbau der Frontplatte



top next   Schaltungsänderungen

Die wichtigsten Schaltungsänderungen, die ich vorgenommen habe:

  • Die Speicherdrossel L3 für das Schaltnetzteil besteht bei mir aus einem Amidon Ringkern T50-26 mit 30 Windungen 0,63mm CuL-Draht, was eine Induktivität von 30uH bei einem Widerstand von 30 Milliohm ergibt. Die Schaltfrequenz des Reglers ist mit etwa 200kHz vielleicht ein wenig hoch für dieses Kernmaterial, aber die Kerne gab es halt in meiner Bastelkiste. Andererseits erwärmt sich die Drossel nur unwesentlich, die Kernverluste müssen also noch recht klein sein. Der Schaltregler erreicht, ohne die Verluste in D3 zu berücksichtigen, einen Wirkungsgrad von 82%. Vor allem wegen der Bauform ist C19 bei mir 100uF, C18 besteht aus zwei mal 220uF und 470nF keramisch parallel.

    Schaltnetzteil

  • -rgerlich ist, daß der verwendete Schaltregler MAX1626 nur 16,5V am Eingang verträgt, was eine aufwendigere Schutzbeschaltung für die im Auto vorkommenden Spannungen erforderlich macht. Als Supressordiode D4 verwende ich eine 1,5 KE 15A, die kurze Spikes bei etwa 16,2V kappt. Da an D3 doch einiges an Leistung verlorengeht, werde ich sie eventuell durch eine Schottkydiode TMBYV 10-40 ersetzen. Da auf der Platine noch etwas Platz war, wurde auch eine Sicherung 500mA mittelträge eingebaut.

  • Die Schaltung hat sich im Auto grundsätzlich beim Starten des Motors aufgehängt, da die Versorgungsspannung, die vom Radio bezogen wird, dabei kurzzeitig abgeschaltet wird. Eine bessere Reset-Schaltung sorgte für Abhilfe.

    Alternative Reset-Schaltung

    Ein integrierter Reset-Generator hängt über einen Spannungsteiler an der 12V-Eingangsspannung und erzeugt ein Reset solange die Bordspannung weniger als 9V beträgt. Der Schaltregler liefert ab 6,5V eine stabile Ausgangsspannung von +5V, so daß hier genügend Reserve besteht. Der verwendete Maxim MAX6328UR-29T verlängert den Reset automatisch um etwa 100ms nach Anliegen einer ausreichenden Versorgungsspannung. Es wurde die Open-Drain-Variante gewählt, damit es keine Kollisionen bei manuellem Reset oder dem Programmieradapter gibt.

  • Optional kann man auch noch, ähnlich wie für yampp-3 vorgesehen, MP3-Decoder, USB-Controller und Festplatte mit einem separaten, vom Microcontroller generierten Reset-Signal versorgen. Dies ist eigentlich nur bei Aktivierung des Watchdogs erforderlich, oder um die Reset-Leitung beim USB-Controller wie gefordert aktiv nach High zu ziehen. Für dieses zweite Reset-Signal steht die Leitung PD2 des ATmega161 zur Verfügung, die vorhandene RST-Leitung wird auf der Leiterplatte entsprechend aufgeteilt. Die Software muß ebenfalls angepaßt werden.

    Reset für Peripherie


  • Die beiden Leitungen RD und WR erhielten je einen PullUp-Widerstand von 100k, damit das RAM auch im Reset- bzw. Programmierfall sicher abgeschaltet ist.

  • Bei mehreren gleichzeitig gedrückten Tasten, was nie auszuschließen ist, würde der interne Datenbus kurzgeschlossen. Ich vermeide dies, indem ich die Tasten mit Dioden 1N4148 entkoppelt habe. Die Kathode weist dabei zum Datenbus AD0..AD7.

  • Ich habe neben dem internen Infrarot-Sensor für die Fernbedienung auch eine Buchse für einen externen Sensor vorgesehen. Hiermit ist es möglich, das Gerät an beliebiger Stelle zu verstauen und nur den Sensor irgendwo sichtbar anzubringen. Ein kleiner Umschalter dient zur Auswahl.

  • Nach meinem Eindruck wurden im Layout Hochfrequenz-Eigenschaften so gut wie nicht berücksichtigt. Das Problem mit den von den ICs ziemlich weit entfernten Entkopplungskondensatoren wurde ja bereits im Forum angesprochen. Als Funkamateur muß man aber auch an die Störfestigkeit von außen denken, daher habe ich den Kopfhörerausgang mit einem LC-Filter entkoppelt. Am 12V-Eingang hab ich noch ein paar 100nF bzw. 470nF Kondensatoren und zwei Ferritperlen spendiert.

    LC-Filter am Ausgang



top next   Inbetriebnahme

Der verwendete Microcontroller ATmega161 muß zunächst mit der Firmware programmiert werden, die zuvor kompiliert werden muß. Zunächst mußte ich also den AVR GNU C-Compiler unter Linux installieren. Man findet verschiedene Varianten im Internet, wie das Ding zu installieren wäre, irgendwann funktionierte es dann auch. Zum Programmieren des Microcontrollers verwende ich wie bei meinen anderen AVR-Projekten PonyProg mit einem STK200-ähnlichen Programmier-Interface.

Die 2,5"-Notebookplatte wurde mittels eines Adapters an meine Workstation gehängt, um sie mit jeder Menge MP3s zu füllen.

Das Timing für das LCD-Display war zunächst zu kurz, mit ein paar eingefügten NOPs ging es dann. Sie befinden sich inzwischen auch standardmäßig in der neueren Firmware.

Ich habe den Eindruck, daß der Watchdog manchmal grundlos zuschlägt, bin aber in der Software noch nicht soweit vorgedrucgen, um das alles zu verstehen.

Besonders ärgerlich sind gelegentliche Aussetzer bei Datenraten oberhalb 128k, ich kam allerdings auch noch nicht dazu, zu untersuchen, woran dies liegt. 256k-Stücke haben jedenfalls nicht mehr Aussetzer als solche mit 160k... Mit der neueren Version, die auf YADL basiert, sind zwar noch nicht alle Macken beseitigt, aber es hört sich doch deutlich besser an.

Der Infrarot-Sensor SDP8600 erscheint mir wenig geeignet, die maximale Reichweite beträgt nur etwa 30 cm, außerdem bekam ich beim Identifizieren der Codes mehr oder weniger beliebige Werte. Der Austausch gegen einen TSOP1838 (38kHz), der die Hüllkurve des Empfangssignals auswertet, brachte Erfolg. Wenn man die Möglichkeit hat, sollte man mit einem Oszilloscope die Frequenz der eingesetzten Fernbedienung messen, um so den dazu passenden IR-Empfänger auszuwählen.

Die USB-Schnittstelle habe ich bisher nur kurz getestet... Unter Linux wird der MP3-Player als /dev/ttyUSB0 erkannt. Zumindest für die neue Firmware-Version, bei der die Platte mit einem proprietären Filesystem (YADL) läuft, müssen alle Songs ja über USB übertragen werden. Der Umbau ist inzwischen erfolgt und ich übertrage den Kram halt zwangsweise mittels Windows XP über das Netzwerk von meinem Linuxrechner.




top  Einbau ins Auto

Einen Platz für den MP3-Player im Auto zu finden, das schon ziemlich vollgestopft ist mit allem möglichen Kram, ist gar nicht so leicht. Nach einigem Experimentieren habe ich dann einen Messingrahmen als Halterung gebaut, der in den Aschenbecher paßt.


Halterung für ein Nichtraucher-Auto

Der Player befindet sich damit in der Mittelkonsole vor dem Schaltknüppel, in einem Neigungswinkel, bei dem sich sowohl das Display gut ablesen läßt und keine Reflexe von der Front- oder Seitenscheibe stören.


MP3-Player in der Mittelkonsole des Autos

Man sollte darauf achten, daß die Sonne im geparkten Auto nicht direkt auf das Display knallt. Bei Erwärmung werden LCD-Displays dunkler und heizen sich damit noch mehr auf. So kann es zu sehr hohen Temperaturen kommen, die das Display schädigen.
Seit dem letzten Winter habe ich auch einen dunklen Bereich, der sich vom Displayrand aus Richtung Mitte ausbreitet. Das könnte durch mechanischen Streß hervorgerufen sein, vielleicht durch zu niedrige Temperaturen. Ich plane das Display zu tauschen und hoffe dabei eines mit Hintergrundbeleuchtung unterzubringen.



Line
Document Revision:   23 Jul 2007
(c) 2007 Rolf Bleher
e-mail
Valid HTML 4.01! Prev Home Next