Bluetooth Audio Receiver mit PCM5102A

Bluetooth Audio Receiver mit PCM5102A

Bei uns im Wohnzimmer steht ein Receiver, der ziemlich genau 50 Jahre auf dem Buckel hat. Der Sony STR-V5 hat richtig Wumms, ist mit Wire-Wrap Verbindungen verkabelt wie frühere Raumfahrttechnik und wird sicher auch noch weitere 50 Jahre funktionieren. Das Problem war nur, dass er mit seinen Cinch-Eingängen nicht mehr mit aktuellen Geräten kompatibel ist, die drahtlos übertragen. Daraus entstand die Idee, für den Receiver einen etwas besseren Bluetooth-Empfänger zu bauen im Passenden Retro-Look. Das Endergebnis ist hier schon mal zu sehen.

Receiver betriebsbereit
Receiver betriebsbereit

Bluetooth-Audio

Vor diesem Projekt hatte ich keine Ahnung von Bluetooth. In meiner Vorstellung klang es recht einfach, die Audiodaten zu übertragen und dann abzuspielen. Leider ist es nicht ganz so. Aufgrund der begrenzten Datenrate einer Bluetooth-Funkverbindung müssen die Daten komprimiert werden. Das übernimmt ein „Codec“. Der muss natürlich der gleiche sein auf der Sender- und der Empfangsseite. Die ältesten und derzeit am weitesten verbreiteten Codecs sind „AAC“ und „SBC“. Audiophile Nutzer waren mit der Qualität dieser Kompression nicht zufrieden, sodass eine Reihe neuer Standards versuchen den Markt zu erobern. Neben „SBC“ und „AAC“ wetteifern nun auch “ aptX“, „aptX HD“ und „LDAC“ um die Gunst des Kunden. Nicht vergessen: Sender und Empfänger müssen den gleichen Codec unterstützen. Wenn man sich z.B. einen Bluetooth-Kopfhörer mit „aptX“ kauft, der Receiver aber „LDAC“ spricht, kommt nur eine Verbindung mit „SBC“ zustande, falls es überhaupt klappt.

Insgesamt ist der Bluetooth-Standard ziemlich komplex und mein Interesse hält sich in Grenzen da noch weiter einzutauchen. Die Software benutzt „SBC“, was von quasi allen Geräten unterstützt wird.

Lautstärkeregelung

Während der Programmierung ist mir aufgefallen, dass die Lautstärkeregelung bei Bluetooth der Knackpunkt ist. Das Grundproblem besteht darin, dass die Audio-Samples mit 16 Bit und üblicherweise 100% Lautstärke übertragen werden. Im Empfänger wird nun die Lautstärke reduziert auf sagen wir mal 35%. Das bedeutet, dass wir die Audio-Samples ungefähr durch 16 teilen müssen. Als Ergebnis haben wir Audiodaten mit einer Auflösung von nur noch 12 Bit. Und genauso hört sich das dann an.

Eine einfache Lösung für das Problem ist ein 32 Bit D/A-Wandler. Die empfangenen 16 Bit Samples werden in 32 Bit Werte umgewandelt, indem einfach Nullen angehängt werden. Das macht erst mal keinen Unterschied. Im zweiten Schritt können wir aber die Lautstärke mit dem 32 Bit-Wert berechnen und diesen dann direkt an den D/A-Wandler senden. Dadurch gibt es keinen Informationsverlust bei geringer Lautstärke, die 16 Bit Information bleiben erhalten.

Über die Geheimnisse einer gefälligen Lautstärkeregelung hatte ich kürzlich einen Artikel geschrieben.

Bauteile

Herzstück der Schaltung ist ein Mikrocontroller ESP32 der Firma Espressif. Das System bietet nicht nur reichlich Rechenleistung für 3,50 Euro, sondern ist auch noch stromsparend. Es gibt sehr viele Code-Beispiele vom Hersteller und lebhafte Diskussionen in Foren, was Anwendungsentwicklung und Fehlersuche erleichtern.

ESP-WROOM-32D Modul
ESP-WROOM-32D Modul

Als hochwertiger D/A-Wandler kommt ein PCM5102A von Texas Instruments mit 32 Bit und 112dB Signal-Rausch-Abstand zum Einsatz. Eigentlich ist der für Bluetooth-Audio viel zu gut, die Vorteile der 32 Bit zahlen sich aber bei der Lautstärkeregelung aus.

D/A-Wandler Board
D/A-Wandler Board

Das ganze wird noch ergänzt durch zwei Taster für Lautstärke und Reset, ein 128×64 Pixel OLED-Display und eine Lochraster-Platine. Bei diesem Projekt verwende ich fertige Module, die nur noch miteinander verbunden werden müssen. Das geht natürlich viel schneller, als ein eigener Platinen-Entwurf.

Bauteile
Bauteile

Schaltung

Da ich für das Projekt fertige Module verwendet habe, beschränkt sich die Schaltung auf wenige Verbindungen des zentralen ESP32 Moduls mit dem OLED-Display, dem D/A-Wandler und den zwei Tastern. Das ganze ist in einer Stunde zusammengelötet.

Verdrahtung Unterseite
Verdrahtung Unterseite
Schaltbild
Schaltbild

Das Schaltbild steht hier als pdf zur Verfügung.

Prototyp
Prototyp
Funktionstest
Funktionstest

Gehäuse

Aus verleimten Sperrholzresten habe ich ein kleines Gehäuse gebaut, was ganz chic geworden ist und für meinen Geschmack und gut zum Sony-Receiver passt.

Gehäuse aus Sperrholz - Vorderseite

Gehäuse aus Sperrholz - Unterseite
Gehäuse aus Sperrholz, Vorder- und Unterseite

Software

Die Software ist abgeleitet vom Beispiel „A2DP-SINK“ des ESP32-Herstellers Espressif. Das hat die Entwicklungszeit sehr verkürzt für mich, da die komplette und ziemlich komplexe Bluetooth-Kommunikation bereits im Beispiel implementiert ist. Ich habe noch eine Verarbeitung der Audio Samples für die Lautstärkeregelung und die Umwandlung von 16 zu 32 Bit hinzugefügt wie oben beschrieben. Außerdem habe ich die Routinen für das OLED-Display ergänzt. Auf dem Display wird der Betriebszustand, das verbundene Gerät und eine logarithmische Pegelanzeige dargestellt.

Am Ende hat die Programmierung und Fehlersuche dann doch deutlich länger als ein Wochenende gedauert, da noch eine Menge Bugs zu finden und zu beseitigen waren.

Den kompletten Quellcode, die Bedienungsanleitung und Anweisungen zum Compilieren des Projektes habe ich auf Github veröffentlicht.

https://github.com/uhucrew/bt-receiver-pcm5102a

 

 

Bekomme Updates per Email

Loading

Wochenendprojekt: Avalanche-Puls Generator

Dieses Projekt hatte ich schon vor einiger Zeit an einem freien Wochenende gebaut. Nun ist endlich mal Zeit, das hier zu dokumentieren. Ich wollte schon immer die Bandbreite von meinen beiden Oszilloskopen testen, ein Analoges und ein Digitales, wusste aber nicht wie. Hilfe gibt es vom Avalanche-Effekt auch Lawinendurchbruch genannt, der sich in der Raumladungszone im p-n Übergang eines Halbleiters abspielt. Bei dieser Art des Durchbruchs werden freie Ladungsträger exponentiell vervielfacht, was zu einem sehr schnellen Anstieg der Stromstärke führt. Mit anderen Worten: Man kann extrem schnelle bzw. steile Impulse erzeugen.

Idee

Die Idee hatte ich von diesem Artikel hier: Avalanche Pulse Generator Build Using 2N3904. Der Aufbau ist sehr simpel, benötigt aber mindestens 120V. Zum Glück kommt die Schaltung ohne spezielles Bauteil wie z.B. eine Avalanche-Diode aus. Es eignen sich viele Standard-Transistoren, die man in der Bastelkiste hat für den Avalanche-Effekt und einige 2N3904 waren vorhanden. Also kurzerhand eine kleine Lochrasterplatine zurechtgesägt, die Teile zusammengesucht und ans Werk.

Bauteile und Lochraster-Platine

Die Schaltung

Die Hochspannung erzeugt ein guter alter 555, nach einer Schaltung, die ich  schon mehrfach verwendet hatte, unter anderem im VU-Meter mit EM84. Der eigentliche Generator besteht aus nur 6 Bauteilen wie im Schaltbild zu sehen ist.

Schaltbild
Schaltbild

Aufbau

Zunächst hatte ich den 2N3904 ausprobiert. Bei meiner Transistor-Charge von SEGOR-electronics GmbH Berlin tritt der Avalanche-Effekt bei 130V ein. Bei Segor hatte ich auch ein paar 2N2369A erstanden, die schon bei ~90V den Lawinendurchbruch haben, für die ich mich dann schlussendlich entschieden habe. Vermutlich gibt es große Streuungen gibt je nach Hersteller und Produktionsjahr, man muss wohl etwas experimentieren.

Fertig zusammengebaut

Nach kurzer Zeit war die kleine Schaltung dann fertig zusammengelötet und alles funktionierte auf Anhieb wie geplant. Sehr gespannt war ich nun auf den Test der Bandbreite meiner zwei Oszilloskope. Für die Berechnung der Bandbreite aus der Anstiegszeit gibt es meines Wissens nach keine exakte Formel. Üblicherweise wird die Bandbreite mit 0,35 geteilt durch die Anstiegszeit berechnet. Die Anstiegszeit des Signals ist dabei die Zeit in der das Signal von 10% auf 90% des Endwertes ansteigt.

Oszilloskoptests

Als erstes war das gute alte analoge Tektronix 2465B (Baujahr 1991) dran.

Bandbreitentest TDS2465B

Der Bildschirm hat Markierungen bei 10% und 90% und einen Cursor für Δt. So kann man die Kurve prima einstellen und relativ genau ablesen. Die ermittelten 0,78ns Anstiegszeit ergeben eine Bandbreite von immerhin ca. 450MHz. Das ist deutlich mehr als der Hersteller angibt und ich bin sehr zufrieden.

Als nächstes wurde das digitale Modell TDS784C (Baujahr 1996) angeschlossen.

TDS784C Anstiegszeit

Das Gerät kann eine automatische Messung der Anstiegszeit vornehmen. Das Ergebnis ist ziemlich genau 1GHz Bandbreite, was auch der Hersteller angibt für das Gerät. Interessant war für mich, dass es nach einem initialen Anstieg auf etwas mehr als 10% so eine Art Pause gibt, nach der das Signal dann sehr schnell weiter wächst. In der Vergrößerung ist das besser zu sehen.

Anstiegszeit Detail

Gehäuse

Summa summarum war alles wie erwartet und ich habe wieder einiges gelernt bei diesem Versuch. Am Ende habe ich der Schaltung noch ein kleines chices Gehäuse spendiert, was mittlerweile sogar beschriftet ist.

Wochenendprojekt: Fledermausdetektor

Seit Jahren beobachte ich eine Menge Fledermäuse am Abend und schon seit langem hat mich deren Art der Orientierung und der Kommunikation mittels Ultraschall interessiert. Vorvorletztes Wochenende hatte ich endlich mal wieder etwas Zeit, um einen Fledermausdetektor zu bauen.

Es sollte ein schneller Aufbau auf einer Lochraster-Platine werden und daher habe ich nach einer fertigen Schaltung gesucht. Eine kurze Recherche im Internet liefert einiges an Anleitungen. Nach ein paar Stunden lesen und dem Abgleich der notwendigen Bauteile mit dem Vorhandenen in der Bastelkiste, habe ich mich für eine Analogschaltung entscheiden, die mit einem 4-fach OPV auskommt.

Blockschaltbild

Das Prinzip ist ähnlich einem Superhet-Empfänger: Das hochfrequente Eingangssignal wird etwa 140.000-fach verstärkt und mit einem Oszillatorsignal auf eine niedrigere Frequenz gemischt. Das Prinzip eines Mischers ist umfassend bei Wikipedia erklärt. An der originalen Schaltung habe ich nur wenige Modifikationen vorgenommen. So habe ich den 62kΩ  Widerstand durch ein 68kΩ Exemplar aus der E12 Reihe ersetzt, was die Verstärkung unwesentlich erhöht hat. Außerdem hatte ich kein 50kΩ Poti parat und habe deshalb ein 100kΩ eingesetzt, was zum Ausgleich mit einem weiteren 68kΩ Widerstand überbrückt wurde. Das vollständige Schaltbild ohne die Modifikationen ist hier zu sehen:


Bat Detector, Quelle: https://www.nutsvolts.com/

Auf der o.g. Seite ist alles wunderbar beschrieben, auch ein paar Hintergrundinformationen zu Fledermäusen findet man dort. Um den Detektor richtig anwenden zu können, sollte man den Artikel unbedingt lesen.

Im Folgenden noch eine kleine Bildergeschichte des Aufbaus. Da mir das Projekt sehr gefallen hat, habe ich ein adäquates chices Gehäuse aus Sperrholz gebaut. Das Mikrofon ist steckbar, sodass man mit verschiedenen Mikrofonen experimentieren kann.

Gehäuse Einzelteile, verklebt und geölt
Gehäuse fertig zusammengebaut
Platine von oben
Platine von unten
Batteriefach
Einsatzbereit
Mikrofon (Piezo-Summer)

Erste Versuche haben gezeigt, dass man einiges an Geduld aufbringen muss, um eine Fledermaus zu hören. Die Geräusche sind recht leise und auch nur zu hören, wenn das Säugetier direkt auf einen zufliegt. In einem Berliner Innenhof, in dem in der Dämmerung fünf bis zehn Fledermäuse ihre Runden drehen kann man mit etwas Glück alle viertel Stunde so eine Art rhythmisches Glucksen vernehmen.

 

Bekomme Updates per Email

Loading