I need to control a 10kOhm digital potentiometer in rheostat mode in 256 steps. I found an Arduino tutorial, which works with an MCP41010 (I added a viper resistance according to the datasheet). This works fine - I can send values from 0 to 255 to the CS pin an the resistance between output pin A and B changes from 0 to 10kOhm. The problem is, that my application requires 16V to go through this resistance, which the MCP41010 can't handle.

I tried to go with a MCP41HVX1 high voltage digital potentiometer (which I soldered on a TSSOP-to-DIP Breakout board) and assumed it would work the same way. Turns out it doesn't... My connections are:

Arduino nano -> MCP41HVX1

  • 10 -> CS
  • 11 -> SDI
  • 13 -> SCK
  • 5V -> VL
  • GND -> DGND

With the MCP41010 I connect a 115Ohm viper resistor between output pin A and wiper terminal and measure resistance between output pin A and B (pink connectors). I noticed, that the MCP41HVX1 has a different description for the rheostat modus but I can't get that to work either.

This is my circuit that works with the MCP41010 Arduino MCP41010  circuit

And here is the respective code (which sets the MCP41010 to 255 i.e. 10kOhm)

#include <SPI.h>
byte address = 0x11;
int CS= 10;

void setup()
  pinMode (CS, OUTPUT);

void loop()
  digitalPotWrite(255, CS);


int digitalPotWrite(int value, char Port)
  digitalWrite(Port, LOW);
  digitalWrite(Port, HIGH);

Has anyone ever done this or has a clue what's going on?

  • 1
    I was not allow to post all necessary links in the original post. Here is the tutorial for the MCP41010 and it's datasheet.
    – Delf
    Jun 30, 2017 at 13:31
  • Well, for a start your wiring is wrong. Look at the pinout of the HV version. You're not connecting to the pot pins with your pot wires (or not all of them) and you aren't providing the proper V+ and V- voltages.
    – Majenko
    Jun 30, 2017 at 13:57
  • Pin 14 should go to +16V, pin 10 to GND, and 11-13 are your pot pins.
    – Majenko
    Jun 30, 2017 at 13:58
  • Sorry, I got it wrong in the graphic, of course the outputs are pin 11 and 13. Connecting pin 14 to +16V didn't change much. Right now I'm not even trying to run 16V through the resistance but measure it with an oscilloscope.
    – Delf
    Jun 30, 2017 at 15:37

2 Answers 2


I realize that this thread is old. I am providing an answer for anyone else who may end up here like I did a while back looking to solve this.

I have created an Arduino library on Github (https://github.com/gregsrabian/MCP41HVX1) which allows for control of this family of chips. The README.md within the github project documents all of the APIs and also provides the wiring diagram. There are also example sketches included.

I have created an article on Instructables (https://www.instructables.com/id/MCP41HVX1-Digital-Potentiometer-for-Arduino/) that provides a step by step on how to control this family of chips. There is also an explanation on how to solder the TSSOP chip.


One thing I discovered, after coming back to the internet multiple times for clues, is that that SHDN pin on the MCP41HVX1 has to be tied HIGH.

If not, you can try incrementing, decrementing, or writing values to your heart's content and the thing is not going to budge.

I tied SHDN to the VL level via a 10k resistor and I can write and increment without problems.

I think it should have been flagged in the datasheet though, in the Pinout Description table.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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