Rheostats
Rheostats are simple and ubiquitous circuit elements, usually comprising a potentiometer connected as an adjustable two terminal resistor. The availability of manual pots with resistances spanning ohms to megohms makes the optimum choice of nominal resistance easy. But when an application calls for a digital potentiometer (Dpot), the problem can be challenging.
Dpots are only available in a resistance range that’s narrow compared to manual pots. They also typically suffer from problematically high wiper resistance and resistance tolerance. These limitations conspire to make Dpots a difficult medium for implementing precision rheostats. Recent EDN design idea (DI) articles have addressed these issues with a variety of strategies and topologies:
- Op-amp wipes out DPOT wiper resistance (Ref. 1).
- Synthesize precision Dpot resistances that aren’t in the catalog (Ref. 2).
- Synthesize precision bipolar Dpot rheostats (Ref. 3).
- A class of programmable rheostats (Ref. 4).
While each of these designs corrects one or more complaints on the lengthy list of digital rheostat shortcomings, none fixes them all and some introduce complications of their own. Examples include crossover distortion, unreduced sensitivity to resistance tolerances, resolution-reducing nonlinearity of the programmed resistance, and just plain old complexity.
The design
Figure 1’s circuit isn’t a perfect solution either. But it does synthesize an accurate programmed resistance equal to reference resistor R1 linearly multiplied by U1’s RBW/RAB digital setting (the ratio between the terminal B to wiper resistance and total element resistance).
![]() |
|
Figure 1. | A precision digital rheostat that synthesizes an accurate programmed resistance equal to reference resistor R1 linearly multiplied by U1’s RBW/RAB. |
Here’s how it works.
RAB = RAW + RBW = typically 5k to 10k.
Where R is the programmed synthetic resistance, R1 is the reference resistor, RAW is the resistance between terminal A and wiper terminal, RBW is the resistance between B and wiper terminal, and RAB is the total element resistance.
U1 works in “voltage divider” (pot) mode to set the gain of inverting amplifier A2. Pot mode makes gain insensitive to both U1’s wiper resistance (RW) and RAB. They really don’t matter much – see Figure 4-4 in the Microchip MCP41XXX/42XXX datasheet.
Turning the crank on Figure 1’s design equation math, we get:
where GA2 is A2’s gain. Further, Voltage across R1 =
Current through R1 =
Then, since
VA is lightly loaded by A1’s ~10 picoamp (pA) input bias, so R1 can range from hundreds of ohms up to multiple megohms as the application may dictate. It should be precision, certainly 1% or better; then, programming and the math above takes over.
Figure 2 plots the linear relationship between R and RBW.
![]() |
|
Figure 2. | Linear relationship between R and RBW showing the circuit synthesizes an accurate programmed resistance equal to reference resistor R1 linearly multiplied by U1’s RBW/RAB. |
A compensation capacitor (C1) probably isn’t necessary for the parts selection shown in Figure 1 for A2 and U1. But if a faster amplifier or a higher resistance Dpot is chosen, then 10 pF to 20 pF would probably be prudent.
Meanwhile, I think it would be fair to say this design looks competitive with its peers. But earlier I described it as imperfect. Besides being a single-terminal topology (like two others on the list), where else does it fall short of being a complete solution to the ideal digital rheostat (Digistat) problem?
Shortcomings
Here’s where: As Figure 3 shows, when the programmed value for R goes down, A2’s gain (GA2) must go up. Reading the graph from right to left, we see gain rising moderately as R declines by 75% from R1 to R1/4 where, RBW/RAB = 64/256 and gain = 3, but then it takes off. This tends to exaggerate errors like input offset, finite GBW and other op-amp nonidealities while creating the possibility of early A2 saturation at relatively low signal levels.
![]() |
|
Figure 3. | Graphs for GA2 (red) and R/R1 (black) versus RBW/RAB on the x-axis. When the programmed value for R goes down, GA2 must go up. |
The severity of the impact of these effects on utility of the design, whether mild, serious, or fatal, will depend on how low you need go in R/R1 and other specifics of the application. So, it’s certainly not perfect, but maybe it’s still useful somewhere.
Two-terminal design
And about that single terminal problem. If you have an application that absolutely requires a two-terminal programmable resistance, you might consider Figure 4. Depending on the external circuitry, it might not oscillate.
![]() |
|
Figure 4. | Duplicate and cross-connect Figure 1’s circuitry to get a two-terminal programmable resistance. |
References
- Woodward, Stephen. "Op-amp wipes out DPOT wiper resistance."
- Woodward, Stephen. "Synthesize precision Dpot resistances that aren’t in the catalog."
- Woodward, Stephen. "Synthesize precision bipolar Dpot rheostats."
- Paul, Christopher. "A class of programmable rheostats."