As I said in my last post. I am mostly happy at how the Loaded Dummy performs, but with the caveat of some inaccurate voltmeter measurements.
After some more tuning and testing, I’ve identified two issues that leave the project just shy of my expectations. Neither are deal breakers, but are enough to make me want to investigate further and see if I could improve if not solve them.
Two issues, identified and quantified
The first issue has to do with the voltmeter, specifically the input divider to convert a 2V input to 200mV for the meter. I had whacked together a 10:1 resistor divider which is apparently a bit off! This also might be a bit more complex than it seems. You’ll see why in a moment.
The second issue is that Iset reading seems to be 1.1mV offset (positively) from where it should be. So switching from “safe” to “load” causes the reading to drop 11mA. This appears to be a fixed offset across the entire range. Of course, the Iset reading is compounded with the first issue above when trying to display a reading in the 2V range (above 1.999A).
Here’s the data I collected:
First thing to note, that is very encouraging, is that the current reading from the shunt in loading mode, 200mV range (i.e. no resistor divider) is bang-on accurate, particularly after I adjusted the pot to calibrate it. At the very worst, it might be one count off at the extreme of its range, which is far better than one could hope really! This already makes it a very precise and usable instrument, which is why I am not too disappointed.
However, where the problems begin is when I switch it to the 2V range to read currents 2A and above. The accuracy seems to make a whacky curve centred on 0.5A and gets worse toward the edges. That 10% error at 100mA really is out, but that just might be a fluke of one count out, representing a difference of 10mA. At 1A the difference reaches the edges of acceptable at 1% off, still a difference of only 10mA and it gets worse as we go up the scale, going up to 1.67% at the top of its range.
One could look at the numbers displayed – 0.99 instead of 1.00, 1.48 instead of 1.50, 1.97 instead of 2.00, and 2.95 instead of 3.00. Doesn’t seem that bad, does it? The percentages tell the true story, as does what those numbers actually mean. 2.95 vs. 3.00 is five counts out, but those five counts represent 50mA and is 1.67% off of where it should be. My initial goal with this instrument was to stay within 1% accuracy, being about the best I could do with the equipment I have.
In a way, the numbers below 2.00A for the 2V range do not matter to me. I would use the 200mV range and be almost 0% error through its whole range, but being 30-50mA off for 2.00-3.00A is quite unacceptable.
Obviously, this is the fault of the resistor divider on the input for the 2V range. I did manage to get it to well within 1% on a breadboard, and would have figured any error would be a linear percentage across its range if it was a little bit off. However, I think it is more complex than that, as the data suggests.
If my interpretation is correct, I suspect that my divider is reacting with paralleling affects with the smd resistors already a part of the meter. The instructions for the rather crappy Velleman meter say that for different ranges one must remove these resistors and replace them with values for the desired range. However, switching out two resistors is an unholy pain in the butt and I would rather just switch the entire divider in and out and leave the meter as it was made by the factory, under the assumption that this would retain the 200mV accuracy (which it has). Quite obvious from the instructions, this meter was intended to be set for a specific range and left there, not for switchable ranges. Regardless, I am going to make this work.
Here is the little daughter board I made for the meter, which includes a 9V regulator for its power supply and a resistor divider for the 2V range.
This is known as a “ballast and shunt” configuration, which is the accepted standard for voltmeter range inputs. A 10:1 divider, the ballast in this case is a 1MΩ 1% resistor, and the corresponding 111,110Ω combination of resistors for the shunt, yielding, theoretically, a divide by 10 input divider.
This normally would have been enough to call it a day but with this meter, I suspect that the shunt in particular is reacting in parallel with the 10MΩ smd shunt resistor which is built onto the meter itself. Instead of 111,110Ω, this would yield 109,890Ω which might be the reason this error is occurring.
A back-of-the-envelope calculation would make this 10:1 divider a 10:0.99 divider. Using this, at 3.00A the reading should be 2.97A, or out 30mA, it is out 50mA so that’s kind of close. At 2.00A, it should read 1.98 and actual is 1.97, and 1.0 should read 0.99. So kind of close. It seems that my divider, particularly the shunt, is off by a bit more than that so this accounts for the discrepancy.
What to do about it
Since doing away with the 2V range would render the instrument close to 100% accurate, that does seem like the easiest option, however that would limit my device to only being able to measure up to 1.999A when I want it to go to 3A. So that is not an option.
The way to proceed would be to measure the shunt resistors in-situ and get its exact reading, and adjust it from there. Naturally, since the 1MΩ ballast resistor is only 1% tolerance, that would have to be measured too.
Once I figure out the ideal value for the shunt, it would be necessary to replace one or more resistors to home in on that value and tighten the accuracy. I might even include a potentiometer just to dial it in correctly and not waste half my life testing resistors to get close to the ideal value.
That other thing
In terms of the Iset being offset by 1.1mV… I’m not quite sure what to do about that yet. I do not view it as having the same importance as the other problem outlined above, and it is something that would be nice to fix, but isn’t necessary for operation.
The obvious reason for this offset is that Iset is at different potential than the voltage reading across the shunt. It could be the aforementioned ground offset, where the “ground” for the potentiometers and/or the opamps is offset positively by 1.1mV, though you’d expect the current through he shunt to to increase commensurate.
Soldering on bodge wires to try and get all the grounds more or less thee same seemed to only work for the large adjustment pot and had no effect (seemingly) for the trimpot or opamps.
The most likely mistake – a trap for young players (i.e. me)
What I suspect is the actual culprit is the input offset voltage of the opamp combined with my choice of design which caused it to be affected by this offset.
The LM358 has a stated low input offset voltage of 2mV, and my result is out by 1.1mV so that’s kind of better than expected. The first opamp is a buffer, and would have a result between 0-3.2V. Not a problem, well outside the range of this offset issue. The problems begin when I feed the result of the first opamp through a trimmer pot to divide it by 10, putting it in the range of 0-320mV. At this range, an error of up to 2mV becomes significant. Yet another reason why working with such low control voltages becomes a serious problem.
Compounded also would be any other errors due to variance in ground potential as well as any effects from noise etc.
This might be something I simply can’t solve, at least easily. The first solution would be to choose a different, better opamp with an offset null capability to zero that error out or to use a chopper amplifier like Dave Jones did for his µCurrent. A bit overkill for my project I would think. I have deliberately avoided using expensive parts or going beyond what I am capable of with the equipment I have.
I’ve seen various other solutions involving different opamp configurations that go well beyond what I intend for my design.
Another solution would be to somehow clamp it down minus 1.1mV but how to do that is another question. 1.1mV isn’t exactly a value I could find in a zener diode and more parts means more hacking of my pcb and more error that could be introduced.
I think the only thing left to do here is take a few more measurements to see where this error is coming from. Once I’ve determined it is the opamp offset voltage, I will probably just leave it at that and save it for a possible version 2.0 rebuild at some point in the future.
In watching Peter Oakes’ excellent power supply series, he encountered the offset also, and states it is due to the differing potential of OV point for everything to be referenced the same. This makes perfect sense to me, and really if I were to fix this (or try to) it would involve re-spinning my board which I won’t do right now.
When I mosey on over to the bench, my first task will be to measure those input divider resistors and trim that to make the 2V range accurate.
Then, a few more measurements to confirm my opamp offset voltage theory.
Then, its time to finally put the sucker in a case!
As expected, what was supposed to be 111.11kΩ shunt resistor is measuring 98.57kΩ. That’s a bit off! I had difficulty measuring the ballast resistor, which is marked 1MΩ but reads 99ish kΩ which I know isn’t true. Just part of measuring in situ. So, with that in mind, where are we?
Well I know that 99.57kΩ can’t be the answer. Then 2.00A would read 1.79A which is way off. With the resistors isolated, I get a reading of 110.71kΩ, which would make the answer 1.99V which is on the other side of reality which displays 1.97. Hmm, so somewhere between there. The math says I should add 401Ω to that mix to make it 111.111kΩ but I know that ballast isn’t bang on 1MΩ either and could vary by as much as 1%.
I think the best solution would be to remove the 100Ω resistor from the chain, meaning I’d need to add theoretically 501Ω and replace it with a 1kΩ trimpot – because that would be half its range and I could really tune the bugger. Now, I seem to recall i’m a bit short on 1kΩ trimpots, lets see if I can dig one up…
It gets weirder
Okay, to the 1kΩ pot was a failure. I could get it to maybe change a couple of counts on its full range, which was just ridiculous, and nowhere near where i needed it to be. After some exhaustive testing and slopping soldering, I found that after removing the 1kΩ resistor, the 1kΩ pot, I needed about 3kΩ of resistance to trim it up. I simply replaced both with a 10kΩ pot and tuned it to about there. So, its fixed! Now both ranges agree. I’ll have to fiddle with the pots to get them perfect, but that’s that problem solved. Love when that happens.
This is a very good result. I am designing other things that will require voltmeter displays, and I have a plan to make five displays in total. Each will need this sort of divider. I had planned my board layouts to use fixed resistors, but after this experience, I might subtract the lest significant one or two resistors and replace them with a pot. It will be interesting to see if the ICL7017 based displays have a similar issue or if i can get away with fixed resistors. Fortunately, I already have this breadboarded up (see recent post on the subject) so that’s ready to test.