
I made a macro keypad with 3D-printed switches - jstanley
https://incoherency.co.uk/blog/stories/3pct-keyboard.html
======
grooverut
You mentioned the contours on top of the keycap being an issue. A good fix for
that is tilting the keycap forward 45 degrees in your slicer. This does
require supports but the top finish looks so much better. The tilt technique
combined with your filament should look very good.

~~~
rolleiflex
I caught the same issue, from a slightly different angle. Using key caps with
that much protrusion surface will render them unsanitary in a relatively short
time due to dead skin deposits, which will cure and fill the ridges. It’s not
great from a health point of view. From what I remember when I was doing 3D
printing, an acetone cloud bath could help to achieve a more glossy, thus more
sanitary finish.

Incidentally glossy finish on porcelain-ware for plates, bath tubes, toilet
bowls and sinks are specifically for this reason — gloss is achieved when the
surface is flat to a defect rate smaller than the wavelength of visible light,
which also gives bacteria and organic matter very little to hold on to.

~~~
biggerfisch
Usually acetone doesn't work so well on the PLA the author is printing the
keycaps in. There are other sprays or things you can apply to PLA for a good
effect though - I'm betting any of the things used to make PLA food-safe would
work here.

------
m0xte
Those contacts will oxidise almost instantly. From running morse keys for
years, you need gold or phosphor bronze.

~~~
jstanley
Thanks, I will keep an eye on this. Do you reckon gold plating would suffice
or is it likely to get worn away?

~~~
russdill
Might give more flexibility to move to optical sensing and avoid the contact
issue entirely.

~~~
jstanley
It would. I think a common option is to use magnets and hall effect sensors.
If you use an analogue hall sensor, you can even make an "analogue" switch
that can have a different effect if you push it just a little bit compared to
pressing it the whole way down.

Neither of these satisfy me, because in my eyes if you're using an off-the-
shelf sensor of some kind, you're not really making a switch, you're just
putting a little mechanism around another type of switch. Making the contacts
out of cheaply-available material is important to me, although it's hard to
really articulate why.

I'm trying to do this from as close to "first principles" as possible.

~~~
outworlder
We need to stop at some point though. Do we need to make our own wires? That's
surprisingly difficult to achieve.

~~~
nkrisc
Considering it's a personal project, one can choose where to stop. Sounds like
they've chosen to draw the line at making their own switch mechanism.

------
iDemonix
I've been undertaking a similar project, using an ESP32 currently for testing,
also have an Arduino Micro Pro to test yet, during lockdown/furlough. I'm
hoping to customise and sell them on Etsy, I've sold code + 3D prints before,
but I'm just taking time to get the PCB right before I get my first ever board
printed. Aiming for hot-swappable switches and some LED magic.

------
econcon
It's a good project.

If you print a lot, here's my project using which you can create tons of cheap
filament:

[https://medium.com/endless-filament/make-your-filament-at-
ho...](https://medium.com/endless-filament/make-your-filament-at-home-for-
cheap-6c908bb09922)

If anyone can contribute diameter control algorithm, please let me know!

~~~
regularfry
Is it the control algorithm you're after, or an output diameter measurement
technique? You don't mention how you're measuring the width at the extruder
die or after the freeze bath.

~~~
econcon
Hello! I've dual axis laser micrometer which has a sampling rate of 100 of
times per second.

I can use microcontroller to read the measurements and want to dynamically
change the puller roller speed. (It's a geared down stepper motor)

Pinch roller (puller) is very simple, it uses steel rollers which have
sandpaper pasted (with epoxy) on it for gripping fimament - it can pull with
force of 10kg before it slips.

I want to achieve tolerance range of +/-0.02mm in diameter

~~~
regularfry
Where is that micrometer mounted? The problem you're going to have (which I'm
sure you're aware of) is that if it's after the freeze bath, you're miles away
from where the thickness is actually determined. If the speed of the rollers
makes the filament go through the bath at 1m/s (say) and the bath is 2m long,
you can't react to any deviation in the temperature of the plastic as it
leaves the nozzle (for instance) any sooner than 2 seconds later, and any
drift has had that long to cause a problem. That way lies an oscillating
system, unless you're quite careful.

The way you've posed the system, my gut feeling is that your problems are
going to come down to reaction time. Once a problem manifests in the system,
how quickly can you a) detect it; b) react; and c) have that reaction take
effect?

There are three things I'd look at. The first is to make sure the entire path
of the plastic until it has set is tightly temperature-controlled. You can't
have breezes varying the temperature of the plastic before it enters the bath,
so you want a PID-controlled warming tube to control its descent into the
bath. Similarly you need to control the temperature, depth, and turbidity of
the bath so that the length of time the plastic is less-than-fully-solid is
tightly controlled. If you do that, you've got a chance that you've controlled
the physics of the filament well enough that quick deviations will be damped
out, and slow drifts get picked up by the micrometer.

The second is mounting the micrometer as close to where the filament enters
the bath as you can get it. That's the point that's as close as you can get to
where the plastic's frozen and the thickness is determined, so there's as
little lag as possible between where you're measuring and where you're having
an effect. That will let the system react to much faster deviations than it
would be able to otherwise.

Third, I'd make that bath as short as possible. The length of filament hanging
in the bath will act like a spring, so when the rollers speed up to try to
thin the filament out, that acceleration will be blunted as the filament lifts
up into a shallower catenary. You can compensate for this in the control
system, but it's better not to have to. In fact, if you could get rid of the
need for a bath by instead rolling the filament immediately onto a chilled
metal roller close to the extruder die, that might open up other
possibilities, but that ends up baking stresses into the filament which you
might not want to deal with.

------
manbash
> The switch fits in a 14mm square hole (apart from the protruding wires),
> which is the same size as a Cherry MX switch, but the total height from the
> bottom of the switch to the top of the keycap is almost twice as large,
> about 45 mm vs 25 mm [...] This directly translates to increased keyboard
> height, so it would be good to cut this down as much as possible. I should
> be able to lose 2 mm from the wire support at the bottom of the switch, and
> another 1 or 2 mm in the height of the leaf spring attachment, but there's
> no way it's going to be as thin as the Cherry MX.

It's a nice concept but the design of the switch doesn't intend this project
to replace your keyboard.

A nice design nevertheless :)

~~~
jstanley
It's easy, just cut a hole in your desk to accommodate your over-sized
keyboard!

------
Okkef
Don't get me wrong, I'm heavily into the custom keyboard scene. PCB design,
lots of tiny soldering, 'crazy' ergonomic layouts with only 36 keys and lots
of layers and other tricks.

Still. Why would you want to print your own switch mechanism?

~~~
Pixelbrick
There is a yak, and it is furry.

~~~
EForEndeavour
For the uninitiated:
[https://en.wiktionary.org/wiki/yak_shaving](https://en.wiktionary.org/wiki/yak_shaving)

1\. Any apparently useless activity which, by allowing you to overcome
intermediate difficulties, allows you to solve a larger problem.

 _I was doing a bit of yak shaving this morning, and it looks like it might
have paid off._

2\. A less useful activity done consciously or subconsciously to procrastinate
about a larger but more useful task.

 _I looked at a reference manual for my car just to answer one question, but I
spent the whole afternoon with my nose buried in it, just yak shaving, and got
no work done on the car itself._

------
JoeSmithson
Neat project - next time make one with only ctrl, alt, and del.

------
delgaudm
Inspiring! This would be an awesome punch-and-roll macropad for voice
actors... well, this particular voice actor anyway. I currently use a 10 key
pad with tape covering all but the three keys I want to press.

------
aidenn0
One possible improvement would be to include space for mounting a diode. Many
mechanical switches can house a diode to simplify PCB layout for NKRO
keyboards

