Voltage measurements for bank of 3 supercapacitors

I’m a newbie with electronic hardware. I want to periodically measure each supercapacitor voltage in a series bank of three. The maximum supercapacitor voltage is 2.7, so the bank will not exceed 8.1 V. In fact, the voltage will be limited to 2.65 volts per cap. When I’m not measuring, I want minimum current draw. From some Google research, I surmised that the attached circuit might work. When I put D0 high on the Arduino, I want the MOSFETs to turn on the voltage divider circuits and take measurements of the three caps (from the A0, A1, and A2 input lines). When D0 is low, the voltage divider circuits should be off. Will this circuit work? Do I need any additional protection resistors or caps? Is the value of 100K for R5 and R8 ok? Thanks.

In the drawing I realize that I have the resistor values for R9 and R10 switched.

It looks like a well designed circuit.
But a couple voltage dividers, about 100k end to end, should not draw but about .2Ma. Is that to much. What is charging these caps, solar? What is their drain, without the voltage test circuit?

You can also do this with 3 Opto Fets H11f2 HTTP 301 This page has been moved
Might be simpler.

The circuit has possible problems. The magnitude of the problems can be quantified after more details are known. The leakage currents are important. If the capacitors are ideal, there is no leakage. If the capacitors leak, there will be a change in the voltages. Imagine adding the parasitic resistors that are in parallel with the 3 capacitors to be 1000 Megohms, 50 gigohms and 500gigohms. Imagine each capacitor is one Farad. Imagine the A0 analog input is 10k ohms. Imagine the MOSFET leakage is 1uA. After a megasecond, the 2.7 volts will drift to a different voltage that can be simulated with LTSpice.

Imagine the node with no name between C5 and C6 is called AA1. After one megasecond node AA1 is at 1 volt, driving node A0 to 0.5 volts

Imagine node A0 has 10k ohms to ground and it leaks off the 2.7v down to 0.1 volt.

Node A0 is leaky.
Node AA1 is dragged down by the droop on node A0.

Capacitor C6 will exceed its voltage limit, causing a damage to the dielectric, increasing leagage.

@AmbiLobe
Is that megasecond (1 million seconds, about 11.5 days)?
Or did you mean micro second ( 1/1000000 of a second) ?

What is the specification of the supercapacitors? In particular, what is their leakage current?

Consider the following. To measure the total voltage, use a simple voltage divider, 2M to +8.1V and 1M to ground. Also a 0.01uF capacitor in parallel with the 1M resistor to avoid crosstalk and noise pickup. Current draw 2.7uA.

To measure the voltage across the bottom 2 supercapacitors, use a voltage divider with 1M to +5.4V and 1M to ground, and the same 0.01uF capacitor. This draws 2.7uA from the lower 2 capacitors. To balance that, connect a 1M resistor in parallel with the top capacitor. See left-hand schematic below.

Total current draw is 5.4uA. If this is lower than the typical leakage current of the supercapacitors, then it is low enough to ignore. No need for any mosfets. The use of high value resistors in the voltage divider introduces a possible measurement error that is typically less then 1%. If you can tolerate a larger error, you can use higher value resistors.

Alternatively, you could use the right-hand schematic. S1 and S2 represent two switches in a 74HC4066 quad switch IC that is powered from the capacitor stack, or alternatively from a separate 9V to 10V supply. To measure the total voltage, close S1. To measure the voltage across the first 2 capacitors, close S1 and S2. You will need a level-shifting circuit to provide the 8.1V drive for the 74HC4066. Alternatively, if you use a 74HCT4066, you can probably drive it direct from the Arduino (you’ll be operating it with Vcc outside its recommended operating conditions, but well within its maximum rating).

In the event that the capacitors become unbalanced due to different leakage currents so that one is in danger of exceeding its rated voltage when you recharge them, you could also use 74HC4066 switches to connect a resistor in parallel with the capacitor(s) concerned.

PS - what will be powering the Arduino?

Hello jackwp,
You asked "Is that megasecond (1 million seconds, about 11.5 days)?
Or did you mean micro second ( 1/1000000 of a second) ?"

I meant 11.5 days. The original post wrote about goal of "periodically measure each supercapacitor voltage". The period is assumed to be a long time. Floating capacitors are commonly used on Arduino internally in the EEPROM and Flash memory circuits. The voltages on millions of floating capacitors are measured every day by millions of people using MOSFET gate terminals, not MOSFET source/drains.

You can change your circuit to observe the two floating nodes between C4, C5, and C6 by connecting the GATE of a MOSFET in a source follower configuration. You can the calibrate the measurement by measuring the threshold voltage (Vt) of the MOSFET when not connected to the DUT (device under test). This Vt is almost constant for a single MOSFET. It can be subtracted from the voltage measured at the MOSFET source.

This measurement will not show a constant voltage on the series capacitors. As the megaseconds tick by, after ten years, the leakage currents will show up as voltage changes, like on a Flash memory chip. But Flash memory chips have superior dielectric films compared to the supercapacitors.

Thanks for all the replies. The caps are 310F Maxwell supercaps with a leakage current of 0.45 mA. I'm going to use a solar panel to charge these caps. The caps will power a small load when it's dark. For now, the Arduino is just a data collector and will be powered off a separate battery. I will have a balancing circuit attached to these caps as well which prevents any cell from going over 3.65 V (Let's Learn About Super Capacitors! (A Practical Guide to Super Capacitors) : 10 Steps (with Pictures) - Instructables). I didn't realize I could use such large resistors in the voltage divider (i.e., ~ 1 M). I had read that the total resistance going into the analog port should be on the order of 20 K. I also will investigate the optoFET idea. It's not a big deal to make proto circuits for all these suggestions and see which one's work the best. I might even learn something. The MOSFETs I wanted to use are logic level MOSFETs (e.g, IRLML2502).

I also want modify this circuit for use in monitoring the cells in a 2-cell and 3-cell lithium polymer battery. The battery would not be charged with solar.

HappyHippo:
I didn't realize I could use such large resistors in the voltage divider (i.e., ~ 1 M). I had read that the total resistance going into the analog port should be on the order of 20 K.

Higher values are OK to use, with some caveats:

  1. The input resistance of the ADC is quoted as 100Mohms typical. Therefore, you can expect that each 1M of source resistance will introduce about 1% error.

  2. The Arduino analogRead function allows very little time between switching the ADC to the requested analog input and starting the conversion. This means that there can be insufficient time for the sample capacitor to charge if you are using a high source resistance and read a different analog input last time, resulting in apparent crosstalk between the inputs. You can avoid this in software, or (if the voltages you are measuring change only slowly), in hardware - hence I suggested the 0.01uF capacitors.

  3. Using a high source resistance will mean that the pin is sensitive to noise pickup. This can be avoided by using careful layout and/or by adding the 0.01uF capacitor to ground.

HappyHippo:
I will have a balancing circuit attached to these caps as well which prevents any cell from going over 3.65 V (http://www.instructables.com/id/Lets-learn-about-Super-Capacitors-A-Practical-G/step7/Balancing-Your-Series-Banks/).

That’s a nice balancing circuit, however I would modify it to use one less resistor and have better noise immunity - see attached.

HappyHippo:
I'm a newbie with electronic hardware. I want to periodically measure each supercapacitor voltage in a series bank of three. The maximum supercapacitor voltage is 2.7, so the bank will not exceed 8.1 V. In fact, the voltage will be limited to 2.65 volts per cap. When I'm not measuring, I want minimum current draw.

The one issue with your circuit is that the p-channel MOSFETs will not turn on fully if the caps are at a low state of
charge since you rely on the capacitor voltage to provide Vgs for them. A CMOS analog switch is the better solution
but still relies on an adequate supply voltage to operate. But given the leakage current rates the simple option of
high-value resistors in the divider (plus capacitor) seems the simplest.

Don't remember seeing how often you want to take the readings. Once a minute, 3 times a day, or what.
And when you get the readings, what do you want to do?

I expect the whole thing to shut down should the caps fall below a useful voltage. The load would also die eventually if the cap voltages get too low. I would vary the data collection on the Arduino based on how fast the voltage is falling. Probably would be once every 10 seconds to start. I haven't decided what load to use yet but it'll be something with very low drain such that the caps would normally not die in the overnight period when there is no light. Since I found out that I can use much larger resistors in the voltage divider, I don't really see a need for the MOSFETs in this demonstration. But I still might use the MOSFETs anyway because I want to see how they behave in this circuit. I'm trying to learn more about solar panels, supercaps, electronics, and Arduinos. Once I get the whole thing working, I'll probably enhance the Arduino's role. Maybe use it as a backup to make sure the caps don't overcharge (even though the balance circuit is supposed to do that), do some additional things if the solar panels charged up the caps and there is still power to be had, and so on. I also have another project with an Arduino robot that I want to make remote controlled (optionally), roam around the house and sense motion at night (and shoo away our pets should they come too near). I plan to use the voltage monitoring circuit for the LiPo batteries I'm using in the robot as well. Progress is slow on both projects because, you know, there is this job thing.

Yea, for lots of us, it is a great hobby. I don't make any profit from my arduino (not yet anyway). I learn, and enjoy it. I use solar panels, and have supercapacitors (taken off of busses, they can weld stuff). It is a great learning experience. Be sure not to over voltage the supercapacitors( you may damage them).