PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Digitale Lautstärkeregelung mit ATMega8 und PGA2310



stardust19322
08.04.2015, 20:08
Hallo Freunde.

In der vergangenheit war ich bei euch immer gut aufgehoben. Ihr habt mir bei meinen Problemen gern geholfen, und dafür möchte ich euch noch einmal danken.

Derzeit beschäftige ich mich verstärkt mit Akustik-Elektronik. Ich baue eigene autarke Soundsysteme auf udn habe vor Kurzem mein erstes mobiles 2.1-System fertig gestellt. Zur Kontrolle von Gesamt-Lautstärke, Bass-Lautstärke sowie Tiefpassfilter-Anhebung verwende ich derzeit noch analoge Potentiometer, was auf Dauer natürlich nicht ganz so schön ist, und auch eine nicht unbeträchtliche Fehlerquelle darstellt. Ein Poti kann abbrechen oder verschmutzen. Das ergebnis kann sich jeder sicher ausmalen.

Da ich nun ein kompaktes 2.1-System plane, also eine Stereo-Kompaktbox mit integriertem, regelbarem Subwoofer, möchte ich auch auf dem digitalen Sektor wieder vroan schreiten.
Zur Kontrolle der Stereo-Lautstärke sowie der Bass-Lautstärke hätte ich mir entsprechende Steuer-IC's ausgesucht, nämlich die
'PGA2310'
, welche ja per Atmel-Mikrocontroller angesprochen werden können.

Meine erste Frage lautet hierzu:

Wer kann mir sagen oder zeigen, wie man den PGA2310 an einem ATMega8 anschließt und wie man diresen in BASCOM anspricht?

Da die Box den Subwoofer integriert hat, muss dieser natürlich auch einstellbar sein, was ich als Einstell-Neuwert direkt in den EEProm des ATMega8 schreiben würde. Darum auch gleich die nächste Frage:

Kann ein einzelner ATMega8 mehrere dieser PGA2310 einzeln ansprechen?

Natürlich soll die Box auch ein Display beinhalten. Dazu folgendes:

Falls ein einzelner Controller mehrere dieser PGA2310 ansteuern kann, kann er parallel auch noch ein Display betrieben? Wie man ein Display anschließt, im Code konfiguroiert und anspricht, weiß ich zum Glück noch ^^. Nur eben die Frage, ob ein paralleles Arbeiten möglich ist.

Zum Schluss stehe ich noch vor dem Problem, dass ich gern auch noch die Höhen einstellen möchte. Hierzu bräuchte ich sicher einen 3ten dieser Chips. Wer Erfahrungen mit diesen hat, kann mir vielleicht meine vorerst letzte Frage beantworten:

Eine Treble-Control müsste ich ja sicher über einen Hochpass konfigurieren. Wäre es möglich, dass ich hierzu zwei dieser PGA2310 parallel betreibe? Der erste PGA würde das ungefilterte Signal durchlassen, der 2te das durch den Hochpass gefilterte. Ich würde es mir dann so vorstellen, dass beim Verstellen des Treble der eine PGA "leiser" gestellt wird, der andere simultan "lauter".
ist dies möglich/machbar oder bleibt es in meiner Fantasie?



Ich freue mich sehr auf eure Antworten und hoffe, dass der Eine oder Andere mit Bascom und diesen Lautstärke-IC's gearbeitet hat.



LG - Maik

Sauerbruch
08.04.2015, 23:48
Hi Maik,

mit diesem Chip habe ich im Speziellen zwar noch nicht gearbeitet (klingt aber interessant!!), aber ein kurzer Blick ins Datenblatt verrät, dass er per SPI anzusteuern ist. Und das ist keine Hexerei.

Man muss dem PGA2310 lediglich zwei Bytes schicken, diese zwei Bytes definieren dann den Verstärkungsfaktor der beiden Verstärker-Kanäle. Die Formel habe ich auch im Datenblatt gefunden:

Gain (dB) = 31.5 − [0.5 • (255 − N)]

wobei N das übertragene Byte ist. Ist N=0, wird der Eingang auf Masse gelegt, d.h. der Verstärker ist stumm (=Mute). Mit Werten für N von 1 bis 255 kann man also Verstärkungen zwischen -95,5 dB und +31,5 dB einstellen. Das erste gesendete Byte definiert die Verstärkung des rechten Kanals, das zweite die des linken Kanals. Nach dem Einschalten ist dieses N für beide Kanäle übrigens immer erstmal 0.

Wenn der PGA2310 Daten per SPI empfängt, schiebt er den bisherigen Inhalt der beiden Verstärkungs-Bytes seriell über den Data Out-Anschluss raus (Pin 7, SDO). Zwischen SDI und SDO liegt also eine Art Schieberegister, in dem die beiden Verstärkungs-Bytes abgespeichert sind.
Dadurch kann man beliebig viele dieser Bausteine datentechnisch "kaskadieren": SDO des ersten Bausteins wird an SDI des zweiten gehängt, SDO des zweiten an SDI des dritten, usw. Wenn Du also drei Bausteine aneinanderhängst und dann nacheinander sechs Bytes in den ersten PGA2310 schiebst, landen Byte 1+2 im dritten Baustein, Byte 3+4 im zweiten und Byte 5+6 im ersten. Du kannst also mit einem einzigen Controller beliebig viele 2310er ansteuern.


Nur eben die Frage, ob ein paralleles Arbeiten möglich ist.

"Parallel" geht natürlich nicht, denn Mikrocontroller können immer nur eines nach dem anderen abarbeiten. Aber wenn Du einen LCD-Befehl mit den neuen Informationen unmittelbar ausführen lässt, nachdem Du den Bausteinen ihre neuen Verstärkungsdaten geschickt hast, dürfte kein Mensch diese Zeitverzögerung von ein paar Mikrosekunden bemerken.


Wäre es möglich, dass ich hierzu zwei dieser PGA2310 parallel betreibe? Der erste PGA würde das ungefilterte Signal durchlassen, der 2te das durch den Hochpass gefilterte. Ich würde es mir dann so vorstellen, dass beim Verstellen des Treble der eine PGA "leiser" gestellt wird, der andere simultan "lauter".
ist dies möglich/machbar oder bleibt es in meiner Fantasie?

Rein technisch dürfte das kein Problem sein. Ob das Resultat allerdings dem einer Höhen-Regelung nahekommt, kann ich nicht sagen. Dazu kenne ich mich viel zu wenig mit analoger Klangregelung aus. Im Zweifelsfall einfach mal versuchen und anhören, wie´s klingt!

Und zu den SI-relevanten Bascom-Befehlen Config Spi, Spiinit und Spiout gibt´s sehr gute Beschreibungen in der Bascom-Hilfe!