Proyecto cargador bateria y monitorizacion.

Buenas, estoy intentando hacer un cargador de baterias de moviles, pero que la carga la realize el arduino.

A ver, me explico, he realizado el circuito de carga y lo que pretendo es ver el estado de esa carga en tiempo real gracias a arduino.

La idea era utilizar las entradas analogicas a modo de lectura de tension y como las baterias son de 3.7v pues en principio no tendria problema en conectarla directamente para medir la tension de esa bateria.

Es mas, eso ya lo tengo resuelto, hay bastante informacion sobre como medir la tension de una bateria.
Pero mi problema es cuando intentas medir la tension a la vez que carga.

Vale, el tema es que no se si sera de codigo o de tema electronico, pero lo curioso es que se realiza la primera medicion y me da un valor de 3.85v p.ej y como le tengo puesto un retardo para que no este leyendo constantemente, cuando realiza la seguna medicion me da un valor de 5v y asi sucesivamente.

3.85v
5v
3.85v
5v
etc

Os pongo el codigo por si se me hubiera pasado algo. Un saludo y gracias .

int led = 2;  //led rojo
int led1 = 3; //led rojo
int led2 = 4; //led verde
int rele = 5;  //rele para cortar la carga


 
void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(rele, OUTPUT);
}

 
void loop(){

// Monitoreo el Voltaje de la Bateria
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.00 / 1023.00); //* 2.70; //
  Serial.println(voltage);

 
    if(voltage <= 3.50) {
      digitalWrite(led, HIGH);
      digitalWrite(led1, HIGH);
      digitalWrite(rele, HIGH);
      Serial.println("Carga BAJA");
     
    }
    if(voltage <= 3.75) {
      digitalWrite(led, LOW);
      digitalWrite(led1, HIGH);
      digitalWrite(rele, HIGH);
      Serial.println("Carga MEDIO BAJA");
    }
    if(voltage <= 4) {
      digitalWrite(led, HIGH);
      digitalWrite(led1, LOW);
      digitalWrite(rele, HIGH);
      Serial.println("Carga MEDIA");
    }
    if(voltage < 4.19) {
      digitalWrite(led, HIGH);
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      digitalWrite(rele, HIGH);
      Serial.println("Carga TOTAL"); 
    } 
      else {

      digitalWrite(rele, LOW);
      digitalWrite(led2, HIGH);
      digitalWrite(led, LOW);
      digitalWrite(led1, LOW);
}

delay (10000);

}

Hola @mcmurphy, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Software.
Por cierto aunque ahora mueva tu hilo, no pases por alto la lectura de las normas que te acabo de indicar. Y cuando postees recuerda que NADA se copia y pega porque TODO lleva etiquetas para que sea visualizado adecuadamente.
Por favor edita tu código usando etiquetas.

ok, gracias, lo puse en proyectos por que no tenia claro aun si mi fallo es de hard o de soft.
Un saludo