Close

[X] Keyboard PNP transistor matrix

A project log for Tetizmol [gd0153]

A Tetwice-layout keyboard designed to be abysmal.

kelvinakelvinA 12/11/2024 at 20:220 Comments

As discovered in #WK-50 Trackball Keyboard, allegedly a keyboard designer could use PNP transistors as a "dual diode" package. If this works, it would be useful as I won't need to worry about diode polarity and will only have to "starter solder" half as many components (whereby starter solder means having a component that isn't held in place by a solder joint yet).

I went to my uni and they happened to have some ZTX502 PNP that mouser said was discontinued so I looked on ebay and it seems that the 2N3906 is the cheapest and most abundant:

Realistically, I only need 20pcs but for only an extra £1 I can get 50pcs.
I looked at the datasheets compared to the ones on the WK-50 and the only real thing I noticed is that the SS8550 is "epitaxial" and that the values were negative:I did some looking into it and, from my understanding, I don't think that there would be any differences that should matter for this application. Hence I went back and the uni happened to have some 2N3906's that I proceeded to solder on:

For my First Attempt In Learning (FAIL) how to best solder the transistor on, I think it already looks rather good. Now I know:

I decided to put them on this corner of the RP2040 board so that, if I couldn't easily desolder them, it wouldn't affect my plan of using the entire other side of pins for the matrix. There's 16 GPIOs on that side and the matrix for Tetizmol should only need 14.

I checked continuities and then I installed KMK/Pog and changed the diode direction to ROW2COL, since the "diodes" should be pointing towards the column, but I wasn't getting anything when pressing buttons but was when I manually shorted them, so I know my pins are correct:

I also learned how to use the diode mode on my multimeter and I was getting .685 and .680 when the red lead was on pins 1 or 3 and black on pin 2, with 0L for anything else, so I know they're essentially acting like diodes. I did manage to get the neopixel working though by adding the neopixel.mpy into the lib folder and using GPIO23:

So I slept on this and the next day I continued researching and went back to my uni and they happened to have a BC559C, which seems to be part of a range:
At least the datasheet sounds like it's more similar to the S8550.

So I tacked it on:

I only wired a 1x1 matrix

And the chordmap still didn't work. But now it also wasn't working for shorting pins so I closed Pog and decided to go into the serial port.

I had a card up my sleeve. I had also asked for 2 diodes which obviously should work. Their voltage drops were .546 / .562V when I soldered them on:

Can you see how much more work you'd have to do to use diodes instead of transistors?

And as expected... wait, no! It's still not working!

Opened Pog again to check settings, changed the diode orientation to COL2ROW and saved:

So now I have a configuration I know works, so I desoldered the diodes and soldered the 3rd pin for the 2N3906:

So now it works???? 

Not entirely sure what happened. The voltage drops are .687/.682 so it's not like the transistor has changed much. I can only assume that maybe Pog didn't save or maybe the chordmap finder isn't as reliable as I assumed for testing keys.

Discussions