Closed myst729 closed 2 years ago
As you know, Jones uses Round-Robin (RR) matrix. When we push some specific combination of switches, ghost will happen without diode on column pin.
It's hard to explain in English. (My language is Japanese)
Could you see this artcle? https://github.com/jpskenn/SMK-Supplements/tree/master/RoundRobinMatrix
Then think about this route.
PIN1 --> D11 --> SW12 --> D12 --> D22 --> SW23 --> D23 --> PIN3
Here's Google translated version. https://github-com.translate.goog/jpskenn/SMK-Supplements/tree/master/RoundRobinMatrix?_x_tr_sl=ja&_x_tr_tl=en&_x_tr_hl=ja&_x_tr_pto=nui
If you have any question, reply comment please.
The article is very helpful. So the implementation is not simply an open-close circuit thing just like ortho matrix. It's tightly coupled with the MCU and diode's electrical parameters. If I want to migrate to other designs, say, STM32Fxxx or 32U4 at 8MHz 3.3v, extra effort is required to do calculating, or replace certain components.
Thank you. I'll consider how much work is needed to integrate with my other requirements. Or find a similar MCU with more GPIOs (AT90USB646 or something) that could afford an ortho matrix 😄.
Good understanding!
You may need extra diodes or non-1N4148 diode.
Hope you could solve the situation👍
😆 By the way, have you used AT90USB646? It's very similar to 32U4 in many aspects, and has double GPIOs and flash. I have successfully run it in bus power 5V mode. Later I want to add bluetooth support so I need to run it in self power 3.3V mode. Stuck now. https://electronics.stackexchange.com/questions/590388/how-to-make-at90usb646-run-at-3-3v-vcc
Never used that...😩
Problem resolved. Thank you.
So I think about my plan again. I want to build a keyboard with bluetooth enabled (32u4 + MDBT40 module). Thus I need to run 32u4 at 8MHz, 3.3V since nRF chip cannot work at higher than 3.6V. According to the formula, I get a VIH of 0.2 * 3.3 + 0.9
which is 1.56V. Also I'm using CD4148WSP diodes from LIZ electronics, which has a Vf of 1 ~ 1.25V (from 10mA to 100mA).
Under such conditions, in a base RR matrix, a normal pressed key has a total Vf of 1~1.25V (a single diode), less than VIH. But for a ghost key, it passes through two diodes, now the Vf is 2V at least, greater than VIH.
Conclusion is that, a very base RR matrix is enough for my plan. I don't need an extra diode (or a resistor that contributes Vf equally) for each column pin. Does that sound reasonable?
Back to your original design. I guess 2.4V overheads VIH (1.9V) too much. Using a resistor (contributes Vf of 0.45V) on each column pin could make it a little lower (2.1V or so). Less carbon emissions 😄
I don't know if it's feasible, only paperwork now. I'll grab a PCB for testing.
It looks good to run 3.3V without extra diode.
And using resistor for lowering voltage is also interesting! I'll test that when I leave hospital🏥 (Don't worry, I'm just got Checken pox😉)
Tested. The extra diodes are still mandatory for Li-Po powered 32u4+bluetooth. The current is very low, so the diode's actual Vf is much lower than its maximum value. Two diodes couldn't provide enough Vf in total. Four diodes do.
I finally step back to duplex layout for several reasons. 😃
Nonetheless, this repo is still a great inspiration for me.
Thanks to report your status👍
PCB routing complexity is ... Yes, I'm struggled with that😅 So, I chose duplex for my next project Nora.
Running QMK on RP2040? Interesting.
No, No, No.
QMK runs on ATmega32u4. Some other "X"MK runs on PICO😝
This is not an issue. It's a technical problem that I don't figure out. Excuse me.
I know diodes could fix the ghosting problem in an ortho matrix. But I couldn't get the idea why every "column pin" has an extra diode in your round-robin design. What's the purpose and how do they work?