Aus Raspberry Pi Geek 08/2021

Salzwasser-Akku selbst gebaut (Seite 2)

Das Programm zu unserem Versuchsaufbau schreiben wir in Java. Um die GPIO zu steuern und die Messwerte auszulesen, verwenden wir die Tools i2c-detect und gpio, die das Java-Programm als Subprozesse startet (Listing 4).

Listing 4

Programm zum Steuern und Messen

import java.util.Scanner;
public class SaltBattery {
  public void setup() throws Exception {
    new ProcessBuilder( "/usr/bin/gpio","mode","1","out" ).start();
    new ProcessBuilder( "/usr/bin/gpio","mode","4","out" ).start();
    loadOff();
    unLoadOff();
  }
  public int switchBytes(int input){
    input =((input & 0x00ff) << 0x08)|((input >> 0x08)&0x0ff);
    int sign=1;
    if (0<(input&0x8000)){
      sign=-1;
      input=((~input)&0xffff)+1;
    }
  return sign*input;
  }
  public void loadOn() throws Exception {
    new ProcessBuilder( "/usr/bin/gpio","write","1","0" ).start();
  }
  public void loadOff() throws Exception {
    new ProcessBuilder( "/usr/bin/gpio","write","1","1" ).start();
  }
  public void unLoadOn() throws Exception {
    new ProcessBuilder( "/usr/bin/gpio","write","4","0" ).start();
  }
  public void unLoadOff() throws Exception {
    new ProcessBuilder( "/usr/bin/gpio","write","4","1" ).start();
  }
  public double measureCurrent() throws Exception {
    Process p = new ProcessBuilder("i2cget","-y","1","0x40","0x03","w").start();
    Scanner s = new Scanner(p.getInputStream());
    return switchBytes(Integer.decode(s.next()))/20;
  }
  public double measureVoltage() throws Exception {
    Process p = new ProcessBuilder("i2cget","-y","1","0x40","0x04","w").start();
    Scanner s = new Scanner(p.getInputStream());
    return switchBytes(Integer.decode(s.next()))/1000;
  }
  public void go() {
    double sumCurrentUnload=0;
    double sumCurrentLoad=0;
    double current=0;
    int mesurementSteps=600;// Sec
    try {
      setup();
      System.out.println("Start Battery load");
      loadOn();
      for (int i=1; i<mesurementSteps ; i++) {
        current = measureCurrent();
        sumCurrentLoad +=current;
        Thread.sleep(1000);
      }
      loadOff();
      System.out.println("Start Battery unload");
      Thread.sleep(2000);
      unLoadOn();
      for (int i=1; i<mesurementSteps ; i++) {
        current = measureCurrent();
        sumCurrentUnload += current;
        System.out.println("Voltage:"+measureVoltage());
        if(current==0.0) break;
        Thread.sleep(1000);
      }
      unLoadOff();
    } catch (Exception e) {
        System.out.println(e);
      }
    System.out.println("Load:"+sumCurrentLoad+" mAs");
    System.out.println("UnLoad:"+sumCurrentUnload+" mAs");
  }// go
  public static void main(String[] args) {
    SaltBattery b=new SaltBattery();
    b.go();
  }// main
}// class

Hierbei spielt die Methode switchBytes() eine besondere Rolle. Sie vertauscht das High- und Low-Byte und interpretiert das Most Significant Bit als Vorzeichen. Ist die Zahl negativ, bildet das Programm das Zweierkomplement und setzt das Vorzeichen. Diese Klimmzüge benötigen wir, weil das INA2331-Modul die Messwerte in einem maschinennahen Format liefert, das Java nicht kennt.

Das eigentliche Messprogramm befindet sich in der Methode go(). Die erste For-Schleife misst beim Laden der Batterie einmal pro Sekunde den Strom. So erhalten wir die in die Batterie geladene Energiemenge. Die zweite For-Schleife entlädt die Batterie über einen Lastwiderstand. Beim Entladen gibt das Programm bei jeder Messung die aktuelle Spannung der Batterie mit aus. Auch hierbei ermittelt es die entnommene Energiemenge.

Am Ende des Zyklus gibt das Skript die Messwerte aus. Um ein wenig über die Eigenschaften der Batterie herauszufinden, entladen wie sie über unterschiedliche Lastwiderstände. Die Tabelle “Ergebnisse” fasst die Resultate zusammen.

Lastwiderstand

Geladene Energie

Entladene Energie

10 Ohm

13207 mAs

-395 mAs

30 Ohm

13798 mAs

-440 mAs

100 Ohm

14358 mAs

-462 mAs

100 Ohm

14370 mAs

-483 mAs

100 Ohm

14374 mAs

-507 mAs

Dabei fällt ins Auge, dass unsere aus Haushaltsgegenständen gebaute Batterie keinen besonders guten Wirkungsgrad aufweist. Ein Großteil der Ladeenergie geht verloren, aber es zeigt sich auch eindeutig, dass der Akku auch Energie speichert. Zudem sieht es so aus, als ob die Kapazität mit der Anzahl der Ladezyklen steigt. Daneben fällt auf, dass die Batterie bei geringerer Entladung etwas mehr Leistung abgeben kann.

Unsere kleine Testreihe zeigt auf jeden Fall, dass eine Salzwasserbatterie prinzipiell funktioniert. Im nächsten Abschnitt schauen wir uns deshalb eine im Handel erhältliche Salzwasserbatterie an.

Im Handel

Es gibt Hersteller, die sich auf die Produktion dieser umweltfreundlichen Energiespeichersysteme spezialisieren. So hält Bluesky Energy [7] mit dem Greenrock-System ein Produkt sowohl für die private als auch für die industrielle Nutzung im Portfolio vor.

Die Speichersysteme sind nur für den stationären Einsatz vorhergesehen und eignen sich hervorragend, um die von Solaranlagen erzeugte Energie für den Eigenverbrauch zu speichern. Wie Abbildung 4 zeigt, kann es eine Salzwasserbatterie durchaus mit den anderen am Markt befindlichen Stromspeichersystemen aufnehmen. Es gibt nur zwei Kategorien, in denen sie schlechter abschneidet als ein Lithium-Ionen-Akku: bei der Energiedichte und der C-Rate.

Abbildung 4: Beim Vergleich von Stromspeichersystemen schneiden Salzwasserbatterien recht gut ab.

Abbildung 4: Beim Vergleich von Stromspeichersystemen schneiden Salzwasserbatterien recht gut ab.

Die Energiedichte fällt zwar schlechter aus als die von Lithium-Ionen-Akkus, aber immer noch so gut wie die eines Bleiakkus. Durch die geringere Energiedichte fallen die Speicher bei gleicher Kapazität größer und schwerer aus als Lithium-Ionen-Akkus, was allerdings beim Einsatz in Gebäuden kein wirkliches Problem darstellt.

Die C-Rate gibt an, wie schnell sich die Energie wieder entnehmen lässt. In diesem Punkt entpuppt sich die Salzwasserbatterie eher als Marathonläufer: Sie liefert über einen langen Zeitraum eine konstante Menge an Energie, eignet sich aber nicht dafür, kurzzeitig hohe Ströme abzugeben. Auch das entspricht aber wieder dem Einsatzszenario in Gebäuden.

Kommen wir nun zu den Vorteilen von Salzwasserbatterien im Vergleich zu Lithium-Ionen-Akkus. Hier gibt es gleich mehrere Pluspunkte. Neben der Umweltfreundlichkeit und der geringen Brandgefahr spielt hier die Verfügbarkeit der Ressourcen eine große Rolle.

Durch die Diskussion über die E-Autos wissen wir alle, dass der Abbau von Lithium erhebliche Umweltschäden verursacht. Es zu recyceln ist sicher eine gute Idee, benötigt jedoch eine Menge Energie und verursacht einen hohen Aufwand. Salzwasserbatterien schneiden in diesem Punkt um Längen besser ab; sie verursachen kaum Umweltschäden und lassen sich leicht recyceln. Die Komponenten der Salzwasserbatterie gibt es auf der Erde in großen Mengen, Lithium nicht.

Ein wirklich gravierender Punkt, der gegen den Einsatz von Lithium-Ionen-Akkus in Gebäuden spricht, ist ihre Brennbarkeit. Ein Youtube-Video [8] zeigt, was für ein Feuerwerk brennende Akkus dieser Bauart zuweilen verursachen. Eine Salzwasserbatterie dagegen zeigt sich auch nach längerem “Grillen” reichlich unbeeindruckt [9].

Fazit

Unser einfacher Versuchsaufbau demonstriert, dass sich mit einfachsten Haushaltsgegenständen ein Energiespeicher aufbauen lässt. Der RasPi half uns dabei, die Lade- und Entladezyklen immer gleich zu gestalten und dabei die Ladung zu messen. Zar handelt es sich in unserem Szenario lediglich um einen nicht produktiv nutzbaren Versuchsaufbau, der aber funktioniert und lässt sich für weitere Experimente abwandeln. Eine interessante Frage wäre zum Beispiel, wie stark die Selbstentladung des Aufbaus ausfällt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben