# Strommessung mit Hall-Effekt-Sensor & Leistungsberechnung
## Einleitung
In den vorherigen Projekten ([Projekt 1](project1.md), [Projekt 2](project2.md), [Projekt 3](project3.md) & [Projekt 4](project4.md)) nutzten wir bereits einen Raspberry Pi Zero 2W, um verschiedene neue Technologien kennen zu lernen.
Dieses Projekt soll die bereits erstellten Funktionalitäten durch eine Strommessung und Leistungsberechnung erweitert werden. Hierbei verwenden wir den Raspberry Pi in Kombination mit einem Hall-Effekt Sensor und einem ADS1115-Analog-Digital-Wandler (ADC).
Die gemessenen Daten sollen anschließend wie Messdaten aus der Spannungsmessung in einer Datenbank abgelegt und anschließend mit Grafana abgebildet werden können.
## Grundlagen
### Hall-Effekt-Strommesser
Hall-Effekt-Stromsensoren messen den elektrischen Strom, indem das von einem stromdurchflossenen Leiter erzeugte Magnetfeld erfasst wird. Dabei entsteht durch Lorentzkräfte eine Spannung auf einer Leiterplatte. Elektronen werden durch das Magnetfeld an ein Ende der Leiterplatte gedrückt, wodurch eine Potentialdifferenz entsteht, die dann gemessen werden kann. Diese ist proportional zur Magnetfeldstärke und somit auch zum Strom. Diese Spannung wird anschließend aufbereitet und als analoges Signal ausgegeben. Dieses Prinzip ermöglicht eine Messung von sowohl Gleich- als auch Wechselstrom.
Für dieses Projekt haben wir einen HSTS023R Split Core Hall Effekt Sensor verwendet. Der Sensor besitzt einen offenen Kern, dieser ermöglicht die Montage im laufenden Betrieb, dies kann Zeit und Kosten sparen. Die leichte Handhabung und die robuste Bauweise machen sie zur ersten Wahl für viele Anwendungen im Bereich Energieüberwachung und industrielle Messtechnik. Dieser Senor ermöglicht eine galvanische Trennung der Messung von Gleichstrom, Wechselstrom und Pulsströmen, besitzt eine hohe Isolationsfestigkeit eine geringe Störempfindlichkeit durch einen ferromagnetischen Kern, und eine Bandbreite bis zu 25kHz. Dieser Split-Core-Stromsensor bietet somit eine flexible, sichere und sehr einfach zu installierende Lösung für die Strommessung bis 50A.
Der Sensor verfügt über vier Pins:
- Vcc: Versorgungsspannung (5V)
- 0V: Masse / GND
- Vout: Ausgangsspannung (2,5V ± 0,625V)
- Vref: Referenzspannung (2,5V)
[[Sensor HSTS023R](#HSTS023R-sensor)] [[Hall-Effekt](#hall-effect)]
### Signalverarbeitung und Berechnung des Stroms
Der Sensor liefert ein analoges Spannungssignal, das propotional zum Strom ist die Umrechung erfolgt nach folgender Formel:
```{math}
I = \frac{50 * (V_{\text{out}} - V_{\text{ref}})}{0.625}
```
- I: Gemessener Strom(A)
- Vout: Sensorspannung (V)
- Vref. Referenzspannung, meist 2,5V (Nullpunkt)
### Pin Vout
Vout ist die Spannung, die über die der Sensor den gemessenen Strom ausgibt. Die Spannung bewegt sich dabei im Bereich ± 0,625V um die Referenzspannung. Die maximale Spannung liegt dementsprechend bei 3,125V, die minimale Spannung hingegen bei 1,875V. Geht man von einer Messgenauigkeit der Spannung von 1mV aus, so ergibt sich eine Messgenauigkeit des Stroms von
```{math}
\frac{50A}{625} = 0,08A
```
### Pin Vref
Vref ist die Referenzspannung des Sensors. Diese Spannung legt den Nullpunkt der Messung fest.\
Vref kann also theoretisch ignoriert und der Strom mit den vorgegebenen 2,50V berechnet werden. Für eine genauere Messung haben wir uns jedoch dazu entschieden, Vref zu messen und in die Berechnung einzubeziehen. So wird die Messung nicht durch Schwankungen der Versorgungsspannung beeinflusst.
Der Sensor kann Ströme in beiden Richtungen messen. Die Spannung an Vout steigt entsprechend bei positiven Strömen und fällt bei negativen Strömen.
### Berechnung der elektrischen Leisung
Die Leistung wird über die Gleichung
```{math}
P = U * I
```
berechnet, wobei U die gemessene Spannung und I der berechnete Strom ist.
## Durchführung
### Hardware
Unser bisheriger Aufbau, bestehend aus einem Raspberry Pi Zero 2W und einem ADS1115-ADC wurde um den HSTS023R Hall-Effekt-Stromsensor erweitert. Der Schaltplan wurde entsprechend erweitert, wie auf folgender Abbildung zu sehen ist:
```{image} images/ADS_with_hall_sensor.png
:alt: Schaltplan um HSTS023R ergänzt
:width: 500px
```
Der entsprechende Hardwareaufbau sieht in der Realität wie folgt aus:
```{image} images/hardware_5.jpg
:alt: Hardware Aufbau
:width: 500px
```
Außerdem wurde ein Verbraucher angeschlossen, um den Strom messen zu können.
### Software
#### Anpassung Datenbank
Der erste Schritt war die Anpassung der TimescaleDB. Die Tabelle wurde um eine Spalte `current` erweitert, die den gemessenen Strom in Ampere speichert. Die Tabelle sieht nun wie folgt aus:
```sql
CREATE TABLE IF NOT EXISTS
measurements_5
(
id SERIAL,
timestamp TIMESTAMPTZ NOT NULL,
voltage FLOAT NOT NULL DEFAULT 0,
current FLOAT NOT NULL DEFAULT 0,
PRIMARY KEY (id, timestamp)
);
```
#### Anpassung Skript
Um die Übersichtlichkeit der Skriptausgaben zu erhöhen, wurden alle Ausgaben um ein `\r` (Carriage Return) ergänzt. So wird die Ausgabe in der Konsole immer auf der gleichen Zeile aktualisiert und nicht mit jeder Messung eine neue Zeile hinzugefügt. Die Ausgabe wurde außerdem farblich angepasst.
Die Messung der Spannung wurde vom vorherigen Skript übernommen. Zusätzlich wurden Methoden zur Messung der Stromstärke implementiert. Die Berechnung des Stroms erfolgt dabei über die oben genannte Formel, während die Messung von Vout und Vref analog zur Spannungsmessung der Batterie funktioniert.
Eine wichtige Funktion ist die automatische Kalibrierung des Sensors. Diese wird einmalig beim Start des Skripts durchgeführt. Hierbei geht das Skript davon aus, dass zu Beginn keine Leistung fließt. Es wird eine eine Messung des Stroms durchgeführt und dieser Wert global als Referenz gespeichert. Alle folgenden Messungen werden anschließend mit diesem Referenzwert verrechnet.
#### Anpassung Grafana Dashboard
Wie auch im vorherigen Projekt nutzten wir Grafana für die Visualisierung der Messungen. Das bestehende Dashboard wurde neu aufgebaut, um neben der Spannung auch den Strom und die Leistung abzubilden. Die Leistung konnte direkt in der Abfrage berechnet werden, weshalb eine Speicherung in der Datenbank nicht von Nöten war.
```{image} images/grafana_5_full.png
:alt: Grafana Dashboard
:width: 800px
```
### Praktischer Test
Das Projekt wurde entsprechend der oben genannten Schritte umgesetzt und anschließend getestet. Hierfür nutzten wir eine 7Ah 12V Bleibatterie, die zuvor vollständig aufgeladen wurde. Der Verbrauch lag bei unserem Test zwischen 3-5 A. Es wurde ein kompletter Entladevorgang gemessen. Über Grafana konnten die Messungen live verfolgt werden:
```{image} images/grafana_5_compact.png
:alt: Grafana Messungen Live
:width: 800px
```
Folgendes Video zeigt die Messung der Spannung und das Verhalten bei Anschluss des Verbrauchers:
```{image} images/measurement.mp4
:alt: Grafana Messung Video
:width: 800px
```
## Quellen
(HSTS023R-sensor)=
Sensor HSTS023R:
(hall-effect)=
Hall Effekt: