fluctuando la lectura de adc

0

Tengo un sensor de nivel de combustible que varía su resistencia de 9.5 ohmios (vacío) a 155 ohmios (completo). El sensor se alimenta con una batería de 12 V conectada a un generador de 30 kVA.

El problema es que el nivel que obtengo fluctúa, es decir, 47.57% para los 30 y luego 48.4 para los 30 aproximadamente. El nivel se calcula utilizando el nivel de la ecuación (%) = 187.41 * V (puerto adc) - 7.38. El sensor de nivel de combustible forma un divisor de voltaje con una resistencia de 1.2k. El voltaje en el pin del ADC cambia, pero muy poco, aproximadamente + -1mV.

Tengo dos señales analógicas más conectadas al ADC de 16f877a. Las otras dos señales, a saber, el voltaje de la batería y la temperatura, son bastante estables.

Estoy usando 7805 para encender el circuito del controlador y un 7805 por separado para encender el módulo SIM900

    
pregunta mka

2 respuestas

2

La diferencia de voltaje necesaria para causar esta diferencia en el nivel de combustible es (48.4-47-57) /187.41=4.4mV, por lo que la fluctuación medida es de hecho demasiado baja.

Pero su ADC tiene 10 bits, es decir, da 1024 valores diferentes. En un rango de ADC de 5V, un paso es 5V / 1024 = 4.883mV, que corresponde a un nivel de combustible de 0.9%. Esta es la resolución de su circuito, y un cambio de voltaje en 1 mV puede causar un cambio en la lectura de ADC en 1 paso, lo que resulta en un cambio en el nivel de combustible en un 0.9%. (La diferencia entre 4.4mV y 4.883mV puede deberse al redondeo o no al voltaje de suministro de 5V exacto)

Un filtro de paso bajo analógico, como lo sugiere @Edesign, puede ayudar a reducir la frecuencia de los cambios, pero no puede eliminarlos. Y: los saltos siguen siendo del 0,9%.

El promedio de varias medidas de ADC es similar al filtro de paso bajo. También hace que el nivel de combustible se vea más suave, ya que difumina los pasos del 0.9%.

Lo que puedes hacer para reducir la fluctuación es aplicar una banda muerta. Algo así como
Acepte el valor de ADC solo cuando sea diferente en al menos 2 pasos de los últimos valores aceptados.

Sin embargo, esto resulta en pasos más grandes de 1.8%.

En cuanto a su fórmula, el rango de voltaje que va al ADC es aproximadamente de 0V-0.5V (asumiendo que puede medir hasta el 100% del nivel de combustible), por lo que solo usa 1/10 del rango del ADC. Si puede asignar el voltaje de entrada al rango completo de ADC, puede obtener una resolución de 0.09%.
Agregue un amplificador o configure el voltaje de referencia superior del ADC a aproximadamente 0.5V (no sé si este PIC lo permite. Muchos permiten usar los voltajes provistos en dos pines como límite superior / inferior del rango del ADC)

Mientras obtiene pasos más finos con esto, también obtendrá más ruido (fluctuaciones). Pero ahora ya tienes algunas ideas sobre cómo reducir esto.

    
respondido por el sweber
0

Para mejorar la precisión de su medición, puede utilizar las siguientes técnicas simples:

  • promedio digital: toma varias medidas y muestra el promedio de ellas. El número de muestras que puede promediar dependerá de la frecuencia de muestreo de su ADC y de la frecuencia de la medición que desee.
  • filtro de paso bajo analógico

También asegúrese de que el voltaje en el pin del ADC no sea diferente cuando lo mida con un dispositivo externo, ya que generalmente actúan como pequeños condensadores, además de que a veces utilizan el filtrado.

    
respondido por el Edesign

Lea otras preguntas en las etiquetas