This quadrature encoder board is designed to hold two infrared reflectance sensors inside the hub of a Pololu 42x19mm wheel and measure the movement of the twelve teeth along the wheel's rim.
This is a tidy little wheel rotation encoder, by Pololu. It holds two infrared reflection sensors just inside the rim of the 42x19mm wheel, and measures the movement of the 12 teeth on the hub.
The two sensors are aligned so it generates an output square-wave, that are about 90° out of phase from each other. This lets you figure out the direction of rotation, and gives you 48 pulses per full spin.
The encoder is calibrated for operation from 4.5 V to 5.5 V, but it can be recalibrated for operation at 3.3 V.
Example code for the encoders is provided with the Pololu AVR Library. The example shows how the encoders can be used with AVR-based robot controllers, including the Orangutan Robot Controllers and the Arduino platform.
The encoder is designed to fit within the outline of the extended micro gearmotor brackets that are in turn designed to work with the Pololu 42×19mm wheel and mini metal gearmotors, so most applications that can use that bracket should require little or no modifications, though it should be noted that the 1/16" thickness of the PCB will change the height of a chassis relative to the wheel. These encoders are only compatible with the 42×19mm wheel, extended micro gearmotor bracket, and mini metal gearmotors.
The power and output connections are brought out to the end of the PCB under the motor terminals so that wiring to all six terminals can be routed together. Wires can be soldered directly to the through-hole power and output pads, or some connectors with a 0.1" spacing, such as a 0.1" female header or 0.1" male header strip, can also be used.
The two outputs of the encoder are digital outputs that can be connected directly to digital input pins on most microcontrollers (inputs that can generate interrupts on change are recommended). With 48 state changes per revolution of the 42 mm wheel, a speed of 1 m/s (a bit over 3 feet per second) generates approximately 360 state changes per second. With two encoders used simultaneously, as is the case for most differential-drive robots, the encoders will require attention almost every millisecond. Decoding the encoder outputs should only take a few percent of the processing power of a high-performance microcontroller such as the Atmel AVR used in the Pololu Orangutan robot controllers, but the encoders might be difficult to use with slower microcontrollers without available external interrupts.
Modifying the Encoder for 3.3 V Operation
The encoder is calibrated for 5.0 V operation, but it can be modified for operation at 3.3 V. The modification consists of two steps: reducing the IR emitter current-limiting resistance, and calibrating for the two phototransistor sensors (a simplified schematic diagram of the encoder is shown below). The IR emitter current-limiting resistance for the two emitters, which are in series, is implemented by R1 and R4; bypassing R4 with a short halves the resistance from power to the LEDs. R4 is labeled on the circuit board silkscreen; one simple way to bypass it is to solder a thin solid wire (such as the lead of a 1/4-watt resistor) to both sides of the resistor and then to clip off the excess wire. With the resistor bypassed and the circuit powered at 3.3 V, the encoder will draw approximately 10 mA.
Schematic diagram of the encoder for the Pololu wheel 42×19mm.
Next, the encoder must be calibrated (to compensate for the dimmer IR LEDs). Each channel has a separate trimmer potentiometer that can be adjusted such that at a constant wheel speed, the output of the channel is a square wave with 50% duty cycle. This is easiest with an oscilloscope connected to the outputs, but it can also be done with a microcontroller programmed to measure the duty cycle of the outputs. If the duty cycle is too high (or there are no low pulses at all), the potentiometer should be turned clockwise; if the duty cycle is too low, the potentiometer should be turned counter-clockwise.