Alternate ways of sensing teh Fs...
-
- Location: Beamspringville
- Main keyboard: 4704
- DT Pro Member: 0186
Some 3am thoughts, they may not be completely coherent
Back with God was typing "Let there be light" on his beamspring and Adam and Eve invented the F and Cain Killed Abel for inventing the rubber dome, analog covered the Earth.
A fair amount of complexity of the boards that we have are due to trying to be as uniform in the responsiveness of each of the keys relative to the other keys because the original controllers and xwhatsit's controller make this assumption.
3am thoughts... What if it didn't have to be that way? What if we could calibrate the time of sample and the trigger voltage on a per key basis?
Sure, it wouldn't forgive absolute stupidity in the PCB design but it may provide us with a significantly less stringent design process.
So picture the scene...
ADC on each row.
The uC holds a lookup table of delay and threshold per key.
uC strobes the line.
Triggers the ADC sample at the configured delay.
Reads the analog value, compares against per-key lookup table.
Thoughts?
Back with God was typing "Let there be light" on his beamspring and Adam and Eve invented the F and Cain Killed Abel for inventing the rubber dome, analog covered the Earth.
A fair amount of complexity of the boards that we have are due to trying to be as uniform in the responsiveness of each of the keys relative to the other keys because the original controllers and xwhatsit's controller make this assumption.
3am thoughts... What if it didn't have to be that way? What if we could calibrate the time of sample and the trigger voltage on a per key basis?
Sure, it wouldn't forgive absolute stupidity in the PCB design but it may provide us with a significantly less stringent design process.
So picture the scene...
ADC on each row.
The uC holds a lookup table of delay and threshold per key.
uC strobes the line.
Triggers the ADC sample at the configured delay.
Reads the analog value, compares against per-key lookup table.
Thoughts?
- XMIT
- [ XMIT ]
- Location: Austin, TX area
- Main keyboard: XMIT Hall Effect
- Main mouse: CST L-Trac Trackball
- Favorite switch: XMIT 60g Tactile Hall Effect
- DT Pro Member: 0093
I've suggested exactly this in the past and I think others have too. IIRC the consensus was that IBM engineers did things the way they did because back in the 1970s it was cheaper and easier to design a PCB with consistent values than it was to throw extra ROMs onto the board. Also, the entire board can drift slightly with environmental conditions so it is good if the board can auto calibrate somehow.
Last edited by XMIT on 04 Jan 2016, 14:45, edited 1 time in total.
-
- Location: Beamspringville
- Main keyboard: 4704
- DT Pro Member: 0186
Well I'm glad to hear it's not too far out of left field and cost was really what I thought was the driving factor too, especially given how horrifically expensive ROM was in those days. Now you can get an 8 channel 8 bit A2D for under $2.
We could still have auto-calibration I think if we were to assume (dangerous I know) that the environmental factors were fairly consistent across the board.
I'm going to chew on this for a few hours and see how it tastes.
__red__
We could still have auto-calibration I think if we were to assume (dangerous I know) that the environmental factors were fairly consistent across the board.
I'm going to chew on this for a few hours and see how it tastes.
__red__
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
I'd love to be able to set key threshholds independently. Xwhatsit's controller's principal weakness is the one value fits all approach. On beamsprings especially, this can be one son of a canine to work with.
Autocalibration is nice, but flaky when forced into that extreme of one value for the entire board. I don't know how IBM did such a nice job, when Xwhatsit did everything right as far as I can tell but with very different consequences. There's nothing quite as hard to handle as a Model F or Beamspring with missing keys or ghost tsunamis.
Autocalibration per row, then? Is this system of yours intended strictly for custom PCBs? (Sense cards in IBM speak.)
Autocalibration is nice, but flaky when forced into that extreme of one value for the entire board. I don't know how IBM did such a nice job, when Xwhatsit did everything right as far as I can tell but with very different consequences. There's nothing quite as hard to handle as a Model F or Beamspring with missing keys or ghost tsunamis.
Autocalibration per row, then? Is this system of yours intended strictly for custom PCBs? (Sense cards in IBM speak.)
-
- Location: UK
- Main keyboard: Filco ZERO green alps, Model F 122 Terminal
- Main mouse: Ducky Secret / Roller Mouse Pro 1
- Favorite switch: MX Mount Topre / Model F Buckling
- DT Pro Member: 0167
\Thats been a problem for me , my 107 has shifted and now i cannot get it to work consistently , the only think i can think of is to replace the foam.Muirium wrote: ↑I'd love to be able to set key threshholds independently. Xwhatsit's controller's principal weakness is the one value fits all approach. On beamsprings especially, this can be one son of a canine to work with.
Autocalibration is nice, but flaky when forced into that extreme of one value for the entire board. I don't know how IBM did such a nice job, when Xwhatsit did everything right as far as I can tell but with very different consequences. There's nothing quite as hard to handle as a Model F or Beamspring with missing keys or ghost tsunamis.
Autocalibration per row, then? Is this system of yours intended strictly for custom PCBs? (Sense cards in IBM speak.)
-
- Location: Beamspringville
- Main keyboard: 4704
- DT Pro Member: 0186
Okay, so there is an actual need then other than my late-night thoughts.
YOu may be able to do some kind of auto-calibration power key.
I'll order some a2d this evening from element14 and try to write some code tomorrow evening.
I'll use an old F122 as my test board.
IC I'm looking at is only available in tssop and I have a tssop zif socket adapter.
I'm convinced that using that adapter is going to cause me noise issues. Argh.
Pcb adapter it is then...
__red__
YOu may be able to do some kind of auto-calibration power key.
I'll order some a2d this evening from element14 and try to write some code tomorrow evening.
I'll use an old F122 as my test board.
IC I'm looking at is only available in tssop and I have a tssop zif socket adapter.
I'm convinced that using that adapter is going to cause me noise issues. Argh.
Pcb adapter it is then...
__red__
-
- Location: Beamspringville
- Main keyboard: 4704
- DT Pro Member: 0186
Disclaimer - I am not an expert, this is my reading and understanding of the scope. I'm completely prepared to be wrong. In fact I'm really very good at being wrong, it should be my vocation.
Every strobe actually consists of eight 5V pulses over ~700us period. On the uptick there's about a 40mV spike which dissipates pretty quickly. I don't know if this dissipates this quickly because of the bleed resistor in the circuit or whether the input impedance of my scope is having significant influence. Schrödinger's Oscilloscope as it were... So here's the shot we're interested in: We have a whole 80mV to play with in a 30ns window. To put that in perspective I need to sample at at least 100Mhz to have a (finger in air) chance of getting a decent S/N ratio.
Now I'm starting to understand the difficulty in detecting this in pure software at a somewhat economical price.
Relative Permittivity FR4: 4.8
Relative Permittivity Mylar: 3.15
Relative Permittivity Cellolose Acetate: 3.2 - 7
Every strobe actually consists of eight 5V pulses over ~700us period. On the uptick there's about a 40mV spike which dissipates pretty quickly. I don't know if this dissipates this quickly because of the bleed resistor in the circuit or whether the input impedance of my scope is having significant influence. Schrödinger's Oscilloscope as it were... So here's the shot we're interested in: We have a whole 80mV to play with in a 30ns window. To put that in perspective I need to sample at at least 100Mhz to have a (finger in air) chance of getting a decent S/N ratio.
Now I'm starting to understand the difficulty in detecting this in pure software at a somewhat economical price.
Relative Permittivity FR4: 4.8
Relative Permittivity Mylar: 3.15
Relative Permittivity Cellolose Acetate: 3.2 - 7
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
IBM did a sterling job with the original controllers. It's not just an age thing. I have literally never seen a single false key in all the months I've spent typing on vintage Model Fs with their stock controller. I can't begin to say the same for Xwhatsit's! IBM had a big blue advantage in resources, of course. Yet with all the progress in the decades since, you'd think we would have off the shelf components aplenty to meet an old challenge like this.
Apparently, we do not!
Apparently, we do not!
-
- Location: Beamspringville
- Main keyboard: 4704
- DT Pro Member: 0186
Well, we do but we're all just intent of trying to re-create the original design. There may be better ways of doing this now that we have CPLDs and the like dirt cheap.Muirium wrote:IBM did a sterling job with the original controllers. It's not just an age thing. I have literally never seen a single false key in all the months I've spent typing on vintage Model Fs with their stock controller. I can't begin to say the same for Xwhatsit's! IBM had a big blue advantage in resources, of course. Yet with all the progress in the decades since, you'd think we would have off the shelf components aplenty to meet an old challenge like this.
Apparently, we do not!
- Halvar
- Location: Baden, DE
- Main keyboard: IBM Model M SSK / Filco MT 2
- Favorite switch: Beam & buckling spring, Monterey, MX Brown
- DT Pro Member: 0051
My understanding is that xwhatsit isn't doing the sensing in software, but with some simple off-the-shelf DA converter components, while IBM used dedicated sensing chips, and we don't even know how those worked. What do you mean by "trying to re-create the original design"?
- hasu
- Location: Japan
- Main keyboard: HHKB
- Main mouse: HHKB
- Favorite switch: Topre
- DT Pro Member: -
xwhatsis uses external comparator chip with controllable voltage reference chip, iirc.
I think dfj looked into IBM sensor chip and may know how it works. also soarerer or John Elliott may know, I think.
any of those guys is difficult to reach, anyway
I think dfj looked into IBM sensor chip and may know how it works. also soarerer or John Elliott may know, I think.
any of those guys is difficult to reach, anyway
- Halvar
- Location: Baden, DE
- Main keyboard: IBM Model M SSK / Filco MT 2
- Favorite switch: Beam & buckling spring, Monterey, MX Brown
- DT Pro Member: 0051
Yes, an external comparator and DAC, here is a discussion:
https://geekhack.org/index.php?topic=45097.0
https://geekhack.org/index.php?topic=45097.0
Just to be clear, the eight pulses are the controller walking through all eight rows on the same column. The column pulses once per key.
The uptick is the rising edge of the column signal being capacitively coupled to the sense amplifier input, before the amplifier has a chance to respond. The amplifier itself, when it responds, presumably drives its output low. There's an integrating capacitor from this output back to the input, and it's the amplifier output going low that drives its the input back to where it started from.__red__ wrote: ↑05 Jan 2016, 13:56On the uptick there's about a 40mV spike which dissipates pretty quickly. I don't know if this dissipates this quickly because of the bleed resistor in the circuit or whether the input impedance of my scope is having significant influence. Schrödinger's Oscilloscope as it were...
The amplitude and timing are much more relaxed than that, but you have to sample the output of the amplifier, not its input. Only one sample is necessary in the time that the column line is high, and in fact, the sample should be taken after the spikes you see, not during. That is, sample after things have been transferred from the amplifier input to output.