IBM Model M buckling spring switch bounce oscilloscope measurement

mind_prepared

11 Jan 2018, 01:56

I've searched all over the web for information on the default switch bounce for IBM's buckling spring design, but couldn't fit anything. I'm sure there's some IBM whitepaper or datasheet that has all the info, but it's probably locked away in some dusty-ass IBM archive and will not ever see the light of day again.

I've added a feature to my replacement controller (here vendors-f52/ibm-model-m-bluetooth-usb-h ... 17388.html) to allow for manual adjustment of the default debounce period (I haven't implemented a fancy debouncing algorithm yet, only a first-edge detect + timer algorithm), but I wasn't sure about the physical properties of the 'buckling spring torsional snap actuator' + membrane contacts. So I hacked together a testing rig with a strip of perboard, two FFC sockets and a pull up and hooked it up to my scope to take a few measurements.

The outcome is this: most buckling spring switches on the Model M keyboard assembly used for testing have actually <3ms of bounce. 3.23ms was the worst I could find. In comparison, the average Cherry switch (1ms max) or even a run-of-the-mill microswitch (400us) seem to perform much, much better.
ibm_switch_bounce1.png
ibm_switch_bounce1.png (194.42 KiB) Viewed 942 times
Not exactly the kind of result you would expect after reading the patent description from 1983 - "a switch actuator having minimum bounce of the switch actuator during release of the switch actuator from the position in which it activated a contact switch."

User avatar
Chyros

11 Jan 2018, 07:26

Very interesting, thanks for the insight. This also definitely makes my argument that Bloody's measurement of a 22 ms bounce time on Cherry switches is bollox seem pretty fair xD .

User avatar
seebart
Offtopicthority Instigator

11 Jan 2018, 07:30

Hey good to see you back mind_prepared, and you're doing technical research now? Impressive work.

mind_prepared

11 Jan 2018, 12:31

Glad to hear it is of use to anyone. However, you might wanna take my measurements with a grain of salt. I'm not a professional electronics engineer, so there's a chance I didn't do this the proper way (what is the 'proper' way?). I've done it pretty much the same way Hasu did on GH (where he disclosed that he wasn't an electronics engineer either).

The fact of the matter is that Cherry Corp. is stating a maximum of 5 ms of bounce for their MX-series switches. I have not been able to measure anything near 5 ms though, not even 1 ms (that's Hasu's worst-case reading when activating the switch by flipping a finger). Why is that? I don't know.

I suppose it would help if some guys who are more versed in measuring switch bounce would chip in.

User avatar
Chyros

11 Jan 2018, 12:47

5 ms is a standard debouncing time. It's just Cherry saying they don't bounce on a standard rig. Other manufacturers do this as well (at least the ones using electromechanical switches).

DMA

13 Jan 2018, 03:43

model F doesn't bounce: https://github.com/dmaone/CommonSense/b ... F/head.png
(actually it does, a bit. For some keys there's peak at 80% ~1ms before it settles, then it goes down to like 30% and then settles. CS has 8 bit debouncing buffer - it translates to about 2.5ms. 4 bits also work, but the "e" key on my testbed is sometimes registered twice.)

User avatar
seebart
Offtopicthority Instigator

13 Jan 2018, 07:54

mind_prepared wrote: Glad to hear it is of use to anyone. However, you might wanna take my measurements with a grain of salt. I'm not a professional electronics engineer, so there's a chance I didn't do this the proper way (what is the 'proper' way?). I've done it pretty much the same way Hasu did on GH (where he disclosed that he wasn't an electronics engineer either).
It's the effort that counts and the fact that you point out that you are not a professional electronics engineer. Good work! I have a problem with people putting down other peoples efforts which is what I've been experiencing elsewhere on DT recently...

zool

15 Apr 2018, 15:03

for some extra comparison I decided to take a couple of switches out and see what the bounce time is too. I tried to keep the capacitance down as much as possible.

All stable within the std 5ms recommended denounce time.

Fresh Gateron Green ~ 90µs.
Fresh Kailh Box Navy ~ 500µs.
Fresh Kailh Box Jade ~ 75µs (side note actual contact bounce seems to be only 1500ns, but some times you get a second or third bounce 50µs or so latter. This is happen even more so on the Navy.
Used Cherry Blue (~3years) ~ 300µs.
Less Used Cherry Blue ~ 50µs.
Spoiler:
Jade
jade.png
jade.png (11.36 KiB) Viewed 699 times
Jade about half of the time it has a second bounce.
jadeSecond.png
jadeSecond.png (10.78 KiB) Viewed 699 times
Navy
navy.png
navy.png (11.57 KiB) Viewed 699 times
Navy
navy2.png
navy2.png (12 KiB) Viewed 699 times
Gateron Green
gaterongreen.png
gaterongreen.png (10.86 KiB) Viewed 699 times
Cherry Used
cherryblueold.png
cherryblueold.png (11.29 KiB) Viewed 699 times
Cherry Not as Used
cherrybluenotasold.png
cherrybluenotasold.png (11.81 KiB) Viewed 699 times

zool

15 Apr 2018, 15:25

A little more playing with the inconsistent with the box switches the extra bounce was coming from a slow steady actuation, not there if i just press it normally. how you press matters i guess.

DMA

15 Apr 2018, 17:21

zool, do you have a load resistor in your test setup, or discharging thru oscilloscope?

zool

16 Apr 2018, 01:45

DMA wrote: zool, do you have a load resistor in your test setup, or discharging thru oscilloscope?
Just scope, no resistor, hence the slow decay.

zool

04 May 2018, 11:34

I had a more serious swing at getting some numbers on the debounce times for the switches I had in front of me at the time.

set up is like this:
switch connected to micro controller pin that is configured as input with pull up and as an external interrupt on falling edge, and gnd. (~15nsec slew with internal pullup on)

scope is connected to microcontoller pin that is configured as output.

when falling edge interrupt is triggered sets the output to low for ~4usec as makes it easier trigger off and to see when the scope is set to a window of 10-20msec.

scope is set to trigger on falling edge. infinite trace persistence and a 20msec holdoff.
the three switches are set to the same time division to see difference more clearly. Marker is set at 5msec.

I pressed each switch 200ish times. so you can see the maximums times.

BoxJade:
Spoiler:
boxjade.png
boxjade.png (10.07 KiB) Viewed 600 times
BoxNavy:
Spoiler:
boxnavy.png
boxnavy.png (10.38 KiB) Viewed 600 times
Used Cherry Blue:
Spoiler:
cherry.png
cherry.png (10.62 KiB) Viewed 600 times
oh and a close up view of the wave form:
Spoiler:
waveform.png
waveform.png (11.81 KiB) Viewed 600 times
might be nice to so the statistics.

mind_prepared

28 Jun 2019, 22:53

ah, very interesting! way to go guys!

While my measurements roughly square with zool's as far as total bounce time is concerned, I didn't see any actual bouncing. I guess I need to change some settings on the scope to see some actual bouncing?

DMA

29 Jun 2019, 17:41

trigger on falling edge, have a resistor (not small - 10K would be OKish) between switch output and ground, half-second screen length (50ms/div I guess?).
That should tell you an overview - does it happen or not. Then you can go and zoom in horizontally

Post Reply

Return to “Workshop”