Zinc-Air Cell Meter (ZACmeter): Unterschied zwischen den Versionen

Aus Open Source Ecology - Germany
Zur Navigation springen Zur Suche springen
Zeile 39: Zeile 39:
 
Zacmeter5.jpg|Das Mess-Interface von unten. Die Verdrahtung wurde einfach mit etwas Lötzinn realisiert.
 
Zacmeter5.jpg|Das Mess-Interface von unten. Die Verdrahtung wurde einfach mit etwas Lötzinn realisiert.
 
</gallery>
 
</gallery>
 +
 +
 +
=== Software ===
 +
 +
Im Falle des AVR-NetIO wird als Erweiterung der Arduino-IDE 1.0.1 die Anpaasungssoftware "AVR-Netino" benötigt (einfach in die entsprechenden Verzeichnisse der Arduino-IDE kopieren und dann kann man  das NetIO als Arduino benutzen). Erhältlich unter:[http://code.google.com/p/avr-netino/]
 +
 +
Die Software arbeitet wie folgt:
 +
 +
Zunächst wird in einer Dauerschleife einfach nur die Batteriespannung gemessen und auf dem LCD angezeigt.
 +
 +
<gallery widths="480" heights="400" perrow="2" caption="Messung der Leerlaufspannung">
 +
Zacmeter3.png|Zunächst wird nur die Leerlaufspannung angezeigt.
 +
</gallery>
 +
 +
Auf einen Tastendruck hin wird über einen digitalen Ausgang vom Arduino der Mosfet durchgeschaltet und somit der Entladungsvorgang über den Lastwiderstand gestartet.
 +
 +
Über die beiden Analogeingänge wird nun die Klemmspannung über dem Lastwiderstand (abzüglich der minimalen Spannung über dem Mosfet-Widerstand zwischen Drain und Source) gemessen und daraus die Stromstärke (in mA) bestimmt. Der Messvorgang wird in einem Intervall von zwei Sekunden wiederholt und die jeweils ermittelte Strommenge für diesen Zeitraum aufaddiert zur Gesamt-Kapazität in mAh oder Gesamt-Leistunng in mWh.
 +
 +
Dieses erfolgt solange bis entweder die zu testende Spannungsquelle komplett entladen ist (Tiefentladung) oder aber, im Falle das man den Akku gerne noch weiter verwenden möchte, solange bis eine vorgegbene Entlade-Endspannung erreicht ist (bei einem NimH Akku beträgt diese beispielsweise 0.95V).  Danach wird der Mosfet wieder geöffnet und damit die Entladung unterbrochen und es wird wieder wie zu Beginn die Leerlaufspannung gemssen bzw. angezeigt.
 +
 +
<gallery widths="480" heights="400" perrow="2" caption="Messung der Leerlaufspannung">
 +
Zacmeter4.png|Der Entladevorgang, mit Anzeige der Spannung, des fliessenden Stroms, der bislang aufaddierten Kapazität sowie der bisherigen Zeit bzw. Entladungsdauer.
 +
</gallery>
 +
 +
Die jeweiligen Messwerte werden zum einen auf dem LCD angezeigt, zum anderen aber auch auf einem im Programm enthaltenen (und quasi parallel mitlaufenden) "Minimal-Webserver" angezeigt.
 +
 +
D.h., sobald über das Ethernet-Interface und somit über das angeschlossene LAN eine Anfrage per Webbrowser erfolgt, wird eine dynamisch generierte Webseite mit den Messwerten ausgegeben.  Somit lassen sich die Messwerte recht einfach über das Lan z.B. von einem Desktop-PC aus mitloggen.  Im vorliegenden Fall wird dazu ein per Crontab minütlich aufgerufenes Script getriggert, welches per wget die Messwerte vom Arduino abholt und in einer lokalen Datenbank (hier kommt eine Ring-Datenbank namens "rrdtool" zum Einsatz) ablegt. Alle 2 Minuten wird daraus dann die Kurvengrafik erstellt, welche in einer lokalen Webseite eigebunden ist, die sich mittels <meta http-equiv='refresh' content='4' alle 4 Minuten wieder selbst aufruft und refresht, man kann also sehr schön und bequem den Verlauf der Messung und die Aufzeichnung der Messkurve vom lokalen Desktop-Rechner im Webbrowser beobachten.
 +
 +
<gallery widths="480" heights="400" perrow="2" caption="Messung einer Batterie">
 +
Topcraft_ultra_1R5.png|Zum testen des ZACmeters wurde hier die Entladungskurve einer Batterie aufgezeichnet.
 +
</gallery>
 +
 +
 +
 +
Natürlich geht es auch einfacher, indem man an den Arduino eine SD-Karte anklemmt und die Messwerte dort fortlaufend in einer Datei einträgt, aus welcher wiederum später manuell die Kurvengrafik erzeugt werden kann.  Aber eine Live-Messung via Lan ist natürlich etwas komfortabler.

Version vom 8. April 2013, 21:30 Uhr

Das ZACmeter - Messung der Kapazität und Entlade-Charakteristik

Ergänzend zum Testsystem wird auch ein Mess-System benötigt, mit welchem sich die Kapazität genau bestimmen lässt und z.B. Entladungskurven aufzeichnen lassen.


Hardware

Mainboard

Das ZACmeter wurde zunächst getestet auf einem als Arduino konfigurierten AVR-NetIO-Board, sowie einem originalen Arduino-Mega, aber jeder andere Arduino dürfte genausogut funktionieren.

Das AVR-NetIO Board bietet allerdings zwei Vorteile:

1. es kostet nur 20,- EUR (als Bausatz, bei Pollin, ist dort aber auch für 27,- EUR fertig gelötet erhältlich)

2. es beinhaltet bereits ein Ethernet-Interface zur Datenübertragung, bei einem Originalen Arduino benötigt man noch ein Ethernet-Shield (für rund 20,- EUR) oder muss halt die Daten sonstwie übertragen, zb. per serieller Schnittstelle.


Mess-Interface

Das Messinterface besteht aus einem kleinen Stück Lochrasterplatine, zwei Anreihklemmen, einem Lastwiderstand (z.B. 1.5 Ohm), sowie einem Mosfet. Hier wurde ein BUZ11 verwendet, empfehlenswerter wäre allerdings ein logic level type mit niedrigerer Ugs, wie zB. der IRFZ44N.

Aufgrund der Anreihklemmen ist der Lastwiderstand variabel austauschbar gegen andere Größen und auch verschiedene Spannungsquellen können flexibel angeklemmt werden.



Software

Im Falle des AVR-NetIO wird als Erweiterung der Arduino-IDE 1.0.1 die Anpaasungssoftware "AVR-Netino" benötigt (einfach in die entsprechenden Verzeichnisse der Arduino-IDE kopieren und dann kann man das NetIO als Arduino benutzen). Erhältlich unter:[1]

Die Software arbeitet wie folgt:

Zunächst wird in einer Dauerschleife einfach nur die Batteriespannung gemessen und auf dem LCD angezeigt.

Auf einen Tastendruck hin wird über einen digitalen Ausgang vom Arduino der Mosfet durchgeschaltet und somit der Entladungsvorgang über den Lastwiderstand gestartet.

Über die beiden Analogeingänge wird nun die Klemmspannung über dem Lastwiderstand (abzüglich der minimalen Spannung über dem Mosfet-Widerstand zwischen Drain und Source) gemessen und daraus die Stromstärke (in mA) bestimmt. Der Messvorgang wird in einem Intervall von zwei Sekunden wiederholt und die jeweils ermittelte Strommenge für diesen Zeitraum aufaddiert zur Gesamt-Kapazität in mAh oder Gesamt-Leistunng in mWh.

Dieses erfolgt solange bis entweder die zu testende Spannungsquelle komplett entladen ist (Tiefentladung) oder aber, im Falle das man den Akku gerne noch weiter verwenden möchte, solange bis eine vorgegbene Entlade-Endspannung erreicht ist (bei einem NimH Akku beträgt diese beispielsweise 0.95V). Danach wird der Mosfet wieder geöffnet und damit die Entladung unterbrochen und es wird wieder wie zu Beginn die Leerlaufspannung gemssen bzw. angezeigt.

Die jeweiligen Messwerte werden zum einen auf dem LCD angezeigt, zum anderen aber auch auf einem im Programm enthaltenen (und quasi parallel mitlaufenden) "Minimal-Webserver" angezeigt.

D.h., sobald über das Ethernet-Interface und somit über das angeschlossene LAN eine Anfrage per Webbrowser erfolgt, wird eine dynamisch generierte Webseite mit den Messwerten ausgegeben. Somit lassen sich die Messwerte recht einfach über das Lan z.B. von einem Desktop-PC aus mitloggen. Im vorliegenden Fall wird dazu ein per Crontab minütlich aufgerufenes Script getriggert, welches per wget die Messwerte vom Arduino abholt und in einer lokalen Datenbank (hier kommt eine Ring-Datenbank namens "rrdtool" zum Einsatz) ablegt. Alle 2 Minuten wird daraus dann die Kurvengrafik erstellt, welche in einer lokalen Webseite eigebunden ist, die sich mittels <meta http-equiv='refresh' content='4' alle 4 Minuten wieder selbst aufruft und refresht, man kann also sehr schön und bequem den Verlauf der Messung und die Aufzeichnung der Messkurve vom lokalen Desktop-Rechner im Webbrowser beobachten.


Natürlich geht es auch einfacher, indem man an den Arduino eine SD-Karte anklemmt und die Messwerte dort fortlaufend in einer Datei einträgt, aus welcher wiederum später manuell die Kurvengrafik erzeugt werden kann. Aber eine Live-Messung via Lan ist natürlich etwas komfortabler.