As EDN's Design Ideas editor, I see a range of design submissions, from good, to not so good. A recent DI I turned down for several reasons included a high-side current sense circuit with implementation problems. This got me thinking about the different ways to accomplish current sensing on a voltage rail.
At their heart, the majority of DC current sense circuits start with a resistance in a supply line (though magnetic field sensing is a good alternative, especially in higher-current scenarios). One simply measures the voltage drop across the resistor and scales it as desired to read current (E = I × R (if I didn't include this, someone would complain)). If the sense resistor is in the ground leg, then the solution is a simple op-amp circuit. Everything stays referenced to ground, and you only have to be careful about small voltage drops in the ground layout.
But often, placing the sense resistor in a supply lead is the preferred approach. Why? Ground might not be available (e.g., a chassis-grounded automotive device), or you may not want device ground to be different than supply ground, which can lead to ground loops and other problems. So, what are the options?
The most obvious and explicit method is to throw a differential or instrumentation amplifier (inamp) across the sense resistor, but in practice this is rarely a good way. To accurately sense current, extremely high CMR (common-mode rejection) is usually required, which is both expensive and prone to drift.
How so? Let's consider an example design: 0-10A, 12V nominal, 5mΩ sense resistor:
For a 0-12V power supply, multiply that by 12: 240mA shift over the voltage range.
Note that a true three-op-amp inamp has lower sensitivity to resistor matching than a single-op-amp diff amp. Nonetheless, there are generally better ways.
Read more: Sensing current on the high side