Beim Eddy-2-Power Windrad verfolgen wir einen Niedrigtechnologie Ansatz. D.h. wir bevorzugen einfache robuste Mechanik und Technologien mit Materialien, die nicht nur in Industrieländern beschaffbar sind und bestenfalls recycelt wurden. Damit wir vergleichbare Messwerte erfassen können, verlassen wir den low tech Weg beim Messen.

Auch hier halten wir es so einfach und praktikabel wie möglich. Alle wichtigen Schritte, Knackpunkte und Fallstricke die uns begegnen werden dokumentiert. Allerdings ist hier etwas mehr Vorwissen und andere Hardware notwendig.

Messbereiche

Windgeschwindigkeit

Geschwindigkeit des Windrads

Spannung der Batterien

Ladestrom

ACS714 am Arduino auslesen

Entladestrom

Zustände

Temperaturen

Luftdruck


Hardwaresetup

Aufbau

Aufbau Messschaltung

Entweder ein Arduino/Genuino (z.B. uno) oder:


Software

Vorbereitung

Vom Raspi aus kann der Arduino per USB geflasht werden. Entweder über die Arduino IDE oder über die Konsole mittels ino.

Arduinocode flashen

Kommunikation zwischen Arduino & Raspi

Raspi und Arduino sprechen direkt über USB miteinander. Der Arduino bezieht somit auch seinen Strom aus dem USB Port des Raspis. Alternativ können beide per USB mit Strom versorgt werden und z.B. über I2C oder SPI Daten austauschen.

Hier werden Raspi und Arduino per USB verbinden. Letzteres bezieht dabei seinen Strom über den Raspi.

Es ginge auch separat (jeweils getrennt per USB mit Strom versorgen) und dann mittels I2C kommunizieren:

Zukünftig könnten die Messwerte auch direkt vom Pi am Arduino ausgelesen werden. Dafür gibt es z.B. die pyduino API.

Arduino Ausgabe

Der Arduino läuft in einer Dauerschleife, in der er die aktuellen Werte der Sensoren aufnimmt und ohne weitere Berechnungen ausgibt. Diese Werte werden sekündlich als csv Zeile über den USB Port ausgegeben. Der Arduino gibt beim Start eine Zeile mit Bezeichnung der csv Werte aus. Damit ist es möglich die Ausgabe auf jedem beliebigem Rechner zu empfangen und auszuwerten. Auf dem angeschlossenen Pi läuft ein Script, das die Werte in eine SQlite Datenbank überträgt und die Umrechnungen der Messwerte vornimmt.

arduino_hello_world.jpg

Hardware

== Atmel328p auf Breadboard = Im alltäglichen Betrieb ist die Arduino Umgebung nicht notwendig, der geflashte Atmega Microcontroller reicht.

Strom messen mit dem ACS714

Der Arduino hat einen 10Bit AD Wandler d.h. er unterscheidet analoge Spannungen zwischen 0 und 5 Volt in 1024 Schritten (von 0 bis 1023). In diesem Bereich werden die -30A bis +30A die der ACS714 messen kann abgebildet. Das sind 0,0586A pro Schritt (60/2^10 = 0,05859375). Kleinere Differenzen im Stromfluss sind unabhängig von allen anderen Einflüssen auf die Messung nicht darstellbar.

Laut Datenblatt hat der Sensor eine Genauigkeit von 66mV/A bei +-30A. Wer mit kleineren Strömen zu tun hat kann mit der +-5A Auslegung des Sensores mit einer Genauigkeit von 182mV/A messen.

Die Analog Pins des Arduino bedanken für ein delay(1) mit genaueren Messwerten. Und es bietet sich an, über mehrere Messungen zu mitteln.

a = 0;
for(int i = 0; i < 100; i++) {
  delay(1);
  a = a + analogRead(A0);
}
ampere = a / 100;

== bessere AD Wandler = Wem das nicht fein genug auflöst, der/die nutzt nicht den internen 10 Bit A/D Wandler des Arduino sondern schaltet einen 12 bittigen davor (z.B. mcp3201 oder adc121c). Damit sind Amperemessungen in 0,0146A Schritten möglich (60/2^12 = 0,014648438).

Der A/D Wandler lässt sich auch direkt an den Raspberry Pi anschließen:

Hall Sensor für Wechselstrommessungen


Tipps & Tricks

Arduino via Raspi resetten

Wenn Pi und Arduino an der selben Stromversorgung hängen kann ein Kabel direkt von einem GPIO Pin am Pi zum Arduino Reset Pin geführt werden. Achtung, bei unterschiedlichen Stromquellen sollte eine kleine Diodenschaltung den dann möglichen Stromfluss unterbinden, damit die gute Hardware nicht verbrutzelt wird.

arduino_reset_via_pi-gpio.png

Hier wird GPIO Pin 4 des Pis genutzt, mit dem Reset Pin am Ardunio verbunden und durch dieses Script (auf dem Pi) kurz auf HIGH gesetzt:

echo 4 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio26/direction
echo "0" > /sys/class/gpio/gpio4/value;
sleep 1;
echo "1" > /sys/class/gpio/gpio4/value
exit 0


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.