dleval / Solar-Energy-Storage

Solar Energy Storage for Enphase system
MIT License
0 stars 0 forks source link

Solar Energy Storage

License: MIT version

:star: Star us on GitHub — it helps!

Stores the excess solar energy produced during the day to release it at night.

This project was done on an Enphase self-consumption solar production facility.
:warning: It has many electrical hazards. It is best to use an approved energy storage system sold by your solar production system manufacturer.
This project was done just for the fun of doing it yourself

Specifications

System flowchart

flowchart LR;
   ac_in((AC)) --- 5V_power[Permanent\nPower Supply]
   ac_in --- 30V_power[Charge\nPower supply]
   5V_power --- Controller
   30V_power --- Charger
   Charger --- bat[(Battery)]
   bat --- boost[Boost\nCurrent Limiter]
   boost --- inv[Micro-Inverter]
   inv --- ac_out((AC))
   Controller --- eth((Ethernet))

Main features

Power management

Production and overproduction can be measured with AC current measurement clamps.
However for this project, the installation already includes an Enphase Envoy-s Metered gateway. Thus, the energy information can be read on the Ethernet connection.
The Envoy gateway can return a JSON containing lots of information. Simply interrogate in http the gateway on its IP address (example: http://xxx.xxx.xxx.xxx/production.json)

flowchart LR;
    Start --> id1a{Bat. charge\ntoo low};
    id1a -- Yes --> id3
    id1a -- No --> id1b{overproduction\n> 50W\nsince 1 min};
    id1b -- Yes --> id2{Bat. accept\ncharge ?};
    id1b -- No --> id_off;
    id2 -- Yes --> id3{Time Parameters\nControl};
    id2 -- No --> id_off;
    id3 -- OK --> id_on;
    id3 -- NOK --> id_off;
    id_off(Power OFF) --> End;
    id_on(Power ON) --> End;
flowchart LR;
    Start --> id1{Solar production\n< 10W\nsince 1 min};
    id1 -- Yes --> id2{Sufficient\nbattery charge ?};
    id1 -- No --> id_off;
    id2 -- Yes --> rate[[Power calculation]];
    id2 -- No --> id_off;
    rate --> id_on;
    id_off(Inverter OFF) --> End;
    id_on(Inverter ON) --> End;
flowchart TD;
   monitoring((Monitoring));
   30V_power[Charge\nPower supply];
   charger[Charger];
   30V_power -. temperature .- monitoring
   30V_power -. voltage .- monitoring
   30V_power -. current .- monitoring
   charger -. voltage .- monitoring
   charger -. current .- monitoring
   bat[Battery];
   boost[Boost];
   monitoring -. temperature .- bat
   monitoring -. voltage .- bat
   monitoring -. temperature .- boost
   monitoring -. voltage .- boost

The following items can be disabled and disconnected:
Charge power supply
Charger
Boost Current Limiter

Battery management

Hardware

To avoid overconsumed goods, a large part of the Hardware elements were chosen with what I had available. Some choices could be more judicious in performance. However I try to use and reuse as many things as possible without having to buy new.

Power supply

ATX power supply 550W + Boost module 400W

Boost Current Limiter / Micro Inverter

Enphase IQ7+

Controller

Arduino MEGA + Ethernet Shield

License

MIT License