Just got some time to work on my emon setup again.
I'd like to monitor the incoming/DC side of my PV system before it enters the inverter.
Voltage max is about 600V and max of 15Amps.
For measuring Amps i'm planning on using an Alegro ACS715 with range from 0-30A..
For measuring the Voltage i'm planning on using a resistordivider of 1K/180K so it will bring the 600V down to 3.315V
If i'm correct a 180K/2W and 1K/0.25W would be fine.
The only thing that concerns me is that if something happens to the 180K there might be a high voltage input on the AVR. How can i prevent this ? I've read about having two diodes (one from ground and one from Vcc centered in the analoginput of the AVR) would prevent any higher input on the analoginput then Vcc, but will this work for 600V also ?
You need to be VERY careful with what you are proposing. Firstly, there is no question that 600V d.c. does not take prisoners. Unless you are completely confident that what you are doing is safe, don't do it. There is a reason why we recommend clamp-on current transformers and proprietary AC adapters.
Secondly, if you do not have a means of isolating the panel, you must treat it as live at all times, and only make connections in complete darkness.
Having got that out of the way, you need to think the whole idea through. How are you going to power your (presumably) Arduino? Because it will be connected one way or another to the d.c. side of the inverter, you need a power supply to feed it that is isolated to at least 1kV (because you do not know where the panel voltage sits in relation to earth and the mains). How are you going to program it and use the serial monitor? You cannot connect anything to it unless the panel is isolated or dark, and then it won't be working. If you can get over those hurdles, your dropper resistor needs to be rated at 600 V minimum. Most resistors you will buy are rated 250V. So you will need a chain of at least 3 equal resistors in series just to ensure you do not exceed the rated voltage per resistor.
If you are still convinced you know enough to do this safely (and I wonder as you are questioning the calculation of resistor values), then I would use somewhat higher values than you suggest. I would make the 'top' resistor 3 x 1Meg in series, and the 'bottom' 22k, which will give you a bit under 4.4 V at the ADC input. Ordinary metal film 0.4 W resistors should be adequate. The current down the divider chain will be 200µA, so the internal protection diodes of the analogue input can cope with that. Think carefully how you are going to mount the resistors - you cannot use stripboard. You also need to follow exactly the manufacturer's recommendations when mounting the currrent sensor. And think about the wire you will use to connect to the 600 V rails - is that rated at more than 600 V?
(I had to do a very similar thing on a d.c. motor at 800 V - it is not simple).
I'll repeat what I wrote at the top: Unless you are completely confident that what you are doing is safe, don't do it.
I second Robert on the safety stuff. Messing with 600V DC is like playing with nitroglycerin. I've worked in a PV company here in Germany and I've seen some really nasty pictures of workers electrocuted by such high DC voltages. Very very ugly stuff.
Also, messing with your system like that may breach your contract with the utility (I assume you're feeding in).
If I were you I would try to find a hack (or code one) to read these values from your inverter and post them to emonCMS with the help of an Arduino. What's the inverter in your setup?
Hi Robert, Amin
First of all I understand your concerns about the high Voltages and I agree with them. But having that said this will not scare me at this time and taking careful precautions I reccon it can be done and thats the big challenge ;-) I did study electronics about 25 years ago and switched to ICT later on so im not completely unknown with the materials.
Background: I have several different PV systems setup around my house with varying Voc voltages of between 135V and 450V. Also using different types of inverters like StecaGrid500, StecaGrid2010 and Ingeteam feeding in on the net (no contract, we dont need that in The Netherlands upto 5000kWh/year ) but also a MorningstarTristar on a 24V/450Ah batterybank. I'm already monitoring the AC side of some inverters but like to get the DC side monitored also. The whole systems is finally going to be around 18.000Wp scattered all over the place so thats a lot of panels (about 100) and inverters. Most of them are small strings of 3 panels and some 10 panels and i like to monitor each string seperately. Having a string of 10 panels means a Voc of 450V but since i like to get safe i want the sensors to be able to read upto 600V. Amps will be no more then about 12A per string so the ACS715 with 30A max would be fine for that.
Since i have a max of 4 strings per inverter i'm going to need at least 8 analog inputs so im thinking about using a Jeenode with Jeelabs Input plug giving me 16 analog channels. The Jeemon is going to be polled by the emonbase (nanoderf). This would be (for me) the easiest part.
For the ACS715 i'm using Pololu #1186 breakout boards stacked to a carrier board. PV wires soldered to the ACS715 clamps and capable upto 1000V. Everytring neat in a suitable weatherproof box with chassis MC4 connectors on the outside. There's also going to be a DC switch for shutting the panels down before disconnecting the MC4 cables.
For the resistor divider i will make up my own print (still having to find that old UV box somewhere on the attic...) so that shouldnt be a problem also. I'm thinking of some sort of galvanic isolation between the dividers output and arduino input but havent figured that out.
Providing power for the Arduino i first thought of using an AC adapter on the AC side of the inverter but that wouldnt work with the Tristar inverter so i have to take power from the DC side and have it battery backed up during nights or lesser sunny days.
What do you think sofar ?
We use these:
They are insanely expensive and need a linear, non inductive resistor to work but they are very accurate and offer isolation.
There is a cheaper way using an optocoupler to provide isolation but all the parts are SMD so you wold need to design a PCB to get that to work.
If you want I can send you a schematic.
I would definately not advise you to connect your arduino to the PV without isolation, as the negative of the PV array wont be at ground, so connecting anything to the arduino (you, pc or anything else that is grounded) will probabily break the thing you connect it to.
That LEMs need a +-15 power supply so that might be a bit of a problem. This is the schmatic of the cheaper technique and I think actually you can get all the components as through hole.
You need an isolated 5v - 15v DC DC converter to power the HV side with this schematic
For powering the Arduino and sensors i might just use an 15V AC/DC adapter when using the unit for grid-tied inverters and using a DC-DC converter from 24V -> 15V when used on the Morningstar controller. The 'solarbox' (as i might call it) wil have the parts for making 5V out of 15V and have a small battery backup for its own use. This way i have the same box regardless to which inverter/controller its used and i dont have to mess with the HighVoltage side.
For the galvanic isolation of the Voltage part i'm just looking into Hall-effect voltage sensors, these work on 15V also but also found some other linear opto-isolation solutions.
The part you mention is pretty expensive !
All of that seems to make sense.
For some reason the schematic didn't seem to attach properly in my last post. I'm using this approach for measuring the DC link voltage of a 3 phase inverter.
I use an HCPL-788J for the optical isolation
It needs a 5v supply referenced to the HV side so I use a 5-15v DC-DC converter, followed by a 5V linear regulator (LM78L05).
For measuring the DC link the circuit just uses a voltage divider. I've got 4 resistors in series and I measure the voltage across the bottom one.
I've also got a RC filter on the input ot the opto isolater to reduce the bandwidth a bit.
Let me know if you need any more information about this circuit. The total cost (+pcb) is about £10.
You need to click "attach" after you upload the file and before you save the post. I've done it for you.
Thanks for your input and schematic.
I did look at some other optocouplers like the LOC110, IL300 and 7B41 but all need more parts like op-amps and such whereas the
HCPL has it all in one package. What pcb did you make for it and what voltages are you monitoring with it ?
I'm using that schematic for measuring the DC link in a 3-phase inverter PCB that is used to connect a DC source to the grid via a variac. The output voltage is up to 415VRMS which needs a DC link of 700V.
The PCB was designed with Altium and made with PCB Train (not cheap...) but I got a free prototype from Spirit circuits.
This is all part of a research project I'm doing to interface batteries onto the grid but I'm just going to be circulating power and not acutally storing anything. Peak power should be around 60kW but I might not get nearly that high.
It is all contolled by a TI DSP and an alcatel FPGA. I'm using 10A/D converters and 36 digital outputs to control one 3-phase inverters, 3 single phase inverters and 3 cycloconverters. Thats the plan anyway, I haven't managed to get the FPGA and the DSP to co-operate yet...
Here's a small follow-up on my DC monitoring system.
In the last week i did some testing with an ACS715 and also an ACS712.
The ACS are fed by 5V from the Arduino and output of the ACS is directly connected to an analog port. Both ACS sensors have a small offset value on zero-current so they can register alternating current. For example the Vout of the ACS712 is Vcc/2 when no current is present.
As a spin-off i made a small battery monitoring system with both sensors to measure the Ah capacity of an 8 year old (completely dead) 12V lead-acid battery before and after desulphating the battery (and yes desulphating works).
Based on a Jeenode It simply takes readings for current and voltage and calculates the power drawn from the battery by a 12V/45W bulb. It also registers the Ah figure and sends all this info to a RFM based receiver with SD card for logging. It all works pretty accurate during load.
However when i turn off the bulb, so no current is drawn, the Jeenode seems to register a different value then the expected Vcc/2. Although it is a Hall effect sensor so it could be disturbed by some magnetic field , but none of these are present that i'm aware off. This behaviour appears with both sensors so i started to figure that this 'noise' was generated by the Jeenode. Changing the Jeenode for an Arduino still shows this behaviour so its not caused by the Jeenode.
When measuring the output from the ACS712 with a DMM it says 2500mV so this is correct. The output of analogRead(A0) gives alternating values between 509 - 511 so this represents a value between (509/1023*5000mV =) 2487mV - and (511/1023*5000mV=) 2497mV
Since the output of the ACS712 is 100mV/A it appears that there's an alternating current of 1Amp which is not correct.
Even when applying 3.3V tot the analogport and compare the read value against the real Vcc (read by the sketch) shows a difference.
What could be causing this erratic behaviour of the Arduino ?
I'd suggest the likeliest source is noise in the ADC input. 2 LSB is about 10 mV, as you point out, so you might be seeing a little over 10 mV peak-peak of noise. Or because of the nature of noise, something like 2 or 3 mV rms. Because the input impedance of the ADC is so high, I'd guess it is current noise, possibly in the connection between analog and digital earths, and the source will be the processor itself. At those voltage levels, you need to be very careful with the layout and with earthing. Also bear in mind the specification for the analogue input (Section 28.8) does not mention noise, so thay aren't going to be tied down on that subject. I'm guessing here but noise might be one of the reasons why the ADC only has 10-bit resolution.
But what I can tell you, if you use an audio amplifier (with a suitable capacitor to remove the standing voltage) you can hear the noise on an emonTx quite clearly. And there's anecdotal evidence that breadboard / plugboard projects are more susceptible.
(Is your Hall effect sensor seeing the Earth's magnetic field? Just a thought).
"When measuring the output from the ACS712 with a DMM it says 2500mV so this is correct. The output of analogRead(A0) gives alternating values between 509 - 511 so this represents a value between (509/1023*5000mV =) 2487mV - and (511/1023*5000mV=) 2497mV
Since the output of the ACS712 is 100mV/A it appears that there's an alternating current of 1Amp which is not correct."
you have not 1Amp, but you have 0.1Amp
2497mV - 2487mV = 10mV, not 100mV, so you have 0,1Amp.
Don't warry, my ACS behaves in the same way and is not bad because this value is closed to the maximum resolution that you can have with ACS712 20Amp.
Open-source tools for energy monitoring and analysis. This project uses the GNU General Public Licence