Die Nennspannung auslesen

Gleich zu Beginn möchte ich darauf hinweisen, dass wir mit der Messung der Nennspannung keine genauen Angaben über die Energiemenge eines Akkus machen können. Damit ist die Berechnung der Restenergie im Akku gemeint, mit der man Annahmen treffen kann, wie lange ein batteriebetriebenes Gerät funktionstüchtig bleibt.

Es ist nicht möglich, ein Multimeter an ein Akku dran zu klemmen und den Wert abzulesen. Die Nennspannung wird sich nämlich anders verhalten, sobald der Akku unter starker Last kommt. Ein Antriebsmotor eines Roboters, der vor und zurückfährt, lässt die Nennspannung teilweise massiv schwanken.

Die Berechnung der Restkapazität ist ein komplexes Thema. Noch komplexer ist es, mit der Restkapazität Aussagen über die verbleibende Betriebsdauer zu treffen. Selbst in der Automobil-Branche ist das für die Ingenieure eine sehr große Herausforderung, die Restreichweite von Elektroautos auszurechnen.

Restkapazität = Wie viel Energiemenge steht noch zur Verführung?
Verbleibende Betriebsdauer = Wie lange funktioniert das Gerät noch mit der Restkapazität?

  

Eine genau funktionierende verbleibende Betriebsdaueranzeige zu verwirklichen braucht weitere Elektronik-Module wie zum Beispiel ein Thermometer, eine Real time clock und ausgeklügelte mathematische Algorithmen, die den Rahmen dieses Buches sprengen würden.

In diesem Projekt geht es mehr um die momentane Spannung. Mit diesem Wert kann man sehr grob Aussagen über die Restkapazität machen. Mehr als eine Tendenz ist nicht drin. Wir erfüllen jedoch bei der Messung der Nennspannung eine wichtige Sache: Auch wenn wir keine Kapazitätsmessung durchführen, verwirklichen wir zumindest ein Tiefendladungsschutz der Akkus. In diesem Buch geht es auch gar nicht um eine perfekte technische Umsetzung, sondern um das Lernen. Wir erarbeiten hier keine industriellen Lösungen, sondern lernen grundlegende Konzepte.

Kommen wir nun zu der praktischen Anwendung. ###auslesen einer Zelle?  Im Folgenden werden wir mit einem analogen Input-Pin die Spannung des 4er-Akkupacks auslesen. Wie bereits erwähnt, können wir über die Spannung grob Rückschlüsse auf die aktuelle Akkuladung ziehen. In den 4er-Akkupack passen insgesamt 4x AA Mignon Akkus rein, d.h. er liefert bei vollgeladenen Zellen mindestens 4,8Volt (4x 1,2V) und mehr. Ein voll aufgeladener gesunder NiMH-Akku hat ca. 1,35Volt. Anfangs kann der Akku-Pack also eine höhere Nennspannung als 5V haben (1,35V x 4 = 5,4V) . Das kann zu Problemen führen, wenn wir uns daran erinnern, dass ein Arduino-Pin maximal 5V vertragen kann.

 

###Richtig angeschlossen.

Wird eine höhere Spannung als 5Volt angelegt, kann der Pin oder der Microcontrollerchip zerstört werden. Aus diesem Grund verwenden wir einen Spannungsteiler. Dieser ermöglicht sogar gefahrlos das Einlesen von Spannungen bis zu 25V. Das Prinzip eines Spannungsteilers haben wir bereits im Kapitel Potentiometer kennengelernt. Spannungsteiler sind eine der grundlegendsten Schaltungen in der Elektronik. Es ist eine einfache Schaltung, die eine größere Spannung in eine kleinere Spannung zerteilt. Mit nur zwei Reihenwiderständen können wir eine Ausgangsspannung erzeugen, die unterhalb der gefährlichen 5V liegt.

Die untere Abbildung zeigt die Schematik des Spannungsmesser-Moduls. Er besteht aus zwei Reihenwiderständen mit R1 = 30,1kOhm und R2 = 7,6kOhm. Es ist äußerst wichtig, auf die richtige Polung zu achten! Gib genau acht, dass du die Kabel richtig anschließt. Der Positive-Pol der Batterie wird auf die Seite des höheren R1 angeschlossen. Die Wahl dieser beiden Widerstände bestimmt die Berechnung der Nennspannung. Ein wichtiger Faktor ist natürlich, dass sie die Spannung und den Strom teilen. Ein weiterer Faktor ist das Verhältnis der beiden. Die Formel für das Verhältnis des Spannungsteilers lautet: Widerstandsverhältnis = (R2 / (R1 + R2))

Mit den Informationen für R1=30,1kOhm und R2=/7,6kOhm ergibt die folgende Rechnung für das Widerstandsverhältnis: Widerstandsrechnung = 30,1 / (30,1 + 7,6) = ca. 0,2

Das Verhältnis beträgt ca. 1:5 (0,2). Dieses Verhältnis wird dann in Bezug zur 5V-Referenzspannung des Arduino gesetzt. Genauer gesagt bezieht es sich mehr auf den Wert 1024, da 5V beim analogen Input dem Wert 1024 entspricht, schließlich berechnet das Arduino keine Spannungen, sondern den ADC-Wert. Werden die 5V in 1024 Schritte geteilt, gibt das eine Auflösung von 0,0049mV (5V / 1024) oder umgerechnet 4,89mV (Millivolt).

Wird die Referenzspannung mit dem Widerstandsverhältnis multipliziert, setzen wir beide in Beziehung und erhalten den Widerstandsfaktor. Diesen brauchen wir für die Berechnung der Voltzahl:

Widerstandsfaktor = 1023 * (R2 / (R1 + R2)) = 1024 * (30,1 / (30,1 + 7,6) = ca. 5115

Die Voltzahl errechnet sich in dem wir den aktuellen Analog-Input-Wert durch den Widerstandsfaktor dividieren und zum Schluss mit der Referenzspannung multiplizieren.

Voltzahl = (Pin-Wert / Widerstandswert) * 5V Referenzspannung

Der Sketch

const float referenceVolts = 5; //Standard-Referenzspannung eines 5-V-Boards 

const float R1 = 30.1;
const float R2 = 7.58;


const float resistorFactor = 1023 * (R2/(R1 + R2));
const int batteryPin = A2;

void setup() {Serial.begin(9600); }


void loop() 
{
  int val = analogRead(batteryPin); 
  float volts = (val / resistorFactor) * referenceVolts ; 
  
  Serial.println(volts,7); //Wert in Volt ausgeben
  delay(500);
}

Die Referenzspannung (referenceVolts) ist die maximale Spannung, die uns das Arduino liefern kann. R1 und R2 enthalten die Widerstandswerte, die auf dem Spannungsteiler-Board verbaut sind. Alle vier float-Variablen sind bereits fest und unveränderlich. Aus diesem Grund benutzen wir die constante.

const float R1 = 30.1;
const float R2 = 7.58;

const float resistorFactor = 1023 * (R2/(R1 + R2));
const float R2 = 7.58;


Den Widerstandfaktor halten wir in der Variablen resistorFactor fest.
const float resistorFactor = 1023*(R2/(R1 +R2));

Der aktuelle Wert der Batterie wird in val eingelesen und in die Spannungsberechnungsformel eingesetzt. Dieser dividiert den aktuellen Wert mit dem Widerstandswert und setzt dadurch das Eingelesene mit den Widerstandswerten in Beziehung. Dann erfolgt die Skalierung mit der Referenzspannung 5V. Das Ergebnis ist ein relativ genaues Auslesen der Batterienennspannung in Fließkomma.

intval =analogRead(batteryPin);float volts =(val /resistorFactor)*referenceVolts;

Wenn die NiMH-Batterie neu und vollgeladen ist, sollte sie im seriellen Monitor einen Wert über 1,3V anzeigen. Von Vorteil ist es, wenn du ein Multimeter hast. Dann kannst du genau überprüfen, ob die ausgegebene Spannung mit der tatsächlichen übereinstimmt.

Serial.println(volts,7);//Wert in Volt ausgeben