The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

The New Hotness

  • CNC 3018-Pro: Home Switches

    The CNC 3018-Pro doesn’t absolutely need home switches, but (in principle) they let you install a workholding fixture at a known position, home the axes, pick a preset coordinate system for the fixture, and not have to touch off the axes before making parts.

    Having used Makerbot-style endstop switch PCBs for the MPCNC, this was straightforward:

    3018 CNC - Endstop switches - overview
    3018 CNC – Endstop switches – overview

    The X and Z axis switches simply press against the appropriate moving parts:

    3018 CNC - X and Z Endstops
    3018 CNC – X and Z Endstops

    The little tab stuck on the tool clamp provides a bit of clearance around the upper part of the X axis assembly.

    The Y axis switch needed a slightly tapered tab to extend the bearing holder:

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

    It’s made from a random scrap of clear plastic, hand-filed to suit, and stuck on the bearing to trigger the switch in exactly the right spot.

    You can find elaborate switch mounts on Thingiverse, but I’ve become a big fan of genuine 3M outdoor-rated foam tape for this sort of thing: aggressive stickiness, no deterioration, possible-but-not-easy removal.

    The switches need +5 V power, so add a small hack to the CAMTool V3.3 control board to let the connectors plug right in:

    3018 CNC CAMTool - Endstop power mod - installed
    3018 CNC CAMTool – Endstop power mod – installed

    The solid models borrow their central depression around the switch terminals from the MPCNC blocks:

    3018 Home Switch Mounts - Slic3r preview
    3018 Home Switch Mounts – Slic3r preview

    The OpenSCAD source code as a GitHub Gist:

    // 3018-Pro Mount for Makerbot Endstop PCB
    // Ed Nisley KE4ZNU – 2019-07
    /* [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;
    LENGTH = 2;
    //- 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,PCB.y,5.0];
    module XMount() {
    difference() {
    cube(XBlock,center=false);
    translate(SwitchOffset + [0,0,XBlock.z – SwitchClear.z/2])
    cube(SwitchClear + [0,0,Protrusion],center=true);
    }
    }
    YBlock = [PCB.x + 10.0,PCB.y,20.0];
    module YMount() {
    difference() {
    translate([-10.0,0,0])
    cube(YBlock,center=false);
    translate([0,-Protrusion,10.0])
    cube(YBlock + [0,2*Protrusion,0],center=false);
    translate(SwitchOffset + [0,0,10.0 – 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() {
    cube(ZBlock,center=false);
    translate(SwitchOffset + [0,0,ZBlock.z – SwitchClear.z/2])
    cube(SwitchClear + [0,0,Protrusion],center=true);
    }
    translate([0,-ZBlock.y,0])
    difference() {
    cube(ZPin,center=false);
    translate([ZPin.x/2,-Protrusion,4.0])
    cube(ZPin + [0,2*Protrusion,0],center=false);
    }
    }
    //- Build things
    if (Layout == "Show") {
    translate([0,YBlock.y,0])
    XMount();
    translate([0,-YBlock.y/2])
    YMount();
    translate([0,-(ZBlock.y + YBlock.y)])
    ZMount();
    }

    The dimension doodles:

    3018 Home Switch Mounts - Dimension Doodles
    3018 Home Switch Mounts – Dimension Doodles