About 10 years ago I bought a Mastech 3.5 digit + analogue multimeter when they were in the sale at Maplin. I like this meter, but I've lost confidence in it's accuracy, and thought that rather than buy a new one, or pay for professional calibration, I would have a go at DIY calibration. I'd like to share the results, so here it is.
The voltage ranges of my particular meter are: 200mV, 2V, 20V, 200V, 600V. On the 200mV range it has 0.1mV resolution, and tolerance of ±(0.5% +1 digit)
Before I go any further, I would like to direct you to this excellent guide to multimeter accuracy: http://www.designworldonline.com/articles/5416/260/How-to-Determine-Digital-Multimeter-Accuracy.aspx. I learnt far more from it than I thought I knew.
After many hours of playing with various numbers, I settled on using a 5v reference with a tolerance of ±0.5mV, equivalent to ±0.01%. Even though the meter's lowest range is 200mV, I chose to use this reference and divide down the output by about 26 (actually in practice it was about 28) using precision (±0.01%) resistors, since as you divide the output voltage, you also divide the absolute error voltage, which moves down the significance of the digits.
I eventually made a spreadsheet to work out the various scenarios of the reference and resistors being out by ±0.01%, showing best and worst cases. The error is now ±0.052mv at worst, which in terms of the resolution of my meter is insignificant if positive, or within the manufacturers tolerance if negative. It is 0% at best, and out of over 24 possible combinations the error was better than ±0.01% for 12 of them, and exactly ±0.01% for 4 of them. I've uploaded the spreadsheet as a .pdf as well as .xls.
I think you'd have to be quite unlucky to get the worst cases. The actual voltage used is slightly unfortunate as it is rounded up by 0.036mV by the meter - a figure ending in a whole 0.1 of a millivolt would have been better, however having a very tight budget, I had to use the cheapest parts available. I'm sure you can choose better values than I did.
If you download the spreadsheet and want to play with the numbers, you only need to enter any value once - red figures at right for tolerances, black bold figures near top for inputs V, R1 and R2 - pretty much all the rest is formulas so don't change anything until you understand them. It will show volts or millivolts automatically, ranged on 199.9mV. Second page shows meter tolerances, again, you only need to change anything once. It shows "E" for over range.
The logic of choosing this method was in the tolerance of the voltage references I could actually afford. There is a range of references with a tolerance of ±0.5mV made by Intersil. For a 5v reference this is ±0.01%. Although these references go down to 1.25V. the tolerance is still ±0.5mV, which is ±0.04%
Step 1: Parts and Tools
U1: Intersil ISL21009BFB850Z precision voltage reference 5V ±0.5mV (you can find the datasheet here)
Rx: 806 ohm ±0.01% (Vishay)
Ry: 29.4 ohm ±0.01% (Vishay)
Vero board or similar
SOIC - DIL conversion board
(You could actually use an Arduino project board as these have 0.1" matrix and SOIC pads on them. I already had Vero board which is why I used it)
Battery clip, wires, test sockets (sprung contact type), case
D1 and D3 are arranged so that they can be replaced by a single common cathode bi-colour LED if desired. If you want the regulator's voltage to be fixed at 6.8V, omit VR1 and R9 and connect the op-amp's non-inverting input directly to Q4 drain.
Parts for enhanced version:
Q1: MOSFET - Si9430DY - chosen because it is logic level, has low Rds(on), and was the cheapest I could find on Ebay!
Q2, Q3, Q5: General purpose transistor, PNP
Q4: MGSF1P02LT1 chosen because it was in my junk box. Any low Rds(on) P-Type enhancement mode logic level MOSFET will do
Q6: 2N2905 (Intersil recommendation, but I just used another general purpose PNP)
D1: LED, Green
D3: LED, Red
Z1: Zener diode, 6.8 volts
C1, C2: 10µF capacitor (I actually used 22µF)
R10: 200 ohm (I actually used 220 ohm)
R11: 306R ±0.01% (Vishay)
R12: 29.4R ±0.01% (Vishay)
VR1: 22K preset
VR2: 10K potentiometer (lin) if "fine" adjustment required
VR3: 100K potentiometer (lin)
(NB, a single multiturn precision potentiometer would be far better, but expensive)
U1: Intersil ISL21009BFB850Z precision voltage reference 5V ±0.5mV (you can find the datasheet here)
U2: Op amp suitable for single supply (I used a LM358 because I happened to have one)
Step 2: The Basic Circuit
Intersil recommend that this chip does not have a capacitive load, hence the lack of an output filter.
As the lowest range of my meter is 200mV, (which will actually only read up to 199.9mV) and I don't see any references offering under 200mV output, division became necessary, so I ended up with circuit A.
I wanted something a bit less primitive than this though. The ability to switch it on and off, a bit of pre-regulation and noise reduction seemed like a good idea, so after a lot of playing with numbers, I ended up with circuit B.
In this version, regulation is added by the zener diode and transistor combination (rather than just a simple zener and resistor, as this arrangement allows greater variation in the current draw). The supply (Vcc) to the reference chip is now a fairly stable if approximate 6.2V. The capacitors are for noise reduction.
Resistors Rx and Ry are 0.01% types. I chose the particular values used because that what was available from Ebay (used, about £3 each) to provide approximately the ratio I wanted. The idea is to make the resistance connected across the sockets be as low as possible without overloading the reference chip. This particular chip can deliver up to 7mA.
If Ry is approaching 1K in value, errors which cannot be ignored creep in due to the meter's internal resistance (10M in my case) - this is calculated by:
So for a 1K resistor:
1/((1/10,000,000)+(1/1,000)) gives 999.9 ohms - a -0.01% error, which is already the tolerance of the resistors anyway. Just not acceptable.
For a 29.4 ohm resistor:
Using 1/((1/10,000,000)+(1/29.4)) gives 29.3999 ohms - only a -0.0003% error, which is ignorable.
I chose not to buffer the output because this would mean using an instrumentation op-amp which I can't afford, and the potential for yet more errors being introduced by it.
Step 3: Added Goodness
I originally added a crowbar protection circuit (see diagram) in preference to losing 0.7 of a volt through a series diode, but then discovered this rather nifty mosfet circuit, which is what I ended up using. The only real conditions for the mosfet are that it should be enhancement mode, P-type, able to saturate at the battery voltage, and have a low Rds. The one shown cost me £1 plus p&p. Or you could use a series diode with a low forward voltage, such as a schottky or germanium type. It all depends what you have/what you can afford. I've illustrated all 3 variants. I've shown a normal diode for the crowbar circuit, but a schottky diode would start to conduct the reverse voltage much more quickly. (See last step - operation notes, for how this works)
I have read that zener diodes are quite noisy, so I put a capacitor across it.
I added a switch to the output to make the reference a bit more versatile. I realise the switch could potentially affect the output by adding a tiny bit of contact resistance, or noise, but to calibrate a 3.5 digit meter, and anything else I'm likely to use it for at the moment, I didn't think this was important.
I added a transistor to boost the available output current. This circuit was cribbed directly from the reference's data sheet, though I didn't use the same transistor they specify, I just used what I happened to have. The resistor I used is 220 ohms - Intersil specify 200 ohms. (See third diagram) Values down to about 120 ohms should work fine. For this to work the supply voltage needs to be at least 0.8V above the chip's operating voltage of 5.5V. I set this to 7V using low drop-out regulator.
I was going to add a constant current source, until I discovered my meter has no current range adjustment. So I've added an adjustable output with coarse and fine controls instead (see third diagram). The LM358 will allow the voltage to go down to almost zero, if you use a different op-amp you may need to insert a diode in the negative rail after the op-amp's supply and before the rest of the circuit
I originally used a traditional emitter-follower pre-regulator, but found that this causes 0.7V to be lost due to the transistor's base-emitter voltage drop, shortening the usable life of the battery. After a bit of research I discovered low-dropout regulators, and used half the op-amp for the error amplifier for the regulator. I used a logic-level, P-type, enhancement mode, low Rds(on) mosfet for this circuit, selected on the basis of what I happened to have in my junk box. A PNP transistor will do the same job, just connect it with the collector as output, base to the op-amp's output, and emitter as input. This type of regulator has to have feedback to be able to work. If you don't have an op-amp handy, you could use a long tailed pair.
If you want to make the potential divider and variable output be disconnected when not in use, connect the switch pole to the reference and each output divider to a contact. Use the final section of the switch to connect the divider outputs to the test socket
Step 4: Construction
You can actually get Arduino prototyping boards on Ebay for £3 or £4, where you get a matrix board with some SOIC pads, some header pins, a couple of switches and LED's and perhaps a small breadboard. One of these would be an excellent choice for building this project on if you don't have anything else. As it was, I found these funky little SOIC to DIL adapter boards which were rather cheaper when combined with what I already had.
Intersil recommend mounting the chip on the shortest edge of the board, on a cut-out section, so that it experiences the minimum amount of mechanical stress. I made bendy legs for my little adapter board, which should do the same job.
The Vero board layout shown is for a version using a traditional style pre-regulator, before I discovered the LDO design, and no power light, but I've included it for illustration purposes since most of the layout is unchanged. The cheapest rotary switch I could find happens to be a PCB mounting one with pins close to 0.1" grid spacing. I needed to bend them a bit to make it fit, but not much. I used the switches panel fixing to mount the assembly onto a metal tray without needing any other bolts. The tray can then be made to fit the project box without worrying about messing it up - it's only a bit of metal after all. It's connected to the circuit ground to provide a bit of screening. The piece of aluminium I used was from an old heatsink and was a bit thicker than the board mounting slots in the box, so I had to file the edges a bit thinner, making it a snug fit. It's quite solid and doesn't move when the switch is turned.
The project box is one I'd bought a few years ago for another project I didn't actually build, so again it is just what I happened to have. It is one of the "MB" range boxes from Maplin.
I wanted to use 2mm sockets since my meter has built in leads so it's difficult to use any other connector than it's probes. If you get these sort of sockets make sure you get ones which have a spring contact inside. Binding posts would be nice (and the cross hole would fit my meter's probes) but they are quite expensive and bulky.
Step 5: Calibrating the Meter
This was quite a learning experience for me, and things aren't quite as they at first appear. Unless you have the exact same meter the layout will be different for you, but I suspect there is some commonality in how these things work, so I'll share what I've learned.
It's a good idea to measure something on each range of the meter and write down what you measured and what it's value is, then at least you can adjust everything back how it was if all goes wrong.
You can see from the photo, there are eight presets inside the meter. It has eight ranges, so my first assumption was that there was a preset for each range. WRONG!
I started trying to find what each one does by holding a resistor across it and seeing what effect it has, but ended up twiddling every preset anyway.
The meter has an analogue scale (useful to show if a reading is changing rapidly, but not much else) as well as the digital one, and the two presets are to set the zero and full scale positions for this. I used variable output from the reference to set the full scale position on that, after calibrating the digital scale.
Two presets adjust the temperature scale, one for zero, and one for higher temperatures. Another two adjust the capacitance scale. One preset calibrates the frequency range.
One preset is the master and must be set before all others, as it affects the voltage, current, capacitance and Hfe scales, so this is the one I'll be setting with my voltage reference.
The Mystery Of The Missing Megohms
You can see from the photo, my meter is reading some megohms when there is nothing connected to the probes. My first response to this was to clean the switch. Well, you can see it made a bit of difference, but didn't cure the problem, so there is a fault somewhere (does anyone have any suggestions about this?). So it seems fair to say, if you've got the cover off the meter anyway, it's worth giving the switch a clean. I used isopropanol which I'd previously bought to clean off heatsink compound when repairing my games console.
Step 6: More Calibration
Voltage, current and transistor gain have now been calibrated by that one "master" setting. After setting the analogue pointer I discovered it is also inconsistent, so it seems you get what you pay for.
Calibrating the temperature scale proved to be interesting. After some playing about, I found that one of the presets could set the scale to zero, at which point the second would make no difference. Setting the first preset to zero with the thermocouple in ice water, and the second one so that the meter read 37 degrees with the thermocouple in my mouth, seems to have led to tolerable accuracy. Heating the thermocouple with a gas lighter till it has an orange glow gives a reading of around 900 degrees, which would be about right for the colour, and the room temperature reading after leaving it for an hour agreed with the room thermometer. An accurately known high temperature would appear to be best for adjusting this.
I eventually connected the capacitance test clip to my oscilloscope, and found that one preset changes the amplitude of the output waveform, and the other makes no noticeable effect, although it affects the capacitance reading, which shows they are working in very different ways, but I still haven't found the way to adjust them to get consistent readings over a range of capacitors.
I used some (admittedly very old) 2.5% 250pF polystyrene capacitors to calibrate the capacitance range on the lowest setting, and a few other polystyrene capacitors up to 2.5nF 5%, and some other, possibly mylar capacitors for higher values. Trying setting one preset in various positions before setting the other has led to a tolerable setting, but still not very good.
My main conclusion from this experience is that it's worth spending as much on a multimeter as you can!
Step 7: Fine Tuning the Reference
If you have access to a really precise meter (better than 0.01%), you can in theory improve the accuracy of this reference, or set it to some voltage of your preference. Connect a low temperature coefficient potentiometer (Intersil recommend using a digital potentiometer like this, but you need an I2C bus to adjust it. They don't say what value to use.) with the wiper connected to the devices trim pin (pin 5), one end to Vout and one end Gnd. This gives a 2.5% range of adjustment. By using a multi-turn precision device you should be able to adjust this very accurately. To adjust the voltage given by the potential divider I've used in this project, use a high stability preset of low value connected between the two resistors, and take the output from it's wiper. If you are going to go to this extreme, you may as well buffer the output using a precision op-amp.
If you opt to stick with the original simple pre-regulator design, or not use a pre-regulator, you have half a dual op-amp to play with. With some well matched precision resistors, you could use this as the basis of a constant current source, with the voltage reference as it's controlling voltage.
Step 8: Operation Notes
The unit is designed for battery operation, because batteries provide a nice clean, smooth source of power.
I found this circuit on the internet. This is a P-type MOSFET is connected with it's source and drain the opposite way to normal applications. When the battery is connected correctly, the transistor's intrinsic diode conducts the first bit of current, allowing it to be biased on and into saturation, providing a very low resistance path. If the battery is connected the wrong way, the transistor is biased off and no current can flow.
For those who don't know, a standard crowbar protection circuit works by using a diode to conduct reverse battery current, which blows the fuse to prevent damage. The disadvantages of this circuit are it's response time and reliability. I could have used a series diode, but didn't want to sacrifice the 0.7 of a volt which it would drop, although a shottky or germanium diode would present a lower voltage drop of 0.1 to 0.2 volts, the mosfet is still better.
Low battery warning and power light
It took me quite a lot of head scratching to work out the battery warning light - and since discovered I'd re-invented a well known design. With a good battery, there is sufficient difference in voltage between the base and emitter of Q3 for it to conduct and keep Q2 biased off, which keeps Q5 on to drive the power LED. As the battery voltage approaches the the zener voltage (D2 is to offset the base-emitter drop of Q3), a point is reached where Q3 turns off, allowing Q2 to turn on and light the battery warning LED, and turning Q5 off. The voltage drop across R1 is negligible in normal operation, however when the battery warning LED starts to conduct the voltage drop increases, reducing the voltage at Q3 emitter, turning it off sharply. This also introduces a bit of hysteresis (if for some reason the battery voltage rises a little, the warning light stays on).
For this, I initially built an emitter follower regulator, a very basic form of that used in traditional linear power supplies - all it does is amplify the current from the zener's feed resistor. Precise regulation is not important as it's function is merely to stabilise the supply to the reference chip as the battery decays, and protect it from an over-voltage power supply. The two capacitors are to clean up any noise generated by the zener and various transistors.
This design is not good for battery powered applications because the base-emitter voltage drop means the voltage at the emitter will always be 0.7V less than the voltage at the base, meaning the battery has to be at least this amount higher than the desired output voltage. Using the low-dropout arrangement with a P-type, low Rds(on) mosfet eliminates this problem as a decrease in gate voltage increases the voltage at the drain, the output. You can use a PNP transistor instead, with its collector connected to the output, and emitter as the input, but while still better than an emitter follower, this isn't as good as the mosfet. Since the transistor is providing inversion, the error feedback is connected to the op-amp's non-inverting input.
Extra current capability
The transistor and resistor which provide this are controlled by the amount of current the reference chip is drawing. When the current drawn by the reference chip reaches about 3.5mA, the voltage across R10 increases to around 0.7V and it starts to conduct and supply the majority of the current. Intersil specify this resistor as 200 ohms, and the circuit to supply up to 50mA.
The potential divider is calculated from the need to divide the output of the reference by at least 26. The values were chosen to provide the lowest resistance possible across the meter probes in order to minimise errors introduced by the meter's internal resistance, without exceeding the maximum rated current for the reference chip (although this is moot, with the presence of Q5). The voltage across the resistors is given by Ohm's law and the formula for series resistance:
Rtotal = R1 + R2 + R4 + R5 ..... + Rn
I = V/R, R = V/I, V = I*R
So, Rtotal = Rx + Ry = 806 + 29.4 = 835.4
I = 5/835.4 = 0.0059851
V across Ry = I * Ry= 0.0059851 * 29.4 = 0.1759636
Rounding this figure up gives 0.176 with an error of +0.0000364, or 176mV including an error of +36.4µV
This is provided by a potentiometer buffered using an op-amp. The inverting input of the op-amp is connected to it's output to create 100% negative feedback, so that the output will follow exactly the voltage at the non-inverting input. A multi-turn potentiometer would be better, but these are expensive so I've used the following: One potentiometer is the main, "coarse" control, the other is connected as a variable resistor and acts as a "fine" control by changing the total resistance in the circuit by about 1/10th of the value of the coarse control. A better circuit is to use a dual gang potentiometer for the "fine" control, as shown here using Circuit C (but without R1). The op-amp is chosen by being what I happened to have - it was that or an NE5532, and the LM358 seemed to be more suitable. The output goes sufficiently close to ground to not register a voltage on my meter. This should not be considered a stable output, and the design certainly doesn't do justice to the precision the reference chip can provide.
The switch is connected so that two of it's poles complement each other, one is connected to the 3 alternative outputs, with the first position left unconnected, and the other pole connected in series with the battery, with the positions corresponding to the outputs are connected together, and the first position left unconnected.