Sugerencias del tutorial de diseño de sensor a filtro ADC

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

Estoy buscando repasar algunas cosas: determinar la frecuencia de corte adecuada,
el tipo de selección de filtro, cuándo usar búferes, cómo seleccionar la ganancia adecuada si se usan búferes

He estado buscando en la web, pero tengo problemas para encontrar un tutorial general de, Aquí está su sensor, así es como se conectaría a un ADC.

¿Está buscando información sobre filtros analógicos o filtros digitales (como IIR, FIR, para implementar en el software del microcontrolador)?
Filtros anti-aliasing, sensores de almacenamiento en búfer, sensores de amplificación, sensores de conexión y posiblemente (algunos) sensores de alimentación. Esto es demasiado amplio para cubrirlo en una pregunta. Tal vez restrinja su pregunta un poco y 9diga) concéntrese en el filtrado anti-alias.
Estoy buscando más las técnicas correctas de diseño de hardware. Y sugerencias de regla general. Entiendo que los filtros son un tema ENORME, pero supongo que hay algunas mejores prácticas/pasos a seguir correctamente cuando se le presenta un sensor y un micro. es decir, digamos un fotorresistor y un PIC, ¿cómo determina el almacenamiento en búfer adecuado o incluso necesita un filtro de paso bajo? etc.

Respuestas (4)

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

Por ejemplo, ha diseñado un dispositivo alimentado por batería con una pantalla LCD transflectiva porque se puede ver con luz de fondo en la oscuridad y con luz ambiental durante 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 (este no es un requisito de gran ancho de banda), tiene algo de tiempo de CPU libre cada 10 ms y luego prueba el fotosensor con el ADC. Hasta ahora, todo bien.

Ahora su producto está siendo utilizado por una enfermera, en un turno de noche, con bajos niveles de luz ambiental, 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 100 Hz (ella está en Europa), lo cual es demasiado rápido para que ella lo vea. Pero hace estragos en su producto.

Cuando el producto está encendido, toma muestras del fotosensor cada 10 ms y coincide con el pico de la forma de onda de parpadeo de la luz en cada muestra. Registra 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 la frecuencia del ciclo de CA, el muestreo se desvía en fase y uno o dos segundos más tarde, el fotosensor está muestreando en la parte inferior de la forma de onda de parpadeo. Después de varias muestras consecutivas de bajo nivel de luz, su software enciende la luz de fondo de la pantalla LCD.

El resultado es que la luz de fondo de la pantalla LCD parpadea de forma errática, a una frecuencia exactamente igual a la diferencia entre la frecuencia de parpadeo y la frecuencia de muestreo. El producto se considera defectuoso y se le devuelve para su reparación. Prueba en su banco, junto a la ventana, tapando y destapando el sensor y descubre que funciona como esperaba. Pero el producto ES defectuoso, es defectuoso por diseño 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. Puesto 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 del muestreo. Agregar un filtro de software después del muestreo no lo salva si ya tiene presente un alias de baja frecuencia. Por todos los medios, utilice el filtrado digital para procesar los datos muestreados según lo requiera su aplicación, pero si desea saber por dónde empezar con el diseño de filtros para el muestreo de sensores, debe comenzar con el filtrado correcto anti-aliasing antes del muestreo.

Como extensión, una vez me sorprendieron escribiendo 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 realizaba una medición cada 10 ms aproximadamente, pero la bomba proporcionaba fluctuaciones de presión significativas a frecuencias incómodas que el sensor estaba alterando. No había nada que pudiera hacer en la electrónica o el software, el alias estaba ocurriendo dentro del propio sensor. Al final, la solución fue un filtro Nyquist neumático a la entrada del sensor.

Ese día aprendí una valiosa lección.

+1 buenos ejemplos. No eres una persona tonta, ¿verdad? LOL

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 necesidades.
  3. Necesidad de determinar el orden del filtro, cuál es el mínimo que se puede utilizar para lograr este objetivo

Puede 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 simulaciones.

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

TI tiene FilterPro que parece útil para el diseño de filtros: ti.com/tool/filterpro

TI y Analog Devices son buenas empresas a las que se debe seguir para una buena documentación técnica. El enlace AD ​​contiene la mayor parte de la interfaz que se utilizará durante el diseño del circuito. Si está buscando ADC de alta velocidad con más de 100 MSPS de muestreo, le sugiero que opte por TI High Speed ​​para ADC de cuatro y ocho canales. Estos son algunos de los enlaces de TI para los conceptos básicos de ADC:

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

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

Entonces, ahora que lo 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 el ejemplo de su fotosensor para mostrar el proceso básico (o un enfoque para resolverlo).

Digamos que tiene un circuito que funciona con batería, a 12 V nominales, pero ese voltaje puede variar entre 10,5 V y 14,5 V. Este suministro de batería alimenta tanto un convertidor reductor de alta frecuencia para controlar su microcontrolador como algún actuador cuyo control 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 fuente de impedancia de menos de 3k, por lo que podemos usar un divisor de potencial con 3k3 a 0V y 22k a Vbat que nos dará una buena resolución, compensación cero y un rango de hasta 15.3V. También da una impedancia de fuente de 2k87 que está justo por debajo del límite de ADC. Pero podemos obtener la misma relación de división con 2k7 y 18k, lo que da un mejor margen de impedancia en 2k4. Así que usaremos eso.

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

Ahora, el teorema de Nyquist requiere que su frecuencia de muestra sea al menos el doble de la frecuencia más alta en su señal para evitar el aliasing. Dicho de otra manera, e involucrando la tolerancia residual derivada anteriormente, debemos asegurarnos de que cualquier componente de la señal que pueda generar alias no contribuya más que ±2% del rango completo, o ±300mV.

El convertidor reductor que hemos elegido se utiliza en otro producto alimentado por batería y, si bien brinda una buena estabilidad de salida, baja pérdida y bajo costo de componentes, sabemos que tiende a inyectar alrededor de 900 mV de ruido pp a 130-180 kHz en el suministro de la batería, lo 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,5 V pp (±750 mV) a 120-200 kHz.

Este es un escenario particularmente bueno, porque tenemos una señal definida con el 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 acerca de la posible interferencia, tendríamos que diseñar un filtro para rechazar todas las frecuencias por encima de 500 kHz (la mitad de la frecuencia de muestreo), que es un desafío mucho más difícil.

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

Si recuerda alguna 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 a la mitad la amplitud de la señal, ( o por un factor de 10, 10dB, por década). [Tenga en cuenta que la potencia de la señal cae el doble de rápido, porque la potencia es proporcional al cuadrado de la amplitud].

Ahora, necesitamos <300 mV de una señal de 750 mV, que es <0,4. Entonces nuestra frecuencia de corte solo necesita 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 muestreo, por lo que podríamos colocar un filtro de 500 Hz que atenuaría el ruido del convertidor reductor a 750 x 500/120 000 = 3 mV.

Podemos lograr una frecuencia de corte de <500 Hz simplemente agregando un capacitor de 220 nF a través de la resistencia inferior de 2k7 del divisor de potencial (la frecuencia de corte Fc = 1 / (2pi RC), donde R es la impedancia paralela de 2k4 del potencial separador ¡Simples!

¿Eso ayuda más?

Estoy bastante seguro de que la ganancia (y, por lo tanto, la amplitud) cae a 20 dB/década y la potencia a 10.
@Scott: Gracias, tienes toda la razón. Editaré para corregir cuando no tenga que dormir. :-)
Gracias de nuevo, este es exactamente el tipo de cosa que estaba buscando. ¡Realmente has ayudado un montón!