Introduction: Autorange Voltmeter

I was given a broken 4-1/2 digit voltmeter, a classic style based on the ICL7135 integrated circuit. The power supply board was bad, it needed a common 5 volt supply, but needed a negative supply as well. I added a 555 based negative voltage generator, and got about -3.5 volts which was good enough according to the ICL7135 datasheet. However, the meter had only one input range, +/- 1.9999 volts which wasn't very useful.

To make the meter useful, I added range setting resistors (a voltage divider network) made up of series connected 9M, 900K, 90K, 9K, 900, and 100 ohm resistors salvaged from a dead Harbor Freight multimeter. The resistors are mostly surface mount types, except for the 9M resistor that was made of 1/4 watt resistors in series. Incidentally, I found the reason the Harbor Freight meter died- the 9K resistor was intermittent, causing erratic readings. I replaced it with 2ea. 18K surface mount resistors in parallel. The resistors were soldered to a small piece of perfboard.

The equation used to find the output voltage from the voltage divider is Vout = Vin x R2 / (R1 + R2). The R2 resistor is the value of resistors below the particular chosen Vout pick off point and ground. R1 + R2 is the total value of all the resistors in the voltage divider. Ranges become times 1, 0.1, 0.01, and 0.001 when using the values previously mentioned, so the possible voltage input ranges are +/- 1.9999, 19.999, 199.99, and 1999.9 volts for an output of +/- 1.9999 volts to the meter. I don't think it wise to put anything even near 1000 volts into this meter for safety's sake.


1 panel meter based on ICL7135 (with over and under range outputs), or ICL7106 with additional logic chips per data sheet or modification to Arduino code to achieve over and under range.

range resistors, 9M, 900K, 90K, 9K, 900, and 100 ohm resistors (5% if possible).

1 Arduino Pro Mini or similar small Arduino

4 reed relays SPST, 5 volt types, 300 ohm coils, Gordos 831A-1 or similar

4 1N4007 diodes for relay coil kick back protection

perfboard, cut to required size

wires, silicon based insulation rated for the voltages to be measured, hookup wire

Step 1: Construction

Reed relay contacts close to select the appropriate resistor divider pick off point for a particular range. I wanted an autorange feature; the ICL7135 has an over range and under range output, but the datasheet has no information on how these outputs could be used. After much experimenting, an Arduino was used to incrementally step up or step down the range relays; and the Arduino also activates the decimal point for each range, see Arduino sketch code.

It works pretty well, see video of autoranging action.