Giter Site home page Giter Site logo

void_switch's Introduction

Void Switch OpenSCAD Files

Parametric 3D printable magnetic separation contactless key switch and stabilizers (OpenSCAD files). For the Kicad files see the void_switch_kicad repo.

OpenSCAD Customizer

For a detailed overview of how Void Switches work see Chyrosran22's Teardown video:

Void Switch Teardown Video

BOM

Each switch needs three 4x2mm magnets (Note: Most cheap N35 magnets are actually 4x1.7mm which is fine) and the stabilizers require two 4x2mm magnets and some 18 gauge stainless steel wire (make sure it's magnetic; use the cheap stuff). Both of these are configurable, however. So if you want to make a switch that uses 3x2mm magnets you can do that (with a bit of work changing settings around).

For reference, there's two magnets in the switch itself (one in the sheath and one in the stem) and the levitator needs its own magnet.

Prerendered files

Prerendered (4mm travel) void switch files are provided in .stl and .3mf format for 4x1.7mm (most common) and 4x2mm magnets with a MAGNET_VOID of 0.6mm. This should make for an all-around decent set of parameters for doing quick tests and demos (to see how the switch feels). For your own keyboard make sure you try out many different MAGNET_VOID values and also try changing the STEM_TOLERANCE value to see how you like tighter-fitting or looser-fitting switches.

Parameters

OpenSCAD Customizer

Descriptions of what each parameter does are included in the .scad file and are easily referenced in the OpenSCAD customizer:

OpenSCAD Customizer

Figuring out your switch force/strength

I've added several tables of switch strengths to the utils.scad and pretty good estimation of how strong your switch will be will show up in the OpenSCAD console. Here's what it should look like (text enlarged and highlighted for effect):

OpenSCAD Console Output

Print settings

Print the switches and stabilizers at 0.16mm layer height. This will ensure that the topmost layer of the interior of the sheath ends up with a "close enough" tolerance to your STEM_TOLERANCE setting.

The levitator can be printed at just about any layer height but 0.2mm is recommended.

Note: It is recommended that the switches be printed in PETG because it has the lowest coefficient of friction of all 3D printable filaments (0.22). However, PLA also works just fine. If you use the liquid/oil type of Super Lube w/Syncolon (PTFE) just about any filament will work great regardless. Also note that you can always just sand the stem to your perfect level of polished smoothness (don't be lazy).

For reference, even terrible printers seem to do a fine job printined Void Switches. Because of how the tactility works any bumps or scratchiness in the stems won't be easily felt. Also, if you print in PETG it has self-lubricating properties when rubbing against itself (it sheds hydrogen atoms which causes a sort of thin molecular collapse at the surface, removing rough/uneven bits).

Switch assembly

  1. Place a magnet in the sheath (using groove jointed pliers makes this super quick and easy).
  2. Snap the sheath into the body, pressing the magnet side in first (goes easier that way).
  3. Place a magnet in the stem/slider, making sure it's in the correct orientation so as to be attracted to the magnet in the sheath.
  4. Slide the stem/slider into the sheath from the underside of the switch.
  5. Place a magnet in the levitator, ensuring that it repels the magnet in the sheath/body.
  6. Place the levitator on the switch stem and then it's ready for a keycap.

Note: If you screw up the orientation of the magnets there's little holes so you can pop them out (and reverse them).

Tip: Once the sheath is snapped into the body I find it's best to give it a gentle squeeze with some pliers:

Using pliers on sheath and body together

Tip: If you find your magnets aren't staying put (and you don't want to fix the tolerances/print new ones) you can always just use some glue. I find that CA glue (superglue) works great for this. Just make sure to use the accelerator stuff or it might not stick as well.

Video tutorials/gifs on how to aseemble Void Switches and stabilizers are coming soon!

I'll also be taking a series of photos and detailing the process here.

What a keyboard using Void Switches looks like

Here's the keyboard I've been typing on every day for several months:

OpenSCAD Customizer

This is my Riskeyboard 70. Since Void Switches are entirely contactless I made the case so that the entire top plate could be easily removed (it's magnetically attached with the same 4x2mm magnets used in the switches/stabs). It makes it super easy to clean: Just take the top plate to your kitchen sink and give it a good scrub with soap and water!

What keycaps to use with Void Switches

Void Switches (currently) use Cherry MX-compatible cross (+) stems so you can use any Cherry-MX compatible keycaps. Having said that, it is highly recommended that you 3D print your own keycaps for Void Switches! Try making your own with my Keycap Playground. 3D printed keycaps are superior to injection moulded keycaps in many ways:

  • PETG keycaps feel fantastic! They also have a very deep sound profile. PETG is also a fantastic light pipe (that's what it was invented for!) which means multi-material prints with clear legends have the best clarity/brightness. If you "just use white" PETG you can get very crisp, clear legends and the keycap will light up the same color as your LEDs.
  • PLA keycaps can be made using all sorts of interesting and amazing filaments (they can have sparkles!). They have a sound profile similar to PBT keycaps (high pitch).
  • TPU keycaps are very easy on your fingers and very quiet. Any 92A or harder TPU can be used for keycaps without any special modifications (yes, the stems will still work fine and won't be "floppy" or whatever).
  • If they break or get ugly or whatever you can always print new ones! For pennies worth of filament!

White PETG TOTAL BS keycap

NOTE: Void Switches currently only support the Cherry MX-style cross (+) but support for other stem types can be added (places in the code were carved out for this). If someone wants to add support for other types feel free to submit a PR. It might be a better idea to make a stem/slider that simply accepts a "topper" that lets you attach/support an adapter that lets you put whatever stem type you want on there.

void_switch's People

Contributors

ipointer-netrise avatar obayemi avatar riskable avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

void_switch's Issues

Love these switches

Saw this YouTube video and had to find where I could get these switches. I'd love to try printing a low profile set.

Have you thought about potentially adding elector magnets to tune the key characteristics on the fly?

Keep up the great work

switch without base?

I want to make a one-handed chording keyboard using these switches. They need to be at slight angles to each other to reflect the angle of movement of the fingers. When relaxed the fingers as slightly separated but when you pull them in, they get closer. That's part of the angle that needs to be different for each switch. They also need to be closer together than they would be using the body.

Has anybody come up with a modification that cuts just the hole for the sheath, so I can create a multi-switch body by cutting multiple holes at the correct orientation?

Licensing

Hi. I was the Open Source Initiative VP in charge of Licenses for 11 years. Open Source licenses protect the code by restricting the right to copy with copyright permissions. By default, you have no right to copy, but if you comply with the terms of the license (whatever they may be), you can redistribute the work, whether modified or original.

What copyright does not let you do, as you might guess from the "copy" part of copyright, is restrict use of a work. If someone has legally obtained a copy of a work, they can use it any way they want. In particular, people can use your work to create void_switches and sell them.

In order to restrict how people can use the work, you would have to have a patent on using three magnets to create a key with the desired characteristics. The AT&T key which uses two magnets and a spring is a different thing. Only a court could tell you whether your invention infringes on the AT&T key, if indeed they patented it. If there is no patent, or it's expired, then you're home free to patent it yourself. I recommend against doing that, though, because it takes a long time and lots of money and in the end a patent is just permission to sue and a likelihood that you will win.

The worst circumstance would be if somebody has a patent on using three magnets as you have done. I don't even want to think about how awful that would be.

What hall effect switch from where?

I got some 3144 hall effect switches, which seem to be too sensitive. I'd really like switches which have a large operating point. The 3144's (at least as characterized by Allegro MicroSystems) have no typical rating, and can operate anywhere between 70 Gauss and 350 Gauss. The 3143 switches seem to require a lot more magnetism aka closeness. Also, the hysteresis, 55 G, is killing me. Even if I can find a distance that the magnet operates the switch, it doesn't get far enough away to release the switch.

What hall effect switch are you guys using, and where did you get it from?

Dimmensions of the switch?

Hi! do you have the dimensions of the switch? of any of the parts
When I print it, the keycap mount is much smaller than the mount in the stem, also the housing of the switch doesn't fit a plate so if you have those specifications I would be very usefull to alter my parameters

Request for clarification on layer height

I've actually printed a fair few of these and I'm loving them, but I have a question regarding the layer height recommendation since I've been post-processing them and wanted to make sure I was being maximally efficient. When you recommend 0.16 for layer height, does that also include the first layer? I'm asking because the slicer I use (Prusa) defines the first layer height separately from the subsequent ones, and depending on which profile you're starting from I reckon that disparity could account for all sorts of quirkiness.

Regardless thanks for your hard work! I fabbed up some of your beta PCBs and I'm looking forward to slowly building this out!

Handwiring Posibility?

Hello and thank you very much for your work, honestly it's brilliant!

Since not many people have access to PCB manufacturing / KiCad skills or want to make something like a dactyl keyboard (my usecase), are there any resources available or any way that people can start looking it up in terms of wiring?

Thanks again!

Switching hall effect sensors on/off

I am somewhat concerned with power consumption given that each sensor seems to consume around 4-6mA. I wonder if it would be possible to turn on hall effect sensors cluster-by-cluster while polling. Maybe like turn on the cluster -> wait about 0.1ms -> poll the cluster.

Managed to find Texas Instruments design paper that involves duty cycling, they use 50-60mcs delay (although they use their, own significantly more expensive DRV5033 sensors).
www.ti.com/lit/ug/tidub69/tidub69.PDF (nice)

That approach could probably be used to simplify the circuit as well

5mm magnet troubles

For whatever reason, I'm having a very hard time getting the sheath to snap in to the body with 5x2mm magnets. I've adjusted every setting in the scad file that I would need to, I think.
Any tips or suggestions on getting this to work?

non-flat keyboard?

I use an ergo keyboard, the Kinesis Essential. It has two flat mini-keyboards (ctrl/alt/backspace/delete/home/end) and (alt/ctrl/space/enter/pageup/pagedown), and two dished keyboards. Frankly, dishing and PCBs are incompatible .... until now! If you print the key retainers in a dish shape, and use through-hole 49E hall sensors, you can vary the length of the leads so they are different heights above the PCB to match the dishing of the key retainers.

I'll try it and let you know how it goes.

Help with how the stabilizer works?

Hi! I'm a bit confused by how the stabilizer is supposed to work, specifically how the magnets are supposed to interact to help push the stem back up after a key is pressed. Is the 4x2mm magnet in the stabilizer body supposed to pull on the stainless steel wire itself? A lot of the stainless steel wires I found at Michaels are actually not magnetic. Is it supposed to pull on smaller 2x1mm magnets in the stem?
Thanks for your help!

MAGNET_WALL_THICKNESS not honored in "sheath"

Setting MAGNET_WALL_THICKNESS changes the body, but in the sheath, the value is hard-coded, creating issues with snapping the sheath and body together when this value is changed - especially decreased.

The solution is to simply specify this value on the sheath in void_switch.scad - the function already has a parameter for it, but because it's not passed, the function uses the hard-coded default of 0.5.

I'll be submitting a PR for this shortly.

Question: how is your PCB/circuit?

Hi Riskable,

First I would like to say: MOTHER F*#$%! GENIUS design! Congrats!

Second, how is your circuit implemented? Do you need a matrix of analog pins for this keyboard to work? Is it even possible to make an analog matrix?

How do you measure each key? Is there a coil under each key?

Thanks!

Issues with 5mm magnets

Hello,

I tried creating some switches with 5mm magnets.
The wall around the magnet in the stem seems to be too small:
image

Indeed, when I put the magnet in, one of the walls simply snapped off.

Is there any way to increase the wall size at this position?

Thanks in advance :)

Resin Teflon Mod

What I noticed is the friction with resin prints. First I decreased the diameter of the stem and I glued a layer of teflon tape onto the stem. Then I applied some dielectric grease. It now works smoothly with resin prints!

Just a question: Minimum practical size?

Lovely design, and many thanks for parameterizing and documenting it so well.

Apologies if I've missed this one in the docs: Have you done any experiments to see what the minimum center-to-center distance could be while still operating well? I have an button-matrix application where that's about half an inch; full-size keyboards run closer to 3/4".

Switch tends to stick when bottomed out

I have all of the magnets in properly and I have found on my test switch before I print anymore of them that the switch has a tendency to stay down sometimes, any tips?

Stupid Question: Can you use any case and pcb?

I've read confilcting things in different articles. Can you just use any pcb and case that fits void switches? Or do I need something special? Where would I buy that something special.

Sheath does not appear to fit into body on default settings

I was excited to try these keys out (and still am), but when I printed one up, the sheath did not even come close to snapping into the body, even after considerable filing and use of pliers. I tried again (with the recommended layer height this time) and got the same result. Then I checked out the render in OpenSCAD, and found that at the default settings, it shows a considerable negative clearance between the sheath's magnet holder and the body's pocket for it. The clearance around that part does not appear to become positive until the sheath tolerance setting is around 0.4. Am I doing something wrong, or did an error make its way into the final files?
I'm confident in the quality of my printer, though somewhat less confident in the quality of my filament.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.