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.