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);
}
