A DI I rejected recently had several reasons, including a high-side current sense circuit with implementation issues. This got me thinking about different ways to implement current sensing on a voltage rail.

Essentially, most DC current detection circuits start with a resistor in the power line (although magnetic field detection is a good alternative, especially at higher currents). A simple measure the voltage drop across the resistor and scale it as needed to read the current (E = I × R (if I don’t include this, someone will complain)). If the sense resistor is at ground, the solution is a simple op-amp circuit. Everything is referenced to ground, you just need to pay attention to the small voltage drop in the ground layout.

But generally, placing the sense resistor in the power leads is the preferred method. Why? Ground may not be available (for example, chassis grounded automotive equipment), or you may not want the equipment ground to be different from the power ground, which can lead to ground loops and other problems. So, what are the options?

The most obvious and clear way to do this is to put a differential or instrumentation amplifier (inamp) across the sense resistor, but this is rarely a good approach in practice. For accurate current detection, extremely high CMR (Common Mode Rejection) is often required, which is expensive and prone to drift.

How could this be? Let’s consider an example design: 0-10A, 12V nominal, 5mΩ sense resistor:

The most obvious high-side current sensing solution, uses a differential amplifier.

Don’t even consider using discrete resistors for this unless they are part of a precision matching network (so of course not really discrete). For a supply voltage offset of 1V and a differential amplifier CMRR of 80dB (which translates to about a 0.01% resistor match), you will see a current offset equivalent to 20mA (a 1V change of 80dB CMRR results in a 0.1 mV offset reference input; dividing scaled at 5mV/A with a 5mΩ sense resistor).

For a 0-12V supply, multiply it by 12: 240mA offset over the voltage range.

Note that a true three-op-amp in-amp is less sensitive to resistor matching than a single-op-amp differential amplifier. Still, there are usually better ways.

The design idea I mentioned above uses a single op-amp differential amplifier with discrete resistors. In fact, a resistor can be trimmed with a potentiometer, which I initially thought was for CMRR, but it turned out to be a gain adjustment! This is possible in a sense if the supply voltage is rock solid, but it’s not a good idea.

The second high-side feeling method is one that I came up with many months ago and involves some lateral thinking. I put things on their heads and use V+ as my reference rail instead of ground. This is conceptually similar to low-end induction of negative power, and if you can get rid of it, it’s a good solution.

Further processing of the output (eg, a comparator) refers to V+. R4 is optional and used for protection.

The third method I’m going to tell you is now common in IC solutions, where transistors and op amps work together for ground referenced current measurements. I didn’t know about this design when I came up with my inverted op amp, which is probably a good thing since it saves me a transistor.

ST’s TSC103 uses a BJT in the loop.

And Linear Technology’s LTC6102 uses MOSFETs.

Sources for such parts include ST, Maxim, and Linear Tech, but you can easily implement the circuit yourself.