jpskenn / Jones

Row-staggered 60% keyboard with gapless R2-R3 row. GH60 case compatible.
MIT License
12 stars 3 forks source link

Question about the extra diodes on each pin as a column #52

Closed myst729 closed 2 years ago

myst729 commented 2 years ago

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?

jpskenn commented 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.

myst729 commented 2 years ago

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 😄.

jpskenn commented 2 years ago

Good understanding!

You may need extra diodes or non-1N4148 diode.

Hope you could solve the situation👍

myst729 commented 2 years ago

😆 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

jpskenn commented 2 years ago

Never used that...😩

myst729 commented 2 years ago

Problem resolved. Thank you.

myst729 commented 2 years ago

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.

jpskenn commented 2 years ago

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😉)

myst729 commented 2 years ago

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.

myst729 commented 2 years ago

I finally step back to duplex layout for several reasons. 😃

  1. Comparing to standard ortho matrix, duplex significantly reduces the amount of GPIOs. In practice, half col pins, which is a big improvement.
  2. Although the amount of GPIOs in a round-robin layout can be even less, the PCB routing complexity increases a lot. To achieve a fairly reasonable complexity (also for future maintainability), round-robin does not have obvious advantages in regards of GPIOs.
  3. Duplex doesn't need to calculate Vf, easier to alter materials.

Nonetheless, this repo is still a great inspiration for me.

jpskenn commented 2 years ago

Thanks to report your status👍

PCB routing complexity is ... Yes, I'm struggled with that😅 So, I chose duplex for my next project Nora.

myst729 commented 2 years ago

Running QMK on RP2040? Interesting.

jpskenn commented 2 years ago

No, No, No.

QMK runs on ATmega32u4. Some other "X"MK runs on PICO😝