Problem: I'm cheap, I want to do a high-side current monitor, and low offset opamps aren't cheap.
Tools: it's all being driven from a microprocessor, so I can do oddball things if I want to.
Just use a plain 'ol op-amp, and once every second or ten turn off the charging circuit & measure the current sense output. This should tell me the op-amp offset, which I can then subtract in software.
The circuit I'm thinking of using (and many others, for that matter) are referenced to ground; negative offsets simply will not register.
Shift the output, in some controlled fashion, so that it never goes to zero, even when the opamp is at its _maximum_ (not _typical_, thank you Digikey) offset.
See the circuit below. It has a small error from the finite transistor beta -- but I ain't gonna worry about that, it'll be comparable to errors due to resistors being off. The total gain will be set by Rfb/Rin times the ratio of (Rshift|Rset)/Rtop, degraded a bit by the transistor beta. C1 will serve to keep things stable, and to act as a low-pass filter. When I turn things off to measure offset I will have to wait for the filter to settle -- but I can survive that.
An obsolete thought:
This is what I was originally going to ask, but then I thought of using the reference. So I'm going to ask it anyway, just to see what folks think.
Before it occurred to me that analog to digital converters imply references, I had thought of the below circuit, but with the Rshift resistor omitted (and this was the crazy part) Rbias set -- instead of equal to Rin|Rfb -- to zero, or at least to less than Rin|Rfb. Then the bias current of a cheap current-sourcing op-amp would lift the negative pin a little bit, and insure me some offset on my output.
So my question was going to be how stable folks would expect the op-amp offset to be, and whether or not the idea of intentionally inducing offset in this manner was a good idea, or just too weird.
So -- whadda ya think? Is it going to work? Chopper-stabilize your cheap op-amp by chopping the whole freaking supply!!
| | | | | | .-. .-. .-. | | | | | | | | Rin | | Rbias | | Rtop '-' '-' '-' | | Rfb | | | ___ | | | .-----------|___|----o | | | | | | | || | | | o-----||------. | | | | || | | | | | C1 | | | | | |\ | | '-----------)-o----|-\ | |< | | >-----o----| Q1 '------|+/ |\ MMBT3906 |/ | | U1 | o-----> current V >
___ | Vref o-------|___|----o Rshift | .-. | | | | Rset '-' | | === GND (created by AACircuit v1.28.6 beta 04/19/05