For the past week and change, ever since getting my boards from the fab in the post, I’ve been assembling and testing and fiddling with my dummy load project. I outlined a few beginners mistakes in my last mention, and since, I’ve disovered a few more! Don’t worry, it still works fine enough and I’m still generally pleased with it. I’m even laughing at the absurdity of the bugs I’ve found.
Anyway, here’s the state of it now:
Triumphs and Troubleshooting
So in assembling, apart from the minor hole size and spacing issues mentioned last time, the process went rather smoothly. I was confounded by my lack of being able to acquire a 12-pin molex PCB connector either in person or online. Rather than delay things further or do something sloppy like solder it right to the board, I simply used two six pin connectors. I really need a better supply of connectors!
The problems came naturally when I did have the thing functionally fully assembled and began to test it. Sure, it did its job fine. It drew power from any supply I hooked up to it, and I was able to control it fine and no stability issues. However, there was this annoying offset issue.
What I discovered is that there was a variance between what my meter was telling me, and what the load was actually drawing. Not huge, about 11mA which seemed to track linearly along its entire range. That was indicitive to me of some sort of bias issue, and after some testing, I found I was correct. Have a squizz at the layout below.
At the top, power supply, section, you can see the ground trace snake its way all along the top and around the right-hand side and in to connect everything to ground. I did this in a want to not create any ground loops, hearing those were bad. They certainly are, but I had mistakenly taken my ground trace a bit too far and the “ground” that some parts were seeing – namely my potentiometers, opamps, and the panel meter output – were all at slightly different potentials. So what is supposed to be 0V is actually offset by the length of the trace as well as other effects from components sharing the same ground trace.
Now I see why people are so anal about making proper star ground configurations and keeping traces as short as possible as well as doing whole ground planes with via stitching to make damned sure 0V is 0V everywhere, or as near as can be because physics.
Dodged with a bodge
I discovered this by hooking my ground lead of my multimeter directly on the ground pin of the shunt resistor and lo and behold the offset went away – mostly. It is still about 50µV out but really there’s only so much I can do. More on that in a bit.
So naturally, I did a classic solder-on-a-bodge wire in the hopes of reducing the offset, and it worked.
But wait, that’s not all!
I also noticed that the difference between “safe” mode and “load” mode, there is that offset again, about 11mA worth. I tried a quick bodge for that too but no dice. This I will have to investigate further and possibly more bodge connections along with possibly cutting some traces to remove ground loops. This is a bad sad for me as it is my first printed PCB and hacking it to shreds kind of hurts a bit.
Rather than being upset or frustrated with this turn of events, I’m actually quite pleased. The device does work, and reliably and the display (thanks to the bodge) actually reads the correct current within about 0.5-0.8 of a mA which is really not bad. Being unable to reduce the resistance of the traces further without violating the laws of physics, I will probably just tune my panel meter a hair to make it agree with reality. Despite the now very small offset, it tracks perfectly and is giving me no other trouble.
The disparity between the load and safe mode values is a bit trickier, and I may or may not be able to solve it. In doing all of this, I came to the realization of what the problem actually was – I chose the wrong design parameter.
Since I chose a 0.1Ω shunt, that translates to 1ma of current being seen as 100µV on a meter. That’s a ridiculously small potential. When I first wanted to build this project, I borrowed the idea from Dave Jones who used a 1Ω shunt, and from Martin Lorton who also used a 1Ω shunt. They did so for good reason. In their case, 1mA = 1mV, well out the noise floor and much less subject to trace resistance, not to mention parasitic capacitance, inductance, or just play EM noise. I wasn’t able to do this as finding a 1Ω shunt with the 1% tolerance and the insane wattage I needed was sort of unobtanium at the time.
There was another chappy, Peter Oakes, who used a 0.1Ω shunt, but the part I omitted from my design that he had in his as a x10 amplifier. This is what I should have done. I could have amplified the reading across the shunt ten times and used that for the meters as well as the opamp inputs and saved myself a bit of trouble. I think I initially discarded this idea as being unnecessary complexity although well within my means to design and build in.
Even if I had used a 1Ω shunt, or amplified a 0.1Ω one, there always avenues of error, and I would never expect numbers to match up exactly or to be a super precision instrument.
The easiest solution to remove the hair of offset from the load mode voltage reading is simply to re-calibrate the meter to zero that out. No problem. If I had used a microcontroller based design like Peter Oakes, I could have adjusted for this in software so very easily, but naturally, I wanted to do it all discrete and bare guts as I am learning. Learn I did!
I will try a few more things tomorrow, perhaps solder more bodge wires to bring that ground resistance down, but I think I’m approaching the most I could possibly do without saying sod it and redesigning the thing. I may still do that in future, nothing says I can’t upgrade my creation in future.
For now, I am satisfied with how it works. It is steady, reliable and does what I need it to do to move on to the next stage, which is assembling the thing permanently in its enclosure.