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.
GPIOx | Input | Output | Notes |
GPIO00 | pulled up | OK | Outputs PWM signal at boot, must be LOW to enter flashing mode |
GPIO01 | OK | ADC1_CH0 (Phase 1) | |
GPIO02 | OK | OK | ADC1_CH1 |
GPIO03 | OK | ADC1_CH2 (Phase 2) | |
GPIO04 | OK | OK | ADC1_CH3 |
GPIO05 | OK | ADC1_CH4 (Phase 3) | |
GPIO06 | OK | ADC1_CH5 (NTC) | |
GPIO07-10 | OK | OK | ADC1_CH6 bis CH9 |
GPIO11 | OK | Status LED to display pulse and alarm | |
GPIO12-20 | OK | OK | ADC2_1 bis CH9 |
GPIO13 | OK | Buzzer | |
GPIO14 | OK | OK | outputs PWM signal at boot |
GPIO15 | OK | Build-in LED | |
GPIO16 | OK | Reed-Kontakt (Switch) | |
GPIO17 | U1TXD | RF Transmitter Or Buzzer | |
GPIO18 | U1RXD | RF 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