Optical Shaft Encoder
The optical shaft encoder is used to measure both relative position of and rotational distance traveled by a shaft. It works by shining light onto the edge of a disk outfitted with evenly spaced slits around the circumference. As the disk spins, light passes through the slits and is blocked by the opaque spaces between the slits. The encoder then detects how many slits have had light shine through, and in which direction the disk is spinning.
The optical shaft encoder can be used to improve a robot in various ways. The encoder can measure rotational distance traveled and speed, which can be used to monitor, for example, the angular position of a robot gripper arm or the speed of a robot. Knowing these parameters can greatly assist you with performing autonomous tasks with your robot.
The optical shaft encoder can be used to track distance traveled, direction of motion, or position of any rotary component, such as a gripper arm. The encoder can also be used to detect movement, which could facilitate richer interaction between the robot and its environment (e.g., human-robot interaction). If a human moves a robot arm that is attached to an encoder (e.g., during a handshake), the robot detects the arm movement and the direction(s) and distance(s) traveled, helping the robot classify the interaction as a handshake.
While the diameter of the disk in the encoder does not really matter, the diameter of the wheel or gear whose shaft passes through the encoder does! The circumference of the wheel is equal to its diameter multiplied by pi (approx. 3.14). Multiplying the distance traveled which when multiplied by the number of revolutions gives of the distance traveled.
The optical shaft encoder can detect up to 1,700 pulses per second, which corresponds to 18.9 revolutions per second and 1,133 rpm (revolutions per minute). Faster revolutions will therefore not be interpreted exactly, potentially resulting in erroneous positional data being passed to the microcontroller.
- Sensor Type
- Infrared light sensor and infrared LED
- 1 degree when used with a VEX ARM® Cortex®-based Microcontroller
- 2 degrees when used with a PIC Microcontroller and ROBOTC
- 4 degrees when used with a PIC Microcontroller and easyC V2 or easyC PRO
- No limit, full 360° continuous rotation
- 2 5/8in x 2in
- 0.08lb per sensor
- Shaft Size
- 1/8in square
- Black - ground; Red - (+) power; White - control signal
easyC Sample Code
CMU Robotics Academy Resources
- Quadrature Encoder Printout (Teaching ROBOTC for VEX)
- Does Wheel Size Matter - Encoder Lesson (VEX Curriculum 2.0)
- Programming with Sensors in ROBOTC (Teaching ROBOTC for VEX)
ROBOTC Sample Code