Finger-friendly DPOT pushbuttons do ups, downs, and dittos

Analog Devices AD5220

Simple circuit saves hard-working fingers from unnecessary wear and tear.

Digital potentiometers (DPOTs) with manual up/down increment/decrement interfaces can have real utility as versatile substitutes for traditional electromechanical pots. But they start life with a big handicap.

The basic (and obvious) way to interface people with DPOTs is illustrated in Figure 1, using push buttons to increment or decrement the setting, one pulse per push. It works. But it’s work!

In this reference circuit, Schmidt trigger U1 senses and de-bounces UP/DOWN momentary contact pushbuttons to (tediously) move the U2 setting by one position per push.
Figure 1. In this reference circuit, Schmidt trigger U1 senses and de-bounces UP/DOWN momentary contact
pushbuttons to (tediously) move the U2 setting by one position per push.

DPOTs need large numbers of setting positions (e.g. 64, 128, or 256) to provide enough resolution to make them useful. Large changes in setting using Figure 1 therefore require comparably large numbers of button pushes. This can entail considerable time consumed, and finger fatigue endured. You could get a blister! And that’s in addition to the potentially unpleasant (and dangerous?) effects of annoying your fellow lab-mates with the associated dripping-faucet sound effects!!

Figure 2 suggests a simple labor-saving remedy comprising just four added passive parts.

When a button is pushed down and held, the R5C2 time constant begins running. About a half second later, if the hold is still being held, the U1b multivibrator starts up, generating auto-repeating pulses at roughly 4 Hz for as long as the hold-down continues.
Figure 2. When a button is pushed down and held, the R5C2 time constant begins running. About a half second later, if the hold
is still being held, the U1b multivibrator starts up, generating auto-repeating pulses at roughly 4 Hz for as long as
the hold-down continues.

If we add the illustrated components to U1b, its basic function of contact bounce filter will be unaffected. That’s unless a button-down condition lasts longer than about a half second. If that happens, then C2 will discharge to below the pin 5 low-going Schmidt trigger threshold of V+/3, driving pin 6 high.

Now C2 will be quickly recharged through D1 and R4 (this takes ~3 ms), generating another clock pulse to the pot that will duplicate the initial actuation. And so on and so forth, at 4 Hz or so, until the button is released. Note that C2’s timeout between auto-repeats is shorter than the initial delay before they start. That’s because auto-repeat recharge ends at the Schmidt high-going threshold of only ~(2/3)V+ instead of running all the way up to V+ like it does between button pushes.

So what’s U1d for? Well, when the pot arrives at the desired setting and the button is released, the R3C1 debounce time constant prevents the news from instantly arriving at U1b. Therefore, depending on how close C2 was to completing an autorepeat cycle, it’s possible that it will timeout before C1 does. If so, a bogus clock pulse and unintended pot increment could then theoretically occur.

To prevent this, U1d does a fast end-run around the auto-repeat oscillator to disable U2’s CS input. So even if the spurious pulse happens, the pot won’t see it. Not a big thing, but the gate was going to go to waste, anyway.

With a little practice, auto-repeat can be used to quickly get the pot very near a desired new setting. Then you can finished it off with a (mercifully) individual button push (or few) to arrive at the precisely needed final position.

Theoretically.

And a final remark. In an earlier Design Idea (Ref. 1), I discussed the relative advantages of buttons that actuate on push versus those that act on release. Whatever personal taste might otherwise dictate, it’s hard to imagine how the latter scheme could be made to work with the idea shown here.


Reference

  1. Woodward, Stephen. "DPOT push up/down."

Materials on the topic

  1. Datasheet Analog Devices AD5220
  2. Datasheet Texas Instruments SN74HC132
  3. Datasheet Texas Instruments CD4093B

EDN