Control accurate incremental voltage steps with a rotary encoder

Experimenting with an HF oscillator, I needed to control the varactor diode voltage in precise increments over a 2V-10V range. A buffered potentiometer was the obvious choice, and connecting two pots in series to give coarse/fine control (or using a multiturn pot) would offer improved control over the varactor voltage. However, this approach still didn’t allow me to generate uniform increments and decrements of the control voltage in a reliable, repeatable manner. I needed a solution that would provide the necessary precision together with complete flexibility over the size of the voltage increments.

I eschewed a microcontroller-DAC arrangement as this would require specialised components and the voltage increments would be dependent on the DAC resolution (and I was too lazy to write the code anyway). A digipot with up-down control was another possibility: this would offer a non-volatile solution like the DAC approach, but again, the increments would be entirely dependent on the pot’s resolution.

The solution documented in this Design Idea can be assembled using inexpensive, readily available components, and the voltage increments are user-definable. An inexpensive rotary encoder is used to control the output voltage – a single step of the encoder increments or decrements the voltage by a precise amount, providing easy up/down control like a conventional pot. The outputs of an incremental encoder typically consist of two signals in quadrature (i.e., phase-shifted by a quarter period), which produce a specified number of pulses per shaft revolution, each pulse corresponding to an increment of rotation. Internally, the encoder has two switches connected to a common terminal. This terminal is usually connected to ground, and the two outputs are connected to pull-up resistors (R1, R2). R3/C1 and R4/C2 provide contact debouncing, with IC1a and IC1b producing squared-up signals at points A and B. The encoder should be connected so that when it is rotated clockwise, the rising edge of signal A leads the rising edge of signal B by a quarter period; conversely, when it turns counterclockwise, signal B leads A by a quarter period:Control accurate incremental

C3, R6, and IC1c implement a conventional digital differentiator or monostable which generates a narrow, negative-going pulse whose width is dependent on the C3-R6 time constant. This pulse is generated on the rising edge of signal B and is used to enable analog switch IC2a by means of the INHIBIT input. Whenever this input is high, the analog switch is completely open-circuit and no current flows through integrator resistor R7. When the output of IC1c pulses low, the switch closes, and R7 is momentarily connected to either the positive supply rail or ground, depending on the UP/DOWN input. The state of the UP/DOWN signal when the analog switch is enabled depends on the rotation direction of the encoder.

If the encoder is rotated CW, signal A will be high when the INHIBIT pin is pulsed, connecting R7 to ground and depositing a discrete packet of charge into C4, which increases the output by one step size. This is of course reversed for CCW rotation. In this manner, each click of the encoder moves charge into or out of C4 as determined by the brief pulse of current through R7.

As described above, each packet of charge is integrated by C4 & IC3. To understand how this section behaves, assume that C4 is initially uncharged. The voltage set by R8 & R9 at the op-amp’s non-inverting input is equal to +Vs/2 (6V in this example), and closed loop feedback around the op-amp will maintain the inverting input at the same level. This means that the right-hand terminal of R7 always sits at +Vs/2. Since there is no voltage across C4, the op-amp’s output will also initially be at +Vs/2.

When the analog switch closes, the left-hand terminal of R7 is connected either to 0V or to +Vs. Ignoring op-amp bias current and analog-switch resistance, the magnitude of the current pulse into the integrator is given by: (+Vs/2)/R7. For example, with a supply of 12V and R7 = 100kΩ, the pulse magnitude would be 60µA.

If the encoder is rotated in a clockwise direction, the UP/DOWN signal is high during IC1c’s output pulse, connecting R7 to 0V and sinking charge out of C4. Therefore, in order to maintain overall equilibrium by keeping the inverting input at +Vs/2, the op-amp must dump charge into C4, which results in a single increment of the output voltage. On the other hand, if the encoder is rotated counterclockwise, the UP/DOWN signal is low, causing R7 to be connected to +Vs and sourcing charge into C4. Consequently, the op-amp must suck charge out of C4, which results in a single decrement of the output voltage.

For more detail: Control accurate incremental voltage steps with a rotary encoder

Scroll to Top
Read previous post:
piCentr home media center
Building a piCentr home media center

piCentr is an Open Source enclosure designed specifically for people who wish to build a media center PC using the...