Autor Tema: Detector de pico para ADC  (Leído 2696 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ingeniero18

  • PIC10
  • *
  • Mensajes: 20
Detector de pico para ADC
« en: 25 de Noviembre de 2015, 23:55:54 »
Mi consulta es la siguiente: tengo un PIC18F452 y quiero atacar uno de sus conversores analógico-digital con audio (frecuencia 20Hz a 20kHz).
¿Es necesario ponerle un detector de pico entre la señal y el ADC para que este detecte la señal? ¿Cómo tendría que calcularlo el detector de pico en el caso de tener que utilizarlo?
Muchas gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Detector de pico para ADC
« Respuesta #1 en: 26 de Noviembre de 2015, 00:00:20 »
Rectificar + Medir continuamente con el ADC y mantener el valor maximo cada X muestras ? ? ?

O rectificar + capacitor asi filtras y lees con el ADC ? Aunque deberia existir una descarga por otro lado creo yo.

Desconectado ingeniero18

  • PIC10
  • *
  • Mensajes: 20
Re:Detector de pico para ADC
« Respuesta #2 en: 26 de Noviembre de 2015, 00:03:43 »
Rectificar + Medir continuamente con el ADC y mantener el valor maximo cada X muestras ? ? ?

O rectificar + capacitor asi filtras y lees con el ADC ? Aunque deberia existir una descarga por otro lado creo yo.

Yo pensaba rectificar, filtrar y luego leer. El tema es que veo que en el datasheet del micro recomiendan que la carga colgada del ADC sea menor a 2.5k. Entonces yo quería saber cómo calcular bien el capacitor y la resistencia del filtro para que el ADC reciba bien la señal para el rango de audio....

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Detector de pico para ADC
« Respuesta #3 en: 26 de Noviembre de 2015, 00:17:43 »
Para sucesivas muestras si. Por que tenes un tiempo a respetar que es el de sampleo de la señal, vos podes utilizar mas resistencia que estaria en serie, pero eso significa que ya vas a tener que utilizar un delay entre lecturas o algun oto codigo entre medio.

El tema del capacitor es que necesitas que por algun lado se descargue. Ya que como el ADC consume "poco" la tension no va a caer, asi que tendrias que si o si tener algo que lo lleve proximo o parecido a 0V asi nuevamente esperar que se cargue con el valor nuevo de la señal. O tal ves una resitencia a 0V que lo descargue por ahi. Mas que nada el diodo molesta xD. Si fuera un AO en seguidor de tension y rectificado ahi tranquilamente pondria resistencia + capacitor y no le producis carga a tu circuito.

Es lo unico que se me ocurre, sino alguno seguro te va a dar una mano.

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re:Detector de pico para ADC
« Respuesta #4 en: 26 de Noviembre de 2015, 00:50:55 »
No necesitas usar un rectificador y un capacitor, ambos los puedes emular en el programa de captura...

Primero, necesitas que tu circuito entregue 2.5 V o VDD/2 cuando no tenga señal (0 volts), eso le permitirá al ADC capturar tanto los semiciclos positivos y los negativos...

Eso se hace de manera muy simple con un amplificador operacional y un divisor resistivo para generar el offset de VDD / 2

El rango de valores será tal que voltajes mayores a 0 V te darán un rango de 128 a 255 y voltajes menores a 0 V irán de 127 a 0  <=== Si solo usas 8 bits del ADC

El rango de valores será tal que voltajes mayores a 0 V te darán un rango de 512 a 1023 y voltajes menores a 0 V irán de 511 a 0  <=== Si usas 10 bits del ADC

Después, sacas el valor ABSOLUTO de cada muestra, eso es muy sencillo, si el bit MSB de la conversión = 0 complementas el valor de la captura, sea positivo o negativo el valor, después de esa comparación vuelves el bit MSB = 0

El resultado es que para valores positivos y negativos el rango irá de 0 a 127 (8 bits) o de 0 a 511 (10 bits)

Hasta ahí ya tienes un rectificador de onda completa.

Después, tu rutina de captura de muestras deberá guardar la muestra actual, y una copia de ella, la cual será usada como la muestra anterior (Para el siguiente loop)

Comparas ambas muestras, si la muestra actual es mayor a la muestra anterior, el voltaje es mayor y ese es el pico de la señal, sino, muestra actual = muestra anterior.

Ahora ya rectificaste y obtuviste el pico de la señal, es obvio que deberás descargar ese pico, lo cual se hace con un capacitor, pero acá no existe un capacitor, sino que hay que emular uno.

Emular un capacitor que se descarga es muy sencillo, considera lo siguiente.

Un capacitor se descarga (y carga) exponencialmente, bueno, un número binario también...

Si tuvieras un valor inicial de digamos... 1024, y lo rotaras para dividirlo entre los, las secuencias obtenidas serian...

512 => 256 => 128 => 64 => 32 => 16 => 8 => 4 => 2 => 1 => 0

Si graficas cada tiempo o evento en el eje de las X, y el valor binario / 2 en el eje Y, vas a obtener una curva exponencial, similar si no es que idéntica a la que tiene un capacitor, luego, partiendo de esa idea, es posible simular el tiempo de descarga del capacitor tal que puedas generar el efecto deseado en tu sistema.

Acá en el foro está un ejemplo de como seria el circuito y como se ve el efecto ya de las capturas, precisamente en el modo de barras se despliega el valor pico.

http://www.todopic.com.ar/foros/index.php?topic=31783.0

Saludos