The rotary encoder is a great user input device with a satisfying tactile feedback. A lot of user interfaces are slowly transitioning towards button-less devices, but when in need of a physical system, I always love to use encoders.
However if you have ever worked with one, you know they are not so easy to interface; and the culprit is input bounce.
Bounce coupled with fast changing signals is a nightmare. There are libraries out there that solve this issue in software but with a 8 bit micro-controller like the ATMEGA328 of Arduino fame, all the processing power will be lost in trying to get a clean signal. This can be solved with a few passive components.
Hardware Debounced Rotary Encoder


This module completely eliminates the need to filter anything in software. Signals coming through are clean, bounce free. Saves me future headaches.

Bonus: a clean, bounce free edge captured on a scope

3 thoughts on “Hardware Debounced Rotary Encoder”
Could you post a PCB design? I have also issues with bouncing signals and your design seems like a good upgrade to rotary encoder with just pull up resistors.
Hi Rafal,
The design is just literally 3 RC networks and a Schmitt trigger which you can see in the picture. There’s nothing much to share in terms of actual PCB design!
Dear Rafal I find the Tony’s work very useful, but every time I create a circuit I always share the gerber file, the BOM and file.ino with all Arduino users so as to save time for others. Something easy for me can be difficult for others.