What Electrical Component Can Reverse the Polarity of a Circuit

Hi Guys,

I know this topic has been opened before, but my case is special.

I'm working with electrochemical capacitors and, in order to test their performance i need to read voltage evolutions with time during processes of galvanostatic charge and discharge of the capacitor.

Translating it to easier terms: I wish to automate a constant current source in order to make it reverse polarities between the two poles of a capacitor -->

i.e.

"
begin at normal current.

if voltage = 700mV
reverse current

if voltage = 0V
reverse it back
"

and so forth...

I'm working with currents ranging from 0.2mA to 1A and voltages between 0 and 1.2V

Not sure if H-bridges would work in this case...

I've also considered to make my own bridge with 4 transistors... But I'm kinda lost from now on

Any ideas?

Motor drivers and relays can do this.

Not sure if H-bridges would work in this case...

Yes it will.

I've also considered to make my own bridge with 4 transistors.

Don't bother it is harder than you think. Most of those schematics you see on line are not very good.

A small DPDT relay will do what you want nicely - most H-bridges are only capable of
reversing a voltage source, not a current source. Its quite tricky to H-bridge
a current source as the drivers would have to have floating supplies. The bootstrapping
technique relies on having PWM.

Another approach is a high-current bipolar programmable current source/sink, using
an opamp and high current buffer in the feedback loop. You'd need a dual rail
supply for this.

Its quite tricky to H-bridge a current source as the drivers would have to have floating supplies.

But he is reversing the voltage charging the capacitor.

When you say "reverse current" do you mean the capacitor is discharging with the same current that charged it?

Grumpy_Mike:
But he is reversing the voltage charging the capacitor.

This is constant current drive, not constant voltage.

Noobian:
Motor drivers and relays can do this.

The problem with Relays is the response time. As the time scale of the voltage variations I'm measuring is around 10ms (the same as relays response time), I'll probably lose information.

At the same time, I'm afraid about current fluctuations created by the relay's inductor.

Grumpy_Mike:
But he is reversing the voltage charging the capacitor.

I am reversing the current... I revert it as the measured voltage developed between the capacitor poles reaches 700mV.

edgemoron:
When you say "reverse current" do you mean the capacitor is discharging with the same current that charged it?

That's exactly what I'm doing!

Hi,
What performance figure are you testing for?
What capacity?
What voltage rating?

Can you please tell us your electronics, programming, Arduino, hardware experience?

Tom.. :slight_smile:

I'm with Tom on this - it isn't quite trivial - and your range of 5000:1 in current doesn't make it easier.

So could you post circuits of what you're done so far and explain in what ways it is inadequate?

An idea of the accuracy you require would be useful too.

I'm thnking about the classical dual-slope a/d convertor topology as a possible approach...

Allan

There's no need for reversing current in your circuit, even though the current to the capacitor is reversed,
you just need a controlled current source to charge it and a separate controlled current sink to discharge it.

Hello guys! I really appreciate all the help you all have been giving so far. So let's dive into details.

TomGeorge:
Hi,
What performance figure are you testing for?
What capacity?
What voltage rating?

Can you please tell us your electronics, programming, Arduino, hardware experience?

Tom.. :slight_smile:

allanhurst:
I'm with Tom on this - it isn't quite trivial - and your range of 5000:1 in current doesn't make it easier.

So could you post circuits of what you're done so far and explain in what ways it is inadequate?

An idea of the accuracy you require would be useful too.

I'm thnking about the classical dual-slope a/d convertor topology as a possible approach...

Allan

I have prepared two explanatory figures I think will give you a quite reasonable understanding about the current state of my tests and the problems I want to solve. Figures follow in the Google Drive link below:

https://drive.google.com/open?id=0BzgTiRaz6lg-T2F0ajFubDVoTFk

Stating it simply, I have one major problem:

I currently invert the current source polarity manually pressing a buton on the current source.

I'd like to automate this process using the voltage reads between the electrochemical capacitor poles as the input to determine when the polarity should be inverted. Shortly: 700mV (reverse it), 0mV (reverse it back).

Why so? Cause I want to run these experiments for several hours, maybe days to see how the capacitor performance changes over time and each cycle of Charge-Discharge actually needs to be manually switched.

Should it be 700mV exactly? Yes, cause my supercapacitor system involves electrochemical reactions that should be avoided.

As soon as I handle that, I'll try to get rid of the NI-USB6009 board to do the measurements, if deemed possible. Consider that I take voltage readings of 0.0000V precision each 10ms.

About my experience with electronics: I'm a graduate in Chemistry but have worked with the Arduino UNO in one of my undergrad modules. In this module I have learned the basics of electronics and I have developed a low cost spectrometer to monitor a reaction. It was basically a laser, an LDR as a detector and a Wi-Fi board sending the signals to an online server. I am currently doing a postgrad module in microcontroller programming.

MarkT:
There's no need for reversing current in your circuit, even though the current to the capacitor is reversed,
you just need a controlled current source to charge it and a separate controlled current sink to discharge it.

As all this is a part of a masters degree which involves analytical measurements, I need to have signal precision, accuracy and robustness. Sadly I have just one of the Keythley current/voltage sources in my lab at the moment.

Consider that I take voltage readings of 0.0000V precision each 10ms.

So it seems you require 0.01% precision -> Accuracy of switching at about 0.1mV.

And presumably similar accuracy of your 5000:1 range current source and sink .

You'll earn your masters !

This isn't easy . Can it be done? Maybe. I don't have an off-the-cuff solution.

Allan.

allanhurst:
So it seems you require 0.01% precision -> Accuracy of switching at about 0.1mV.

And presumably similar accuracy of your 5000:1 range current source and sink .

You'll earn your masters !

This isn't easy . Can it be done? Maybe. I don't have an off-the-cuff solution.

Allan.

If I can't find a board to read the voltage data with such precision, I want at least to control the ,* switching process. And that process can be less accurate, considering that I've been doing that manually so far...

Hi,
OPs images.

Tom.. :slight_smile:

You've got to be pretty nifty to operate a manual switch within 10mS! How fast does your voltmeter respond?

Perhaps you could modify your requirements to something realistic

Allan

allanhurst:
You've got to be pretty nifty to operate a manual switch within 10mS! How fast does your voltmeter respond?

Perhaps you could modify your requirements to something realistic

Allan

My voltmeter is a NI-USB6009. Basically an aquisition board with a 32bit counter and 14 bits, 48 kS/s analog ins.

The point is. I don't need to operate the switch in 10ms. I just to need the response 10ms after switching, because the voltage drop during this period is what I use to calculate the equivalent series resistance. The NI-USB6009 handles that perfectly. The biggest issue would be if the switch were operating while I'm trying to read the system's response...

I think I hadn't been quite clear about that.

Hi,
So you need a sequence like this;

  • Charge cap at constant current.
  • When cap voltage reaches setpoint, STOP charge.
  • Discharge Cap at constant current.
  • Measure Rs (for however longs is needed).
  • When Cap is discharged, STOP discharge.
  • LOOP back to 1.

OR;

  • Charge cap at constant current.
  • When cap voltage reaches setpoint, STOP charge.
  • Measure Rs (for however longs is needed).
  • Discharge Cap at constant current.
  • When Cap is discharged, STOP discharge.
  • LOOP back to 1.

You need to have the pause between charge and discharge?
I can't see how you will measure Rs in the second method as you will have no current flow.

ESR is usually measured at 1Khz.

How are you setting your current rates?

Tom... :slight_smile:

TomGeorge:
Hi,
So you need a sequence like this;

  • Charge cap at constant current.
  • When cap voltage reaches setpoint, STOP charge.
  • Discharge Cap at constant current.
  • Measure Rs (for however longs is needed).
  • When Cap is discharged, STOP discharge.
  • LOOP back to 1.

OR;

  • Charge cap at constant current.
  • When cap voltage reaches setpoint, STOP charge.
  • Measure Rs (for however longs is needed).
  • Discharge Cap at constant current.
  • When Cap is discharged, STOP discharge.
  • LOOP back to 1.

You need to have the pause between charge and discharge?
I can't see how you will measure Rs in the second method as you will have no current flow.

ESR is usually measured at 1Khz.

How are you setting your current rates?

Tom... :slight_smile:

First option, since I'm applying a current, I can calculate Rs.

There is no need for a pause. In fact, it should be avoided. There is another kind of experiment that involves charging and then opening the circuit to measure the leakage of charge, but that's another story...

These studies are made at DC current. The 10ms thing is well stablished accross many scientific publications on electrochemical capacitors.

Just had a closer look at your circuit.

I'm puzzled. You have an adjustable resistor in series with the capacitor , and measure the voltage across it - presumably to determine the current.

And then drive it with a constant current source/sink.

So this voltmeter will show a constant value depending on the constant I setting according to V = IR.

The other voltmeter will show the increasing / decreasing voltage across the capacitor, which will vary as

C dv/dt = I.

Presumably you want to see how the capacitance varies with applied voltage by logging dv/dt - am I right?

And how that value changes after many cycles?

And you could also infer the capacitor's internal resistance by looking at the voltage jump as the current is reversed?

How can we actually help you? How does an Arduino fit in ? It's internal a/d is only 10 - bit resolution , and even using it's internal 1.1v reference only gets you to within a mV or so .

Allan.