Trying to make a functional current monitor for the Arduino

Hello All,

I am currently working on a team that is using the Arduino to read in measurements of current and voltage from a small solar cell. We are currently in the testing phase, and using an Arduino Uno board. Below is the circuit and schematic we came to a consensus of implementing that met our specifications. Right now, my biggest question is how to wire the components to the right inputs on the op-amp to the correct outputs for the Arduino. We plan on having a load connected to have the Arduino capable of reading the current across the circuit.

I am currently a novice, as this is my first time designing a circuit for a specific application so any input would much appreciated. Thanks!


Please do not double post, it wastes other people's time. Advice on fixing a circuit for a current monitor - #4 by jremington - General Electronics - Arduino Forum

I really don't like your 0.1ohm current sense being on the high side of your solar, All you'd need is to join your arduino ground to your solar ground and you've just made a solar chip sizzler.

That is not too far off though, so have another look at your circuit and see if you can redraw it with:
0.1 ohm current sense between arduino_AGND = Household Mains_GND and the (-) of your solar just below GND.
Your load goes from GND to solar (+). You can then do with a plain wire instead of the large resistor from GND to op amp + input, expecting less noise from doing that. Having your sense 0.1ohm slightly below arduino ground at the inverting op amp input can give the required + opamp_output voltage for an arduino analog_input. Op-amps work best with +-6V to +-20V power supply, so just to be sure to avoid damage from going beyond the 0 to +5V range for arduino analog inputs, it might be prudent to put in a zener or two green LEDS which add up to about 5V and would light up to use up your surplus in a faulty overvoltage condition instead of frying your arduino.

With op amps, it is worthwhile your getting in a £2 pinboard on 0.1-inch pitch so that you can try out different resistors from your collection. I'd try to get the inverting feedback resistor R2 below 50kOhm for lowish noise and then choose a smaller R1 (minimum 1kOhm) to get your desired inverting amplification. You should find that it matters very little whether to use 1k from opamp to your protection diodes and then 1k to the analog_input pin or some other values. A common noobie pitfall is to put in the largest gain resistors which seem to work and then spend the next week getting caught out by intermittent drift and weirdness. If you are keen then try looking up capacitive and T bridge filters for noise reduction.

I had trouble reading the left side of your schematic. Was that a potential divider to get 0 to 5V from the solar voltage? Such can be done, but please design to stay within 5V at Voc on the coldest day of the decade at 1000 Watts/m^2 sunlight, and put in your two greens overflow just for good luck. The GND to arduino analog_input1 resistor should be in the range 2 to 10kOhms and then you choose a sensible resistance for the high half of the potential divider, hopefully not as huge as was marked on the schematic. If doing this literally as I've described, such a potential divider would miss up to half a volt between solar (-) and GND, but as your cable losses are as much it really won't matter.

If you can get one of the standard arduino analog input programs showing numbers on the serial monitor screen of your PC then it will be possible to collect arduino usb-serial output and drop it into a logfile. I use a raspberry pi on solar and/or batery power to run that c program.

Lastly, choosing the right op amp is worth taking your time over. Avoid surface mount package. Avoid TV and GHz and stuff like that. Quad "328" type might be ok, but there are thousands of others which might work. "audio" and "linear" and "low offset" and "low drift" are probable desirables.

You might find it useful to have a cheap light meter nearby, independent of your main solar panel. Ask if you'd like description of recycling a 2V 3mA garden nightlight for that.

Having the current sense on the positive line is quite common. And shorting a solar panel doesn't usually cause it any damage.

Many of the Atmel microprocessors (unfortunately not the 328 in the Uno) have a differential feature in the ADC and have an amplifier so the OpAmp would not be necessary. The differential feature allows them to measure voltages that are not referenced to Arduino GND.

A current sense resistor of 0.1ohms seems high. I have a 0.005 ohm resistor on my 80 watt solar panel.