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.

  • \$\begingroup\$ This is called a digital potentiometer. \$\endgroup\$ – Hearth May 19 '17 at 21:05
  • \$\begingroup\$ To add on to that, it should be noted that digital potentiometers are very sensitive to overvoltage and excessive power, not at all like the robust resistors you'd probably be familiar with. If you want a high-power device, you might be able to do something with a power MOSFET (or MOSFET module) in linear mode with a control system measuring the source-drain voltage and adjusting the gate-source voltage to keep the current proportional to the voltage. \$\endgroup\$ – Hearth May 19 '17 at 21:09
  • \$\begingroup\$ Thanks for commenting. It's not really a digital potentiometer as that would be a three-terminal device. While a digital potentiometer would work if I only used two of the terminals, I'm not sure that they are available with full isolation between the control and signal. I won't necessarily have any more access to the system under test than the two termination points of the resistor I'm wanting to emulate, so an active solution using FETs is probably out of the question. \$\endgroup\$ – rossmcm May 19 '17 at 22:14
  • \$\begingroup\$ Well, as you mentioned, you could just use two of the terminals! Really, though, Spehro's answer below is much better than what I said. I don't know why I didn't think of a decade box with relays..! \$\endgroup\$ – Hearth May 19 '17 at 22:17

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.

| improve this answer | |
  • \$\begingroup\$ Yep, I have concluded it's probably the only way. Thanks for the answer. The binary 20-bit version would be most useful for program control, the decimal version one for the classic "decade box", although a hybrid one that could work either way (with the manual front panel switches or by program control) would be useful as well. \$\endgroup\$ – rossmcm May 20 '17 at 3:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.