Batteriespannungssensor,automatische Kalibrierung?

nero76

Moderator
Hallo,

der Batteriespannungs-Sensor besteht ja derzeit aus einem Spannungsteiler:


Code:
BAT+ o
     | 
     R1
     |
     o----o Arduino ADC Input (0..5V)
     |
     R2
     |
    GND




Code:
Ubat = Uadc * Const1   mit Const1 = (R1+R2)/R2 

[Ubat: errechnete Batteriespannung, Uadc: gemessene ADC-Spannung]


Aufgrund von Bauteiltoleranzen (R1, R2, ADC etc.) muss man die ermittelte Spannung kalibrieren (d.h. Const1 per pfodApp/Config-Datei so einstellen dass Ubat stimmt). Könnte man das nicht automatisieren? Also z.B. denselben Spannungsteiler (mit denselben Bauteilen) nochmal bauen und diesen mit einer Referenzspannung (+5V) betreiben, um so Const1 zu ermitteln? Const1 sollte ja für verschiedene Spannungen gleich sein...


Code:
Const1 = Uref / Uadc  =  5V / Uadc

[Uadc: gemessene ADC-Spannung]


Was meint ihr? Oder besser den Spannungsteiler Eingang (Uref, Ubat) schaltbar (per Relais?) gestalten, um mit denselben Spannungsteiler jeweils URef/Ubat messen zu können?
 
Da mit der Idee Uref und Ubat ist eine gute Idee, da man ja beide Spannung auf dem gleichen Potenial erfasst.
Aber ich glaube das doch eine Referenzspannungquelle erforderlich sein wird.
Diese könnte man sehr günstig auf einem LT1009S8#PBF oder LT1461DHS8-5#PBF, welcher eine 2,5V / 5V Uref liefert und diese dann am MEGA an AREF einspeisen.
Damit wären unsere Messungen endlich mal stabil....
http://www.conrad.de/ce/de/product/...z-Ausgangsspannung-25-V?queryFromSuggest=true
http://www.conrad.de/ce/de/product/679793/Linear-IC-Linear-Technology-LT1461DHS8-5PBF-Gehaeuseart-SO-8-Ausfuehrung-Spannungsreferenz-Ausgangsspannung-5-V?queryFromSuggest=true
 
Das der Programmiert werden muss hatte ich nicht gesehen.

Dann könnte man das Verwenden:

Spannungsteiler

Oder einfach Präzisionswiederstände. Dürfte die Preiswerteste Variante sein.

Um Unterspannung festzustellen würde auch eine Z-Diode reichen

Gruss Stefan
 
Hi,

bezüglich Referenzspannung bin ich mir nicht sicher ob das im ADC Manager implementiert ist:


Code:
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;
}


Das gibt die tatsächliche AVcc im Vergleich zur integrierten 1,1V Ref Spannung zurück, damit würde sich schon mal eine Referenzspannungquelle erübrigen.

Das angesprochene Problem mit der Bestimmung von Const1 ergibt sich ja aber auch noch zusätzlich für die Ladespannung, bei der noch der Spannungsabfall über die Schutzdiode zu berücksichtigen ist.

Das wurde unter anderem bereits hier https://code.google.com/p/ardumower/issues/detail?id=34 diskutiert.

Gruß,
Michael
 
Oben