====== Power Quality Analyzer ====== ===== Requirements ===== * 3-phase voltage, current, frequency, measurement * active, reactive, apparent power, power factor * neutral current * harmonics analysis up to 50th order * quality - swell, dip, interruption, transient/over voltage, inrush current, unbalance rate * real-time operation * USB communication interface ===== REST API ===== "api/v1/values" { "U1": 240.0, "U2": 241.0, "U3": 242.0, "I1": 1.0, "I2": 2.0, "I3": 0.5, "fi1": 10.0, "fi2": -1.0, "fi3": 90.0 } "api/v1/samples.csv" i1, i2, i3, u1, u2, u3 93390, -361519, 129825, 5145535, -774099, -4559377 19145, -338362, 153637, 5365310, -1620378, -3868587 -6606, -323890, 150418, 5446114, -2413114, -3135951 -3541, -304116, 174229, 5479039, -3169516, -2380155 ... ===== esp-idf for ESP32-S3 installation and configuration ===== * [[https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/linux-setup.html|Installation of ESP-IDF and Tools on Linux - v6.1.0]] $ ssh jdambors@rpi * [[https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/macos-setup.html|Installation of ESP-IDF and Tools on macOS - v6.1.0]] * [[https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/linux-macos-setup-legacy.html|Legacy installation of esp-idf development environment - v5.5.1]] $ mkdir ~/esp $ cd ~/esp $ git clone -b v5.5.1 --recursive https://github.com/espressif/esp-idf.git $ cd esp-idf $ ./install.sh esp32s3 * pqa project configuration $ cd ~/projects.local/elektro/pq-anal/fw/pqa * activate build environment - v5.5.1 $ . ~/esp/esp-idf/export.sh * activate build environment - v6.1.0 $ . ~/.espressif/tools/activate_idf_v6.1.sh * proceed with pqa project configuration $ vim main/idf_component.yml $ cat main/idf_component.yml ## IDF Component Manager Manifest File dependencies: ... espressif/esp-dsp: '*' $ idf.menuconfig * Partition Table ---> Partition Table (Single factory app (large), no OTA) * Serial flasher config ---> Flash size (8MB) * Component config ---> ESP PSRAM ---> [*] Support for external, SPI-connected RAM * ---> SPI RAM Config ---> Mode (QUAD/OCT) of SPI RAM chip in use (Octal Mode PSRAM) * ---> SPI RAM Config ---> SPI RAM access method (Make RAM allocatable using malloc() as well) * ---> SPI RAM Config ---> (1024) Maximum malloc size, in bytes, to always put in internal memory * ---> SPI RAM Config ---> Allow .bss segment placed in external memory * Component config ---> ESP System Settings ---> CPU frequency (160MHz) * Component config ---> LWIP ---> SNTP ---> (2) Maximum number of NTP servers * Component config ---> DSP Library ---> DSP Optimization (ANSI C) * Component config ---> DSP Library ---> Maximum FFT length (4096) * build, flash and monitor $ idf.py fullclean $ idf.py build ; echo $? $ idf.py -p /dev/tty.usbmodem11101 flash $ idf.py -p /dev/tty.usbmodem11101 monitor ===== AC sensors ===== ==== AC voltage sensors ==== For three-phase balanced system, the sum of instantaneous values of phase voltages (as well as currents) is zero: $$v_{L1} + v_{L2} + v_{L3} = i_{L1} + i_{L2} + i_{L3} = 0$$ In such case also $$u_{N1} = u_{N2} = 0$$ and $$v_1 = v_{L1}\frac{R_{12}}{R_{11} + R_{12}}$$ === SPICE simulation === == Voltage divider for measuring phase voltages - SPICE simulation schema == {{ :projects:pq-anal:spice:pqa-acv-divider.png?direct&800 | SPICE simulation of AC voltage divider}} == Normal grid conditions == {{ :projects:pq-anal:spice:pqa-acv-divider-sim1.png?direct | SPICE simulation - grid ok}} == Phase VL3 disconnected == {{ :projects:pq-anal:spice:pqa-acv-divider-sim2.png?direct | SPICE simulation - VL3 phase disconnected }} == VL2 & VL3 phases disconnected (only VL1 connected) == {{ :projects:pq-anal:spice:pqa-acv-divider-sim3.png?direct | SPICE simulation - VL2 & VL3 phases disconnected }} ==== Power supply ==== ^ Component ^ Max. consumption [mA] ^ # ^ Total consumption [mA] ^ | ACS712 | 13 | 4 | 52 | | TL064 (TL084) | 1 (12) | 2 | 2 (24) | | 78xx/79xx | 6 | 3 | 18 | | Total | | | 72 (94) | ===== Schema ===== == AC sensors == {{ :projects:pq-anal:schema:pqa-ac-sensors.png?direct&400 |AC sensors}}