Why can't I see bouncing of a switch on an oscilloscope?

The oscilloscope is only remembering enough points to display the trace at the original resolution. If you capture a trace and then zoom in, it "spreads out" the dots, then connects them with straight line segments. This can make it seem as if high-speed features are not even there.

To find what you're looking for, start with your captured signal. Then "zoom in" to that rising edge by adjusting the time base. When you start getting close, you will start to see the rising slope of the signal.

As you do this, you will lose resolution on your captured signal. To fill in the details, you can capture new samples of that rising edge using the scope's triggering mechanism.

Once you can see the rising slope, capture a new sample. Any bouncing/overshoot/noise should become apparent.


This is an issue with scope setup and misunderstanding of how to interpret scope captures. You must capture the rising edge of a single pulse at a reasonably small resolution by using a single trigger. Good news is that this is exactly what oscilloscopes are designed to do

The generic procedure is:

  1. Set trigger to edge (up) and trigger level at approximately half scale of your button voltage
  2. (Optional) Move the trigger (horizontal) offset to the left hand of screen to maximize the portion of capture after trigger
  3. Switch trigger to "normal" and "single mode" to arm the trigger for a single capture
  4. Press your button
  5. If you use continuous trigger you will get a new capture with every button press
  6. If you don't use normal mode you may lose the captured signal due to preview refresh (typically triggered at 60 Hz to have a simulated "live signal" mode), "single-normal" mode freezes the scope after capture

Most digital capture scopes record a fixed number of points at all time base, so the sample rate is determined by a combination of time base and capture depth (which may be configured) and limited by the maximum sampling rate. On my Tektronix oscilloscope the scope displays both the time per div and effective sample rate.

What is displayed may also be "windowed" depending on the mode, so it may not always be clear what your sample rate actually is. For example, 100K points into 1-second timebase with 10 divisions on screen would be 10 kS/sec. 100k points into a 10 µs timebase with 10 divisions on screen would be 1 GS/sec. Typically this is near the limit for common digital scopes, so time bases below 10 µs are often "zoomed in" divisions at 10 µs (e.g. 100k points into 10 divisions at 10 µs, but display one division with 1 µs time base on the screen).

Also note that analog bandwidth (for example, "100 MHz") does not directly relate to the digital sample rate.

An additional quirk, triggering is not done on the (digital) sampled signal, but directly on the input through a dedicated trigger system. This means that you can trigger (sometimes) on a pulse that is too short to be resolved in the digital signal. Or you can add a trigger delay much much longer than the sample depth (for example, display the capture at 10 µs resolution, but 1 second after the trigger). This is also why there is often an "aux" or "external trigger" port that can be used to trigger, but never displayed or captured.

The scope is effectively sampling continuously into a ring buffer and the trigger comes along and tells the sampling systems to store the buffer. This is a large amount of data, so it requires some time to store the data and to rearm the sample system. The electronics and suitable memory to process a gigabit stream continuously is very expensive so scopes are designed to make use of limited storage depth and digital bandwidth through triggering schemes.


Here is a test I did with my 200MHz Tek scope. You should be able to get similar results with the Rigol, this is an older scope with a modest 2Gs/s capture frequency.

My circuit is just a standard 10:1 probe connected across a 6mm tact switch with a 1K pullup to +5V supply.

enter image description here

Not all the captures were this messy, some were pretty ideal looking. Pushing it hard seemed to lead to more messiness. There's a bit of ringing despite a bypass across the power supply- that falling edge due to the switch contacts closing is very fast.

If I set the sweep too slow (and then expand) I just get interpolation between samples, which might be misleading. There's no information there so the scope fakes it.

Capture was single event, triggered by falling edge on the active channel, set relatively close to the 5V level (the yellow arrow on the right indicates the trigger level of 3.68V). The center of the screen is at -96ns (moved to view a bit more of the pre-trigger data since most of the action is pre-trigger).