Filtrado de ruido a la entrada de un ADC.

2,111 views
Skip to first unread message

Mauro Antivero

unread,
Apr 9, 2014, 7:24:39 AM4/9/14
to embeb...@googlegroups.com
Estimados, estoy trabajando con un PIC y su ADC de 10 bits, mediante el
cual tengo que medir una tensión por un canal y una corriente por el
otro y representar dichos valores en un display LCD. Lo que estoy
buscando ahora es como reducir el ruido en la medición, osea esa
horrible variación que se ve en el valor obtenido y que es representado
en el LCD.

Por un lado están las técnicas de hardware. Hasta ahora he visto lo
siguiente:

- Se suele utilizar un simple filtro pasabajos en las entradas del ADC.
- La alimentación del micro y las tensiones de referencia deben estar
correctamente desacopladas.
- El ruteo adecuado del PCB (de esto todavía no vi nada).

Luego tenemos las técnicas de software, donde hasta ahora he visto
simples promedios o por ahí alguna otra técnica de filtrado un poco más
elaborada pero sencilla.

La idea es por supuesto aprovechar lo mejor posible los 10 bits del ADC.
Así que les agradecería mucho cualquier comentario o documentación que
me puedan sugerir para leer.

Saludos y muchas gracias.

Mauro.

martin ribelotta

unread,
Apr 9, 2014, 9:12:29 AM4/9/14
to embeb...@googlegroups.com
Hola Mauro, para lo que necesitas, como bien decís tenes las dos vertientes, HW y SW. Por lo que se, ninguna por si sola te soluciona todo así que es necesario atacar las cosas en ambos frentes:

* Desacopla fuertemente todo lo analógico de lo digital. Absolutamente todo.
* Seguir las guidelines de PCB para ADC aunque sean de otros fabricantes (la fisica es indistinta para microchip, atmel, analog device, st, los marcianos o los monstruos tentaculeadores de raticulin seis):
* Si es posible, usar conversores externos. El ruido dentro de un chip digital es asqueroso a mas no poder y microchip no es el mas mentado en hacer las cosas bien.
* seguir los consejos del fabricante:
* Y nunca confiar solo en el fabricante:
* Una técnica ya mas de software es el oversampling:

Están fuertemente desaconsejados todos los ADC on-chip si lo que cuenta es una baja SNR

Por supuesto, en soft tenes técnicas mas complicadas como filtros FIR, IIR y la inmensa bateria de cosas que vienen en matlab.

Espero te sirva. Saludos!





Mauro.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32+unsubscribe@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
--- Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Nestor Campos

unread,
Apr 9, 2014, 11:44:52 AM4/9/14
to embeb...@googlegroups.com
Hola Mauro. Están muy buenas las cosas que te mandó Martín. Los requerimientos de un ADC interno o externo se deben basar en una solución de compromiso entre el precio/complejidad y calidad de la medición. Si querés medir tensión de alterna con una frecuencia de 500 KHz vas a tener serios inconvenientes si usas el ADC onboard. Pero si querés medir algo en baja frecuencia no deberías tener inconvenientes. 
Por más que uses un filtro digital para eliminar el ruido (por ejemplo un filtro de promedios móviles) debés colocar un filtro analógico en la entrada. La frecuencia de corte del mismo debe ser fs/2 (fs: frec. muestreo del ADC) y en lo posible con un buen AmpOp (que su GBW exceda con creces los requerimientos frecuenciales del sistema). El único tema es que si el filtro no está bien calculado vas a perder tiempo de respuesta en el conversor.
Bueno espero que te haya servido.
Cualq cosa preguntá y si deseas agregar detalles de tu proyecto bienvenido sea! Saludos



From: martinr...@gmail.com
Date: Wed, 9 Apr 2014 10:12:29 -0300
Subject: Re: [embeb32] Filtrado de ruido a la entrada de un ADC.
To: embeb...@googlegroups.com
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Fernando Lichtschein

unread,
Apr 9, 2014, 2:33:54 PM4/9/14
to embeb...@googlegroups.com
Estimados,

Es bueno el dato del ruido generado internamente, filtrando la señal que entra no se arregla todo.

Sigo atentamente todos los comentarios.

Saludos,

Fernando

Alejandro Sosa

unread,
Apr 9, 2014, 2:53:25 PM4/9/14
to embeb...@googlegroups.com
Buenas, lo del ruido interno del los ADC on chip es cierto, se pueden ver el switching del clock del micro con un scope.
En aplicaciones industriales se suman los ruidos acoplados por radiacion, cables de tierra sueltos o atornillados a lugares de alta Z, bucles de tierra en estos mismos cables, el cable de la señal mal apantallado tambien introduce ruido, aunque esto lo sabemos todos.
Suerte 
Alejandro Sosa - cel 011 153 6498 988 
CUIT 20-22592457-1

Diseño y fabricación de equipos electrónicos para la industria.
- Desarrollos a medida para sustitución de importaciones -
 
Microchip Technology Inc.- Autorized Design Partner
Socio Diseñador autorizado por Microchip Technology Inc.

Facebook:

Pagina web : 

 
                       "Disfruta este momento, este momento es tu vida."

Agustin Bonelli

unread,
Apr 9, 2014, 3:37:33 PM4/9/14
to embeb...@googlegroups.com
http://www.youtube.com/playlist?list=PL2135D8A0F7441AE1


Supongo que mucha de la teoría sobre conversión A/D y D/A la debes conocer muy bien, como todos en el grupo, pero por las dudas dale una mirada a las Clases que hay en la playlist que te paso de youtube. Son de una universidad de la India de un curso especificamente sobre como diseñar conversores AD y DA. Trata muy bien todo el tema del noise shaping para reducción del ruido, asi como el análisis detallado de los detalles del lazo de control de un conversor Sigma Delta y bastantes cosas mas.

Espero que te sirva.





> Date: Wed, 9 Apr 2014 08:24:39 -0300
> From: mauro.a...@gmail.com
> To: embeb...@googlegroups.com
> Subject: [embeb32] Filtrado de ruido a la entrada de un ADC.

Mauro Antivero

unread,
Apr 9, 2014, 5:23:18 PM4/9/14
to embeb...@googlegroups.com
Excelente Martín (hoy estoy formal jajaja). Un millón de gracias, ahora me pongo a ver todo lo que me pasaste, tengo para entretenerme.

Saludos, Mauro.

El 09/04/14 10:12, martin ribelotta escribió:


Mauro.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

--- Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.

Para obtener más opciones, visita https://groups.google.com/d/optout.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Mauro Antivero

unread,
Apr 9, 2014, 5:30:23 PM4/9/14
to embeb...@googlegroups.com
Va la respuesta entre líneas.
El 09/04/14 12:44, Nestor Campos escribió:
Hola Mauro. Están muy buenas las cosas que te mandó Martín. Los requerimientos de un ADC interno o externo se deben basar en una solución de compromiso entre el precio/complejidad y calidad de la medición. Si querés medir tensión de alterna con una frecuencia de 500 KHz vas a tener serios inconvenientes si usas el ADC onboard. Pero si querés medir algo en baja frecuencia no deberías tener inconvenientes.
En este caso tengo que usar dos canales de ADC. El circuito es sencillo, se trata de una "Carga de DC controlada por micro". Lo que tengo que medir es:

- Tensión aplicada sobre la carga (básicamente es un MOSFET).
- Tensión que cae sobre un shunt mediante la cual en definitiva saco la corriente que circula por dicha carga.

La idea es que el firmware en un principio solamente permita ajustar la corriente. Bien, esto ya lo hace, solo que quiero mejorar lo más posible las lecturas de los ADC. Más adelante, una vez que tenga lo del ADC resuelto la idea es que el firm siga creciendo como para agregar opciones de potencia constante, resistencia constante, etc. Pero en si, son dos tensiones continuas; Una de 0 a 5V (representa la corriente de 0 a 5A) y la otra de 0 a 45V (reducida por un divisor que la lleva a un rango de entre 0 y 5 por supuesto). La que más problemas me da es la de 0 a 45.

Por más que uses un filtro digital para eliminar el ruido (por ejemplo un filtro de promedios móviles) debés colocar un filtro analógico en la entrada. La frecuencia de corte del mismo debe ser fs/2 (fs: frec. muestreo del ADC) y en lo posible con un buen AmpOp (que su GBW exceda con creces los requerimientos frecuenciales del sistema). El único tema es que si el filtro no está bien calculado vas a perder tiempo de respuesta en el conversor.
En este caso que es una tensión continua que me recomendás?

Bueno espero que te haya servido.
Por supuesto, gracias!

Cualq cosa preguntá y si deseas agregar detalles de tu proyecto bienvenido sea! Saludos
Ahí agregué algunos detalles, cualquier otra cosa que crean necesaria díganme. Si a alguien le interesa después puedo subir el esquemátco, el cual por supuesto seguramente sufrirá numerables modificaciones.

Saludos y gracias nuevamente.

Mauro.




Mauro.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
--- Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Mauro Antivero

unread,
Apr 9, 2014, 5:32:22 PM4/9/14
to embeb...@googlegroups.com
Va la respuesta entre líneas.

El 09/04/14 16:37, Agustin Bonelli escribió:
Perfecto, ahora mismo me pongo a verlo.



Supongo que mucha de la teoría sobre conversión A/D y D/A la debes conocer muy bien, como todos en el grupo, pero por las dudas dale una mirada a las Clases que hay en la playlist que te paso de youtube. Son de una universidad de la India de un curso especificamente sobre como diseñar conversores AD y DA. Trata muy bien todo el tema del noise shaping para reducción del ruido, asi como el análisis detallado de los detalles del lazo de control de un conversor Sigma Delta y bastantes cosas mas.
La teoría la conozco (creo), pero nunca está de más un repaso, así que se agradece mucho el dato.

Espero que te sirva.
Seguramente que si, cualquier novedad la comento.

Saludos y gracias, Mauro.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Leonardo Garberoglio

unread,
Apr 10, 2014, 7:09:31 AM4/10/14
to embeb...@googlegroups.com
A mi me interesa, estaba trabajando de a ratos en algo parecido, pero sin micro. Solo OpAmp y preset... si hay un micro controlando todo me interesa más aún. Si queres ir publicando el esquemástico a lo mejor puedo tirar alguna idea.

Saludos!

Nestor Campos

unread,
Apr 11, 2014, 2:09:38 AM4/11/14
to embeb...@googlegroups.com
Hola Mauro. Justamente yo estoy midiendo la corriente que circula por un motor mediante un shunt pero solo para comparar con un máximo permitido y apagar el sistema en caso de falla. También mido la tensión en la resistencia pero para obtener simplemente un estimativo de la corriente que circula, es decir, la medición no forma parte de ningún lazo de control. 
Yo lo que hago en casos como el que decís es lo siguiente:
1) La tensión del shunt la tomo diferencial con amp op de buena calidad (tipo LF357 o similar o alguno de muy bajo ruido) para no referir la medición al ruido de masa.
2) La medición diferencial la meto a un filtro pasa bajo activo y de ahí lo mando al ADC.
3) Distribuir las masas correctamente en la placa. Lo que sea potencia lejos del regulador y lo más sensible al ruido más cerca del mismo, manteniendo una masa en forma de estrella. Te adjunto un trabajo que hice sobre esto para tecnología electrónica que por ahí te sirve.
4) Implemento un filtro de promedios móviles como u filtro digital pasabajos. Esto, claramente, reduce tu tiempo de respuesta, pero es altamente efectivo para suprimir ruidos. te adjunto un pdf con las filminas de digi 3 que lo explican. El tamaño de la ventana te define la frecuencia de corte del filtro pero cuanto más grande más lenta la respuesta. Solución de compromiso.
5) Respecto a la tensión de 0-45 habría que ver como hacés para atenuarla. No me acuerdo donde lo leí pero no recomiendan hacer atenuadores con amp-op (Rb / Rs <1) sino utilizar resistencias adecuadas y desp pasar por un seguidor. Pero te debo la fuente... 

Si podés subie el esquemático mejor. Si decís que tenés mucho más ruido en una medición que en otra sería bueno ver el circuito. Por ahí se puede tomar la medida de otra manera o por ahí ver algún tema con las masas..

Espero tu respuesta
Saludos
Nestor


Date: Wed, 9 Apr 2014 18:30:23 -0300
From: mauro.a...@gmail.com
To: embeb...@googlegroups.com
Puesta a tierra y blindajes rev 0.docx
DSP-4.pdf

Clavero, Cristian (ICSA IDi, Mza)

unread,
Apr 11, 2014, 9:30:25 AM4/11/14
to embeb...@googlegroups.com

Nestor…

Excelente trabajo.

Muy didáctico, serio, y citando las fuentes por si desea profundizar.

 

Muchas gracias por compartirlo.

 

Saludos…

 

 

Cristian Clavero
Hardware and Firmware Engineer 
R&D

 

Descripción: Descripción: ICSA-COLOR con exclusión

Acceso Sur 4557 - Mayor Drummond (M5507ADA)

Luján de Cuyo - Mendoza – Argentina

+54 (261) 413-6269   (Directo / Direct Line)

+54 (261) 413-6200   (Conmutador / Switchboard)

+54 (261) 413-6244   (Fax)

www.icsaautomation.com

P Antes de imprimir este documento, asegúrese de que sea absolutamente necesario. Please don’t print this mail if it is not necessary.

This information is private and confidential. The review, dissemination, distribution or copying of this message is strictly prohibited.

image001.jpg

Mauro Antivero

unread,
Apr 14, 2014, 6:10:04 PM4/14/14
to embeb...@googlegroups.com
Gracias por tus trabajos Nestor, no los leí bien pero les pegué una mirada y parecen muy interesantes.

Adjunto el esquemático "básico" que estoy usando. Por supuesto que el mismo puede recibir diversas modificaciones. Ya nomás con el filtrado de la tensión VRef+ y VDD (de esto me había olvidado) más el filtro pasabajos RC a las entradas digitales (eso sinceramente casi que lo ignoraba) la cosa mejoró bastante. Todavía me falta ver que se puede hacer a nivel de firmware.

No les dije, pero la parte de sensado la tengo armada sobre un protoboard, se que es una animalada (sobre todo por cuestiones de ruido) pero lo hice así para hacerlo ráido. La idea es lograr el mejor resultado posible en ella y luego con un buen PCB mejorar aún más las cosas. Eso si, la verdad que es todo muy artístico!

Con respecto al MOSFET de potencia acepto recomendaciones. La idea es que se banque 45V y 5A (no creo llegar nunca a ese valor, pero bueno, por las dudas). Con un solo IRF530 no voy a poder, pensaba poner 3 en paralelo, pero si hay algún MOSFET más adecuado para el trabajo mejor.

Lo del RS-232 sin un MAX232 lo saqué de una nota muy interesante donde explican técnicas de hardware con PIC la verdad que muy piolas. Se la recomiendo para el que no lo haya visto:

http://es.scribd.com/doc/112250178/Tips-and-Tricks

Ahora bien, con respecto al firmware, estoy medio mareado con el tema del "oversampling". Yo lo que sieeeempre hice para leer un valor de un ADC (mayormente valores de tensión de DC) es leer 10, 20, 100, etc. veces y luego calcular el promedio. Eso nomás es hacer oversampling o estoy entendiendo para el traste algo? Aclaro por si no se nota que tengo que seguir leyendo jeje, pero me surgió esa duda de lo que leí hasta ahora.

Creo que eso es todo, tengo muchas ideas más para implementar en el circuito, pero primero quiero mejorar lo más posible la lectura de los ADC.

Perdón por la demora en contestar, estuve colgado con otras cosas y gracias a todos por las opiniones e ideas, las cuales por supuesto siguen siendo bien recibidas.

Ah, me olvidaba! Lo de dos reguladores de tensión es porque de uno saco los 5V para el micro y del otro saco 9V para que así el LM324 pueda llegar a 5V a su salida en el caso de 5A de corriente por el shunt. Por supuesto que hay AO rail-to-rail, pero acá en mi ciudad si llegás a preguntar por uno te internan en un manicomio. Me gustaría hacerlo así pero agregando un simple regulador más se soluciona con poca plata.

El shunt de 1 Ohm no va a ser una sola resistencia como muestra el esquemático, sino que serán 10 resistencias de 10 Ohms en paralelo. Esto lo ví por ahí que es mejor puesto que de estas se pueden conseguir con mejor tolerancia que en el caso de una de potencia.

Al esquemático le faltan varios valores de componentes y revisarlo bien porque lo hice apurado, seguramente tenga algún que otro error.

Ufff. Ahora si, saludos!

Mauro.

El 11/04/14 03:09, Nestor Campos escribió:
Carga_DC.pdf
Reply all
Reply to author
Forward
0 new messages