# Diseño de amplificador class D con microcontroladores.



## frezamu (Jun 28, 2012)

Hola a todos los colegas, mea estado dando vueltas el la cabeza una idea para fabricar un amplificador class d, con un microcontrolador, utilizando la entrada análogo digital de un pic  y luego pasarlo al modulo pwm, pero el resultado seria un muestreo de alrededor de 19khz, muy pobre, ni siquiera utilizando los pic mas veloces de gama media 40mhz da un pwm de 38kz, sigue pobre,
Pero si esta señal la entregamos a un micro controlador en forma serie o paralelo que funcione( el micro que sea barato y fácil de programar la idea es que también sea barato y sencillo),como comparador y nos de una especie de pwm como lo hacen los pic con sus módulos pwm, o sea un micro que no divida la frecuencia de reloj sino que uno de sus contadores trabaje a una de unos 20 o 30mhz el pwm seria bastante bueno. Si alguno podría darnos luz sobre micros, 
Yo tengo casi el esquema utilizo un 16f819 para utilizar el modulo a/d el programa lo tengo
Luego utilizo un puente h utilizando dos ir2110 y fet irf1010 si alguien quiere saber mas y colaborar con este tema respondan gracias
Y comenzaré a subir diagrama en bloques y lo que e imaginado ya con plano


----------



## DOSMETROS (Jun 28, 2012)

Aunque el muestreo sea pobre , pienso que se puede desarrollar un amplificador para bajos-woofer-subwoofer sin problemas , para hasta 500 Hz ese sampleo andaría ¿no?

Dale subí lo que tengas hasta ahora a ver quienes se enganchan 

Saludos !


----------



## frezamu (Jun 28, 2012)

#INCLUDE P16F873.INC
 CBLOCK 0X21
ACECOM
ESPERA
 ENDC
 ORG 0x00
 GOTO INICIO
INICIO BSF STATUS,5
 MOVLW B'11000000'
 MOVWF ADCON1
 MOVLW B'00000011'
 MOVWF OPTION_REG
 MOVLW B'11111111'
 MOVWF TRISA
 MOVLW B'10000000'
 MOVWF TRISB
 MOVLW B'00000000'
 MOVWF PIE1
 MOVLW B'00000001'
 BCF STATUS,5
 MOVLW .0
 MOVWF PORTB
 MOVLW B'00000000'
 MOVWF INTCON
 MOVLW B'00111111'
 MOVWF CCP1CON
 MOVLW B'00000100'
 MOVWF T2CON
 MOVLW B'00000000'
 MOVWF T1CON
INI     CALL ACELE           ;LLAMAMOS RUTINA DE CAPTURA DE AUDIO POR AN0
 BTFSS ADRESH,0        ;SI ES 0 INVERTIMOS LOS BIT PARA TENER EL NIVEL DE LA SEÑAL
 COMF ACECOM,F
 MOVFW   ACECOM
 MOVWF   CCPR1L
 GOTO    INI
ACELE BCF INTCON,7
 BCF INTCON,6
 BCF STATUS,C
 MOVLW B'10000001'
 MOVWF ADCON0
 CALL CONVER
 BTFSS ADRESH,0        ;VERIFICAMOS EL BIT PARA SABER SI LA SEÑAL ES NEGATIVA O POSITIVA
 GOTO Q111
 BSF STATUS,C
 BSF     PORTB,0         ;ACTIBAMOS LA SALIDA PARA HABILITAR EL PUENTE H 1
 BCF     PORTB,0
 GOTO Q222
Q111 BCF STATUS,C
        BCF     PORTB,0
        BSF     PORTB,1         ;ACTIBAMOS LA SALIDA PARA HABILITAR EL PUENTE H 2
Q222 BSF STATUS,5
 RRF ADRESL,F
 MOVFW ADRESL
 BCF STATUS,5
 MOVWF ACECOM
 BCF STATUS,C
 RRF ADRESH,F
 RETURN
CONVER CLRF ESPERA
 INCF ESPERA,F
 BTFSS ESPERA,3
 GOTO $-2
 BSF ADCON0,GO_DONE
 BTFSC ADCON0,GO_DONE
 GOTO $-1
 BCF ADCON0,ADON
 RETURN
 END

 ;PERDONEN LA ORTOGRAFIA

codigo en asm es lo que llebo trato de subie el esquema aunque sea a mano el puente h lo hago con dos ir2110, lo e utilisado para mover motores de 24 voltios claro con un codigo mas elavorado


----------



## DOSMETROS (Jun 28, 2012)

Dale a ver que sale


----------



## frezamu (Jun 29, 2012)

Saludos subo esquema en pdf y en Eagle 5.1.00 profesional no están los valores ya que me faltan calcular los del amplificador operacional pero seria mejor si alguien colabora ya que esto es un diseño en el cual necesito su ayuda para hacer algo bueno y no estar copiando y a ver si funciona
Me falta el calculo del filtro pasa bajos de la salida, tengo la idea de calcular valores para 1,2,4,8 ohmios y seleccionarlos con una llave para a si utilizar varias impedancias,
Serviría para bajas frecuencias pero si en ves de utilizar un solo micro utilizamos otro que nos haga la función de pwm, que tenga temporizadores y funcionen a frecuencia superior de 20 Mhz  podríamos barrer la frecuencia de audio y sacar una buena calidad de sonido
Con este pic se pueden manejar asta 5 canales de audio. Espero colaboración, no criticas solo sugerencias o preguntas serias.


----------



## DOSMETROS (Jun 29, 2012)

Entendí mal o faltan calcular los dos inductores de salida ?

Saludos !


----------



## frezamu (Jun 29, 2012)

SIIP
PORQUE QUIERO CALCULARLOS PARA TODAS LAS IMPEDANCIAS YA QUE AL UTILIZAR FET PODEMOS MANEJAR VARIOS AMPERIOS
CODIGO MEJORADO 
ACEPTO CUALQUIER MODIFICACION AL CODIGO
#INCLUDE P16F873A.INC
 CBLOCK 0X21
ACECOM
ESPERA
 ENDC
 ORG 0x00
 GOTO INICIO
INICIO BSF STATUS,5
 MOVLW B'11000000'
 MOVWF ADCON1
 MOVLW B'00000011'
 MOVWF OPTION_REG
 MOVLW B'11111111'
 MOVWF TRISA
 MOVLW B'00000000'
 MOVWF TRISB
 MOVLW B'00000000'
 MOVWF TRISC
 MOVLW B'00000000'
 MOVWF PIE1
 MOVLW B'00000001'
 BCF STATUS,5
 MOVLW .0
 MOVWF PORTB
 MOVLW B'00000000'
 MOVWF INTCON
 MOVLW B'00111111'
 MOVWF CCP1CON
 MOVLW B'00000000'
 MOVWF CCP2CON
 MOVLW B'00000100'
 MOVWF T2CON
 MOVLW B'00000000'
 MOVWF T1CON
INI     CALL ACELE           ;LLAMAMOS RUTINA DE CAPTURA DE AUDIO POR AN0
 BTFSS ADRESH,0        ;SI ES 0 INVERTIMOS LOS BIT PARA TENER EL NIVEL DE LA SEÑAL
 COMF ACECOM,F
 MOVFW   ACECOM
 MOVWF   CCPR1L
 BTFSC   PORTB,2
 GOTO    INI1
 BSF     PORTB,2
 GOTO    INI2
INI1    BCF     PORTB,2
INI2    BTFSC   PORTB,3
        GOTO    INI3
        BSF     PORTB,3
        GOTO    INI
INI3    BCF     PORTB,3
 GOTO    INI
ACELE BCF INTCON,7
 BCF INTCON,6
 BCF STATUS,C
 MOVLW B'10000001'
 MOVWF ADCON0
 CALL CONVER
 BTFSS ADRESH,0        ;VERIFICAMOS EL BIT PARA SABER SI LA SEÑAL ES NEGATIVA O POSITIVA
 GOTO Q111
 BSF STATUS,C
 BSF     PORTB,0         ;ACTIBAMOS LA SALIDA PARA HABILITAR EL PUENTE H 1
 BCF     PORTB,0
 GOTO Q222
Q111 BCF STATUS,C
        BCF     PORTB,0
        BSF     PORTB,1         ;ACTIBAMOS LA SALIDA PARA HABILITAR EL PUENTE H 2
Q222 BSF STATUS,5
 RRF ADRESL,F
 MOVFW ADRESL
 BCF STATUS,5
 MOVWF ACECOM
 BCF STATUS,C
 RRF ADRESH,F
 RETURN
CONVER CLRF ESPERA
 INCF ESPERA,F
 BTFSS ESPERA,3
 GOTO $-2
 BSF ADCON0,GO_DONE
 BTFSC ADCON0,GO_DONE
 GOTO $-1
 BCF ADCON0,ADON
 RETURN
 END

 ;PERDONEN LA ORTOGRAFIA


----------



## DOSMETROS (Jun 29, 2012)

Ok.

¿ Vas a hacerle alguna realimentación total   ?


----------



## frezamu (Jun 29, 2012)

siip por eso pido colavoracion para poder hacer algo de lujo entre todos no solo copiar toca diseñar la s protecciones contra cortocicuito protecciones para los parlantes en fin tolo lo que senos ocurra la idea es esa
gracias por colavorar


----------



## Dano (Jun 30, 2012)

Mmmm... hace un rato estuve probando el ADC del pic, y como que para audio no anda muy bien.

Hice la prueba con un 18f2550 @ 48MHz, el programa simplemente mueve los bits del ADC al PWM para poder escucharlos. 
La velocidad de muestreo va impecable, muy bien para la banda de audio, pero la profundidad de bits no es suficiente (a mi gusto), aclaro que use los 10bits pero igual así tiene un "RINGING" altísimo.


----------



## Dr. Zoidberg (Jun 30, 2012)

Recuerdo que ejtagle alguna vez aclaró *por que no había que hacerlo* con un microcontrolador, y en eso estoy de acuerdo: no tiene ningún caso utilizar y programar un chip cuando lo podés hacer igual de bueno con un comparador que vale NADA y con la vigésima parte de la complejidad.

Un consejo: No se gasten la cabeza y el tiempo en un invento de esa naturaleza: no van a ganar nada y solo conseguirán problemas adicionales. De última, Texas Instruments tiene chips específicos para ese laburo y chips que ya son amplificadores de varios cientos de watts, y algunos inclusive sin inductor a la salida ....que es lo que quieren inventar????


----------



## foso (Mar 4, 2014)

Dano dijo:


> igual así tiene un "RINGING" altísimo.



Una pregunta, a que le llaman "ringing" ?, es un término asociados con este tipo de amplificadores?


----------



## octavio2 (Mar 4, 2014)

foso dijo:


> Una pregunta, a que le llaman "ringing" ?, es un término asociados con este tipo de amplificadores?


Son las oscilaciones de alta frecuencia producidas en los mosfets de potencia al conmutar a gran velocidad,son debidas a las inductancias y capacidades parasitas.Si el ringing es importante puede producir sobretensiones
que destruyan el transistor,perdida de rendimiento,y distorsión de la señal.Pero creo que Dano se refiere a otra cosa.
Yo hice algo parecido,usando un micro avr16u4 este micro permite generar pulsos con una resolución de 5ns
que da un sonido de buena calidad,pero la entrada es digital (usb audio o sd card) no analógica.El conversor 
analógico digital de los microcontroladores (con algunas excepciones) no es lo bastante bueno para tener un sonido de calidad. 
https://sites.google.com/site/octaviovegafernandez/octaos/files 
Y como ya ha dicho alguien ,no es buena idea hacer un amplificador analógico de clade D con un microcontrolador,ya que hay integrados que lo hacen mejor y salen mas baratos.


----------



## foso (Mar 4, 2014)

Seguro que si. Recién me meto en este hilo, estoy con el mismo proyecto que frezamu. De antemano sé que no va a ser de buena calidad el sonido, no busco eso. Si quisiera performance me consigo el amplificador integrado y listo. Esto es un hobby, me lo tomo medio en joda  medio en serio  . Solamente quiero saber hasta que calidad se puede lograr trabajandolo con un microcontrolador de baja gama. Y si es posible agregar algún efecto digital.

Por otro lado, pienso, si hubiera necesidad de sacar una señal de un microcontrolador como salida analógica a una carga, o usas un conversor DAC o usas PWM y salís directo a la entrada de PWM de un amplificador clase D, y matás dos pájaros de un tiro porque es muy común que los microcontroladores tengan un módulo con PWM. 

Preguntaba por ese "ringing" porque estoy teniendo un pitido que no puedo sacar y no logro darme cuenta de donde viene. Pensaba que por ahí se refería a eso. Achicando la frecuencia de corte del filtro de salida logro atenuarlo un poco, pero se me reduce la señal útil también.

La señal de entrada la paso por un amplificador clase A con ganancia 30 dB, sacando la señal directamente de colector sin capacitor de por medio, asi aprovecho el offset para el ADC. El filtro antialiasing lo implemento colocando un capacitor en paralelo con la resistencia de colector del amplificador. Y filtra muy bien, porque si saco el capacitor aparece un ruido tipo blanco muy fuerte.

Mis sospechas para ese pitido son de una impresición del ADC del micro. Pero lo que me desconcierta es que es un tono muy marcado, no suena a "ruido", es un pitido. O puede ser ruido de cuantización no sé, estaría usando entre 7 y 8 bits de resolución.


----------

