I need a resistor that I can control with an MCU like an arduino/raspberry pi. Ideally with 1M max resistance. The resistor will handle an analog signal range of \$\pm\ 9v\$. I've considered using a digital potentiometer with a high range, like an AD5290, but zippering would be a concern in my application. I'd like a range from <1K \$\Omega\$ to \$1M\Omega\$ , continuously adjustable.
To my knowledge, the most common implementations of what I want would be to either use an LM13700 as a voltage controlled resistor, create one with an LED and an LDR, or to use FETs.
My question is: What would be the best solution here? I'd prefer the most linear response possible so the LED and LDR is a poor solution.
Best Answer
0Ω - 1MΩ is a pretty tall order. The ±9V is also tough.
This might be an XY problem, so:
As you have found, digital pots have poor specs: The AD5241 is a 1Meg digipot, but only provides 256 steps, only operates over 0-5V, and has a wiper resistance of ~60Ω.
You could parallel two digipots of different ranges to get more steps, but the accuracy/linearity is so poor that this may introduce more issues. Also, for 0Ω, you'd have to build a bypass circuit, and you'd have to step the voltage down.
If you go with a FET (even a FET specifically designed for use as a VCR), you should expect operation in the ohmic regime starting at \$R_{DS(on)MIN} \simeq 20-200\Omega\$ with a range of maybe two octaves. You could try combining parts, but again, this is difficult, and increases your minimum resistance. However, FETs are more appropriate for high/bipolar input voltages.
Basically, if there's any way you can modify your circuit to use a VCA, OTA, or if you can tolerate huge steps (switchable resistor arrays), your life will be much easier.
If you can tolerate a bulky component, a stepper motor paired with a potentiometer may do a pretty decent job. But I'll warn you right now that dealing with motorized resistors can be a huge pain. Oh, and even a good potentiometer doesn't get near 0Ω.