Univac Keyboard (Micro Switch) - Now USB converted via custom TMK scan module!

User avatar
snacksthecat
✶✶✶✶

25 May 2019, 16:30

Update: Now USB converted via custom TMK scan module!

tldr: viewtopic.php?p=456023#p456023

Code: Select all

/*
 * scan matrix
 */
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "debug.h"
#include "util.h"
#include "matrix.h"


#ifndef DEBOUNCE
#   define DEBOUNCE	4
#endif
static uint8_t debouncing = DEBOUNCE;

/* matrix state(1:on, 0:off) */
static matrix_row_t matrix[MATRIX_ROWS];
static matrix_row_t matrix_debouncing[MATRIX_ROWS];

static matrix_row_t read_cols(void);
static void init_cols(void);
static void init_rows(void);
static uint8_t select_row(uint8_t row);

static uint8_t index;
static uint8_t row_to_select;

void matrix_init(void)
{
    // initialize row and col
    init_cols();
	init_rows();

    // initialize matrix state: all keys off
    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
        matrix[i] = 0;
        matrix_debouncing[i] = 0;
    }
}

uint8_t matrix_scan(void)
{
    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
        uint8_t allow_select = select_row(i);
        //_delay_us(30);
		if (allow_select) {
			matrix_row_t cols = read_cols();
			if (matrix_debouncing[i] != cols) {
				matrix_debouncing[i] = cols;
				if (debouncing) {
					debug("bounce!: "); debug_hex(debouncing); debug("\n");
				}
				debouncing = DEBOUNCE;
			}
		}
    }
    
    if (debouncing) {
        if (--debouncing) {
            _delay_ms(1);
        } else {
            for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
                matrix[i] = matrix_debouncing[i];
            }
        }
    }
    return 1;
}

inline
matrix_row_t matrix_get_row(uint8_t row)
{
    return matrix[row];
}

/* Column pin configuration
 * col: 0   1   2   3   4   5   6   7   8   9   10  11
 * pin: B7  D0  D1  D2  D3  D4  D5  D7  E0  E1  C0  C1
 */
static void init_cols(void)
{
    DDRB  &= ~(1<<0);
    PORTB |=  (1<<0);
    DDRD  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5| 1<<7);
    PORTD |=  (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5| 1<<7);
    DDRE  &= ~(1<<0 | 1<<1);
    PORTE |=  (1<<0 | 1<<1);
    DDRC  &= ~(1<<0 | 1<<1);
    PORTC |=  (1<<0 | 1<<1);
}

static matrix_row_t read_cols(void)
{
    return (PINB&(1<<0) ? 0 : (1<<0)) |
           (PIND&(1<<0) ? 0 : (1<<1)) |
           (PIND&(1<<1) ? 0 : (1<<2)) |
           (PIND&(1<<2) ? 0 : (1<<3)) |
           (PIND&(1<<3) ? 0 : (1<<4)) |
           (PIND&(1<<4) ? 0 : (1<<5)) |
           (PIND&(1<<5) ? 0 : (1<<6)) |
           (PIND&(1<<7) ? 0 : (1<<7)) |
           (PINE&(1<<0) ? 0 : (1<<8)) |
           (PINE&(1<<1) ? 0 : (1<<9)) |
           (PINC&(1<<0) ? 0 : (1<<10)) |
           (PINC&(1<<1) ? 0 : (1<<11));
}

/* Row pin configuration
 * row: 0   1   2   3   4   5   6   7   8   9   10  11
 * pin: B6  B5  B4  B3  B2  B1  B0  E7  E6  F0  F1  F2
 */
static void  init_rows(void)
{
    DDRB  &= ~(1<<6 | 1<<5 | 1<<4 | 1<<3 | 1<<2 | 1<<1 | 1<<0);
    PORTB |=  (1<<6 | 1<<5 | 1<<4 | 1<<3 | 1<<2 | 1<<1 | 1<<0);
    DDRE  &= ~(1<<7 | 1<<6);
    PORTE |=  (1<<7 | 1<<6);
    DDRF  &= ~(1<<2 | 1<<1 | 1<<0);
    PORTF |=  (1<<2 | 1<<1 | 1<<0);
}

static uint8_t select_row(uint8_t row)
{
	uint8_t allow_select = 0;
	
    switch (row) {
        case 0:
		    allow_select = (PINB&(1<<3) ? 0 : 1);
            break;
		case 1:
		    allow_select = (PINB&(1<<5) ? 0 : 1);
            break;
		case 2:
		    allow_select = (PINB&(1<<4) ? 0 : 1);
            break;
		case 3:
		    allow_select = (PINB&(1<<3) ? 0 : 1);
            break;
		case 4:
		    allow_select = (PINB&(1<<2) ? 0 : 1);
            break;
		case 5:
		    allow_select = (PINB&(1<<1) ? 0 : 1);
            break;
		case 6:
		    allow_select = (PINB&(1<<0) ? 0 : 1);
            break;
		case 7:
		    allow_select = (PINE&(1<<7) ? 0 : 1);
            break;
		case 8:
		    allow_select = (PINE&(1<<6) ? 0 : 1);
            break;
		case 9:
		    allow_select = (PINF&(1<<0) ? 0 : 1);
            break;
		case 10:
		    allow_select = (PINF&(1<<1) ? 0 : 1);
            break;
		case 11:
		    allow_select = (PINF&(1<<2) ? 0 : 1);
            break;
    }
	return allow_select;
}
--------------------------------------------------------------------------------------------------------------------------
I got this keyboard yesterday and I was very excited so I wanted to do a video opening it up and checking things out.

Didn't find anything really crazy but I did discover something yesterday which I'll talk about later (re: conversion). What I'll say now is that there are some definite signs of life. I do not know if there's a mechanism for NKRO -- this is one piece of the puzzle that I'm not seeing. But I feel this keyboard is absolutely convertable. Definitely going to need lots of help, though, as I wade through these new waters.
Last edited by snacksthecat on 28 Nov 2019, 14:08, edited 1 time in total.

User avatar
snacksthecat
✶✶✶✶

25 May 2019, 19:11

Digging through lots of docs. I'm seeing really cool pictures! But unfortunately not much good information relevant to this effort.

Searching for things like "Univac", "Sperry", "Micro Switch", "Honeywell". I'm sure there are others as well.

Hey look! The capslock light works :)
I have another, much more promising discovery. But I'm going to keep that under wraps until I can put a little bit of context around it.

Does anyone know what approximate year this keyboard should be from?

I would like to look for maintenance manuals from around the same period. There is a TON of documentation online. Unfortunately most of it is brochures or basic how-to setup guides. Hoping to narrow my search criteria down so I don't get all the noise about computers from the 1950's.

Places I'm searching: Lots of overlap between these three but each are great. Any other resources I should be aware of?

User avatar
snacksthecat
✶✶✶✶

25 May 2019, 20:39

Just for fun

Image

User avatar
snacksthecat
✶✶✶✶

25 May 2019, 21:59

Image

When you press a standard alpha key on the board, one line will make a little blip to tell the computer that a key has been pressed. At the same time, 7 (maybe 8) of the other lines will go high or low. This is the character/command that is being sent to the computer.

Things I know right now:
  • Keyboard ouputs something when keys are pressed
  • Keyboard doesn't indicate when a key is released
  • Holding a key doesn't matter (doesn't repeat)
Things I don't know:
  • Which lines correspond to which positions in the byte?
  • Is it possible to "ask" the keyboard if a key is still pressed?
So at this point and with the information I have so far, it would be possible to brute force the board. But you would only get 1kro and would be blind to debounding. Obviously these two factors are sub optimal for normal typing.

I'm going to read through this great thread:
viewtopic.php?f=7&t=12379&sid=c6727484c ... 176d25341d

Also going to take everything apart. The switches are a little scratchy. The board is in great condition but the dust situation is real bad

User avatar
XMIT
[ XMIT ]

26 May 2019, 02:27

Take a look at the Wiki, there is a description of Micro Switch part numbers there. Sound like you have "pulse" type switches for the alphas and "hold" type switches for the mods. This was typical, and is super crappy. 1KRO it is.

It will suck for typing, but, you'll have the true 1970s-80s terminal experience.

User avatar
snacksthecat
✶✶✶✶

26 May 2019, 03:41

XMIT wrote:
26 May 2019, 02:27
Take a look at the Wiki, there is a description of Micro Switch part numbers there. Sound like you have "pulse" type switches for the alphas and "hold" type switches for the mods. This was typical, and is super crappy. 1KRO it is.

It will suck for typing, but, you'll have the true 1970s-80s terminal experience.
Oof, now that I understand the pulse/hold idea, that's a bummer!

By the way this thing was impossible to disassemble. First you have to bend these little metal grabbers so they release the board:

Image

Then you need to cut a bunch of plastic rivets.

Those things annoying but tolerable. You'll think you did such a nice little desodering job. You're wrong my friend! some of the pins weren't perfectly magically wonderfully clean so guess what? The sensing pad thing is staying put. And a bunch of little metal bits (that are probably super important) will also fall out of the switches.

Image

Oh and I forgot to mention -- there are 6 different types of switches on the keyboard.

Knowing this fact you'll think you're being very clever by drawing up a blueprint in advance.

Image

Well you're gonna need that blueprint for sure!

Unbelievable.

User avatar
snacksthecat
✶✶✶✶

26 May 2019, 19:34

I feel that it's worth explaining this since it was not clear to me until I saw it with my own eyes. There are basically two categories of these switches; (1) "Pulse" type switches and (2) "Hold" type switches.

"Pulse" switch
ImageImage

This is a normal keypress under the logic analyzer. You can see in the picture, the switch only gives out a little tiny blip of a pulse to indicate the switch has been activated. Compare and contrast with the other variety...


"Hold" switch
ImageImage

This is also a normal keypress. But here you can see that the switch announces both the down and up stroke of the press. Obviously this is much more desirable.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Right now I'm wondering what my gameplan should be.

Reading through XMIT's posts in that other thread, I think I understand the basic principals of how to make a working keyboard from these, minus the frills (stuff like NKRO sounded like it required other active electrical components in the circuit, and was just too far over my head to grasp from a handful of forum posts). What I think I'd like to do is relocate all the "hold" switches from their current location (those three rows of top keys on the board) and move them to the alphas block where the "pulse" switches reside right now.

(I believe) that would enable me to create a 1KRO board without going back to college for electrical engineering. I don't really mind if those top keys are "pulse" since they'll be reserved for things like F1-12 etc; where you don't really hold them anyways.

But first I've gotta take the baby steps. Maybe a simple 2x2 matrix to figure out what the heck I'm doing. Then extrapolate from there to a portion of the actual keyboard.

In conclusion, I don't believe these are actually switches. I feel they're sensors that can act like switches if they want. But maybe my definition of a switch is too heavily influenced by keyboards.

Lanrefni

26 May 2019, 21:56

Every time I see some one figure out how these old boards work the more I'm convinced the designers were competing to make the most complexly idiotic design just to screw with the competition.

Slom

26 May 2019, 22:17

Does NKRO even matter if the switches are not "held". You would need to press down more than one switch in exactly that one little moment of the pulse to have any conflicts. You will not get any key combinations on the alpha keys, nor repeat for holding keys, but rollover and ghosting should not be a problem with the pulse switches on the alphas.

With the hold switch though ...

I had the same discussion with XMIT before, my Opinion: If you are just typing text, the pulse switches will be fine. They suck for gaming though.

Or to say it in yet another way: the pulse switches make up for the fact that the matrix is 1kro, because the time window for conflicts is very short.
Last edited by Slom on 26 May 2019, 22:35, edited 2 times in total.

Slom

26 May 2019, 22:19

Lanrefni wrote:
26 May 2019, 21:56
Every time I see some one figure out how these old boards work the more I'm convinced the designers were competing to make the most complexly idiotic design just to screw with the competition.
I wonder what they will think of our Christmas tree keyboards in 40 years ...

Slom

26 May 2019, 22:33

snacksthecat wrote:
25 May 2019, 21:59
Image

When you press a standard alpha key on the board, one line will make a little blip to tell the computer that a key has been pressed. At the same time, 7 (maybe 8) of the other lines will go high or low. This is the character/command that is being sent to the computer.

Things I know right now:
  • Keyboard ouputs something when keys are pressed
  • Keyboard doesn't indicate when a key is released
  • Holding a key doesn't matter (doesn't repeat)
Things I don't know:
  • Which lines correspond to which positions in the byte?
  • Is it possible to "ask" the keyboard if a key is still pressed?
So at this point and with the information I have so far, it would be possible to brute force the board. But you would only get 1kro and would be blind to debounding. Obviously these two factors are sub optimal for normal typing.

I'm going to read through this great thread:
viewtopic.php?f=7&t=12379&sid=c6727484c ... 176d25341d

Also going to take everything apart. The switches are a little scratchy. The board is in great condition but the dust situation is real bad
How did you power up the board? Where there any special voltage levels required?

Asking bc/ from what I read some of the boards need -12V for logic ship, curious if thats the case here as well? Can you show a close up of the logic ship? The one below the large arrow down key.

Debouncing is not an issue with these, there is no bounce in the sensor output.

You asked for the date of manufacture: is this not visible on the small white (or silver) sticker on the pcb?

User avatar
snacksthecat
✶✶✶✶

27 May 2019, 00:27

Slom wrote:
26 May 2019, 22:17
Does NKRO even matter if the switches are not "held". You would need to press down more than one switch in exactly that one little moment of the pulse to have any conflicts. You will not get any key combinations on the alpha keys, nor repeat for holding keys, but rollover and ghosting should not be a problem with the pulse switches on the alphas.

With the hold switch though ...

I had the same discussion with XMIT before, my Opinion: If you are just typing text, the pulse switches will be fine. They suck for gaming though.

Or to say it in yet another way: the pulse switches make up for the fact that the matrix is 1kro, because the time window for conflicts is very short.

That's an interesting perspective and I kind of see where you're coming from. Probably that was the engineers' intensions with this configuration. Maybe I will reconsider my plan to rearrange the sensors.

Slom wrote:
26 May 2019, 22:33
How did you power up the board? Where there any special voltage levels required?

Asking bc/ from what I read some of the boards need -12V for logic ship, curious if thats the case here as well? Can you show a close up of the logic ship? The one below the large arrow down key.

Debouncing is not an issue with these, there is no bounce in the sensor output.

You asked for the date of manufacture: is this not visible on the small white (or silver) sticker on the pcb?

The board appears to be straight 5V. I took the absence of a voltage regulator as an open invitation to power it directly off a teensy and was pleasantly surprised that it worked... followed by massive disappointment after I learned about all the limitations. But as you pointed out, maybe not the end of the world.

Here's a picture of that chip:

Image
Slom wrote:
26 May 2019, 22:33
You asked for the date of manufacture: is this not visible on the small white (or silver) sticker on the pcb?
Hmm I'm not seeing any stickers on the PCB, though it's possible it pealed off; the thing is absolutely covered in flux right now.

This is what I was referring to before. I think probably the date was written on a sticker that pealed off, or just never got stamped or something.

Image

Wait is it that "76/50" thing? Would this be the 50th week of 1976? I presume this keyboard is from the 80's but I'm also not very bright.

By the way thank you for posting that arduino sketch. It solidified my understanding of the "sense rows and columns" idea. I will probably use it for my little proof of concept macro pad.

User avatar
snacksthecat
✶✶✶✶

27 May 2019, 02:53

I got all the switches removed from the plate and organized by type. There are actually 7 types if you count the led caps lock variety.

These 1" clamps work perfectly for popping them out of the plate. The clips allow you to hit all four clips at the same time. Then you just wiggle, push, and it's out. Other ways I tried were very frustrating.
I found one switch that had cracked right in half. I'm not sure at what point this happened but I'm guessing it was when I was trying to separate the plate and PCB. Or it came to me like that. Anyways, the insides are pretty interesting.

Image

From left to right you have:
  • The sensing piece. The actual sensor is that little dot under epoxy
  • Half the housing, mainly the channel the spring and slider go into
  • The slider, with a magnet on it
  • Other half of the housing. The metal thing kind of hold the switch and the sensing piece together. With loose switches, if you dont have that little metal bit, the sensing piece falls right out
  • Spring
I studied it a bit and tried to figure out how the heck you're supposed to open the switches. I know some of the switches are sealed but these clearly are not that variety (there are several holes/gaps in this kind of switch).

If you look really closely at the slider, it has a little edge that prevents it from popping straight out the top.

Image

So knowing that, I decided to try to open one by pulling the slider out. Much to my surprise it worked and didn't damage anything. I wrapped a pair of pliers with electrical tape to protect the slider. Then just pulled up and it popped out. It does take a considerable amount of force to get it out. Here's a little clip showing what it looks like:
I don't know if I'd recommend this method to any one. You have to be very careful otherwise you'll damage the switch. It's difficult to strike a balance between how hard to squeeze the pliers without screwing up the slider. This all being said, I don't know of a better way to open them up. It's probably in the wiki :shock: Maybe I should research first...

User avatar
PlacaFromHell

27 May 2019, 03:06

As far as I know, every SD switch is considered unable to be opened without permanently damage it. This can be a great discovery. Besides the huge amount of technical data exposed in this thread, how do they feel?

User avatar
snacksthecat
✶✶✶✶

27 May 2019, 14:17

PlacaFromHell wrote:
27 May 2019, 03:06
As far as I know, every SD switch is considered unable to be opened without permanently damage it. This can be a great discovery. Besides the huge amount of technical data exposed in this thread, how do they feel?
I found out (after doing several) what that permanent damage looks like. All of them were coming out smooth, just needed to be pulled quite hard. Then I hit a patch of them where things went wrong.

The switch normally should look like this. Look at the area where the numbers are printed.

Image

But pulling out the slider, some of them will break right here.

Image

The piece that broke is the lip that prevents the slider from popping out. That lip is supposed to catch the sharp edge on the slider. Without the lip, the slider wants to pop right out.
I broke a handful of them before deciding that the gamble is not worth it. I'll just ultrasonic the switch housing and slider together. I'm going to pick up some plastic putty from the hardware store to see if I can't fix the broken ones. But that will be very delicate work and I doubt it'll be successful.

So learn from my mistakes, everyone!

User avatar
PlacaFromHell

27 May 2019, 18:34

I would smooth the housing and glue a new piece from the outside, something like that:

Image

Sorry, I can't use Solidworks right now.

User avatar
snacksthecat
✶✶✶✶

27 May 2019, 19:22

PlacaFromHell wrote:
27 May 2019, 18:34
I would smooth the housing and glue a new piece from the outside, something like that:

Image

Sorry, I can't use Solidworks right now.
I like your idea a lot. Just don't know how I'd go about crafting the little replacement pieces. The switches are large but it's such a tiny spot. I'll maybe play around with a few different options.

Speaking of screwing things up, you also have to be careful when desoldering. There were a few cases where I kept my iron on the pin too long and the pin itself came unsoldered (yes, the pins are soldered to the sensor). For those instances I first tried soldering in a pin from a Matias switch. But those proved to be a bad fit. What I ended up using was a piece of 22 guage solid wire.

And if you hold the iron way way too long, the sensor will fall of the thing (okay I'm just going to call it a switch plate). See picture below... Damaged on the left, normal on the right

Image

Also the pins are very fragile and a few of them snapped in half. I first had to remove those before replacing them with the wire. I briefly tried to do all this with a reflow gun but I didn't want to melt the epoxy over the sensor. I used a tiny squeeze clamp to hold the switch plate. A drop of flux and a poke with the soldering iron takes the broken pin right off.

Image

So once the pin was off I tried to solder a new one on with solder paste. But that didn't work well at all. Regular soldering did the trick. Almost all of them came out very nicely and I can't tell the difference without studying for a second. Just hope they still work. I'm going to have to test basically ever one of these now.

Image

Moral of the story; be careful! And if you are already being careful, be even more careful.

Okay, time to lube these and put them back together. Hopefully I don't end up confusing superglue for lube and ruining more expensive stuff :oops:

User avatar
snacksthecat
✶✶✶✶

27 May 2019, 20:35

PlacaFromHell wrote:
27 May 2019, 18:34
I would smooth the housing and glue a new piece from the outside, something like that:

Image

Sorry, I can't use Solidworks right now.
Woah, what you said just clicked. I understand your drawing now. So get some very thin sheet of plastic. Cut out a long rectangle and a short rectangle. Glue them together then glue them in place. That's an awesome idea.

Slom

27 May 2019, 20:38

snacksthecat wrote:
27 May 2019, 14:17
So learn from my mistakes, everyone!
That never works :(
viewtopic.php?f=2&t=11778

I just put the piece of plastic back with superglue ...
snacksthecat wrote:
27 May 2019, 00:27

Wait is it that "76/50" thing? Would this be the 50th week of 1976? I presume this keyboard is from the 80's but I'm also not very bright.

Bingo :) Note that the other chips on the board also have matching dates printed on them.

That is earlier than I expected, which might explain why the nomenclature of the numbers on the switches does not match with the usual pattern.

Anakey

27 May 2019, 20:51

Very interesting, I have just today came back from a camping trip so therefore was not able to post yesterday however i believe i can help you somewhat with making it NKRO. I myself have an SD hall effect board though it looks like your switches are older given the 76 date code and they do not have the metal catches holding the sensor boards in place, i guess they removed it for cost cutting or something. Anyway on to the NKRO I found a thread on here written by dorkvader viewtopic.php?f=7&t=18163 I do not believe that anyone has attempted yet (I need to remind him to send over some replacement hold sensors as mine had some pulse ones) but i believe if the thread is followed then it should be possible to enable NKRO although that is a large board you have gotten so it may require more then one controller depending how the matrix is wired.

User avatar
XMIT
[ XMIT ]

27 May 2019, 21:43

Slom wrote:
26 May 2019, 22:17
Does NKRO even matter if the switches are not "held". You would need to press down more than one switch in exactly that one little moment of the pulse to have any conflicts. You will not get any key combinations on the alpha keys, nor repeat for holding keys, but rollover and ghosting should not be a problem with the pulse switches on the alphas.

With the hold switch though ...

I had the same discussion with XMIT before, my Opinion: If you are just typing text, the pulse switches will be fine. They suck for gaming though.

Or to say it in yet another way: the pulse switches make up for the fact that the matrix is 1kro, because the time window for conflicts is very short.
The new Input Club keyboards use "hold" type sensors, but strobe (pulse) the power lines for NKRO.

In theory you could strobe the "pulse" type sensors, effectively polling them. You could get NKRO this way.

I've had this idea for a while (though HaaTa and possibly dorkvader originally thought of this). I have yet to build a demo.

This would be the way to save all the classic Hall boards with pulse type switches, albeit with potential PCB modifications.
Last edited by XMIT on 27 May 2019, 23:58, edited 1 time in total.

Slom

27 May 2019, 23:05

XMIT wrote:
27 May 2019, 21:43
Slom wrote:
26 May 2019, 22:17
pulse sensors do not have rollover issues
I have this cool idea how to fix the rollover issues for pulse sensors
(╯°□°)╯︵ ┻━┻

;)

User avatar
XMIT
[ XMIT ]

27 May 2019, 23:59

Slom wrote:
27 May 2019, 23:05
XMIT wrote:
27 May 2019, 21:43
Slom wrote:
26 May 2019, 22:17
pulse sensors do not have rollover issues
I have this cool idea how to fix the rollover issues for pulse sensors
(╯°□°)╯︵ ┻━┻

;)
Yeah what I meant was "I think we can get NKRO for pulse type switches". :ugeek:

User avatar
snacksthecat
✶✶✶✶

28 May 2019, 00:16

Anakey wrote:
27 May 2019, 20:51
Very interesting, I have just today came back from a camping trip so therefore was not able to post yesterday however i believe i can help you somewhat with making it NKRO. I myself have an SD hall effect board though it looks like your switches are older given the 76 date code and they do not have the metal catches holding the sensor boards in place, i guess they removed it for cost cutting or something. Anyway on to the NKRO I found a thread on here written by dorkvader viewtopic.php?f=7&t=18163 I do not believe that anyone has attempted yet (I need to remind him to send over some replacement hold sensors as mine had some pulse ones) but i believe if the thread is followed then it should be possible to enable NKRO although that is a large board you have gotten so it may require more then one controller depending how the matrix is wired.
Thank you Anakey. That was an excellent write up and I understood most of it (that's how you know it was a good explanation). It's a shame it didn't go all the way to implementation, at least judging by the threads here and on GH. It seems people either know the hardware side or they know the software side.

I'd offer to step up but I know absolutely no C language.

Though, I've of course had my nose in TMK quite a bit. The necessary changes to do scan/scan w/ 2KRO (referring to the first method he detailed) would be in in matrix.c, correct? That much actually doesn't sound too difficult now that I think about it.

Anakey

28 May 2019, 01:06

the coding will be the same for any normal board as long as the hardware is correct i have seen your previous restorations so doing this will follow the same thing though you will probably need to handwire or create a new pcb

User avatar
PlacaFromHell

28 May 2019, 02:49

I just remembered a thread I started about converting hall effect switches to normal close/open switches via extra hardware. The conclusion was the following:

If you connect the pulse output from the switch (which sends one pulse to close and other to break) to a T flip-flop, and the output of the flip-flop to an AND gate with two inputs, you will have a "normal" switch with integrated diode between the other input of the AND gate and his output.

This can be translated to human understanding with a quick draw:

Image

Edit: Sorry for the storm of editions, I mess with the idea in my head.

User avatar
snacksthecat
✶✶✶✶

29 May 2019, 14:02

Image

Image

Image

Well some good news and bad news.

The good news is I thought I had a bunch of dead sensors, but when tested individually they work. The bad news is I must not understand how these are supposed to be wired as a matrix.

I made this monstrosity to do simple testing. For some reason I decided to make it in a cardboard box. Anyway, it doesn't fully work when I test it with a quick-and-dirty arduino sketch. One switch works fine, two give double keypresses, and the last one doesn't give anything.

Anakey

29 May 2019, 15:04

ok so in your photo, the red is what you will use as rows i assume is the + on the sensor, the Black is ground and can therefore be wired together as you have done. Both central pins commoned together will be the columns. the idea being is that the power (rows) are strobed so therefore if the sensor is active then there should be an output which can then be detected on the column pin. It was advised by dorkvader that a transistor would be needed to amplify the signal from the hall sensor so that it can be detected by the micro controller.
hall matrix.PNG
hall matrix.PNG (12.28 KiB) Viewed 17810 times

User avatar
snacksthecat
✶✶✶✶

30 May 2019, 00:53

Anakey wrote:
29 May 2019, 15:04
ok so in your photo, the red is what you will use as rows i assume is the + on the sensor, the Black is ground and can therefore be wired together as you have done. Both central pins commoned together will be the columns. the idea being is that the power (rows) are strobed so therefore if the sensor is active then there should be an output which can then be detected on the column pin. It was advised by dorkvader that a transistor would be needed to amplify the signal from the hall sensor so that it can be detected by the micro controller.

hall matrix.PNG
Thanks anakey, I was actually just trying to get basic 1KRO. No strobing lines (yet). I’m just trying to understand the darn things first 8-)

All these posts I’m coming across have great material/ideas. Are they just vapor right now or has someone successfully gotten these concepts to work (most importantly NKRO)?

By the way / before anybody ask, when you hit 40 billion keystrokes on a switch a bell goes off and confetti shoots out. That’s why the switches are so hard to open. They’re filled will bells and confetti.

Anakey

30 May 2019, 11:15

i have the hardware to do a build, i was just waiting on a few more replacement sensors need to pm dorkvader again but as soon as i get the sensors then i can see if it will work. I believe Slom did manage to get a keyboard working but not sure if it was NKRO.

Post Reply

Return to “Workshop”