Ich mache ein kleines Projekt mit einem Lipoly-Ladegerät und einem 2500-mAh-3,7-V-Akku, beide von Adafruit. Ich versuche, den Prozentsatz anzuzeigen, der auf der Batterie verbleibt. Dafür verwende ich diese kleine Skizze:
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;
}
Ich habe auf dieser Seite gesehen , dass die Mindestspannung 3,0 V beträgt, also verwende ich das, um meine Werte zu erhalten:
float volt = (float)readVcc()/1000;
float percent = ((volt-3)/0.7)*100;
Wenn ich meine Werte anzeige, wird mir angezeigt, dass der verbleibende Prozentsatz -4 % beträgt. Muss ich mir Sorgen machen oder mache ich beim Rechnen etwas falsch?
Ich finde deine Rechnung ok.
Nachweisen:
Wenn Ihre ADC-Konvertierungsergebnisse 1024 (10-Bit-Vollausschlag) sind - wenn AVcc = Referenz
result = 1126400L / 1024 = 1100;
Wenn Ihre ADC-Konvertierungsergebnisse 512 (halbe Skala 10 Bit) sind - wenn AVcc = Referenz / 2
result = 1126400L / 512 = 2200;
Ihr prozentuales Ergebnis beträgt -4 %, da die Spannung unter 3 V liegt.
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
Tomatendiabolik
Kamil