Error en la lectura de tensiones.

Buenas a todos, es la primera vez que trabajo con arduino y me he atascado en algo que seguramente sea absurdo.
La cuestión es que quiero leer la tensión en 5 pines de la placa que corresponden a una serie de elementos como se podrá ver en el código.
la cosa es que estoy tratando de exportar estos datos a excel, para sacar un estudio con esos datos y demás así a groso modo y para ello estoy empleando PLX-DAQ.

El problema viene en que me he creado una señal de referencia de 1.83 voltios para testear en una protoboard. La he conectado a las 5 entradas analógicas del sensor, pero cuando las quiero leer, ninguna coincide. deberían ser todas de 1.83V, pero nada de nada.
La placa que estoy usando es arduino uno y esta conectada por USB.

int Tamb_s=0, Tin_s=0, Tout_s=0 , Irradiancia_s=0, Caudal_s=0;
float Tamb_e, Tin_e, Tout_e , Irradiancia_e, Caudal_e;


void setup() {

Serial.begin(9600); // the bigger number the better
Serial.println("CLEARDATA"); //clears up any data left from previous projects
Serial.println("LABEL,Time, V_Tamb, V_Tin, V_Tout, V_Irradiancia, V_Caudal"); //always write LABEL, so excel knows the next things will be the names of the columns (instead of Acolumn you could write Time for instance)
Serial.println("RESETTIMER"); //resets timer to 0

}

void loop() {

analogRead(A0);
delay(500);
Tamb_s = analogRead(A0);
Tamb_e = fmap(Tamb_s, 0, 1023.0, 0.0, 5.0);delay(10);

analogRead(A1);
delay(10);
Tin_s = analogRead(A1);
delay(10);
Tin_e = fmap(Tin_s, 0, 1023.0, 0.0, 5.0);

analogRead(A2);
delay(10);
Tout_s = analogRead(A2);
delay(10);
Tout_e = fmap(Tout_s, 0, 1023.0, 0.0, 5.0);

analogRead(A3);
delay(10);
Irradiancia_s = analogRead(A3);
delay(10);
Irradiancia_e = fmap(Irradiancia_s, 0, 1023.0, 0.0, 5.0);delay(10);

analogRead(A4);
delay(10);
Caudal_s = analogRead(A4);
delay(10);
Caudal_e = fmap(Caudal_s, 0, 1023.0, 0.0, 5.0);

Serial.print("DATA,TIME,");
Serial.print(Tamb_e); Serial.print(","); 
Serial.print(Tin_e);  Serial.print(",");
Serial.print(Tout_e); Serial.print(",");
Serial.print(Irradiancia_e); Serial.print(",");
Serial.print(Caudal_e); Serial.println(",");
 
delay(1000); //add a delay

}

float fmap(float x, float in_min, float in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Aquí podéis ver los valores que me da:
https://ibb.co/kZtixc

Gracias!!

Hay un error de tipos,pero no creo que ese sea el problema.
Tamb_s = analogRead(A0);
Tamb_e = fmap(Tamb_s, 0, 1023.0, 0.0, 5.0);delay(10);

Los argumentos de la función fmap deben ser todos float pero tu tienes Tamb_s como integer.
Deberias declarar Tamb_s como Float y hacer un cast
Tamb_s =(float) analogRead(A0);

¿Como estas consiguiendo los 1,83 V? ¿uniste las masas de ambas fuentes?

Gracias por la respuesta he cambiado el tipo que me has dicho y he visto que tenia un cable de tierra que no me hacia bien el contacto, así que ya podía bailar... jajaja.

De todas formas, sigo sin tener una precisión decente en la primera medida es decir.

Aplicando por ejemplo 1.67 V a las 5 entradas me da una primera de 1.9 y las demás ya correctas.
¿Se te ocurre por que puede ser?

gracias.

Porque deberias promediar un poco las mediciones.

Ya está todo solucionado.

gracias por la ayuda.

Y cual fue la solución?

No se dice

Ya está todo solucionado.

Me voy y no comento nada.
Para eso viniste al foro a solicitar ayuda. Se te brindó ahora tu comenta como lo resolviste para que cuando alguien tenga el mismo problema tenga una alternativa de solución.

yo tenía puesto que leyese así:

analogRead(A0);
delay(500);
Tamb_s = analogRead(A0);
Tamb_e = fmap(Tamb_s, 0, 1023.0, 0.0, 5.0);delay(10);

finalmente con esta estructura me terminó por funcionar correctamente:

Tamb_s = analogRead(A0);
delay(10);
Tamb_s = analogRead(A0);
delay(10);
Tamb_e = fmap(Tamb_s, 0, 1023.0, 0.0, 5.0);
delay(10);

No se si es por que me equivoque al dejar un delay tan largo ( solo ocurría en esa primera medida). Pero poniendo esto, como también se me ha indicado y esos tiempos de espera funciona correctamente.

Pero lees dos veces y gastas 20 mseg, podrias leer 20 veces sin delay y promediarlo y tener lecturas mas estables.

Te vendría mejor hacer un suavizado de señal y no usar delay.

Armagedon13:
Te vendría mejor hacer un suavizado de señal y no usar delay.

En realidad es correcto utilizar delay y realizar medidas que se descarten cuando se cambia entre varios pines analógicos. Por ahí leí que el micro tiene un solo ADC y las mediciones se realizan por intermedio de un multiplexor analógico y mediciones seguidas de distintos pines producen errores. Para cambiar de pines hay que hacer una medición dejar pasar un tiempo y realizar la medición definitiva. Se que utilizando instrucciones de AVR se puede evitar ese problema.