Can multiple Schmitt triggers in series fully debounce a switch?

Can multiple Schmitt triggers in series fully debounce a switch?

A single Schmitt trigger with a analog filter in front of it can be used for debouncing. However, after that Schmitt trigger, the signal is fully digital. Any additional Schmitt triggers won't change that. Ideally they will preserve the signal.

On a separate topic, debouncing in firmware shouldn't present much of a load. The usual way is to sample the switch state in a periodic interrupt you already have anyway. You declare the debounced state the current switch value when you've seen the switch in that state for N consecutive samples. I usually require the switch to be in the same state for 50 consecutive 1 ms interrupts for the new state to be considered valid. That usually takes a very small fraction of the overall processor cycles.


Using Schmitt triggers in series would not further reduce bounce.

Consider the filter:

Schmitt trigger waveform comparison

The input is (U). The red line is a 50% threshold, the output of which is seen as signal (A). It bounces each time the input crosses.

The green lines are something like 33% and 66%, as you had stated. But the output (B) only switches when the input (U) crosses from one green threshold to the other.

Most importantly, the output is either fully HIGH or LOW (digital). So if the output of a Schmitt trigger were fed into the input of another, there were be essentially no difference.

Take the filtered output from above (B), and think about how it would be seen by another Schmitt trigger:

Schmitt trigger in series with another

Again, the output of the first would be either HIGH or LOW. So it would cross the thresholds at the same time, resulting in the same output as the input. There is nothing to debounce! If anything, I would expect it to create more noise, because you're introducing more components and thus more room for error.

It sounds like what you may be looking for is a Schmitt trigger with adjustable thresholds. Some are symmetrical (for example: 33% and 66%, or 10% and 90%). Others are non-symmetrical (for example: 33% and 80%). You can create your own using an op-amp.

Try playing around with this simulation I put together a while back: Schmitt Trigger Simulation - Non-Inverting Non-Symmetric

Schmitt Trigger Simulation - Non-Inverting Non-Symmetric