Tutorial de diseño de filtro de ADC Sugerencias

3

Estoy buscando algunos buenos recursos en la web para avanzar en mi conocimiento del diseño de filtros para interactuar con un ADC de un uC.

Estoy buscando para repasar algunas cosas: Determinación de la frecuencia de corte adecuada,
Tipo de selección de filtro, cuándo usar buffers, cómo seleccionar la ganancia adecuada si se usan buffers

He estado buscando en la web, pero tengo problemas para encontrar un tutorial general de: Aquí está tu sensor, aquí es cómo harías para interactuar con un ADC.

    
pregunta EE_PCB

4 respuestas

3

Bueno, el primer paso es anti-aliasing. Eso es un gran problema si no lo haces bien. Para tomar su ejemplo de un fotosensor, imaginemos lo que sucede en condiciones adversas sin un filtro anti-alias.

Por ejemplo, usted ha diseñado un dispositivo alimentado por batería con una pantalla LCD transflectiva porque se puede ver con una luz de fondo en la oscuridad y con luz ambiental en el día. Tiene un fotosensor para apagar la luz de fondo cuando la luz ambiental es lo suficientemente brillante, por lo que ahorra carga de la batería. Para ahorrar energía del procesador (esto no es un requisito de gran ancho de banda), tiene un tiempo de CPU adicional cada 10 ms y muestrea el fotosensor con el ADC. Hasta ahora, todo bien.

Ahora, una enfermera utiliza su producto en un turno de noche, en niveles de luz ambiental baja, pero tiene una lámpara de escritorio para trabajar. Recientemente reemplazó la bombilla de tungsteno, pero solo pudo encontrar una bombilla eco-CCFL. Esta luz fluorescente parpadea a 100Hz (está en Europa), lo cual es demasiado rápido para que ella lo vea. Pero causa estragos en tu producto.

Cuando el producto está encendido, muestrea el fotosensor cada 10 ms y coincide con el pico de la forma de onda del parpadeo de la luz en cada muestra. Graba varias muestras consecutivas de alto nivel de luz y apaga la luz de fondo de la pantalla LCD. Pero debido a que el intervalo de muestreo de 10 ms no está sincronizado con el a.c. la frecuencia del ciclo, el muestreo vaga en fase y uno o dos segundos más tarde, el fotosensor está muestreando en la parte inferior de la forma de onda parpadeante. Después de varias muestras consecutivas de poca luz, su software enciende la luz de fondo de la pantalla LCD.

El resultado es que la luz de fondo de la pantalla LCD se enciende y se apaga de forma errática, a una frecuencia de la diferencia exacta entre la frecuencia de parpadeo y la frecuencia de la muestra. El producto se considera defectuoso y se le envía para su reparación. Realiza una prueba en su banco, junto a la ventana, cubriendo y destapando el sensor y descubriendo que funciona como esperaba. Pero el producto es defectuoso, tiene un diseño defectuoso porque no escuchaste al tío Nyquist.

El teorema de muestreo de Nyquist establece que debe muestrear a una frecuencia de al menos el doble de la frecuencia más alta en la señal de entrada. Al revés, debe asegurarse de filtrar la señal de entrada para rechazar cualquier frecuencia de la mitad de la frecuencia de muestreo o superior, y debe hacer esto ANTES de muestrear. Agregar un filtro de software después del muestreo no lo guarda si ya tiene presente un alias de baja frecuencia. De todos modos, utilice el filtrado digital para procesar los datos muestreados según lo requiera su aplicación, pero si desea saber dónde comenzar con el diseño del filtro para el muestreo del sensor, debe comenzar con el filtrado correcto de alias antes del muestreo.

Como extensión, una vez me sorprendió escribiendo un código para el control de presión de un dispositivo de succión usando una pequeña bomba eléctrica y un sensor de presión digital. El sensor de presión hizo una medición cada 10 ms aproximadamente, pero la bomba proporcionaba fluctuaciones de presión significativas a frecuencias incómodas que el sensor estaba aliaseando. No había nada que pudiera hacer en la electrónica o el software, el alias se estaba produciendo dentro del propio sensor. Al final, la solución fue un filtro neumático Nyquist en la entrada del sensor.

Aprendí una valiosa lección ese día.

    
respondido por el Billysugger
2

Realmente depende de la aplicación

  1. Determine qué tipo de filtro necesita bajo ... alto ... paso de banda.
  2. Desea ver las diferentes clases: Butterworth, Bessel, Chebychev, etc. y decidir cuál se ajusta a sus requisitos.
  3. Es necesario determinar el orden del filtro, ¿cuál es el mínimo que se puede usar para lograr este objetivo?

Puedes usar matlab, spice o algún software para simularlo antes de intentarlo Microchip tiene buenas notas de aplicación y software de diseño para ejemplos y simulación

Aquí hay un tutorial: Anti-Aliasing, filtrado analógico para sistemas de adquisición de datos

    
respondido por el Iancovici
1

TI y Analog Devices son buenas compañías que deben seguirse para obtener una buena documentación técnica. AD link contiene la mayoría de la parte de interfaz que se utilizará durante el diseño del circuito. Si está buscando ADCs de alta velocidad con más de 100 MSPS de muestreo, sugiero ir con TI High Speed para ADC de cuatro canales y octa canales. Estos son algunos de los enlaces de los fundamentos de TI para ADC:

www.ti.com/lit/an/slaa510/slaa510.pdf

www.ti.com/lit/an/slyt423/slyt423.pdf

    
respondido por el AKR
1

Entonces, ahora te he convencido (con suerte) de la necesidad de un filtro anti-alias, veamos cómo especificar y diseñar uno con un ejemplo simple. Tomemos un problema más fácil que su ejemplo de sensor de fotos para mostrar el proceso básico (o un enfoque para resolver esto).

Supongamos que tiene un circuito que funciona con baterías, a un valor nominal de 12 V, pero ese voltaje puede variar entre 10,5 V y 14,5 V. Este suministro de batería alimenta tanto un convertidor de alta frecuencia para impulsar su microcontrolador, como un actuador cuyo controlador debe modificarse para compensar los cambios en el voltaje de la batería a medida que se descarga, con una precisión de ± 5%. Por lo tanto, debe medir el voltaje de la batería con un ADC de 12 bits en su microcontrolador, que tiene una referencia de 2.0 V, y que puede configurar para leer a intervalos de 1 ms con una precisión de ± 1%.

El enfoque más simple es alimentar el pin ADC con la salida de un divisor potencial. El ADC requiere una impedancia de la fuente de menos de 3k, por lo que podemos usar un divisor potencial con un 3k3 a 0V y 22k a Vbat nos dará una buena resolución, cero desplazamiento y un rango de hasta 15.3V. También proporciona una impedancia de fuente de 2k87 que está justo por debajo del límite ADC. Pero podemos obtener la misma relación de división con 2k7 y 18k, lo que da un mejor margen de impedancia a 2k4. Así que vamos a utilizar eso.

Con las resistencias estándar del 1%, el divisor potencial contribuye con casi ± 2% de incertidumbre, lo que hace un total de ± 3% para toda la medición hasta el momento. Así que nos queda un ± 2% para el alias residual.

Ahora, el teorema de Nyquist requiere que su frecuencia de muestreo debe ser al menos el doble de la frecuencia más alta en su señal para evitar el alias. Dicho de otra manera, e involucrando la tolerancia residual derivada anteriormente, debemos asegurarnos de que cualquier componente de la señal con probabilidad de alias no haga más contribución que ± 2% del rango completo, o ± 300mV.

El convertidor Buck que hemos elegido se usa en otro producto alimentado por batería, y si bien proporciona una buena estabilidad de salida, baja pérdida y bajo costo de componentes, sabemos que tiende a inyectar alrededor de 900 mV de ruido de pp a 130-180 kHz en la batería Suministro, que por lo demás es muy estable. Debido a que nuestra aplicación no es idéntica, decidimos diseñar para el peor de los casos de 1.5V p-p, (± 750mV) a 120-200kHz.

Este es un escenario particularmente bueno, porque tenemos una señal definida con potencial de alias, y esa señal tiene una frecuencia muy alta, en comparación con la frecuencia de muestreo. Si no supiéramos nada sobre la interferencia potencial, tendríamos que diseñar un filtro para rechazar todas las frecuencias por encima de 500 kHz (la mitad de la frecuencia de muestreo), lo que es un desafío mucho más difícil.

Entonces, ahora necesitamos diseñar un filtro que rechace ± 750mV a 120kHz, dejando menos de ± 300mV. ¡Eso es un rollo!

Si recuerda cualquier propiedad de filtro, puede recordar que un filtro de primer orden, (como un solo RC), atenúa las frecuencias por encima de la frecuencia de corte, y que cada duplicación de la frecuencia más allá de la frecuencia de corte reduce la señal a la mitad. amplitud, (o por un factor de 10, 10dB, por década). [Tenga en cuenta que la señal potencia cae dos veces más rápido, porque la potencia es proporcional a la amplitud al cuadrado].

Ahora, necesitamos < 300mV de una señal de 750mV, que es < 0.4. Por lo tanto, nuestra frecuencia de corte solo debe ser < 0.4 x 120kHz, que es 30kHz. Pero solo es sensato tener una frecuencia de corte no superior a la mitad de la frecuencia de la muestra, por lo que podríamos reducir un filtro de 500Hz que atenuaría el ruido del convertidor Buck a 750 x 500 / 120,000 = 3mV.

Podemos lograr una frecuencia de corte de < 500Hz simplemente agregando un condensador de 220nF a través del resistor inferior 2k7 del divisor de potencial (la frecuencia de corte Fc = 1 / (2pi RC), donde R es el paralelo de 2k4 Impedancia del divisor potencial. ¡Simples!

¿Eso ayuda más?

    
respondido por el Billysugger

Lea otras preguntas en las etiquetas