Imminent Work!

  • This page is undergoing updates!


I've always wanted to make a solar power station. I seem to get curious and almost obsessive about things which I can't understand, and then go on a mission to understand them. I guess the idea of getting free energy (and off-grid) is quite appealing! Anyway, now I've got the time and space, I'm able to give it a go!

Over the past year, many people have looked at what I'm doing and been very interested in it, so, because of this, I decided to write this report on what I've been doing and how it works. For those of you who would like to make a similar thing, hopefully, this will save you a lot of time! For those of you who are just looking - I hope you enjoy the read!

My off-grid solar power station is somewhat different to most others on YouTube or other blogging sites, this is because my system has a sophisticated brain which automatically makes lots of decisions on my behalf - the 'brain' is a micro-controller called an ESP32. This brain decides when to switch solar on and when to switch it off basically. Not only does it decide, it actually carries out it's decisions too. It transmits data to my server for analysis, amongst many other things. The 'firmware' which has been flashed to the micro-controller has taken me about a year in order to get right. It's written in a language called C++.


What is an 'Off-Grid Solar Power Station'?

A solar power station basically consists of a means of gathering energy from the sun, and a means of storing that energy in batteries, ready to be used. You then use something called an 'inverter' in order to convert that power into usable mains electric. 'Offgrid' means that it is in no way connected the the national grid. It's basically an independently owned power station, and it's aim is to give 'free' power.

A common misunderstanding about solar is that the panels directly power devices - this isn't true! An important point to note about solar power; The more intense the light is, the more energy can be drawn. It sounds like a stupid thing to say, but it's actually very important to be aware of it. Because the intensity of sunlight can vary by the second, so can power which is produced from it. One moment, it could be very sunny and maybe you could draw 1KW for example, but 10 seconds later, a cloud could cover the sun and you could then draw 100W. If you were drawing 200W for example in this situation, the appliance would run to start with, but then brown-out under cloud cover due to lack of power. This is why batteries are charged by solar power and drained rather than attempting to draw power directly from the panels.

How does it Generate Power?

To generate the power, I use 4 x 24V, 220W solar panels. They're Solar Europa CHN220-60P panels. The datasheet can be found here. They're situated on top of my (and my late neighbour's) shed roof. I made some adjustable stands for the panels, and bolted them down to the top of the flat roof. The stands can be set into pre-set positions, depending on the season. The sun is higher in the sky in Summer, and lower in Winter. The panels are wired in series/parallel with 40A cable - Two panels wired in series, and then those two banks are paralleled together using a 'Y' splitter. Two wires then feed through a hole in my Solar Shed, to an MCB. Because pairs of panels are wired in series, this makes the optimal panel voltage per string 59.2V and Amperage 7.43A, but then because pairs are paralelled together, this makes the optimal Amperage 14.86A. Therefore in total, is 59.2V * 14.86A = 880W of power.

Solar Panels 1
Solar Panels 2
Solar Panels 3
Solar Panels 6
Solar Panels 7
Solar Panels 8

How does it Store the Power?

From the panels and the MCB, the wires are then they get connected to the charge controller. The charge controller is an EPSolar Tracer 4215BN. (You can read about them here) I bought this from new in 2016 some time. The charge controller charges my batteries via another MCB. I have 12 x 75Ah, lead acid batteries, again, wired in series/parallel. I have 6 banks of batteries, each bank containing 2 batteries wired in series, to give 24V. Each bank has a 20A fuse fitted to it. I got the batteries from a reclaimation yard and tested each one when buying. They are VARTA VA0 batteries. The batteries are all connected using a home made manifold type thing, made of connector blocks and some 40A cable. The charge controller keeps the batteries topped up throughout the day and fills them back up after something has used up some of their stored energy.

Charge Controller
Battery Manifold
Batteries 1
Batteries 2

How can the Power be Used?

To use the power, I have a 2500W pure sine wave inverter. There are two thick 25mm2 cables which go from the battery bank, through a 110A MCB, to the inverter. The inverter has a wired remote control which I can use to manually switch it on or off. I've hacked into this remote and modified it so that I can automate the switching. The ESP32 can control the remote by switching on a simple 5V 'Songle' relay which shorts two contacts in the remote, therefore turning the inverter on. From the inverter, the power goes through an MCB and an RCD for safety.

The next point of call is the contactors. A contactor is a type of heavy duty, multi-pole switch. There are two contactors; one is connected to mains electric from the house, and another is connected to solar power from the inverter. At the bottom side of each contactor, matching poles are wired together. The result is that the output from the contactor pair is either mains power or solar power, depending on which contactor is powered at a given time.

My AI system decides which contactor should be powered, and therefore decides on the power source of the system. It controls power to the contactors via TIP41C transistors. If output power should be mains, then it powers the mains contactor, otherwise the solar contactor. From the output of the contactors, the power goes out to a socket - for power to be used!

Plug Sockets
Inverter Remotes

How does it Acquire Data?

Throughout all stages, the micro-controller gathers data, this is for it's own use, in order to make decisions, and also for me, so that I can understand things and learn more!

It gets Solar Voltage, Solar Amperage, Battery Voltage and Battery Charge Amperage from the charge controller via RS485/MODBUS. I do this using an Arduino Nano, an RS485 to TTL converter and an ethernet cable. Other data which is logged include; light and battery drain.

To get light data, I use an I2C BH1750 lux sensor, and to measure drain current, I use a 200A current shunt with an I2C ADS1115 standalone ADC. These are polled on a regular basis.

I also store whether the AI system is on, which power source is currently enabled, and finally whether the inverter is on or off. The Nano polls the sensors at varying frequencies, averages the data, and then sends this data via serial to the ESP32 every second. The ESP32 uses the data, also does it's averaging, and then sends that data to my server every 15 seconds. I've written a program which is on my server which constantly awaits the data, filters it, separates it, parses it and sends it to SQL server.

Arduino Nano
Current Shunt
Light Sensor

How does the AI System Decide?

The AI system is an ESP32, although as previously mentioned; there is also an Arduino Nano which sends it it's data. Using this data, it makes a decision as to whether solar should be on. Specifically, to decide whether solar should be on. It used to look at the battery voltage and the amount of light. If the voltage and light were above a certain level, it would powers up the inverter via a relay, then 50ms after, it would switch the contactors over from mains to solar power. Now however, it is a timer based system; Ideally, it would switch on solar 1 hour before sunrise and switches off 1 hour before sunrise. When solar should no longer be on, it reverses the operation. The AI system also has a small LCD display as an output! This is so that I can conveniently view current statistics.

AI can be switched off. If the AI is switched off, then the user has to then decide on the power source and whether the inverter should be on or off manually. AI is basically the automatic decision-making process. The ESP32 will still carry out any commands via transistors and relays though.

The AI system can be manipulated via the website, the service on my server, or the desktop application.


About This Website

This website primarily shows data, which has been collected via the ESP32 data collection and transmission. It gets it's data from SQL server and is written in ASP.NET with a language called C#.

This website actually has the power to talk to the ESP32 and to send it commands. When this happens, it sends a message to the service running on my server which I just mentioned. That service sends the command to the ESP32 and the ESP32 replies back with an acknowledgement when the command has been actioned. These commands are also logged in SQL server.

About Other Software

I written another piece of software which connects to the ESP32. The software connects via TCP. The software has the power to receive data from the ESP32 and also to send commands. This software can work in two modes; server mode and client mode. This software sits on my server and listens for data from the ESP32. I also have a copy on my laptop in client mode which connects directly to the ESP32, which sends it data every second.


Evaluation & Future Plans

At the moment, the system switches on and off at a set time, which may be 7am and 7pm or somethign like that. Really, this needs to be improved.

  • Powering the house. Currently, all energy is wasted as it only powers my office, which doesn't ever draw 880W.
  • Make professional PCB and Add some casing.
  • Write an Android application.