Incremental Encoder Reader

This project decodes an incremental rotary encoder output stream and outputs information on a dot matrix LED display.

Design

This system is based around three main components:
- ARM Cortex M4
- HCMS-2903 Dot Matrix Display
- OMRON E6D Quadrature Rotary Encoder

The E6D Quadrature encoder outputs 24,000 pulses per revolution as well as a "zero" position flag. Using one of peripheral timers in the ARM we can easily read the Quadrature output and increment a 32-bit counter. This timer functions on an interrupt and allows other functionality without missing a single pulse.

KiCAD Design Files & Firmware


Rev 1.0 ✔


The initial proof-of-concept works as intended.
The display here is only showing the total angular distance traveled to the nearest degree. The encoder itself has a resolution of 360/24000 = 0.015°.

Going Forward 🌌


Since the display uses a dot matrix technology we are not limited to numbers. So why not define more ASCII characters?
There are more "Extended" ASCII characters that still need to be defined.

Final Revision

The final revision has morphed into this project.