Reducing effect of Rdson in MOSFETs when sensing currents above 1A - Page 1
Forum section: electronics / projects

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 02:43:13 am
content: Hi, I am working on a current measurement circuit.The specifications:Maximum 10 mV voltage drop sense resistorSense DC from 5 uA to 2.5 A - would not complain if I could get more0 to 5.25 V input voltage in the circuit, but want to prevent damage if the current is negative or the voltage goes above 5.25 V (clamping)Output goes to an ADC. I'll perform the necessary gain to make it work outUse a microcontroller to switch between sense resistors for different ranges.Instrumentation amp used for measuring drop has offset voltage of 15 uVFor the lower current range (under 1 A) I have no issues with selecting the sense resistors I need. However for the range above 1A, I end up needing a 1 mOhm sense resistor to avoid too much of a voltage drop. However most N-channel (P channel has worse Rds(on) MOSFETs I can find have have lowest Rds(on) values of 290 uOhm. Really for cost I'd use something maybe closer to 1 mOhm Rds(on). But to measure 2.5A comfortably this ends up skewing the measurements by a considerable amount. I have considered in the highest current mode to use the mosfet as a weird sense resistor in front of an instrumentation amp.My current sense resistor values are the following:Rds(on): ~2 mOhm: 50 mA to 2.5 A100 mOhm: 5 mA to 50 mA10 Ohm: 5 uA to 5 mA1 kOhm: 200 nA to 5 uA (can go lower, but let's just cut it off here)Graphed voltage drop depending on selected sense resistor (log scale)The current instrumentation amp I chose is the AD8231. Main reasons are the low offset voltage and the programmable gain (less bits needed on ADC).Considering all of this, is there a better alternative for measuring the high current range without the mosfets adding a large series resistance?

author: jbb
author_rank: Super Contributor
timestamp: November 20, 2024, 02:45:37 am
content: I think you’ll need Kelvin connections, also known as 4-wire connections.

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 02:46:15 am
content: Quote from: jbb on November 20, 2024, 02:45:37 amYes I am aware that. Just forgot to mention it.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: November 20, 2024, 03:25:34 am
content: Quote from: i509VCB on November 20, 2024, 02:43:13 amSure, you just move the MOSFET outside the current measure region.That can be as simple as (eg) 4 resistors for 4 ranges, which has the cost of a gain of 1/4, but eliminates MOSFET effects.Or, if that 1/4 is a problem, you can add a signal mux, to select which drop you are probing.Addit: Just checked and you can manage 4 ranges with 3 mixing resistors chosen to be == the 4th shunt, in which case your gains are 1/3, 1/3, 1/3, 1If you want the last gain the same, just drop mixing R's = 1/3

author: temperance
author_rank: Super Contributor
timestamp: November 20, 2024, 03:36:11 am
content: I don't understand the question. Do you want to use the on resistance of the MOSFET as current sense resistor?QuoteR-on has a tolerance > 10% and the on resistance will drift with temperature over a range > 10% for a 25 °C change in temperature.

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 05:33:20 am
content: Quote from: temperance on November 20, 2024, 03:36:11 amThe circuit I have is something like this:Where each smaller sense resistor can be switched in to allow a higher current range to be measured.The issue here is that if I used a 1mOhm sense resistor for the stuff up to 2.5A while avoiding a large voltage drop in the input, any mosfets I can find to switch a 1mOhm resistor in for sensing would have a higher R-on resistance than the sense resistor itself.Given that you mention it's +-10% for R-on, using just a mosfet to act as a sense resistor for the high current range up to 2.5 A would not be good.

author: Andy Chee
author_rank: Super Contributor
timestamp: November 20, 2024, 06:36:05 am
content: Just use a single shunt, and adjust the gain of your amplifier.If you must have separate shunts, then use a second instrumentation amplifier (one amplifier per shunt).

author: Siwastaja
author_rank: Super Contributor
timestamp: November 20, 2024, 06:46:19 am
content: One amplifier per shunt, one ADC input (many microcontrollers come with a shitload) per amplifier is by far the simplest solution.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: November 20, 2024, 07:57:29 am
content: Quote from: i509VCB on November 20, 2024, 05:33:20 amJust take equal resistors from each source to the opamp In, as already said in #3. That removes the FETs from the measurement entirely.They can equal 1k or 1k/3 and you use a slightly better opamp, to keep the same offset error sensitivity.

author: mtwieg
author_rank: Frequent Contributor
timestamp: November 20, 2024, 02:11:40 pm
content: Would you be fine with a chip which contains both the sensing amplifier and ADC? There are some such specialty devices with incredible accuracy specifications, for example the INA228-Q1 or INA229-Q1. Max offset of 1uV, typical offset drift of 2nV/C. With that you should meet your specs with a single fixed sense resistor (4mOhm), simplifying things immensely.

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 02:56:13 pm
content: Quote from: PCB.Wiz on November 20, 2024, 07:57:29 amI'm not sure I understand. What would this look like from a schematic point of view?Quote from: Siwastaja on November 20, 2024, 06:46:19 amBut then I need to switch between shunts, which involves mosfets, which returns me to where I started.Quote from: mtwieg on November 20, 2024, 02:11:40 pmI will look at that part. It does look interesting.

author: Siwastaja
author_rank: Super Contributor
timestamp: November 20, 2024, 04:06:44 pm
content: Quote from: i509VCB on November 20, 2024, 02:56:13 pmLike others have said, connect the amplifier across the shunt resistor only. It makes no sense to include the MOSFET in the measured path.

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 04:12:05 pm
content: Quote from: Siwastaja on November 20, 2024, 04:06:44 pmNow I understand, thanks for the hint there.

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 05:05:07 pm
content: Quote from: mtwieg on November 20, 2024, 02:11:40 pmFurther question here, I've done the math and I can't seem to get the numbers to work assuming a 4mOhm resistor. From what I've calculated and considering the worst case offset voltage of 1uV, the smallest current I would be able to detect assuming a worst case is 250uA. Assuming the typical 0.3uV offset it's still 75uV.I'm not sure if I am being too conservative with my calculations or if this shows that I should go to multiple amps/shunts. I do like the part you suggested and will probably use that regardless.

author: Kleinstein
author_rank: Super Contributor
timestamp: November 20, 2024, 05:51:26 pm
content: The normal way is to have the shunts directly in series and measuse the voltage over the whole chain. The range switching is only changing the current path, not the voltage reading part.For a large range one would still want several shunts, maybe with 1:100 stagging to get away with fewer. This is especially with a rather low burden to start with. The more normal burden voltage is in the 100 mV range at 1 A, maybe 75 mV or 50 mV for higher current.With the higher voltage one may have to consider 2 MOSFETs in series for switching, to reduce leakage current in one direction.In many cases one has anyway additional voltage drop from the switches, fuse and cables. Aiming for only 10 mV limits the dynamic a little.For the low currents (e.g. less than 1 mA) one could consider a TIA to get a low burden and a good dynamic range.

author: mtwieg
author_rank: Frequent Contributor
timestamp: November 20, 2024, 07:53:10 pm
content: Quote from: i509VCB on November 20, 2024, 05:05:07 pmDepends what you mean by "able to detect", which is IMO not obvious. Should distinguish between accuracy and precision. Required sampling rate/bandwidth also matters.1uV of offset with a 4mohm sense resistor means worst case error (i.e. accuracy) is 250uA (unless you allow for a calibration step which accurately measures and subtracts the offset). If you actually require 5uAaccuracythen I don't believe that's possible with a single sense resistor and amplifier. Thermal EMF alone would make that impossible...Precisionon the other hand is all about noise, drift, and bandwidth (or sample rate), not offset. To estimate that for the INA228, look at table 8-2 in the datasheet, where it lists ENOB for various settings for sample rate and input range. At most ENOB can be around 18 bits (with a very slow sample rate). For a full scale range of 2.5A, that would mean your precision is 9.5uA, still not quite 5uA. But for the INA228, full scale range is +/40mV, much more than your desired 10mV range. So the actual precision with a 4mohm sense resistor would be worse (like 40uA).It's possible you could achieve better precision by using a different analog sense amplifier (like INA240) with a high-end ADC.Your 10mV max voltage spec makes things quite a bit harder. IME most current sense ICs are meant to work with a full scale range of around 50mV, and that's generally fine unless the common mode voltage is very low (like you're measuring the supply current for the core of a CPU or GPU).

author: i509VCB
author_rank: Contributor
timestamp: November 20, 2024, 08:33:56 pm
content: Quote from: mtwieg on November 20, 2024, 07:53:10 pmThe intention is to use this for microcontrollers, I'd say something like 1.6V to 5V is the voltage range what would normally be measuring within.If I raise the allowable drop to about 100mV I can make the numbers work with a 50 mOhm shunt resistor while still having the low current range be close enough to what I would want. Maybe a 75mV drop is a bit better.For 3.3V and above a 100mV drop is probably fine.For 1.6V I would probably assume that a microcontroller wouldn't be guzzling amps of power at that rail voltage.QuoteI was considering adding a calibration load or two that I could switch in for subtracting the offsets.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: November 20, 2024, 10:39:41 pm
content: Quote from: i509VCB on November 20, 2024, 02:56:13 pmAs below, for 4 ranges which is likely more than you need.Quote from: i509VCB on November 20, 2024, 02:56:13 pmMCU's can take quite a lot of current form the low voltage rails, especially of someone wants to try overclocking.Usually the current is measured upstream of the last LDO stage, if one exists.MCU measurements usually focus on RUN currents and SLEEP currents, so I would suggest two ranges.For moderate currents, there is a class of current meter that has zero volts across the current sense, by using a current null amplifier.Current sense amplifiers tend to have slightly worse offset specs than the very best opamps, but they do manage gain and level shifting.I see new current sense parts like MAX49918 even have i2c gain adjust, which can simplify your shunt choices and keep the scale fitting better within the MCU ADC span.They can measure within -5V~+70V,

author: Benta
author_rank: Super Contributor
timestamp: November 20, 2024, 11:41:25 pm
content: This is the way to do it.The rotary switch symbolises your MOSFET switches. MOSFET on resistance plays zero role in the measurement. The opamp provides high impedance so the ladder is not loaded.Cheers.PS: I just reread the thread. This aligns with post #14 from Kleinstein.PPS: a 1k resistor in the opamp feedback would balance out offset current/voltage.

author: Doctorandus_P
author_rank: Super Contributor
timestamp: November 21, 2024, 02:30:52 am
content: You can use something like below.The Idea is only one FET is on at any time, and the resistors right of the fet do not carry current, and therefore there is no voltage drop over them.But if you really want to measure down into the nA ranges, then FET leakage is going to be a problem you have to consider. Although with the circuit above the FET's that are off will also have a low voltage drop over them, so maybe it's not too hard, but you will at least have to verify.Another thing to be cautious about is when all FET's are off, for example when the measurement circuit does not have power.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: November 21, 2024, 02:59:17 am
content: Quote from: Doctorandus_P on November 21, 2024, 02:30:52 amThose resistors need tosumto decade values, so values like 99mOhms are indicated.However 99mOhms is much rarer than 100mOhms, so a practical design would probably use 100mOhms and 10 Ohms in parallel, to be 'near enough' (0.01%).

author: inse
author_rank: Super Contributor
timestamp: November 21, 2024, 04:53:01 am
content: That was necessary when an analog meter or a simple digital meter were built to keep the scaling.But if it’s processed by a microcontroller it can be fixed mathematically.

author: i509VCB
author_rank: Contributor
timestamp: November 21, 2024, 04:57:40 am
content: Quote from: Benta on November 20, 2024, 11:41:25 pmI gave this a try in simulation and it seems to work out. I'll probably use this with the INA228.Quote from: PCB.Wiz on November 21, 2024, 02:59:17 amThis seems to be the case for all the resistors except for 1mOhm. I'll probably need to just put a parallel resistors at each level on the ladder to create those.Although I question whether it makes any practical difference for that little bit extra resistance to just use off the shelf power of 10 resistances. I assume I could just have some calibration loads to compensate for those? (My device can also provide a voltage source at the DUT+ side.

author: Doctorandus_P
author_rank: Super Contributor
timestamp: November 21, 2024, 05:02:23 am
content: Quote from: PCB.Wiz on November 21, 2024, 02:59:17 amNo they don't. They don't even have to be near a factor of 10 or 100. It's just a simple matter of calibration. They can just as well be 0.1Ohm 2 Ohm 33 Ohm 560Ohm, or any other convenient spread. If you want more certainty in a certain range, then you can even put in an extra resistor.You also don't need "high accuracy" resistors. Even 0.01% resistors need separate calibration if you want more as 4 digits of accuracy, so why bother? Stability is important. both temperature coefficient and drift / aging. Often such specifications are related, but they don't have to be.(With only 10mV over the shunts, errors due to heating will also be limited).

author: Siwastaja
author_rank: Super Contributor
timestamp: November 21, 2024, 07:44:21 am
content: Quote from: Doctorandus_P on November 21, 2024, 02:30:52 amThat's a very neat idea but how are you going to Kelvin sense? Sure this circuit removed the MOSFET from the measured loop which is a big win, but there is still some copper on the path of current, and copper has terrible temperature coeff of resistivity.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: November 21, 2024, 09:00:15 am
content: Quote from: Doctorandus_P on November 21, 2024, 05:02:23 amThat's very quick to say, but rather longer to actually do.If you are making 10,000, maybe it's worth the test fixture trouble.I think the OP is only making one or a few, so they may prefer to avoid having to create many precision current sources and calibration routines, merely to save the simple step of paralleling some resistors.

author: voltsandjolts
author_rank: Unknown
timestamp: November 21, 2024, 09:07:54 am
content: Or simply do the math with the nominal resistor values, if the precision obtained from actual calibration isn't required.

author: Siwastaja
author_rank: Super Contributor
timestamp: November 21, 2024, 11:22:11 am
content: Quote from: PCB.Wiz on November 21, 2024, 09:00:15 amCalibrating one-offs is not a big deal. I mean, if accuracy is at all important, youneedsome way to verify that anyway, e.g., own an accurate enough multimeter to compare against. And once you have that, you can just tweak multipliers in the source code, compile, flash, measure, adjust. Takes a few minutes.It is actually batch size ofsome hundreds to thousandswhich is awkward. Tweaking code file is out of question. Manual measurement gets tedious. So you need to automate pretty much the same way as you would need for a batch of 10 000 or 100 000.Temperature compensation is PITA in all batch sizes though. Simple offset/gain is not.

author: Kleinstein
author_rank: Super Contributor
timestamp: November 21, 2024, 01:58:04 pm
content: Quote from: Siwastaja on November 21, 2024, 07:44:21 amOne can get Kelvin sense connection for the lowest resistor with a suitable layout (e.g. sense low from the resistor). For the other resistors in series it would not work so easy but these are already less critical, with larger resistance. To get Kelvin sensing with more resistors one would have to switch 3 of the connections, e.g. with an additional CMOS switch for the 2 voltage reading connections.For the use with a µC the currents are normally way smaller, usually < 100 mA and often < 10 mA.

author: i509VCB
author_rank: Contributor
timestamp: November 22, 2024, 06:14:50 am
content: Quote from: Kleinstein on November 21, 2024, 01:58:04 pmI tried this and I think I got something that would work according to that. R120 is the 1mOhm resistor: