Certain types of simple problems have a way of persisting despite being surrounded by all types of changes and technological advancements. We certainly have eliminated a number of problems—for example, the need to frequently replace vacuum tubes in the earliest computers (that must have been a seriously tiresome task). On the other hand, we have issues such as switch bounce.
How to Handle Switch Bounce
Mechanical switches are still widely used, and there simply is no getting around the fact that when metal objects come into abrupt contact, there will not be a smooth transition between “on” and “off.”
Switch bounce can be controlled by means of an external circuit. A standard approach uses passive components to smooth out the voltage variations caused by the bouncing action, but debouncing can also be accomplished with the aid of logic gates that are interconnected so as to form a latch.
My preferred approach is to deal with switch bounce in firmware. This solution is straightforward and flexible, but it is not always an option. In some cases, the additional burden on the processor may be deemed unacceptable. In other cases, the design does not include a microcontroller, and it’s awfully difficult to debounce in firmware when you have nothing to execute the firmware.
Integrated Circuits for Switch Bounce
The fourth option for eliminating the effects of switch bounce is to use a dedicated IC. In a previous article, I discussed the BD3376MUV-M switch monitor from ROHM. This device monitors up to 10 pushbutton switches, and it simplifies the task of debouncing. With this part, though, the primary benefit is freeing up the processor bandwidth that would otherwise be required to monitor numerous mechanical switches.
The MAX16150 from Maxim is a more direct solution to switch bounce. This device is specifically intended for debouncing on/off switches.
Diagram taken from the MAX16150 datasheet.
As you can see in the diagram, the MAX16150 serves as an electronic switch that separates the power supply voltage from the rest of the circuit. The pushbutton no longer directly controls the power that is supplied to the circuit; rather, the pushbutton provides an input signal to the MAX16150.
This IC incorporates quite a bit of useful functionality into a very small (1 mm × 1.5 mm) package. The switch input can handle voltages up to 60 V, and it has ±15 kV ESD protection. There is an internal pull-up resistor for the switch interface, and the switch signal is debounced and latched. The debounce timing can be set to 50 ms or 2 s. This allows the part to accommodate switches with different bounce characteristics, though the degree of customization is rather limited.
This scope capture from the MAX16150 datasheet shows you the relationship between the bouncing switch input signal and the latched output signal.
The MAX16150 provides a latched output that can source up to 20 mA of current; in other words, it can directly power a low-current circuit. For higher-current applications, the latched output can be used to enable and disable a separate voltage regulator.
The “Freshness Seal”
Despite the fact that this sounds like an advertisement for something that you would use in your kitchen, we are actually talking about electronics here. The datasheet for the MAX16150 points out that this device functions as a battery freshness seal. I have no idea how standard or widespread this terminology is, and the meaning was not immediately clear to me.
However, this functionality is addressing a legitimate problem. Just because a device is switched off doesn’t mean that it is drawing zero current. For devices that are turned on only occasionally, this standby current might cause battery life to be significantly shorter than it should be. The MAX16150 provides an easy way to ensure that a device will consume very small amounts of current during its inactive state, because the MAX16150’s standby current is only 20 nA.
What’s your preferred approach to switch debouncing? Do you think that a chip like the MAX16150 is a cost-effective solution? Feel free to leave a comment and let us know.