STM32 Rotary Encoder

From Stm32World Wiki
Revision as of 11:08, 26 July 2021 by Lth (talk | contribs)
Jump to navigation Jump to search
Rotary encoder on de-bouncing breakout board

Rotary Encoders are devices which will generate pulses when they are turned.

Typically they will have two outputs with the pulses out of phase. By checking which pulse "comes first" the direction of the turn can be determined. It is not overly complicated to handle this manually, for example by hooking the signals up to an external GPIO Interrupt.

Rotary encoder signals

A rotary encoder will output 2 signals 90 degrees out of phase with each other.

Rotary encoder signals.jpeg

By analysing the order of the transitions the steps can be counted and the direction can be detected.

Rotary encoder de-bouncing

Rotary encoders are build with mechanical contacts and they are prone to "bouncing" (one press generate more than one interrupt". The "signals" can be cleaned up by implementing a low-pass filter like this:

Rotary debounce.png

I just happened to have a few of those rotary encoder breakout boards lying around.

Using Timer to decode rotary encoder

In STM32CubeMX a timer can be configured to combine two channels in Encoder mode.

Timer Encoder.png

This will highlight the necessary pins:

Rotary encoder pins.png

Miscellaneous Links