NI Hardware Encoder Measurements: How-To Guide

Updated May 15, 2024



  • Encoder
  • Quadrature Encoder


  • LabVIEW


  • NI-DAQmx

This document describes encoder theory, the basics of measuring an encoder, and options for measuring encoders use NI hardware.

Encoder and Applications Overview

An encoder is an electromechanical device that can measure motion or position. Most encoders use optical sensors to provide electrical signals in the form of pulse trains, which can, in turn, be translated into motion, direction, or position.

Rotary encoders are used to measure the rotational motion of a shaft. Figure 1 shows the fundamental components of a rotary encoder, which consists of a light-emitting diode (LED), a disk, and a light detector on the opposite side of the disk. The disk, which is mounted on the rotating shaft, has patterns of opaque and transparent sectors coded into the disk. As the disk rotates, the opaque segments block the light and, where the glass is clear, light is allowed to pass. This generates square-wave pulses, which can then be interpreted into position or motion. 

Encoders usually have from 100 to 6,000 segments per revolution. This means that these encoders can provide 3.6 deg of resolution for the encoder with 100 segments and 0.06 deg of resolution for the encoder with 6,000 segments.

Linear encoders work under the same principle as rotary encoders except that instead of a rotating disk, there is a stationary opaque strip with transparent slits along its surface, and the LED-detector assembly is attached to the moving body.

Figure 1. Optical Encoder Components
An encoder with one set of pulses would not be useful because it could not indicate the direction of rotation. Using two code tracks with sectors positioned 90 deg out of phase (Figure 2), the two output channels of the quadrature encoder indicate both position and direction of rotation. If A leads B, for example, the disk is rotating in a clockwise direction. If B leads A, then the disk is rotating in a counter-clockwise direction. Therefore, by monitoring both the number of pulses and the relative phase of signals A and B, you can track both the position and direction of rotation.

Figure 2. Quadrature Encoder A and B Output Signals 
In addition, some quadrature encoders include a third output channel – called a zero or reference signal – which supplies a single pulse per revolution. You can use this single pulse for precise determination of a reference position. In the majority of encoders, this signal is called the Z-Terminal or the index.

So far, this document has addressed only what are called single-ended incremental quadrature encoders. These are called single-ended because the A and B signals are both referenced to ground, so there is one wire (or end) per signal. Another commonly used type of encoder is a differential encoder, where there are two lines per each A and B signal. The two lines for the A signal are A’ and A, and the two lines for the B signal are B’ and B. This type of configuration is also called push-pull because all four lines are always supplying a known voltage (either 0 V of Vcc). When A is Vcc, A’ is 0 V , and when A is 0 V, A’ is Vcc. In the case of a single-ended encoder, A is either Vcc or it floats. Differential encoders are often used in electrically noisy environments because taking differential measurements protects the integrity of the signal.

With incremental encoders, you can measure only changes in position (from which you can determine velocity and acceleration), but it is not possible to determine the absolute position of an object. A third type of encoder, called an absolute encoder, is capable of determining the absolute position of an object. This type of encoder has alternating opaque and transparent segments like the incremental encoder, but the absolute encoder uses multiple groups of segments that form concentric circles on the encoder wheel like a bull’s-eye on a target or dartboard. The concentric circles start in the middle of the encoder wheel and, as the rings go out toward the outside of the ring, they each have double the number of segments than the previous inner ring. The first ring, which is the innermost ring, has one transparent and one opaque segment. The second ring out from the middle has two transparent and two opaque segments, and the third ring has four of each segment. If the encoder has 10 rings, its outermost ring has 512 segments, and if it has 16 rings, the outermost ring has 32,767 segments.

Because each ring of the absolute encoder has double the number of segments of the prior ring, the values form numbers for a binary counting system. In this type of encoder, there is a light source and receiver for every ring on the encoder wheel. This means that the encoder with 10 rings has 10 sets of light sources and receivers, and the encoder with 16 rings has 16 light sources and receivers.

The advantage of the absolute encoder is that you can gear it down so that the encoder wheel makes one revolution during the full length of machine travel. If the length of machine travel is 10 in. and its encoder has 16-bit resolution, the resolution of the machine is 10/65,536, which is 0.00015 in. If the travel for the machine is longer, such as 6 ft, a coarse resolver can keep track of each foot of travel, and a second resolver called the fine resolver can keep track of the position within 1 ft. This means you can gear the coarse encoder so that it makes one revolution over the entire 6 ft distance and gear the fine encoder so that its entire resolution is spread across 1 ft (12 in.).

How an Encoder Makes a Measurement

To make encoder measurements, you need a basic electronic component called a counter. Based on its several inputs, a basic counter emits a value that represents the number of edges (low to high transitions in the waveform) counted. Most counters have three relevant inputs – gate, source, and up/down. The counter counts the events registered in the source input, and, depending on the state of the up/down line, it either increments the count or decrements it. For example, if the up/down line is “high” the counter increments the count, and if it is “low,” the counter decrements the count. Figure 3 shows a simplified version a counter.

Figure 3. Simplified Model of a Counter
An encoder usually has five wires that you need to connect to the instrument, and, depending on the encoder, these wires vary in color. You can use these wires to provide power to the encoder and to read in the A, B, and Z signals. Figure 4 shows a typical pinout table for an incremental encoder.

Figure 4. Incremental Encoder Pinout
The next step is determining where you should connect each of these wires. Considering the counter described above, signal A is connected to the source terminal, making this the signal from which the pulses are counted. Signal B is connected to the up/down terminal, and you can connect the +5 VDC and ground signals of the encoder to any power source. A digital line in a data acquisition device card suffices, but is usually not recommended.

Once the edges are counted, the next concept you need to consider is how those values are converted to position. The process by which edge counts are converted to position depends on the type of encoding used. There are three basic types of encoding, X1, X2, and X4.

X1 Encoding

Figure 5 shows a quadrature cycle and the resulting increments and decrements for X1 encoding. When channel A leads channel B, the increment occurs on the rising edge of channel A. When channel B leads channel A, the decrement occurs on the falling edge of channel A.

Figure 5. X1 Encoding
X2 Encoding

The same behavior holds for X2 encoding except the counter increments or decrements on each edge of channel A, depending on which channel leads the other. Each cycle results in two increments or decrements, as shown in Figure 6.

Figure 6. X2 Encoding
X4 Encoding

The counter increments or decrements similarly on each edge of channels A and B for X4 encoding. Whether the counter increments or decrements depends on which channel leads the other. Each cycle results in four increments or decrements, as shown in Figure 7.
Figure 7. X4 Encoding
Once you have set the encoding type and counted the pulses, converting to position is a matter of using one of the following formulas:


For Rotational Position

Amount of Rotation is 

where   N = number of pulses generated by the encoder per shaft revolution

                        x = encoding type
For Linear Position

Amount of displacement is 

Where PPI = pulses per inch (a parameter specific to each encoder)

Connecting an Encoder to an Instrument

For this section, consider an example using the NI cDAQ-9178 chassis and the NI 9401  C Series digital I/O module. The procedure is similar when using a different measurement instrument or device.

Figure 8. NI cDAQ-9178 Chassis and NI 9401 Digital I/O Module

Required equipment:

  • NI CompactDAQ chassis
  • NI 9401 eight-channel, 5 V/TTL high-speed bidirectional digital I/O module
  • 24 pulse/rev rotational quadrature encoder

The NI 9401 has a DSUB connector that provides connections for the eight digital channels. Each channel has a digital I/O pin to which you can connect a digital input or output device. Access to the four counters of the CompactDAQ chassis is available in any of the slots of the chassis; if you are using the cDAQ-9172, access to its two counters is only available through slots 5 and 6, therefore insert the 9401 in slot 5. Figure 9 shows the pinout for this configuration, and Table 1 shows the default counter terminals.

To use your quadrature encoder with your DAQ card, connect channels A, B, and Z to the counter's SOURCE, AUX, and GATE pins, respectively. To find the pinout specific to your DAQ card, right-click the card in NI MAX and select Device Pinout. 

Figure 9. NI 9401 Pinout (Slot 5)

Table 1. Default Counter Terminals

According to these specifications, Wire A is connected to Pin 14, Wire B is connected to Pin 17, “5 VDC Power” of the encoder is connected to any unused digital line of the NI-9401 that is set to “high,” and “Ground” is connected to any COM terminal. 

Getting to See Your Measurement (in Measurement & Automation Explorer)

Now that you have your encoder connected to the measurement device, you can use Measurement & Automation Explorer to confirm it's operation.  To do so, go to the Data Neighborhood section of Measurement & Automation Explorer, and right-click on the NI-DAQmx Global Virtual Channels entry and select Create New NI-DAQmx Channel...

Creating a New Virtual Channel

Figure 10. Create New NI-DAQmx Channel...

From the prompt, expand the Acquire Signals category, followed by the Counter Input category, and then the Position category.  Select the Angular Position channel type.

Selecting an Angular Position Channel Type
Figure 11. Selecting the Angular Position Channel Type

Select the counter you wish to use on your hardware for this operation and press Next.  Finally, give your virtual channel a name and then select Finish.

You can now modify your Global Virtual Channel's configuration attributes  to match your specific encoder, and test its operation by clicking the run button in the measurement pane above the configuration pane.

Finish your Encoder Configuration and Test

Figure 12. Configuring the Channel Attributes to Match Your Encoder and Test the Encoder

Getting to See Your Measurement (LabVIEW)

Now that you have your encoder connected to the measurement device and confirmed its operation in Measurement & Automation Explorer, you can use NI LabVIEW and the DAQmx driver to transfer the data into the computer for visualization and analysis.

Table 1 shows an example of displaying the edge count and the corresponding position increments inside the LabVIEW programming environment.

An example of this can be found in the DAQmx Counter Input shipped examples found in <National Instruments>\LabVIEW xxxx\examples\DAQmx\Counter Input. Specifically, the Counter - Read Encoder example.

Image of the Counter - Read shipping example
Figure 13. LabVIEW Front Panel Showing Measurements