Also entwerfe ich ein billiges und einfaches Soundgerät mit dem Atmega32U4 uC und bin auf ein Problem gestoßen.
Ich verwende den 10-Bit-PWM-Ausgang des uC zur Audioausgabe und möchte, dass der Benutzer die Ausgangslautstärke über Tasten und nicht über ein diskretes Potentiometer steuern kann. Eine typische Lösung wäre, einfach die PWM-Ausgangsleistung zu verringern; aber auf diese Weise verliere ich die ohnehin niedrige Auflösung - indem ich die Ausgangslautstärke nur um 10 dB reduziere, bekomme ich bereits eine 60% niedrigere Ausgangsspannung und betrete daher bereits das Gebiet der 8-Bit-Auflösung.
Deshalb habe ich angefangen, nach einer billigen Hardwarelösung zur Lautstärkereduzierung zu suchen, und ich möchte kein digitales Potentiometer verwenden, da sie relativ teuer sind. Am Ende kam ich auf die unten gezeigte Lösung; im Grunde verwendet es zwei uC-PWM-Ausgänge, einen zur Steuerung der Lautstärke (VOLPWM) und einen zur Audioausgabe (OUTPWM); der VOLPWM wird stark integriert und dann schaltet der Q1 entsprechend dem OUTPWM zwischen Masse und der VOLPWM-Ausgangsspannung um. Beachten Sie, dass die Ausgangsintegration nach dem Q1 + R2-Paar erfolgt, das reine PWM-Signal tritt in die Q1-Basis ein.
Ich habe auch überlegt, ein Push-Pull-Paar anstelle von Q1 + R2 zu verwenden, konnte jedoch keinen anständigen Low-Level-Ausgang erzielen.
Meine Fragen sind:
Gibt es bessere Lösungen für mein Problem?
Wird der ähnliche Wert von R2 und R5 nicht problematisch sein?
Was könnten die anderen Nachteile meiner Lösung sein?
Das ist eigentlich ziemlich gut – Sie haben einen multiplizierenden DAC erstellt.
Das größte Problem, das ich sehe, ist, dass die Zeitkonstante des Integrators davon abhängt, ob Q1 ein- oder ausgeschaltet ist – wenn es eingeschaltet ist, haben Sie nur R5 in der Schaltung, aber wenn es ausgeschaltet ist, haben Sie R2 + R5 in Reihe. Um den Effekt zu minimieren, machen Sie R5 ein paar Größenordnungen größer als R2. (Reduzieren Sie zum Ausgleich den Wert von C2.)
Colin
sx107