Solar Panel Voltage and Current Reading

Hi, I am trying to read solar panel voltage and current using arduino uno. My solar panel maximum output voltage is 20V and maximum output current is 0.7A.
My circuit is designed as attached. I am able to read the solar panel voltage value which is the arduino A1. However, i failed in reading the output voltage of LM741 which is the arduino A0. The adc value from A0 seems floating (multimeter shows 3V+).
My objective in using the LM741 is to read voltage value across R1 using arduino. I find the differential voltage of the solar panel using the 1st op amp and amplify the differential voltage by 12 using the 2nd op amp. The maximum output voltage from the 2nd op amp is 4.7V. Theoretically, the ADC in arduino should read 0-1023 (0-5V) from the 2nd op amp. However, i fail to do so.
Is my circuit connection having problem? Or i should use single supply op amp? Please guide me and correct my mistake. Thank you.

Since the .56 ohm resistor is in series with 150K+50K to GND the voltage drop across .56R is next to nothing.

At 12V o/p from the solar cell 12V/200000ohms=60uA this gives only 33 micro volts across the .56R resistor!

Ive only had a quick look at this....why are you using op amps?

yes thats true the first op amp wont see much at all. It would be almost impossible to measure at those voltages.

How about if i add a load parallel as attached? Why i cant read the output voltage from LM741? :~

Let's assume solar panel current 0.3A, then the R1 voltage drop will be 0.30.56=0.168V
Correspondingly, the 1st op amp output will also be 0.168V. When it goes into 2nd op amp, the output will be 0.168
12=2.016V. I wish to read 2.016V in arduino uno A0 but i fail to do so.
Do i make any mistake? Please guide me. Thank you.

I am using a 0.005 ohm resistor to measure the current from my solar panel - which produces up to 80W at about 20v - that gives 5 millivolts per amp which I can measure with a multimeter. I think 0.65 ohms is too high a current sense resistor.

You need to organize your circuit to have a suitable load on the solar panel. If your panel produces about 12W at (let's say) 17v that suggests a load of 24ohms. 17 = 24 * .07 (v = r * i). You can check these small currents and voltages with a multimeter.

Next job is to measure the voltage across the load and your voltage divider is appropriate for that - just ensure the divider resistance is big enough so it doesn't affect the load.

If this is just a lab exercise and you know the load resistance then the voltage across the load will also tell you the current without any extra measurements.

On the other hand if you have a "proper" load and you don't know (and can't measure) its resistance, or its resistance varies, then you need to insert a very low ohm current sense resistor and measure the voltage across it. I'm afraid I know next to nothing about amplifiers, but I think you will need one to get a useful level of precision.

...R

Robin, you're using that 0.005 ohm resistor in series with your load and reading the voltage across it, and using that to calculate (or get an analog value proportionate to) the current?

That can make for a fairly large wattage resistor. Like the old "shunt" ammeters on trucks and tractors.

I'm using 20W and 30W PV panels (12V) for a few things and have been contemplating how to measure their output with A1. My max current is a little over 2A short-circuit. I'm powering the Uno from the same PV panel too, so would I need capacitors to isolate that input voltage somehow?

@Tonyzt
Note: Pin 2 of the first op-amp is connected to ground through its 10K resistor.
What are your measuring at the O/P of the 1st and 2nd op-amps (with a volt meter)?

If you apply 20 volts to the input of a 9 volt op amp, it may exceed the spec limit on input common mode voltage range. Power the op amps with +29 volts and -9 volts.

AmbiLobe:
If you apply 20 volts to the input of a 9 volt op amp, it may exceed the spec limit on input common mode voltage range. Power the op amps with +29 volts and -9 volts.

His op-amps are referenced to GND and his input R is .56 ohms so there isn't 29V at the I/P.

I think these are the resistors I use (they look like them but I can't remember where I bought them) Arcol MSR-3 R005 F 0R005 3W Bare Element Resistor | Rapid Online. My solar panels can produce about 7 amps and that produces a voltage of 35 millivolts across the resistor and an energy loss of about 0.25 watts if my maths is correct. You could put two resistors in parallel to reduce the losses.

...R

wiremanflash:
Robin, you're using that 0.005 ohm resistor in series with your load and reading the voltage across it, and using that to calculate (or get an analog value proportionate to) the current?

That can make for a fairly large wattage resistor.

LarryD wrote, "His op-amps are referenced to GND and his input R is .56 ohms so there isn't 29V at the I/P."

The op amp input voltage violates the spec because it is 10 volts when the supply is only 9 volts.
Please limit the LM741 differential amp + input to 7 volts, not 10 volts.
http://www.farnell.com/datasheets/78142.pdf
The spec says that the input voltage should be 2 volts less than the supply.
When vcc is 15 volts the input is typically limited to 13 volts (spec : "Input Voltage Range" page 2)

In the schematic, the Solar Panel + is 20 volts through two 10k resistors, resulting in 10 volts being applied to the op amp. That is 1 volts above VCC. Please limit the input to 2 volts below VCC (7v).
Or increase VCC to 12 volts to power the op amp.

How accurate do you want the reading?

This will do the same thing with decent isolation, though with only a limited resolution at <1A.

Are you able to put the current sense resistor between the -ve side of the solar panels and ground? If so, there is a simpler and more accurate solution. See attached schematic. The op amp needs to be one that has a common mode input voltage range that includes ground, and an unloaded output voltage range that gets very close to ground, so not a 741. A rail-to-rail op amp is best, however half a LM358 will do if you either increase its supply voltage by a few volts or reduce the gain a bit, and connect a pulldown resistor to its output.

[EDIT: corrected resistor values, to give 3.92V output @ 0.7A.]

I’ve been using TI’s ADS1110 16bit adc (with built in amplifier, diff inputs). It can measure voltage, or current, for example with low-side resistor (or high-side resistor when the high-side voltage is max Vcc). The full-scale 15bit range (unipolar) with set PGA=8 is 256mV (thus you do not need any opamp).
6pin smd package, I2C. You may use ie. ADS1115 as well - 2 channels, first ch. for voltage, the second one for current measurement.

With above 0.1ohm resistor low side you can measure up to to 2.56A (256mV/0.1ohm) with 80uA resolution (see below)… You need an 100nF-10uF decoupling capacitor on Vcc and 2x10k pullups for I2C bus, as usual. That is all you need…

ads1110.JPG

ads1110_v.JPG