float R1 = 100000.0;
float R2 = 16000.0;
long sum = 0;
for (int i = 0; i < 500; i++)
{
sum += adc1_get_voltage(ADC1_CHANNEL_0);
delayMicroseconds(500);
}
voltage = sum / (float)500;
voltage = (voltage * 3.3) / 4095.0;
voltage = voltage / (R2 / (R1 + R2));
Serial.println(voltage);
Nun gibt mir die Console 9.81V aus, messe ich nun die Batterie, ist diese mit 11.14V geladen.
Woran kann es denn liegen, das die Messung so ungenau ist?
Also wann hast du denn den Thread als gelöst (solved) markiert?
Aus der Tatsache, dass ich den "gelöst Hinweis" erst eben in der Liste stehen hatte schlussfolgere ich dass du das auch erst heute markiert hast.
Es stand weder etwas im Titel [gelöst] noch hattest du es früher markiert.
Wie soll man aus dem Ausbleiben jeglicher Antwort schlussfolgern können dass das Problem gelöst ist?
vgs
Hab den heute Morgen bereits als "gelöst" markiert, war im übrigen deine Antwort
Um es genauer zu beantworten, die SMD Widerstände auf meiner Platine haben 100K %1(Genau gemessen 100.48K und 16K gemessen: 16.02K)
Heute morgen, habe ich vom ADC Eingang eine Strippe zu einem STM32 Board gezogen und den gleichen Code verwendet. Die Messung war auf 0.11V genau.
Details:
Am ADC haben bei 12,7V genau 1,732V angelegen. Der ESP32 zeigte mit meinem Code 10,98V an, mein STM32 mit selbigem Code 12,61V...
Klar könnte man jetzt sagen, wenn ich den 16K Widerstand gegen einen 30K Widerstand tausche, liegen am ADC des ESP32 fast 3V an. Aber ich konnte bei meinen Tests heute nicht herausfinden, aber welcher "Untergrenze" der ESP32 nicht mehr vernünftig misst. Nun kennt Expressif das Problem und man sollte der Schaltung einen Lade-Kondensator von max. 100nF spendieren. Habe ich getan, ohne erfolg. Messung war um 0.4V besser, aber immer noch schlechter.