estabilizar medida analogica

Buenos dias, antes de nada decir que he buscado mucho antes de poner este comentario pero os cuanto.
Al final tengo un sensor gp2y0a41sk0f ya en casa pero claro, el tema es que este sensor mide de 2.8 a 0.4 voltios cuando sus medidas son 4 cm y 30 respectivamente.
estoy haciendo una tabla con valores directos del aparato a diferentes medidas y aun haciendo una media con 50 medidas salen valores un poco diferentes.
¿como puedo acortar el rango para ser mas preciso en la medida?

codigo usado

#include <Average.h>
void setup() {
  //Se inicia la comunicación serial
  Serial.begin(9600);
}
 
void loop() {
  /*
    Se crea una instancia de la librería,
    con un tamaño de buffer de 10 datos tipo float
  */
  Average<float> ave(50);
  /*
     Variables para almacenamiento del índice del
     valor minimo y maximo
  */
  int minat = 0;
  int maxat = 0;
  //Se imprime la inscripcion Data Series
  //Serial.println("Data Series");
  /*
     Se generan 10 numeros aleatorios y se almacenan
     en el buffer. A la vez, se imprimen los valores
     generados
  */
  for (int i = 0; i < 50; i++) {
    int num = analogRead(A12);
    ave.push(num);
    delay(50);
  }
  /*
     Se imprimen los resultados obtenidos a partir
     de la serie de datos generada en el ciclo for
  */
  Serial.println();
  Serial.print("Media:   "); Serial.println(ave.mean()); //media
  delay(3000);
}

Tabla de valores a diferentes distancia. una vez pasado por el codigo.

Poniendo el cero a ras de la carcasa del emisor.

cm 4 10 15 20 25

Media: 531.42 Media: 243.22 Media: 156.54 Media: 130.06 Media: 102.50

Media: 526.78 Media: 241.68 Media: 159.04 Media: 125.34 Media: 106.34

Media: 527.42 Media: 238.68 Media: 163.98 Media: 122.48 Media: 109.96

Media: 531.04 Media: 238.66 Media: 163.38 Media: 125.56 Media: 105.74

Media: 531.02 Media: 243.98 Media: 165.44 Media: 120.68 Media: 111.82

Media: 531.06 Media: 241.26 Media: 161.16 Media: 131.22 Media: 108.28

Media: 529.42 Media: 241.22 Media: 157.06 Media: 128.16 Media: 113.70

Media: 529.42 Media: 241.44 Media: 161.76 Media: 122.94 Media: 110.76

Media: 529.34 Media: 241.52 Media: 161.26 Media: 125.18 Media: 103.58

Media: 531.64 Media: 238.98 Media: 160.38 Media: 128.28 Media: 115.34

Toda esta historia es porque necesito medir mm en un rago de 4mm a 20mm de la forma mas precisa posible.

Hola Lurlab

Te comento mi experiencia, (no conozco ese sensor, pero me paso muchas veces en otros o en toma de tensiones)
Está bien lo de la multiple toma de datos y hacer un promedio, lo que pasa es que si de 20 tomas dos te dan valores distantes, Zas! te modifica mucho el promedio.
Yo en la mayoría de sensores (los que varian resistencia o voltaje) les coloco un capacitor en paralelo.
Ejemplo:
Si hacés un voltímetro de alterna y tomás 20 mediciones, depende en qué momento del ciclo te lee una te lee 0V, otra 3V, otra el maximo y cuando hacé el promedio no te da una aproximada, quizas estás midiendo 5V y la resultante es 2V!.
Con el capacitor estabiliza el valor de la entrada que tenés y te da bastante exacto; ahora qué valor? vas a tener que probar, depende de la velocidad de respuesta que necesites.
Para un voltimetro rectifico la señal de alterna, le coloco un capacitor de 1MF con una resistencia de 500 ohms y se estabiliza bastante.
Suerte

buenas tardes, veremos como va el tema y que puedo hacer, Gracias por la contestacion.

Si hacés un voltímetro de alterna y tomás 20 mediciones, depende en qué momento del ciclo te lee una te lee 0V, otra 3V, otra el maximo y cuando hacé el promedio no te da una aproximada, quizas estás midiendo 5V y la resultante es 2V!.

Este ejemplo no tiene nada que ver con lo que el propone asi tal como lo relatás.

Porqué? porque la medición que el hace es en DC y claro que puede tener ruido o una serie de AC de bajo valor que modifican el valor real pero no tiene que ver con medir una AC.

El valor mas bajo para 4 cm fue 526.78 y el mas alto 531.64
Diferencia 531.64 - 526.78 = 4,86
Si consideras que el ADC del arduino tiene un error de +- 2LSB o sea 4.86 mV son 5/1024 = 4,86 mV y entonces 2LSB => 9.72mV
531.64 = 2,5959 V
526.78 = 2,5722 V

Diferencia = 0.0237 o 23.7 mV

Tienes una fluctuación de 12mV, algo mas que esos +-2 LSB
tal vez el problema sea la fuente de alimentación de tu arduino y/o el sensor.
Agrega a la alimentación del sensor, un capacitor electrolítico de 10 a 47uF a ver si disminuye el problema.

Mide con tu tester/multimetro la tensión de alimentación en el sensor y leyendo en AC en mV deberías leer valores muy bajos pero estoy seguro que no lo serán.

Gracias por la contestación. Lo probare

Si luego de poner el capacitor a la alimentación del sensor sigues con el problema, entonces si coloca lo que te sugirió Foekohei2, la R de 500 ohms (en serie) y el capacitor de 1uF del lado del AD del arduino.