So jetzt tut es wohl
Code:
WORD Result = 0;
double Volt = 0;
CLEARBIT(ADCSRA,ADEN); // aus schlaten damit ich den port wechseln kann
// Messen an port 6
CLEARBIT(ADMUX,MUX4);
CLEARBIT(ADMUX,MUX3);
SETBIT(ADMUX,MUX2);
SETBIT(ADMUX,MUX1);
CLEARBIT(ADMUX,MUX0);
SETBIT(ADCSRA,ADEN);
// Bit invertieren messung starten
ADCSRA |=_BV(ADSC);
waitforad = 1;
// warten bis messung abgesclossen ist und wert gültig
while(waitforad != 0)
{
//warten auf den adwandler;
};
// den wert aus dem register holen
Result = ADCH*256 + ADCL;
Volt = (((Result * 5)/ 1.024)*((float)22000+5100))/5100;
// Berechnung Volt gemessen bei Ref von 5V
// * 1000 für die komma stellen
// Mit Spannungsteiler 22k 5,1 k
// Das If grab an passen wenn mal die Akkus wirklich daran hängen
if(Volt > 11)
{
if(Volt >=12)
{
if(Volt >= 13)
{
SendMCData(2,100); // frisch geladen
}
else
{
SendMCData(2,50); // Bat OK aber bald
}
}
else
{
SendMCData(2,20); //fast leer
}
}
else
{
SendMCData(2,0); // Batt ist leer
}
nicht ganz genaue aber ich denk besser wird es nicht die ganz zahl stimm jetzt wenigstens.
es kommen 11,08 raus und mit dem muti meter messe ich 11,66
Gruß
Lesezeichen