¿Cómo elegir R y C para reducir el ruido en la entrada analógica de arduino?

No soy muy competente en lo que respecta al hardware, así que tengan paciencia conmigo.

Intenté buscar en Google para descubrir cómo elegir valores para un filtro de paso bajo para reducir el ruido en un potenciómetro. La mayoría de los artículos que he leído explican cómo elegir valores en función de las características de frecuencia. Ese es un enfoque razonable cuando tienes esa información.

En esta situación, mi entrada digital en un arduino está modulada por un potenciómetro y veo que los valores rebotan mucho entre 1 y cero cuando está cerca del umbral. Me gustaría implementar un filtro de paso bajo, pero no estoy seguro de cómo elegir mis valores ya que no tengo claro cuál es la banda de frecuencia que quiero filtrar (no tengo un osciloscopio).

Este problema parece bastante simple, y hasta ahora he visto un montón de tutoriales de arduino para 'simplemente implementar un filtro de paso bajo'. Pero lo que estoy buscando es, ¿cómo abordaría un ingeniero eléctrico la elección de los valores correctos para R y C dado que están viendo una entrada analógica ruidosa?

Además, esta no es una pregunta sobre ningún circuito específico que haya construido, es más una pregunta general sobre cómo construir filtros de paso bajo en la práctica.

Editar: Aquí hay un poco más de información.

Estoy usando un sensor LM35, que operó en el metro V rango. La temperatura del sensor es o tu t pag tu t ( metro V ) 10 metro V entonces 400mV serían 40.0 grados C. Quería usar el potenciómetro para modular un valor de 0-450 mV para alimentar a un comparador (LM393) para determinar si la temperatura es mayor que algún umbral ajustable. Para configurar el pin Vcc del potenciómetro, usé un divisor de voltaje 10 k Ω 100 k Ω + 10 k Ω 5 V = .454 V = 454 metro V

El circuito se ve así, y V o tu t va a una de las entradas digitales de arduino . También paso las entradas de los comparadores a las entradas analógicas para su inspección, y la entrada del potenciómetro rebota bastante.

ingrese la descripción de la imagen aquí

Bienvenido a EESE. Hay algunos enfoques diferentes para elegir los valores de RC. Una es hacer que la constante de tiempo RC sea lo más grande que pueda tolerar. ¿Podría decir un poco más sobre para qué está usando el voltaje? Eso podría ayudarnos a comprender un poco mejor el espacio de soluciones. Además, ¿cuál es el valor del potenciómetro? ¿Estará cerca del ajuste medio la mayor parte del tiempo o se utilizará en todo el rango? Edite su pregunta para incluir la información solicitada. Simplemente inclúyalo en la pregunta en cualquier lugar.
Tu frecuencia de muestreo y lo que haces con los valores una vez que los tienes tiene mucho que ver con las sugerencias. A veces, realmente necesitas un filtro externo. A veces, simplemente promediar los valores que obtiene (o aumentar la tasa de ADC y luego promediar) es suficiente. En general, desea agregar partes externas si brindan un beneficio que no puede lograr en el software. Las piezas adicionales solo significan que más cosas pueden salir mal. Pero esto también depende de sus habilidades con el software. Entonces... ¿quién sabe? Lo más simple es agregar una pequeña tapa en el limpiaparabrisas y en ambos lados. Pero el efecto del filtro varía con la posición. Quizás bien.
La salida del comparador es digital, está encendida o apagada. ¿Cuál es el punto de usar ADC para leer un valor binario? Claro que debería funcionar, simplemente no tiene mucho sentido. Además, la salida del comparador solo puede bajar a tierra, no puede empujar la salida hacia arriba. Por lo tanto, la salida del comparador debe tener una resistencia pull-up para que sea alta cuando el comparador no esté bajando. Los esquemas adjuntos no muestran esto. Ponga una resistencia de 4,7 kohm allí, debería funcionar mejor.
@Justme Lo siento, hice los dibujos de memoria. Tengo una resistencia pull up de 1k en la salida del colector abierto, y el comparador está alimentando una entrada digital. Las entradas al comparador también se alimentan a las entradas analógicas del arduino simplemente para que pueda inspeccionarlas con el monitor en serie, y el potenciómetro rebota mucho. Cuando el umbral está cerca de la temperatura, la salida digital del comparador va mucho entre 1 y 0.
@blueether OK, gracias por aclarar. Ahora que mencionó que la salida digital del comparador es ruidosa cuando está en el umbral, no desaparecerá simplemente filtrando las entradas al comparador. Si piensa en un comparador ideal, ¿cuál es la salida cuando los voltajes de entrada son idénticos? ¿Está a medio camino entre encendido y apagado, o cambiando rápidamente entre ambos estados? El comparador alternará entre encendido y apagado. Si bien filtrar la salida del comparador podría funcionar, sería mejor generar algo de histéresis para detener la oscilación del comparador.
@Justme hystersis es una buena idea, lo intentaré. ¡Gracias por la sugerencia!

Respuestas (3)

  • Los ADC tendrán una impedancia de entrada máxima específica mencionada en la hoja de datos (para la mayoría de las MCU). Incluso se pueden encontrar la resistencia en serie recomendada y el condensador.

  • Dado que la señal proviene de un potenciómetro, es una señal de cambio lento. Un capacitor de valor 10nF o incluso 100nF en la entrada del capacitor ayudará a reducir la falla de muestreo. El condensador interno de muestreo y retención se cargará fácilmente con el condensador externo.

  • El condensador interno será de un valor muy pequeño en 10s de pF. Por lo tanto, una capacitancia externa de 10 nF o 100 nF no verá ninguna carga cuando el capacitor de muestra y retención entre en contacto con la línea ADC.

  • En el software, también puede emplear un promedio móvil para reducir aún más el ruido.

  • Los R y C externos juntos definen la constante de tiempo. Esperar varias constantes de tiempo RC (10x o incluso más) antes de leer el valor del registro ADC produce un resultado más preciso.

  • Si el potenciómetro agrega una impedancia de entrada más alta que el valor esperado de ADC, se puede usar opamp en un modo seguidor de voltaje, sería factible, reduciendo la impedancia de salida de la fuente de señal.

En esta situación, mi entrada analógica en un arduino está modulada por un potenciómetro y veo que los valores rebotan mucho. Me gustaría implementar un filtro de paso bajo

Dado el esquema que publicó, parece poco probable que la salida del potenciómetro sea tan ruidosa, a menos que tenga algunos problemas con la fuente de alimentación. De todos modos, podría poner un condensador en la salida.

No está claro cuando dices "los valores rebotan mucho": ¿usas el arduino para leer desde el potenciómetro o para leer la salida del comparador? ¿Y está seguro de que su rutina es correcta (deje suficiente tiempo para muestrear la entrada y suficiente tiempo para que el ADC realice la conversión)?

Dicho esto, creo que los comparadores son muy sensibles al ruido, es posible que pueda usar su arduino para leer directamente la salida del sensor, tal vez amplificada a través de una operación. Al hacerlo, puede crear un filtro en el software que le otorgará mucho más control; debería ser fácil porque normalmente la temperatura varía muy lentamente, por lo que el software debería tener mucho tiempo para filtrar. Y también puedes agregar algo de histéresis; o alguna predicción: si ves que la temperatura sube rápidamente, puedes predecir - antes de tiempo - que llegará al setpoint o lo que sea (siempre hay algo de inercia).

Gracias por este comentario y esta perspectiva, ¡muy útil! Para responder a su pregunta, estoy usando el arduino para leer la entrada analógica conectada al potenciómetro Y la entrada digital conectada a la salida del comparador. No tengo demora en mi ciclo, sin embargo, asumí que la MCU es más lenta que el sensor analógico... ¿es una mala suposición? Agregar histéresis es una idea interesante, aunque no estoy seguro de si funcionaría, ya que rebota entre +-6 y 8 grados en ambas direcciones. Aunque lo pensaré.
@blueether hmm ... Supongo que la MCU es mucho más rápida que cualquier sensor de temperatura y, de todos modos, mucho más rápida que cualquier cambio de temperatura en el mundo (si no es en aplicaciones extremas). Sólo para decir. De todos modos, el filtrado, el remuestreo, el retraso y la predicción no deberían ser una carga pesada para una MCU (si no está sobrecargada).

1Kohm y 1uF deberían funcionar bien. ¿Por qué?

Considere la corriente de entrada equivalente del ADC.

I = frecuencia * cargo_por_muestra

yo = F * (C * V)

A una frecuencia de muestreo de 1 MHz, 10pF Csample (dentro del ADC), tiene

yo = 1e6 * 1e-11 * 5voltios = 5 e-5 = 50 uA

Se pueden invertir 50 uA para encontrar que el Rerror es de 20 000 ohmios por voltio. Así, para una caída de 1 milivoltio, la serie R solo puede ser de 20 ohmios.

Sin embargo, ajustará el potenciómetro, por lo que no hay requisitos de precisión.

Y su voltaje no es de 5 voltios, sino de 0,5 voltios.

Simplemente coloque un 1Kohm en serie con la entrada ADC y coloque 1uF desde la entrada ADC a tierra.

Esto proporciona un filtro de entrada de 159 Hz, suficiente para eliminar la mayoría de la basura de registro de interruptores de radio AM y de ladrillo negro.

"Se pueden invertir 50 uA, para encontrar que el error es de 20,000 ohms por volts". Supongo que debes reevaluar esta oración, ahora no tiene sentido. Si un Reror fuera una resistencia, sus unidades no son ohmios/voltios, por supuesto.