Volumen de salida PWM del microcontrolador

Así que estoy diseñando un dispositivo de sonido barato y simple usando el Atmega32U4 uC y me encontré con un problema.

Estoy usando la salida PWM de 10 bits de uC para emitir audio y quiero que el usuario pueda controlar el volumen de salida usando botones, no un potenciómetro discreto. Una solución típica sería simplemente disminuir el servicio de salida PWM; pero de esa manera estoy perdiendo la resolución ya baja: al disminuir el volumen de salida solo en 10 dB, ya obtengo un voltaje de salida un 60% más bajo y, por lo tanto, ya estoy ingresando al territorio de resolución de 8 bits.

Es por eso que comencé a buscar una solución de reducción de volumen de hardware barata y no quiero usar un potenciómetro digital, ya que son relativamente caros. Al final, se me ocurrió la solución que se muestra a continuación; básicamente, utiliza dos salidas uC PWM, una para controlar el volumen (VOLPWM) y otra para dar salida al audio (OUTPWM); el VOLPWM se integra fuertemente y luego el Q1 cambia de acuerdo con el OUTPWM entre tierra y el voltaje de salida del VOLPWM. Tenga en cuenta que la integración de salida ocurre después del par Q1+R2, la señal PWM pura ingresa a la base Q1.

También consideré usar un par push-pull en lugar de Q1+R2, sin embargo, no pude obtener una salida de bajo nivel decente.

Mis preguntas son:

  1. ¿Hay mejores soluciones a mi problema?

  2. ¿No será problemático el valor similar de R2 y R5?

  3. ¿Cuáles podrían ser las otras desventajas de mi solución?

Solución dual PWM

¿Tiene algo para limitar la corriente base en Q1?
@Colin no, pero tienes razón, tal vez sería mejor agregar una resistencia de serie 1k

Respuestas (1)

Eso es bastante bueno: has creado un DAC multiplicador.

El mayor problema que veo es que la constante de tiempo del integrador varía si Q1 está encendido o apagado: cuando está encendido, solo tiene R5 en el circuito, pero cuando está apagado, tiene R2 + R5 en serie. Para minimizar el efecto de esto, haga que R5 sea un par de órdenes de magnitud mayor que R2. (Reduzca el valor de C2 para compensar.)

¿Alguna otra forma de reducir el efecto R2-R5? Si aumentaré R5, tendré que disminuir C2 en consecuencia y no estoy seguro de cómo funcionará el integrador con un capacitor de varios pF en su retroalimentación y con las bajas corrientes que producirá R5.
Gracias, por cierto, por decir que se llama DAC multiplicador, lo investigaré.
@ sx107 Sé que este es un hilo antiguo, pero me pregunto si fue más allá con esto y, de ser así, ¿qué valores de componentes eligió?
@IanBland Funcionó perfectamente. Los valores en el esquema son más o menos los mismos que he establecido, aunque creo que he reemplazado el integrador de salida con un seguidor y un filtro rc.
Interesante, gracias!