Electrical – Low-value digitally set resistor


I need to implement the equivalent of a variable resistor of range 10 – 200 Ohms, to be controlled by a microcontroller or FPGA. It is for a gain setting resistor for an op-amp, so I need be ends of the ‘resistor’ available (ie. not one at ground).

What is a cheap, simple way to implement this?

I’m thinking of using analog switches with various resistors, but I can’t think of a structured way to choose these. Maybe this is another question, but if this is the best way to go, then what is a good way to find the setup and values?

Digital potentiometers have too high wiper resistance to use here.

AD8351 gain resistor

Best Answer

1) Create an array of parallel resistors having values that are binary weighted (R, 2*R, 4*R, 8*R, 16*R ...). Put a small mechanical relay in series with each resistor.

The 8L01-05-001 mechanical relay made by Coto Relay has a typical capacitance of 1pF across open contacts and supports 1 million switching cycles.



If you only need to make a small adjustment around a point (say 1000 ohms ± 50 ohms then just put the whole array in series with a resistor that is slightly lower than what you need, for example 950 ohms.

2) The MAX5128 digital potentiometer has only 0.6 ohms of wiper resistance, you may be able to use that.


3) You could increase the resistances you are using to create your gains. For example, 25 ohms of wiper resistance matters a lot more on a 1K pot compared to a 100K pot. The MAX5394 is one example that could be used.


4) Use a programmable gain amplifier

The AD8556ARZ. It has gains programmable from 70 to 1280 in 1024. The first gain stage is programmable in 128 steps, and the second stage is programmable in 8 steps.


The PGA870IRHDR has a programmable gain in 64 steps and a 650MHz gain bandwidth product.


5) If you just need to calibrate the gain one time, use a multi-turn mechanical potentiometer and glue it once its set.