3-Phase energy monitoring with ESPHome

Was soll durch diese Projekte gemessen werden?

Die folgende Messung werden mit einem ESP32-Board durchgeführt:

1- Measuring 3-Phase Electricity

    • 3 voltage transformers – one for each phase  (2000/100mA)
    • 3x 220Ω als burden resistor. Es wird bis maximum 28A reichen.
    • 2x 10kΩ für Spannungsteiler + 10µf

2- Gas Metter (Gas pulse counter)

    • Reed-Kontakt

3- Umgebungstemperatur

    • NTC z.B. 10kΩ mit 10kΩ Widerstand

4- RF-Receiver and Buzzer

    • 433MHz TX RX Receiver Superhet RF Modules

Alles zusammen mit einem ESP32 z.B. S2 Mini v1.0.0

Einen Gaszähler kann man in der Regel sehr einfach auslesen.
Für die Messung reicht bei den meisten Gaszählern ein einfacher Reed-Kontakt aus
Weitere Informationen zu den Arbeitsweisen vom Gaszähler finden Sie hier und auf ESPHome unter Pulse counter.

Calibration of the current sensors:
Die Kalibrierung kann mit einem Wattmeter und einem Haartrockner oder einem Wasserkocher durchgeführt werden.
Die Sensoren haben  in meinem Fall 2000 Wicklungen und einen 220Ω Burden-Widerstand.

Der Spannungsteiler erzeugt aus beiden 10kΩ Widerständen eine Spannug von ca. (3.3/2)V für die Transformer-Sensoren.
Die Stromsensoren werden mit den ADC Pin’s des ESP32 verbunden.
(Die Phasenverschiebung und Spannung wird nicht berücksichtig, kann aber mit zusätzliche Transformatoren auf die weiteren ADC Pin’s geführt werden).

Das sogenannte Burden Resistor wird wie folgt berechnet:

burden resistor = Turn(Vcc/IP)
Vcc is the max voltage ESP32(3.3v),
IP is the Max Current to be read (30A)
Rb=2000(3.3v/30A)=220 ohm

Zum Programmieren und zur Erstellung der *.yaml Datei wird ESPHome verwendet.

Die folgende Liste zeigt die Eingang- und Ausgangspins des ESP32 S2 Mini.
Achtung: Diese Pins können sich auf verschiedenen Platinen an unterschiedlichen Stellen befinden.

The pins highlighted in green are OK to use. But you need to pay attention because they may have an unexpected behavior mainly at boot.

GPIOxInputOutputNotes
GPIO00pulled upOKOutputs PWM signal at boot, must be LOW to enter flashing mode
GPIO01OKADC1_CH0 (Phase 1)
GPIO02OKOKADC1_CH1
GPIO03OKADC1_CH2 (Phase 2)
GPIO04OKOKADC1_CH3
GPIO05OKADC1_CH4 (Phase 3)
GPIO06OKADC1_CH5 (NTC)
GPIO07-10
OKOKADC1_CH6 bis CH9
GPIO11OKStatus LED to display pulse and alarm
GPIO12-20OKOKADC2_1 bis CH9
GPIO13OKBuzzer
GPIO14OKOKoutputs PWM signal at boot
GPIO15OKBuild-in LED 
GPIO16OKReed-Kontakt (Switch)
GPIO17U1TXDRF Transmitter Or Buzzer
GPIO18U1RXDRF Receiver

Espressif ESP32 s2 mini document

The ESP32 S2 mini has 18 x 12 bits ADC input channels

Nun zum Diagramm:

Die Schaltung war ursprünglich zur Strommessung gedacht und da mein Gaszähler im selben Raum mit der Schaltschrank ist, habe ich die Schaltung auf einen Gasimpulszähler erweitert.

Mit Hilfe von einem Reed-Contact ist es möglich, die meisten mechanischen Gaszähler zu erfassen. Ob der Gaszähler dafür geeignet ist, können Sie aus dem Typenschild des Gaszählers entnehmen und es sollte auf dem „1 Imp / 0,01 m³“ stehen.
Dieser wird durch einen Impulsmagneten in der letzten Stelle des Rollenzählwerkes ausgelöst.
Es kann auch vorkommen, dass die Rolle stoppt und dann der Kontakt für eine Weile geschlossen ist, macht es nichts, da für die Zählung der abfallenden Flanke eines Pulses berücksichtigt wird.

Dann habe ich darüber nachgedacht, wie es wäre, wenn ich damit auch die Temperatur des Schaltschranks messen würde und so habe ich die Schaltung mit einem NTC-Thermistor erweitert.
Nach ein paar Tagen fügte ich einen „RF-Reciver“ und einen „Buzzer“ hinzu, um einige meiner 433-MHz RF-Sensoren (rf-Motion Sensor , rf-Rauchmelder und leak Detektor) integrieren zu können.

ESPHome and 433mhz superheterodyne RF receiver:

Implementing the rf-receiver lets me to receive and decode the signal from some of my RF sensors. The rf-receiver connects directly to the RX pin of ESP32.

The code is checked into GitHub at: 3-phase power monitoring with ESPHome

Hier ein paar Befehl um das yaml file kompilieren und uploaden.

 

> python –version
Python 3.10.1

> pip3 install wheel
> pip3 install esphome

esphome config rf_security.yaml

esphome compile rf_security.yaml
esphome upload rf_security.yaml

Or

#esphome run rf_security.yaml
#esphome run rf_security.yaml –device COM10

esphome logs rf_security.yaml

..

Flashing ESPHome:


<- Monitoring flow & return temperature’s heat pump

Leave a Reply

Your email address will not be published. Required fields are marked *

*