I’d like to introduce the latest in the “Bikeshed Board Series” of PCBs.
Have you ever had a button that acted erratically on your Arduino or other microcontroller? If you have, you probably quickly learned about button debouncing.
Effectively, buttons are imperfect binary devices. The internal contacts can physically bounce, slide, or do all number of things before settling into a finished state.
If you are just turning on a light, it shouldn’t be a problem, but if you have a microcontroller that is looking to watch for when a button changes state, then you are in for a world of hurt.
There are numerous methods, both hardware and software, to account for this, but sometimes you just want to move quickly and have it “just work” without having to write a debouncing algorithm, load a debouncing library, or implement a debounce circuit. While there are some good libraries out there (see GitHub - craftmetrics/esp32-button: Button press detection with debounce, for esp32 idf for instance), sometimes you don’t have control of the software stack, or you want to keep every cycle of your micro controller to a task at hand (ie, timing critical control systems).
For these cases, I’m designing a really simple debounce circuit based on an RC and Schmitt trigger. What is that you say? Its basically a filter to smooth out quick transitions, along with a flip-flop that has transitions set up so that you can’t easily flip and flop without large state changes (known as hysteresis).
I present to you, the D-BouncR
Not complete, board artwork not done and layout still being revised.
This board features:
- Independent Hardware Debouncing for up to 6 Buttons
- Adjustable debouncing parameters (change R and C values, examples will be in documentation)
- Protoboard Compatible (just drop it on your protoboard and pins should align for outputs and power)
- Adjustable High Voltage or Low Voltage default state with solderable jumpers per-channel.
- An attractive “D” shape
- Cheap & Reusable.
- Hand Solderable (even for beginners)
As with all boards in the “Bikeshed Series”, I encourage you to make your feature requests and I’ll try to fit as much as I can in.