Rotary encoder
From Wikipedia, the free encyclopedia
A rotary encoder, also called a shaft encoder, is an electro-mechanical device used to convert the angular position of a shaft or axle to a digital code, making it a sort of transducer. These devices are used in robotics, in top-of-the-line photographic lenses, in computer input devices (such as optomechanical mice and trackballs), and in rotating radar platforms.
There are two main types: absolute, and relative.
Contents |
[edit] Absolute rotary encoder
[edit] Construction
The absolute type produces a unique digital code for each distinct angle of the shaft.
A metal sheet cut into a complex pattern is affixed to an insulating disc, which is rigidly fixed to the shaft. A row of sliding contacts is fixed to a stationary object so that each contact wipes against the metal sheet at a different distance from the shaft. As the disc rotates with the shaft, some of the contacts touch metal, while others fall in the gaps where the metal has been cut out. The metal sheet is connected to a source of electric current, and each contact is connected to a separate electrical sensor. The metal pattern is designed so that each possible position of the axle creates a unique binary code in which some of the contacts are connected to the current source (i.e. switched on) and others are not (i.e. switched off).
This code can be read by a controlling device, such as a microprocessor, to determine the angle of the shaft.
[edit] Standard binary encoding
An example of a binary code, in an extremely simplified encoder with only three contacts, is shown below.
Sector | Contact 1 | Contact 2 | Contact 3 | Angle |
---|---|---|---|---|
1 | off | off | off | 0° to 45° |
2 | off | off | on | 45° to 90° |
3 | off | on | off | 90° to 135° |
4 | off | on | on | 135° to 180° |
5 | on | off | off | 180° to 225° |
6 | on | off | on | 225° to 270° |
7 | on | on | off | 270° to 315° |
8 | on | on | on | 315° to 360° |
In general, where there are n contacts, the number of distinct positions of the shaft is 2n. In this example, n is 3, so there are 23 or 8 positions.
In the above example, the contacts produce a standard binary count as the disc rotates. However, this has the drawback that if the disc stops between two adjacent sectors, or the contacts are not perfectly aligned, it can be impossible to determine the angle of the shaft. To illustrate this problem, consider what happens when the shaft angle changes from 179.9° to 180.1° (from sector 4 to sector 5). At some instant, according to the above table, the contact pattern will change from off-on-on to on-off-off. However, this is not what happens in reality. In a practical device, the contacts are never perfectly aligned, and so each one will switch at a different moment. If contact 1 switches first, followed by contact 3 and then contact 2, for example, the actual sequence of codes will be
- off-on-on (starting position)
- on-on-on (first, contact 1 switches on)
- on-on-off (next, contact 3 switches off)
- on-off-off (finally, contact 2 switches off)
Now look at the sectors corresponding to these codes in the table. In order, they are 4, 8, 7 and then 5. So, from the sequence of codes produced, the shaft appears to have jumped from sector 4 to sector 8, then gone backwards to sector 7, then backwards again to sector 5, which is where we expected to find it. In many situations, this behaviour is undesirable and could cause the system to fail. For example, if the encoder were used in a robot arm, the controller would think that the arm was in the wrong position, and try to correct the error by turning it through 180°, perhaps causing damage to the arm.
[edit] Gray encoding
To avoid the above problem, Gray encoding is used. This is a system of binary counting in which two adjacent codes differ in only one position. For the three-contact example given above, the Gray-coded version would be as follows.
Sector | Contact 1 | Contact 2 | Contact 3 | Angle |
---|---|---|---|---|
1 | off | off | off | 0° to 45° |
2 | off | off | on | 45° to 90° |
3 | off | on | on | 90° to 135° |
4 | off | on | off | 135° to 180° |
5 | on | on | off | 180° to 225° |
6 | on | on | on | 225° to 270° |
7 | on | off | on | 270° to 315° |
8 | on | off | off | 315° to 360° |
In this example, the transition from sector 4 to sector 5, like all other transitions, involves only one of the contacts changing its state from on to off or vice versa. This means that the sequence of incorrect codes shown in the previous illustration cannot happen here.
[edit] Relative rotary encoder
The relative rotary encoder (also called incremental encoder) is used when absolute encoding methods would be too cumbersome (because of the size of the patterned disc). This method also uses a disc attached to the shaft, but this is a much smaller disc marked with a large number of radial lines like the spokes of a wheel. An optical switch, such as a photodiode, generates an electrical pulse whenever one of the lines passes through its field of view. An electronic control circuit counts the pulses to determine the angle through which the shaft has turned.
This system, in its simplest form, cannot measure the absolute angle of the shaft. It can only measure the change in angle relative to some arbitrary datum, such as shaft's position at the time when the power was switched on. This uncertainty is not a problem for computer input devices such as mice and trackballs. When the absolute position must be known, a second sensor can be added that detects when the shaft passes its zero position.
The second problem with this system is that it cannot tell which direction the shaft is rotating in. To overcome this problem, the single optical sensor must be upgraded to two sensors placed at slightly different angles around the shaft. The direction of rotation can then be inferred from the order in which the two sensors detect each radial line. This type of encoder is known as a quadrature encoder.
[edit] Single-track rotary encoder
If the manufacturer moves a contact to a different angular position (but at the same distance from the center shaft), then the corresponding "ring pattern" needs to be rotated the same angle to give the same output. If the most significant bit (the inner ring in Figure 1) is rotated enough, it exactly matches the next ring out. Since both rings are then identical, the inner ring can be omitted, and the sensor for that ring moved to the remaining, identical ring (but offset at that angle from the other sensor on that ring). Those two sensors on a single ring make a quadrature encoder.
For many years, Torsten Sillke and other mathematicians believed that it was impossible to encode position on a single track so that consecutive positions differed at only a single sensor, except for the two-sensor, one-track quadrature encoder. However, in 1996 Hiltgen, Paterson and Brandestini published a paper showing it was possible, with several examples. See Gray code for details.
[edit] See also
Analogue devices that perform a similar function include the synchro, the resolver, the rotary variable differential transformer (RVDT) and the rotary potentiometer.
[edit] External links
- "Encoders provide a sense of place" article by Jack Ganssle 2005-07-19 describes "nonlinear encoders".