CNC-3018XL: Improved X-Axis Home Switch Mount

A few months of inactivity left the CNC-3018XL table parked in its homed position where the gentle-but-inexorable pressure of the switch lever displaced the foam holding the plastic actuator tab on the X-axis bearing enough that it would no longer operate reliably:

3018 CNC - Y axis endstop
3018 CNC – Y axis endstop

Putting foam tape in a highly leveraged position produces the same poor results as in finance.

The fix requires reorienting the switch so a solid block on the bearing can push directly on the actuator lever:

CNC-3018 X Home Switch - bottom view
CNC-3018 X Home Switch – bottom view

The block must curve around the bearing to give the tape enough surface area for a good grip:

CNC-3018 X Home Switch - oblique view
CNC-3018 X Home Switch – oblique view

The solid model for the new X-axis mount looks about like you’d expect:

CNC-3018 X Home Switch Mount - solid model
CNC-3018 X Home Switch Mount – solid model

I increased the home switch pulloff to 2 mm, although it’s not clear that will make any difference in the current orientation.

The OpenSCAD source code as a GitHub Gist:

// 3018-Pro Mount for Makerbot Endstop PCB
// Ed Nisley KE4ZNU - 2019-07 (using OEM machine axes)
// 2022-02-02 rotate X block (after renaming axes to match new layout)
/* [Build Options] */
Layout = "Show"; // [Build, Show]
/* [Hidden] */
ThreadThick = 0.25; // [0.20, 0.25]
ThreadWidth = 0.40; // [0.40]
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
Protrusion = 0.01; // [0.01, 0.1]
HoleWindage = 0.2;
ID = 0;
OD = 1;
//- Shapes
// Basic PCB with hole for switch pins
// origin at switch actuator corner, as seen looking at component side
SwitchClear = [15.0,5.0,2.0]; // clearance around switch pins
SwitchOffset = [12.5,9.0,0.0]; // center of switch pins from actuator corner
PCB = [26.0,16.4,2*SwitchClear.z]; // switch PCB beyond connector, pin height
//XBlock = [PCB.x + 10.0,PCB.y,20.0];
XBlock = [PCB.x,PCB.y,10.0];
XBearing = [10.0,26.5,28.5];
XPin = [10.0,20.0,10.0];
module XMount() {
if (false) // side-push switch tended to slip
difference() {
cube(XBlock + [0,2*Protrusion,0],center=false);
translate(SwitchOffset + [0,0,10.0 - SwitchClear.z/2])
cube(SwitchClear + [0,0,Protrusion],center=true);
else {
difference() {
translate(SwitchOffset + [0,0,XBlock.z - SwitchClear.z/2])
cube(SwitchClear + [0,0,Protrusion],center=true);
difference() {
cube(XPin + [0,0,XBearing[OD]/4],center=false);
translate([-Protrusion,XPin.y/2,XPin.z + XBearing[OD]/2])
cylinder(d=XBearing[OD],h=XPin.x + 2*Protrusion,center=false);
cube(XPin + [2*Protrusion,0,0],center=false);
YBlock = [PCB.x,PCB.y,5.0];
module YMount() {
difference() {
translate(SwitchOffset + [0,0,YBlock.z - SwitchClear.z/2])
cube(SwitchClear + [0,0,Protrusion],center=true);
ZBlock = [PCB.x,PCB.y,6.0];
ZPin = [20.0,10.0,5.5];
module ZMount() {
difference() {
translate(SwitchOffset + [0,0,ZBlock.z - SwitchClear.z/2])
cube(SwitchClear + [0,0,Protrusion],center=true);
difference() {
cube(ZPin + [0,2*Protrusion,0],center=false);
//- Build things
if (Layout == "Show") {
translate([0,-(ZBlock.y + XBlock.y)])

2 thoughts on “CNC-3018XL: Improved X-Axis Home Switch Mount

  1. I have had similar problems to yours and I have included a couple of raised bosses to marry with the holes in the pcb to lack everything into place – this may also give the tape a better chance since its no longer acting in shear, only in tension.
    Food for thought?

    1. I’d surely go for shiny screws, rather than tiny printed posts, but it certainly seems like a good way to keep the tape from sleazing away under load. In this situation, though, it was the (mostly) unsupported tape under the actuator tab: a total botch.

      Thanks for the suggestion!

Spam comments get trashed, so don't bother. Comment moderation may cause a delay.

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s