Charging capacitor bank with current limiting circuit

As Madmanguruman says, the capacitor is in the wrong place.

The opamp is trying to keep the voltages on it's inverting input the same as the non-inverting input, which is 240mV in your example above. To do this with just Rsense present, it must keep 480mA flowing through Rsense as you say.
Now, with the cap in series, it will actually work to charge the capacitor as you have it. However, the catch is that it will not be at a constant current, and the cap will only charge to 240mV, since this it what the opamp needs to keep the balance.
The cap does not pass DC, so the current is initially 480mA, and drops exponentially down to 0 as the voltage rises (and the voltage across the resistor drops)

Another thing to understand here is that a simulation is only as real as you make it, and in some cases the ideal components cause problems. It's quite common for the simulator not to converge or produce odd results if there is no DC path available. Also with a transient simulation, you sometimes need initial conditions set to observe a process.
For example, if I simulate the above circuit in LTSpice with an ideal 1F capacitor, the simulation does not converge (never finishes) If I add a high value of parallel resistance (10MΩ, this is actually very conservative for such a large value, probably be much lower) to provide a DC path, and (very roughly) simulate real world imperfect capacitor leakage, the simulation works:

Cap Charge not constant

Simulation:

Cap Charge Simulation

The 240mV is produced by the 24nA across the 10MΩ resistance (24e-9 * 10e6 = 0.24V) However, the cap starts the simulation at 240mV. Is this what will happen in real life? It's unlikely, so we need to simulate things as it will be when power is switched on, or at least with the cap starting with 0V across it. The reason this happens (in SPICE at least) is because there is an initial DC operating point simulation done before the transient simulation starts.

If we do the same simulation with an initial condition specified, we can see the "interesting" bit that happens prior to reaching a steady state:

Cap Charge with initial condition

So remember to be aware of the difference between ideal and real world components. If simulation results appear strange, then try adding some ESR/ESL (equivalent series resistance/inductance) and parallel resistances to simulations that correspond with the components you intend to use (datasheet will give values usually)
Also be aware of tolerances, for which monte carlo simulation is very useful.

Finally, here is the circuit with the cap placed in the right place, (although you may want high side current limiting in your final circuit):

Constant Current Cap Charge

Simulation of current through cap and voltage across it, notice the constant 480mA up until the cap is fully charged to 4.8V (initial condition used again to see the cap charging):

Constant Current Cap Charge Simulation

One last thing, make sure you do not use the LM741 in your final circuit, it's completely obsolete. Choose a decent general purpose rail to rail input/output opamp (rail to rail means it can swing all the way to each rail at the output and handle voltages up to each rail at the input, many opamps, including the 741, cannot do this - another departure from the convenient world of ideal components)


Current needs to flow through R_sense to cause a voltage drop in order for the circuit to function.

EDIT: After looking a second time at your circuit, I realized that there are some limitations.

The absolute maximum voltage that you'll be able to charge the capacitor to is \$V_{out(OA1)} - V_{th(M2)} \$ which isn't going to be terribly useful.

\$ V_{out(OA1)}\$ is going to be less than the 4.8V supply, since a 741 op-amp isn't rail-to-rail output. Let's assume it can output 4.8V for now. The worst-case gate-to-source threshold \$V_{th}\$ for an IRF530 is 4V. This leaves only 800mV of capacitor voltage before the MOSFET will pinch itself off (there won't be enough gate-to-source voltage to keep it turned on).

As you can see, you're able to limit the capacitor current, but the voltage will be very low due to the circuit configuration you have.

The -120V is obviously a simulation 'oops'. The capacitor should start out like a short and ramp up to its final value smoothly.


I have looked at the same question: How to charge a supercapacitor quickly to 5V? The main problem is that the throttling component - be it a resistor, MOSFET, linear regulator - would most likely dissipate a significant amount of heat. If it's an IC that limits the current, then that component might fail, or shut down temporarily (thermal protection), and take longer than expected to charge the supercapacitor.

However, there are some solutions that generate very little heat, or that can handle the heat robustly:

Solution 1: Throttle the current with a switch-mode circuit and an inductor (very little heat will be generated). But the control circuitry is not trivial.

Solution 2: Use a special linear charging IC designed for the job. I concluded the LTC4425 is good for the job, since it has a mode where it will charge as fast as possible while maintaining its temperature within the acceptable limit. In the spec sheet, the thermal dissipation limit was around 2 Watts or so. That only applies if the thermal pad is soldered down, however.

The 2W thermal dissipation limit means, when the supercapacitor is empty, the LTC4425 will charge with initially 372mA (since 5V * 0.372A is roughly 2W), and then increase the current from there on. As the supercapacitor voltage increases, the heat loss in the LTC4425 decreases, and it can charge faster - up to the 3 Amps when the supercapacitor is already at 4V and above.

So this inspired the best solution, in my opinion:

Solution 3: Combine the LTC4425 with a power resistor in parallel. This way, the power resistor will handle most of the initial charging current and heat, while the LTC4425 will complete the supercapacitor charging much faster than the resistor would by itself.

Here's a calculation I made: If I can draw up to 2 Amps from a 5V source, I would set the LTC4425 current max limit to 1.7A, and connect it in parallel with a 3 Ohm resistor. In combination, the charging current is relatively flat near 2 Amps until the supercapacitor is charged. That's as fast as the power source allows, without any part overheating.

enter image description here