Hola, escribo por primera vez en el foro, por tanto, un saludo a todos.
Mi problema es el siguiente:
He hecho una máquina de estados con Arduino UNO, que utilizo para arrancar un motor diésel, en función de la tensión de la batería y usando un switch/case. Arduino se alimenta con una batería de 12 V (ácido-plomo) y ésta es la tensión que debo leer. (no alimento Arduino directamente con 12V lo he reducido a 5V con un regulador)
Para medir dicha tensión utilizo un divisor con R1=10k y R2=5K que trabaja con un rango de voltaje de 0 a 16 V y que leo con la entrada analógica a través de una función auxiliar que pongo a continuación, a la que llamo en el programa principal.
float getTENSION(){
float t3=analogRead(0); //Lectura de tensión
t3 = ((15.3*float(t3))/1024.0);
return t3;
}
Y en el programa principal a la función la llamo de la siguiente forma:
case 3: // lectura continua de tensión a motor parado
lcd.setCursor(0,0);
lcd.print("AUTOMATICO");
lcd.clear();
while(V > 12.38){
float V=getTENSION();
lcd.setCursor(0,1);
lcd.print("TENSION: ");
lcd.print(V);
lcd.print(" V ");
delay(300);
if (V <= 12.38){
pasoEstado=4;
break;
}
}
(El If no afecta, pues el while debería hacer que pase al estado 4 directamente que es el estado de arranque).
Si leo la tensión de una fuente de alimentación independiente, la medida es correcta, pero cuando leo la tensión de la batería con que alimento al Arduino la medida es de 15.3 V, por tanto 1024 valores para una tensión de 12.36 aproximadamente (medida con multímetro) lo cual no está bien. He probado a medir la tensión que tiene en la entrada analógica con el multímetro, y mide 3.36, lo que esta dentro de lo normal. Por algún motivo el programa no interpreta bien los valores analógicos cundo mido únicamente con la batería.
A modo de información decir, que todas las masas están unidas.
Espero no haberos aturullado y me podáis echar una mano.