|
|
|
|
|
by doix
1351 days ago
|
|
I don't get the multiplexer vs matrix argument. Wouldn't multiplexers add their own problems? You need to wait for the output to become stable when you change the input select. I'm guessing as part of the scanning, they are changing the SEL of the muxes and then waiting? The article seems to gloss over that completely. I would have thought they'd be super cheap anyway, if you're looking at $200 keyboards, spending a dollar or so to get a few muxes doesn't seem like a big deal. If they were truly better, I imagine every keyboard enthusiast would be using them. Edit: I guess since they have multiple muxes, they change the SEL well in advance before scanning the key. So it just requires "clever" scheduling. Just like a matrix requires "clever" diodes, I really don't buy that muxes are an advantage here. Disclaimer: somehow graduated with an EE, but am an idiot. |
|
The settling time of the switch is the same, regardless of the scanning technique used.
But with a multiplexer, the output of one switch has no impact on the output of another – you can independently actuate each key. They are all essentially isolated switches with individual pull-up resistors.
The multiplexing can be done in a number of different ways, none of which need to be particularly clever. The simplest scheme is simply to connect each key directly to a GPIO on a large-pinout microcontroller, like a TQFP-144. The fewer the keys, the less GPIO you need.
This is the best way to build a keyboard, since input can be done at the clock speed of the MCU, and debouncing can happen on all pins in parallel simultaneously.
Slightly more complex would be to use a smaller MCU with a multiplexer on each input, like a 4051 or 4067. The switching time is like 20-50ns on these parts, so while it's not quite as fast as a GPIO register read, it's still pretty quick, more than fast enough for keyboards.
If you really wanted to get crazy, you could read each switch with a high speed ADC and use an ML model to debounce the keys. But at that point, you're better off just using optical switches which don't really need debouncing.