Оказались не очень точные резисторы. Ну и опорное не ровно 1.1. Вообщем совместил, но точность до DT380 не дотягивает

. Ну и скачат данные. Как я понял нужно еще искать скользящее среднее. Может еще что-то посоветуете? Спасибо!
Код:
Код:
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 9990.0;
float R2 = 1015.0;
int value = 0;
//Не очень пока разбираюсь в "низкоуровневом" программировании под МК
//Но как я понял этот код изменяет попорное до 1.1 и меряет его.
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 = 1125300L / result; // Back-calculate AVcc in mV
return result;
}
void getBatteryStatus(){
value = analogRead(analogInput);
vout = (value * (readVcc()/1000.0)) / 1023.0;
vin = vout / (R2/(R1+R2));
Serial.println(vin);
delay(500);
}
Вывод(DT830B показывает 12.30):
Код:
12.57
12.65
12.45
12.57
12.57
12.68
12.53
12.51
12.54
12.68
12.56
12.60
12.57
12.68
12.53
12.48
12.57
12.68
12.53
12.57
12.57
12.68
12.59
12.57
12.57
12.65
12.57
12.57
12.57
12.57
12.57
12.54
Не знаю плохо это или хорошо?