Introduction: Hack a Microswitch for Better 3D Prints. (ABL)

About: general bloke type of tinkering

The origins of a good 3D print begin with a level bed. Your methods of achieving this are either manually adjusting the bed corner mounts with thumbscrews and screwdrivers, or using ABL. (automatic bed leveling)

ABL relies on Z height readings from hardware that is interpreted by a compatible firmware for the 3D printer, ie no more fiddling with wingnuts and screwdrivers.

While there may be others, I know that Marlin and Skynet3D support ABL using a RC servo deploying a microswitch.

There has been much debate over whether an inductive or capacitive sensor is a better choice and it largely depends on whether you have a glass or metal bed.

A deployed microswitch doesn't care what the bed material is made of and there is no risk of it accidentally catching on the print layers.

ZennmasterM has a series of 3 videos on ABL using the rc servo method and even though its 3 years old, its definitely worth a watch.

Setting up ABL with ZennmasterM

I'm going to be diving into the business end of the hardware in a search for better resolution.

Step 1: Lineup of the Suspects

While rummaging around my parts boxes, I collected a range of lever style switches from mini to sub-micro.

  1. The first one was a large 30mm 2A 250V AC model with a lever and it was entirely unsuitable due to its blade spring action.
  2. The 2nd was a molded NC (normally closed) only version with a nice smooth action which provided some useful insights.
  3. The 3rd was an old endstop from a 1980's telex machine that I rescued from the bin for parts.
  4. Lastly, I bought a few sub-micro switches from a local electronics shop to use as endstops on another project and I thought these would do the trick.

It occurred to me that the plunger on all of the switches acts on some sort of a spring to provide a fast snapping action for positive electrical contact.

However, for use as a Z probe, we are only concerned with a "break" of a normally closed contact to inform us that the bed has been probed.

I figured that by moving the plunger closer to the contact point, it would make for a more mechanical break than a spring loaded one, ie finer resolution with repeatability.

Step 2: Goodbye to the Weakest Link.

This molded model had a very brittle case and cracked apart when I tried to pry it apart.

It did provide some insight with its plunger acting on a coil spring, so in that respect it was sort of useful.

Step 3: A Real Hack Job.

Opening up this model led me to believe that I could swing the top case half around and it would result in the plunger pressing almost directly on the contact.

However, the plunger was binding on the internals despite extensive use of a Dremel to modify the interior.

I eventually gave up and cut a new slot in the top case, this worked but very sketchy, with the plunger rocking all over the place.

Definitely not something I'd consider in a printer and into the bin it went.

Step 4: Showed Promise, But No Cigar.

This old telex machine endstop showed promise and I butchered 2 items in order to get a nice sharp repeatable action.

Unfortunately the spring eye caused the plunger to wobble and it was set aside as unreliable.

Step 5: ...and the Winner Is...

Some pondering after a good nights sleep led me to a great Dremel free solution, sliding a section of paperclip down the core of the spring would transfer the plungers motion closer to the contact point as well as reduce plunger travel due to the spring bowing.

Some filing on the bottom surface of the plunger was necessary to get the NC contact to operate.

I tested this improved mod with a vernier and a multimeter set to beep, it repeatedly broke the contact at 0.11mm of travel, compared with the previous readings in the range of 0.4mm to 0.48mm.

At this stage, I'm unable to show it in operation due to my 3D printer still being at sea(shipping), but you can bet your remaining rupee that this is what I'll be installing once it arrives. :)