Everyone familiar with the PT2399 knows that you vary the delay time with a resistance. There are a couple chips floating around that perform this function using a digital potentiometer whose resistance is set based on a tap tempo input.

The problem is that digital potentiometers have even worse tolerances than mechanical ones, sometimes +/- 30%.

Suddenly your calculated delay time can sound like triplets instead of 1/8th notes.

There are some brute force methods of minimizing these errors, none of which are very practical (e.g. hand-sorting large batches of digipots).

I thought that maybe putting 2 100K pots (which read 70K each for a total of 140K) with a resistor in parallel would solve the problem until I made a spreadsheet and found that the errors don't exist at 0 and 100, but they get larger and larger until you get to 50% where they peak. With a 140K resistance scaled down the error is over 8%, so the problem is slightly less, but not much. Of course the further off your initial resistance, the greater the error.

I've read all the microchip app notes but can't find anything that solves the problem of precision programmed current control.

Being a programmer primarily, I assumed that a "digital potentiometer" would have "digital precision", until I had them on the breadboard and read the nominal resistance of a batch of 100K pots at 70-80K average. This makes consistent precision control of the PT2399 a challenge.

The other thing I've noticed is that I can never get precise reads on the nominal resistance. It changes from multimeter to multimeter, and when I perform current tests using the nominal resistance and a known voltage, it can be 5% off from the calculated value.

So, the questions remaining are:

1) How to achieve precision resistance values using digital potentiometers

2) How to get consistent readings of the resistance of digital potentiometers

Hopefully 19,000 heads are better than one! Thanks!