Estoy haciendo un pequeño proyecto usando un cargador Lipoly y una batería de 2500mAh 3.7V, ambos de Adafruit. Estoy tratando de mostrar el porcentaje que queda en la batería. Para eso estoy usando este pequeño boceto:
long readVcc() {
long result;
// Read 1.1V reference against AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate AVcc in mV
return result;
}
Vi en esa página que el voltaje mínimo es de 3,0 V, así que lo uso para obtener mis valores:
float volt = (float)readVcc()/1000;
float percent = ((volt-3)/0.7)*100;
Cuando muestro mis valores, me muestra que el porcentaje restante es -4%. ¿Debo preocuparme o estoy haciendo algo mal al calcular?
Creo que tu cálculo está bien.
Prueba:
Si los resultados de su conversión ADC son 1024 (escala completa de 10 bits), cuando AVcc = referencia
result = 1126400L / 1024 = 1100;
Si los resultados de su conversión ADC son 512 (media escala de 10 bits), cuando AVcc = referencia / 2
result = 1126400L / 512 = 2200;
Su resultado porcentual es -4% porque el voltaje está por debajo de 3V.
percent = ((volt-3)/0.7)*100
-4 = ((volt-3)/0.7)*100
-4/100 = (volt-3)/0.7
-0.04*0.7 = volt - 3
-0.28 + 3 = volt
2.972 = volt
kamil
kamil
tomatediabolik
kamil