For just a few dollars in parts, a few 3D printed parts and an hour of your time, you can add XYZ homing switches to a Since Mill One CNC.
Here's the parts list:
3 - M2x12mm machine screws
3 - M2 machine nuts
2 - M2 machine washers
2 - 8mmx8mm Momentary Switches ($4.50 via Amazon)
1 - Roller micro-switch ($6 via Amazon)
1 - PCB board (small) ($1.60 via Amazon)
4 - 20cm 2.54mm 1p-1p Pin Female to Female jumper wires ($6 via Amazon)
2M - 2 conductor shielded security wire ($1.70 at Home Depot)
I already had everything as extra parts except for the 2 conductor security wire, so my additional cost was less than $2.
Step 1: Step 1: Build the XY Limit Switches
Take the two 8mmx8mm momentary switches (make sure they are momentary and not click on- click off) and solder them to the PCB.
Each side of the switches will have 3 pins that are 2 separate switches. On one side take a multimeter and check which two connectors are the normally open (NO) pins. Make sure that these two pins are only closed when you push the switch.
Strip a the outer insulation jacket off the security wire. Cut back the shield and stranded pull wire so you are left with just the black and red conductors.
Strip a half-inch or so of the insulation off each wire, tin them with solder and insert into the holes that are adjacent to the two pins identified as the NO pins. Solder each wire underneath to the NO pins on the switch.
Clip the pins on the bottom to be as close to the PCB as possible. Take a piece of sandpaper and smooth out the solder joints as much as possible without sanding through the wires.
Cut the PCB around the switch and wire with a dremel or saw.
Step 2: Step 2: Mount the Y Axis Switch
Using some 3M double-sided foam mounting tape, cut out a piece just large enough to fit the bottom of the PCB switch assembly.
Wipe any sawdust from the mounting points near where the aluminum rail brackets mount to the MDF frame. The switch needs to be lined up on the Y axis so that the platform Y gantry engages the switch when it reaches the front of the mill. The Y gantry is pretty thick, so it should be about even with the nuts from the mounting bracket. Run the platform forward to make sure the gantry will press the switch when it moves forward, then remove the mounting tape backing and attach the switch assembly.
Run the wire underneath the aluminum Y rail. I used some aluminum tape to attach the wire to the Y rail along the bottom. Make sure that it doesn't interfere with the gantry V-wheels.
Drill a hole in the rear MDF large enough to thread the wire through and feed the wire out the back.
Step 3: Step 3: Mount the X Axis Switch
The X axis switch mounts on the right side of the mill where the X rail is attached. The XZ gantry is thinner than the Y gantry, so make sure that you move the gantry to the right and get it lined up before attaching the switch assembly to the MDF frame.
Drill another hole and run the wire out the right side.
Step 4: Step 4: Print the Z Axis Switch Bracket and Stop
I designed a switch assembly in OpenSCAD to mount the Z switch along with a stop block to engage the switch.
Print out the 2-piece switch bracket and the stop block with the attached STL files.
The switch bracket is designed to provide up/down and in/out adjustments. The switch bracket is also designed to hold the M2 nuts without needing a tool.
Step 5: Step 5: Assemble the Z Axis Switch Bracket
With the bracket mounting plate (the U-shaped piece with the single hole in it), insert one M2 nut into the hole on the back.
Take the large switch bracket and insert the bracket so that the single slot lines up with the hole on the mounting plate. Using a M2x12mm screw and at least one M2 washer, attach the bracket to the mounting plate. You will need two washers if your 12mm screw protrudes out past the nut. It must be flush or slightly below the face of the mounting plate. After fitting the mounting plate to the bracket, remove the bracket from the mounting plate and set it aside.
With the large switch bracket piece, insert two M2 nuts in the two slots. Insert two M2x12mm screws through the holes in the roller microswitch. The switch should be facing with the roller ball pointing up.
Prepare another length of the 2-conductor security wire and solder the red and black wires to the roller switch. Once again, make sure that you connect the wires in a NO configuration.
Insert a 4" cable tie through the top slot and secure the wire to the bracket for strain relief.
Step 6: Step 6: Mount the Z Axis Switch and Stop Block
The mounting plate and stop block should have printed out with the backs of both pieces facing down on the 3D print bed. They should be very flat and smooth. This will help when attaching them to the Z rail and XZ gantry.
Move the XZ gantry up as far as you can without it coming loose from the lower V-wheels. You may want to give yourself an extra MM or two down just to make sure. The bracket can be fine tune adjusted.
Both pieces will attach to the Sienci Mill One with super glue.
Test fit the switch bracket to get an idea of where the stop block needs to be installed. The smooth side of the stop block will be attached to the inside of the Z rail. Once you determine the best place, clean the attachment point with an alcohol wipe to clean any dust or grease. WITH THE SINGLE HOLE NEAR THE TOP, Attach the stop block with a couple of drops of super glue and press and hold for 30 seconds. (Mine are attached 66mm from the top of the Z rail and 59mm from the left - looking at the back, along the X rail)
Line up the attachment point for the bracket so that the roller ball engages the stop block. Wipe the XZ gantry with an alcohol wipe and using a couple of drops of super glue, press and hold the mounting plate to the XZ gantry.
Step 7: Step 7: Determine Proper Wire Lengths and Attach the Jumper Wires
Tear off 4 wires from a 2.54mm 1p-1p Pin Female to Female jumper wire strip. Tear the 4 wires into two pairs of two wire. Cut each pair in half and strip the insulation back.
Run all three of the wires from the switch assemblies to the back of the Sienci Mill One near the electronic box. The connections will be made to the pins on the right side of the CNC shield.
Determine the correct length of each wire and cut it. Strip the outer jacket and shield from each wire and strip the red and black wires. You can connect the wires with small wire nuts, but I like to use shrink tubing and solder my connections.
Step 8: Step 8: Attach the Wires to the CNC Shield
Attach the jumpers connected to the Y switch to the END STOP Y+ pins
Attach the jumpers connected to the X switch to the END STOP X+ pins
Attach the jumpers connected to the Z switch to the SpnEn pins. Starting with version (0.9) of Grbl, they switched the Z End Stop pin on the Arduino to allow a variable speed motor to use that pin. So with the V3.0 CNC shield and Grbl v1.1, you must connect the Z switch to the SPNEN pins
Step 9: Step 9: Configure Grbl and Do a Homing Cycle
You now just have to enable Homing in Grbl.
Set $22 = 1
When the Homing (or $H) command is sent, the Sience Mill One will now move the Z axis up until the switch engages, back off a little and then move back very slowly until it engages again. Then both the X and Y axis's will move to the right and front and do the same. Once all three switches are sensed, Grbl will zero out the X, Y, and Z WPOS (Work Position) settings and set the MPOS (Machine Position) settings to whatever you configured as the back off amount. (the default is 2mm, I set mine to 3mm)