Electrical – Implementing a programmable variable resistor

digital potentiometerdigital-logicresistance

The R-2R network can provide digital-to-analogue conversion of arbitrary precision using resistances of only two values. Is there a corresponding circuit architecture that switches resistance values to provide a variable resistance?

I want to implement a digitally programmable resistance. The dream solution would be something that could produce all of the E24 series over 5 decades, i.e. 100, 110, 120, … 82M, 91M, 100M, but I would settle for a proof of concept – a design (scalable) that could accept say, a 4-bit digital input and give 16 exponentially or linearly increasing resistance values. The unit needs to be a two-terminal fully isolated unit and would probably use reed relay switches to provide isolation and minimize switch resistance losses.

A trivial solution to this would use a resistor of every required value, a corresponding reed relay switch, and a whole heap of logic to turn on the appropriate switch. I'm hoping there is a circuit that uses one switch per bit and fewer resistors.

Best Answer

A series combination of power-of-two resistors will accomplish what you want, though with n resistor values of n resistors for n bits.

So 20 resistor values will give you from 1 ohm to 1.048575 Megohm in steps of 1 ohm (however it will surely not be monotonic!). The n'th resistor from 0 to 19 would be \$2^n\Omega\$, so 1\$\Omega\$, 2\$\Omega\$, 4\$\Omega\$, 8\$\Omega\$, 16\$\Omega\$,.., 524288\$\Omega\$

More sensibly, for some applications, decade switches in series with resistors of 1,2,4,8 ohms. 6 of them (24 resistors) would allow you to cover the same range with decimal numbers rather than binary. So the 2nd decade would be 10, 20, 40, 80 and so on.

You have long been able to buy "decade boxes" that perform this function. I have one that is (even) older than myself and is still very accurate because the resistors are made with low strain wirewound forms and cast in wax.