uCurrent is a tool for measuring small (micro) currents by Dave Jones (EEVblog). He published source files: https://www.eevblog.com/projects/ucurrent/

I took his schematic and recreated in KiCad (no changes in schematic). Then created my own PCB layout and made the board (I have used 0.1% resistors instead of 0.05%, different type of switches, and used 2 single-channel MAX4239 instead of 1 dual-channel MAX4239). It is a good project to spend time for a hobbyist ;)
enter image description here

Problem is it behaves really strange, it was giving unexpected values, I couldn't understand what was going on. Where did I make mistake, or what component is failed. So I started to debug it.

Finally, I found some oscillations across resistor R14:
enter image description here

OK, that explains strange output voltages. But I still didn't know what was causing it.
Then I simulated in LTspice (AC analysis), just to verify the opamps part: enter image description here enter image description here

To my surprise AC analysis showed that the system is not stable: enter image description here Phase shift is -240deg at 0dB, so the oscillations are explained.

But how is it possible that Dave's uCurrent is working? (I assume without oscillations)
How to stabilize it?

  • \$\begingroup\$ Try asking Dave. Maybe there's a typo in the schematic? \$\endgroup\$ – Hearth Oct 5 '19 at 12:48
  • \$\begingroup\$ Your Spice run shows stability...unless you're feeding some output back to input. \$\endgroup\$ – glen_geek Oct 5 '19 at 13:52
  • \$\begingroup\$ @glen_geek I expect system to be stable when phase shift is less then -180deg at all frequencies with positive gain. Then this circuit is not stable according to this. Am I wrong? \$\endgroup\$ – Chupacabras Oct 5 '19 at 14:07
  • 1
    \$\begingroup\$ You're looking at total phase over two cascaded stages. Your stability criteria of 180 degrees is correct when applied to one fed-back stage. I see no overall feedback path from V(out) back to input (SIG). \$\endgroup\$ – glen_geek Oct 5 '19 at 15:28
  • 1
    \$\begingroup\$ A question: when you created your own pcb, did you use a ground plane? If not, this provides an easy explanation why one of your op amps is oscillating. Redo your pcb. A ground which consists of a thin trace winding around a board which contains large-bandwidth op amps is an invitation to disaster. While the "virtual ground" is a good way to control the current flow in the various shunts, it will do little to decouple the op amps. So you need to make a hybrid sort of ground, with the virtual ground being a point which is tied to the larger ground plane. \$\endgroup\$ – WhatRoughBeast Oct 5 '19 at 16:01

I tried many things, changing ICs, changing caps, etc. Finally I found this thread:

Dave found the culprit. It is not the output stage opamp. Problem is in the opamp which makes virtual ground. I have used LMV321 from onsemi and Dave had the same issues with that.

There are 2 solutions for that:

  1. change onsemi's LMV321 to TI's one
  2. add 100nF capacitors from V+ to virtual ground and from V- to virtual ground (in my schematic from VDD to VGND, and from VSS to VGND)
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.