# how to resolve LM358's huge error as a current sense differential amplifier

I've built a current sense differential amplifier that measures the voltage across a 1 Ohm resistor, to give me a reading for the current through it.

I've connected it as follows, all resistors are matched 10k to give a gain of 1:

(Image source: Electronics Tutorials)

I am powering it from a single rail 12 volt source. The problem is even though this is a rail to rail opamp (Output Low swing from 5-20mV) I'm getting a constant error of 0.62V and it seems the opamp is not able to go below this value.

I have tried to resolve this by connected Vout to ground using a 10k resistor, but that makes no difference whatsoever.

I tried it with dual supply configuration (+8V, -8V) and that seems to resolve the issue. However I want to run this off a single supply rail, so this is not a viable option.

How can I resolve this? I'm trying to measure the voltage drop across a 1 ohm resistor to give me a reading for current through the circuit (0-1V represents 0-1 A) so I can set up a current limit. A better way (or practice) to doing this is also welcomed. The initial (but not ideal) fix I can think of, is to offset the readings by a few volts?

Edit:

Changed R1-R4 from 10k to 100k and I'm down to about 30-50mV!

• electronics.stackexchange.com/questions/164119/… Commented Apr 10, 2015 at 15:45
• Where is your sense resistor connected? High-side or low-side sensing? Commented Apr 10, 2015 at 15:51
• High Side, in parallel with a 100ohm resistor to ground. So the current is 120ma and the opamp should read 120mv, however i get 640mv.
– MAM
Commented Apr 10, 2015 at 15:55
• Try adding a 4k7 resistor from the output of the op-amp to ground. This is documented in the datasheet, although they recommend using 6k2. This should allow the output to reach 0V. Commented Apr 10, 2015 at 16:08
• You're probably violating the Input Voltage Range spec. Datasheet I'm looking at says Vcc-2V is the max and you have it right up at Vcc. The LM358 is not rail-to-rail input or output. Commented Apr 10, 2015 at 16:35

LM358 is not a rail-to-rail opamp (neither input nor output).

The input CM range includes the negative rail and the output can swing close to the negative rail under the correct conditions, however this configuration passes current If to the output, and if that current exceeds (typically) about 50uA then the output can no longer swing all that close to the negative rail. This is all in the datasheet.

Your choices are to use a better op-amp (but it still will have to sink current so it can never get all the way to the negative rail) or create a negative supply. Up to you.

• I looked at the figure that i understand corresponds to how low the opamp can swing: VOL is quoted at a typical 5-20mv. I am more than happy if i get this. I dont understand :/
– MAM
Commented Apr 10, 2015 at 15:49
• They specify the 5mV (typ) 20mV (max) with a resistor (<= 10K)- note the less than - to ground (negative rail), not sinking current! Always check the test conditions- they may not be be what you hoped for. Commented Apr 10, 2015 at 15:59
• Im not sure i understand that, i have connected the output with the recomemded 10K resistor to ground. I still get about 500mv minimum. Just read your edit, will try that. If i understand that correctly, i must connect a resistor <10K to ground?
– MAM
Commented Apr 10, 2015 at 16:00
• Yes, it would make a big difference, but the errors will increase greatly because this inexpensive op-amp has a lot of bias and offset current. You have to do the math and see if the performance of this op-amp is adequate for your application. Commented Apr 10, 2015 at 16:08
• Changed the 10K to 100K's and im down to 30mv! Perfect for what i need!
– MAM
Commented Apr 10, 2015 at 17:35