Visible Robot Assembly

dsc00598Visible Robot mechanical assembly

Metric vs inch

The Visible Robot can be built in either—or both—metric or inch systems. With the exception of NEMA17 motors, which use M3 (3mm) screws, inch system 4-40 screws can be substituted throughout the build. Where M6 (6mm) nuts and bolts are used in a metric build, 1/4” fasteners can be substituted. Likewise, 5/16” threaded rod and nuts can be replaced by M8 (8mm) parts and 3/8” by M10. The drilling done during post-processing will be a little different in these cases.

Overall Workflow

You can start the build by building “upwards.” That is, assembling the base frame first; then the X-Z carriage; the gantry; the Z-axis assembly; followed by mounting the end-effector platform (EEP)—which, in the case of a 3D printer might be your extruder assembly, or in the case of a machine for doing CNC (Computer Numerical Control) work might be your tool or tool-holder; and finally, the electronics and cable management. If your working space has been set aside, this is probably preferable.

Alternatively, you can start with the Z-axis assembly and work “downwards—in the reverse order. Your choice.

I’ve done it both ways. But If you’ve got the space ready, Building from the base up provides a more natural progression, with less storage of finished pieces. I’ll try to write so that you can do it either way without too much confusion.

That said, I’ll be starting with the base.

To avoid burn-out, I recommend building the machine in stages, taking breaks with some fun rewards taken in between stages.


Start the assembly process by having all the parts needed for the major assembly you’ll be working on at hand. These are laid out below in the guide to each assembly stage. The printed parts should be post-processed, ready for assembly. See the Post-processing Guide for help with this, if needed.

Each section that follows is for a major assembly step, and lists the parts and tools needed so that the machine can be built in stages without major surprises that require new parts to be printed (or a run to the hardware store, or an emergency order placement to eBay, Amazon, or AliExpress, yikes!).

Assembling the Base Frame

For reference, I’ve used Y=0, X=0 (Ymin, Xmin) as the corner to the left of the ‘Y’ motor. (In the picture above that would be the corner that’s at a position of about 10 o’clock from the motor at the bottom of the photo).

The base frame consists of:

Printed parts

base_corner_00_top            // Ymin / Xmin


base_corner_01_top            // Ymin / Xmax


base_corner_10_top            // Ymax / Xmin


base_corner_11_top             // Ymax / Xmax (w/oblong hole)


y_nema23_motor_mount     // NEMA17 motor can be substituted

nema_17_to_23_motor_mount      // used with NEMA17 motor on ‘Y’ axis

y_gantry_drive                     // ‘Y’ anti-backlash nut mount

y_far_end                             // leadscrew capture, frame-stiffening

y_far_end_nut_seat              // seat for frame-stiffening nuts

leveling_dial (4)                   // manual bed-level adjustments

leveling_dial_static (4)

Precision parts

12mm x 800mm shafts (2)     // Y-axis

12mm linear bearings (4)

¼” – .250 (lead) x 30” (760mm) leadscrew // Y-axis drive

¼” – .250 (lead) anti-backlash nut

5mm x ¼” flexible coupler     // used with NEMA17 motor


¼” x ¼” flexible coupler        // used with NEMA23 motor

Electrical parts

NEMA23 motor                    // NEMA17 part can be substituted

Ymax microswitch                // endstop

Ymin microswitch


31½” x 17½” x 5/16” (800mm x 445mm x 8mm) glass plate

Threaded-rod (t-rod)

5/16” x 21 ½” (545mm) t-rods (4)  // near-end and far end-pieces

5/16” x 33” (840mm) t-rods (2)      // trapezoidal bracing

Fasteners – If doing a metric assembly with 8mm t-rod, substitute 8mm parts for the 5/16” bolts and nuts and 7mm parts for the ¼” -20 hex bolts/nuts of the leveling dials. If you’re using a NEMA17 motor, you’ll use 4 extra M3 x 12 screws in place of the M4 x 16 screws and locknuts used for the NEMA23 motor.

5/16” nuts (14)                      // base_corners, far-end, motor-mount

5/16” star-washers (14)

5/16” locknuts (12)

M4 x 16 screws (4)               // NEMA23 motor

M4 locknuts (4)

M3 x 25 screws (8)               // base_corners

¼”- 20 x 3/4” hex bolt (4)     // leveling_dial

¼”- 20 nut (4)

M3 x 10 screws (4)

M3 x 16 screws (8)

Other parts

.177 cal (4.5mm) BBs (~60)  // leveling dial

dsc00225Base-frame parts

Tools needed:

Phillips screwdriver

1/2” and 9/16” open-end wrench // Crescent wrench can be used instead

Simple pliers or vise-grips           // vise-grip pliers may be preferable

dsc00230Tools required

Tools recommended:

Phillips screwdriver

open-end or crescent wrench

vise-grip pliers                // instead of the simple pliers

ohmmeter (multimeter)   // metal-to-metal contact testing

dsc00232Recommended tools


NOTE: Ensure all parts have been post-processed and are ready for assembly.

NOTE: 8mm threaded rods, nuts and locknuts can be used instead of 5/16”.

1) Put two of the 5/16” t-rods, one after the other, through the tunnels in the y_nema23_motor_mount.

2) Pass a star-washer along the t-rod you’ve determined to be the top-most t-rod and then thread a 5/16” nut following the washer up against the roughly-centered motor mount. Do the same for the other side.

3) Using four 5/16” nuts, thread each one about 3” (75mm) onto each of the ends of the t-rods.

4) Follow each these four nuts with a 5/16” star-washer.

5) Repeat steps 1, 3 and 4 with the other two (far-end) t-rods, using the y_far_end part instead of the y_nema23_motor_mount. (The y_far_end is tightened onto threaded rod using an M3 screw, rather than the pair of nuts with washers).


Near-end (motor-end) and far-end threaded-rod sub-assemblies

6) Using two M3 x 25 screws for each pair, loosely assemble base_corner_00_top and base_corner_00_bottom, then base_corner_01_top and base_corner_01_bottom, etc. until all four base corners are assembled.


Partially assembled base_corners

7) Position the four base corners, ensuring that they mirror one another on both ‘X’ and ‘Y’ axes–as in the above photo. (The hexagonal depression in top of each of the base corners should be to the inside. The holes for the trapezoidal stiffening t-rods nearest the motor end should “point” towards the holes used for the same purpose on the y_far_end part–not shown. The oblong hole in the base_corner_11 part should be ready to share the same Y-axis shaft as the base_corner_01 part).


base_corner_10 ——– y_far_end –——- base_corner_11(w/oblong hole)

          |                               /   \                              |

          |                            /         \                           |


          |              /                                      \            |

          |          /                                             \         |

base_corner_00 ——- motor-mount —— base_corner_01

Generally, the layout of the corners should be as above, with the ‘/’ and ‘\’s representing the trapezoidal rods to be added, the ‘——‘ representing the t-rods assembled but yet to be added, the ‘|’ lines representing the Y-axis shafts, and the ‘~~~~~’ representing line continuation not drawn.

NOTE: It might be helpful to think of the ’00’, ’01’, etc suffixes to the base_corner names as ‘Y’, then ‘X’, as in Ymin/Xmin as having the suffix ’00’, and Ymax/Xmax having the suffix ’11’.

8) Using four 5/16” nuts, thread them about 6” (150mm) onto each end of the two long t-rods to be used as trapezoidal stiffening rods. Follow each of these nuts on the t-rods with a star-washer.

9) Slide the end of one of the trapezoidal-stiffening t-rods into the hole for it on either base_corner_00 or base_corner_01. Push the t-rod into the base corner until there’s enough room to fit the other end of the t-rod into its hole in the y_far_end part. But don’t fit the other end yet.

10) Repeat Step 9 with the other trapezoidal-stiffening t-rod.

11) Slide the pair of t-rods with the motor-mount (near-end) into the vertical oblong openings of base_corner_00 and base_corner_01. (The openings perpendicular to the holes for the Y-axis shafts). The flat plate for mounting the motor should go to the outside.

12) Do the same with the pair of t-rods with the y_far_end, using base_corner_10 and base_corner_11. The flat plate for mounting the y_far_end_nut_seat should be on the outside, with the tunnels that will receive the trapezoidal-stiffening t-rods facing inside.

13) Start locknuts on the ends of the t-rods on these two (near-end / motor-side) base corners.

dsc00251Base_corners with locknuts started

14) Slide the Y-axis, 12mm shafts into the center holes of base_corners_00 and base_corners_01. Don’t insert the Y-axis shafts into the other base corners just yet.

15) Tighten the M3 screws holding these two base corners together.

dsc00248Screw the M3 bolts vertically into the round recess shown above

16) Tighten the nuts and locknuts against these base corners. (The distance between the base corners now forms the basis for the X-axis travel).

TIP: In the next step, tighten the locknuts onto the t-rods first, just enough to see the ends of the t-rods protrude from the nuts. This will give you maximum travel along ‘X’.

TIP: Use pliers (vise-grips are handier) to hold the t-rods as you tighten the nuts. Gripping midway between the base_corners and the motor mount will limit any damage to the threads of the t-rod to an area that likely won’t be re-used. In any event though, try to use as slight a gripping force as needed to hold the t-rod from rotating, yet avoid damage to its threads.

TIP: Tighten all the nuts on one t-rod first, then move to the other. (This lessens the number of times you’ll have to grip and release the pliers).


dsc00250Base corner coming together

If you started assembly in a “top-down’ manner and have finished the gantry assembly, skip to Step 21.

If you are starting assembly with the base:

17) Insert two 12mm LM12UU linear bearings into the recesses for them in the gantry_hip.

NOTE: Be careful with this next step, as rough or forced insertion of the shaft into the bearings can damage the bearings. As soon as you feel resistance from the bearings very slightly wobble the gantry_hip until the resistance disappears, then slowly advance the hip onto the shaft. Remember: there are two bearings to each hip. Use the same technique for both.

18) Gingerly, slide both hips onto their respective Y-axis shafts, taking care that the bearing retainers are facing each other (inward).

dsc00325LM12UU linear bearings and hip on ‘Y’ 12mm shaft

19) Cover the bearings with the gantry_hip_bearing_retainer, making sure that the bearings line up with the printed-in rings meant to restrain axis movement.

20) Fasten with four M3 x 10 screws.

dsc00241Bearings enclosed with gantry_hip_bearing_retainer

Do the same with the other hip.

21) Now, pick up the gantry set aside earlier and mount it on the un-captured Y-axis shafts. The side of the gantry with the shoulder having the oblong hole for one of the X-axis shafts, should be mounted on the Y-axis shaft between base_corner_01 and base_corner_11. As mentioned in Step 18, this should be done carefully.

22) Slide the un-captured (loose) Y-axis shafts into base_corner_10 and base_corner_11.

23) Start locknuts on all four ends of the t-rods on these two (far-end) base corners.


24) With the 12mm Y-axis shaft ends flush with the walls of all four base-corners, measure the distance between the shafts at base_corner_00 and base_corner_01.


25) At the other end (far-end), again with shaft ends flush with the base_corner walls, and the shaft in the oblong “sloppy” hole centered, measure and adjust (maintaining a central position of the shaft in the “sloppy” hole) so that the two measurements are equal.

26) Thread two of the internal nuts on the t-rods just up against the base_corners, while not moving these corners, to maintain the distances between the ‘Y’ shafts at both ends. This serves as a reference.


27) With ‘X’ distance is equal on both ends, run internal nuts up against the base_corners

28) Tighten the M3 screws holding these two base corners together.

29) Move the y_far_end to a point midway between the base corners

dsc00249Centered y_far_end.

30) Pick up and hold the y_far_end_nut_seat against the y_far_end

31) Push the t-rods through the y_far_end and y_far_end_nut_seat parts.

32) Start locknuts on both ends of each of the trapezoidal stiffening rods.

dsc00252Far-end frame assembly

If you’ve completed assembly of the gantry onto the ‘Y’ shafts, continue. (See Steps #1 through Step #6 in “Assembling the Gantry,” below for clarification). Otherwise jump to Step 35.

33) Test the metal-to-metal contact of the gantry and Y-axis by applying the leads of an ohmmeter to each of the X-axis shafts and the Y-axis shafts, one after the other. There should be a very small (single digit, or no) resistance measured.

34) If an “open” circuit is found, move the leads between X-axis shafts, gantry shafts and Y-axis shafts to isolate the problem. Then loosen/tighten the nuts on the gantry t-rods as needed to effect the metal-to-metal contact.

35) Moving the gantry back and forth on the Y-axis, ensure that there’s no binding at either end. (If there is binding, move the base corner with the oblong hole in, towards the center, or out, away from it, such that its Y-axis shaft moves within the space given by the oblong hole—in other words, wherever the gantry is moved along the ‘Y’ axis, the Y-axis shaft is given free space to move within the oblong hole).

36) Tighten all of the nuts holding the base frame together, maintaining the reference distance between the ‘Y’ shafts.

NOTE: You set the reference initially by tightening the outside locknuts to allow the t-rods of the near-end to just protrude. This set the maximum ‘X’ distance. Screw the near-end internal nuts against the base corners, not touching the external locknuts there. By setting the far-end distance—using the internal nuts on the far-end t-rods—equal to the measured near-end distance, you should—once you screw the external locknuts up against the far-end base_corners without touching the internal nuts—have a near-perfect rectangle as a base.

37) Set a leveling_dial on the workbench and fill the circular trench with BBs. These serve as ball bearings.

dsc00382Leveling dial “ball bearing”

38) Encase the BBs with the leveling_dial_top part, holding it down with your finger until you can secure it.

dsc00392Leveling dial assembly

39) Secure it with an M3 x 8 screw.

dsc00389Assembled leveling dial

40) Screw a ¼” – 20 nut onto a ¼” – 20 x 3/4” bolt. (An M7 x 20mm bolt/nut combination can be used, instead)

41) Place the bolt/nut combination into the leveling dial threaded-end first.

dsc00392A ¼” -20 bolt and nut provide the actual leveling

42) Notice in the picture above the boltholes in the sidewalls? Start M3 x 16mm screws into these holes. The role of these screws is to constrain the glass workbed from moving due to vibration while the robot is operating.

43) Repeat Steps #37 through Step #42 for the remaining leveling dials.

44) Mount the hex-head of the leveling dial’s bolt in the hexagonal depressions in the base corners.


DONE. When fully assembled later on with the glass bed, the near-end (motor-end) base corner should look like the photos below.






Assembled base corners

Good job! Take a walk in the park. Buy some fresh strawberries and drown them in whipped cream. Wash it down with a cup of hot chocolate.


Assembling the (Original) X-Z Axes Carriage

NOTE: To build the Alternate X-Z carriage, see the separate Alternate_X-Z_Carriage assembly document.

This sub-assembly consists of:

Printed parts



z_bearing_bar (3)

z_bearing_sleeve (6)

z_carriage_base (2)

z_cable_bracket // holds cable banding

z_max_uswitch_bracket // depends on EEP used

Precision parts

LM10UU linear bearings (4) // X-axis bearings

LM8UU linear bearings (6) // Z-axis bearings

1/4” x .250 (lead) anti-backlash plastic leadnut // X-axis leadnut

1/4” -20 (TPI) anti-backlash plastic leadnut // Z-axis leadnut

Electrical parts

Xmin microswitch

Xmax microswitch

Zmax microswitch


M3 x 25 (16) // Z-bearing sleeves & X carriage

M3 x 10 (14) // X-Z microswitches, leadnuts

M3 x 8 socket-head (6) // Z-carriage base

M3 x 6 (4) // Cable bands

M3 star-washers (6) // Z-carriage base

dsc00254Parts for the X-Z Carriage assembly

Tools needed:

Phillips screwdriver

Offset or right angle Phillips screwdriver // Z-carriage base

2.5mm hex (Allen) wrench // Z-carriage base

dsc00256Required tools – the hex wrench is missing from the photo


NOTE: As above, with the Z-axis sub-assembly, the parts must have been post-processed.

1) Place the x_carriage_bottom flat-side down on the workbench and insert the four LM10UU linear bearings. The bearings should nestle into place without any sideways (axial) motion. They should be constrained by the thin “ribs” printed into the bearing sleeves of the carriage fitting the grooves of the bearing. If you look through the bearings, they should appear completely inline with one another. If they don’t, look for bits of plastic that may have caused the problem and clear them out.

dsc00257Nest 10mm linear bearings in x_carriage_bottom

2) Fit the x_carriage_top to the x_carriage_bottom. Don’t fasten it yet. Again, check for good alignment.


3) Add x_carriage_top, ensuring bearings are aligned

4) Fit the z_cable_bracket to the side of the carriage that has just one hole for a Z-axis shaft.

5) Fit the z_max_uswitch_bracket to the other side of the carriage (the side having two holes for the other two Z-axis shafts). The “tail” that the microswitch will be fastened to should be pointed downwards, beyond the x_carriage_bottom.

6) Fasten the assembly with four M3 x 25 screws, making sure that the bearings are properly nested—that is, they don’t move axially.

dsc00259X_carriage assembly with cable and microswitch brackets

NOTE: There are three z_bearing_bars. In only one of them the boltholes are post-processed to receive 3mm screws. That is, the boltholes on this one z_bearing_bar act as locknuts.

7) Before going ahead with the next operation, assure yourself that all the LM8UU bearings, bearing sleeves and bearing bars fit together properly. This will save you from a (tedious) disassembly operation if they are not.

8) Take the z_bearing_bar that will receive 3mm screws referred-to above and slide it through the rectangular cutouts of the just-fastened X_carriage sub-assembly, with the bearing-capture features facing outward.

dsc00260Z_bearing_bar inserted through z_carriage assembly

9) While maintaining the z_bearing_bar through the z_carriage top and bottom, using three M3 x 10 screws for each, fasten the z_carriage_base parts to the x_carriage top and bottom.

10) Fasten the z_carriage_base to the z_bearing_bar fitted above, using star-washers and two M3 x 8 screws—one for the top z_carriage_base and one for the bottom. Leave the screws somewhat loose, as some “dialing-in” may be needed later.

dsc00261z_carriage_base attached to the z_carriage

NOTE: As was done with the post-processing of the z_bearing_bars, two of the z_bearing_sleeves were post-processed to have screws easily pass-through. The other four were post-processed to receive screws, acting as locknuts.

11) Put one of the LM8UU bearings into the assembled bearing bar. Enclose it with one of the z_bearing_sleeves (with the pass-through holes) and fasten it with two M3 x 25 screws. Do the same at the other end of the z_bearing_bar. As with the x_carriage bearings, check to assure yourself that the bearings are aligned.

dsc00262Z_bearing_base with z_bearing_bar and z_bearing_sleeve

(As in the photo above you might, very gingerly, push through an 8mm shaft through the assembled bearings. The shaft should not bind. If unsupported it should fall through by its own weight. In the photo I took the opportunity to do the same with the 10mm ‘X’ axis shafts).

If there’s more than a small amount of friction, look carefully at both ends of the bearings to see if there’s a noticeable gap between either of the bearings and the sleeves or bearing bar. If there is, take it apart, clean it up, and reassemble.

12) Using M3 x 8 socket-head screws and star-washers, loosely fasten the four remaining z_bearing_sleeves to the z_carriage_bases on top and bottom.

dsc00264Z_bearing_sleeve about to be fastened to the z_carriage_base

NOTE: The photo above shows the use of Phillips pan-head M3 screws. Better in this application is the use of hex-head (aka socket-head, aka Allen) screws as shown below. This is due to the limited access available between z_carriage_base posts.


TIP: For easier access, use socket-head screws, as above, instead of pan-head to fasten the z_bearing_sleeves

13) As was done above in Step #11, but with reversed placement of the parts, insert LM8UU bearings into one pair (top and bottom, aligned axially) of z_bearing_sleeves and fasten to one of the z_bearing_bars. The z_bearing_bar goes to the outside of the X-carriage sub-assembly Do the same on the other side.

dsc00265Z_carriage assembled with bearings installed

14) To align the bearings and assure minimal friction, slowly and carefully insert the three shafts of the Z-axis through the six bearings just assembled. Lightly and temporarily secure the shafts into position using either the top_motor_mount part, or the end-effector platform (EEP) you’ve selected to use. All three shafts should be parallel to one another.

NOTE: If they aren’t parallel, the cause is likely due to either having set the sleeves or bar at an angle to the vertical, or to the small variances in placement due to the “pass-through” screws of the assembly. To fix this, loosen the screws of the out-of-aligned part or parts, and adjust. Then tighten the screws.

dsc00269X-Z Carriage with Z-axis shafts, temporarily secured with (blue) EEP

15) Slide the X-Y carriage up and down the shafts. When satisfied with the lack of friction, tighten the screws fastening the z_carriage_base, the bearing sleeves and bearing bars.

NOTE: There might be some friction remaining, but as long as it’s slight, there shouldn’t be a problem. The NEMA17 motors used for the ‘Z’ axis will run hotter with more friction, but are powerful and have sufficient torque for a small amount of friction to not be a problem. However, if your intention is to move heavy loads or drive the ‘Z’ axis quickly, you will be well off to spend the extra effort it takes to get friction to a bare minimum.

16) Remove the EEP from the shafts and remove the Z-axis shafts from the X-Z carriage.

17) Attach the Z-axis (1/4” – 20 TPI) leadnut, using three M3 x 10 screws.

TIP: The plastic leadnuts usually come with a dowel inserted where the leadscrew will eventually go. Until the leadscrew is added, leave the dowel in place, as it assures the spring and cap remain together.

NOTE: An orientation with the flange mounted to the top (or bottom) of the carriage and with the leadnut tunnel and spring inside the X-Z carriage will avoid collision with a “too-long” Z-axis coupler. (Couplers can vary in length and diameter).

18) Using three M3 x 10 screws attach the X-axis (1/4” x .250” lead) leadnut to the side of the X-carriage sub-assembly opposite the X-axis motor (to avoid collision with the coupler). This leadnut attaches to the flange on the x_carriage_top. Again, the tunnel of the leadnut should be inside the X-Z carriage, this time to allow the Xmin microswitch to trigger properly.

dsc00272‘Z’ axis leadnut fastened to X-Z carriage

19) Test that each of the screws on the assembly is securely fastened.

DONE: When fully assembled, it should look like the pictures below—an exception is that the screws bolting the Z-bearing sleeves to the Z-bearing bar are reversed. See #6 and #9, above. (I mistakenly drilled holes as pass-through in two of the z_bearing_bars and one to receive screws vs the other way around in post-processing. C’est la vie).



Assembled X-Z carriage

Looks pretty good! I’ll bet a gigundous slice of cherry pie with some ice cream on top would make it look even better!

Assembling the Gantry

The gantry consists of:

Printed parts








x_leadscrew_capture // leadscrew capture, Xmax endstop

nema17_centering_ring // Xmin endstop


Precision parts

10mm x 500mm shafts (2) // X-axis shafts

8mm x 250mm shafts (4) // gantry hip-shoulder separation

LM12UU linear bearings* (4) // Y-axis bearings

¼” – .250 (lead) x 18” (460mm) leadscrew // X-axis drive

5mm x ¼” flexible coupler // X-axis NEMA17 motor-leadscrew coupling


¼” x ¼” flexible coupler // X-axis NEMA23 motor-leadscrew coupling

* If you used the 12mm linear bearings in the build of the base frame, ignore.

Electrical parts

NEMA23 motor // NEMA17 motor can be substituted

Threaded-rod (t-rod)

5/16” x 14 ½” (4) // angled bracing between hips and shoulders

// 8mm x 370mm t-rod can be substituted

3/8” x 21 1/2” (2) // hip-to-hip connector, Y-axis drive attach

// If 3/8” t-rod isn’t available, 10mm x 550mm

// t-rodcan be substituted. T-rod receiving holes

// in the hips will need to be drilled out to 10mm.


5/16” nuts (8) // hip-to-shoulder separators

5/16” locknuts (8) // “ “

5/16” star-washers (8) // “ “

3/8” nuts (6) // hip-to-hip connector, Y-axis gantry drive

3/8” star-washers (6) // “ “ “

3/8” locknuts (4) // “ “

M3 x 10 (12) // leadscrew_capture, nema17 motor_mount

M3 x 16 (8) // hip bearing retainer

M3 setscrews (7) // shoulder shaft retention

M4 x 16 (4) // NEMA23 motor (M3 x 16 for NEMA17)

Tools needed:

Phillips screwdriver

1/2” open-end wrench // Crescent wrench can be used instead

9/16” “ “ // “ “ “ “ “

pliers (simple) // vise-grip pliers may be preferable

mallet // a tack hammer is OK

dsc00481Tools – NOTE: mallet / tack hammer is missing in the picture


NOTE: Ensure all parts have been post-processed and are ready for assembly.

1) If you have previously assembled the base and the gantry hip to it, jump to Step #5. Otherwise, place two of the LM12UU bearings into the bearing slots of one of the gantry_hips, ensuring that the grooves of the bearings mate with the rings printed into the gantry_hip. Test their seating by trying to move them axially. They should not move.

dsc00238Gantry hips with bearings inserted

2) Fasten one of the gantry_hip_bearing_retainers to the gantry_hips with four M3 x 16 screws. As with the previous instruction, the grooves of the bearings should mate with the small features of the gantry_hip_bearing_retainer meant to restrain axial movement.

dsc00241Bearing retainer fastened to hip

3) Slowly and carefully insert one of the 12mm x 800mm ‘Y’ axis shafts through the bearings just assembled.


Insert the 12mm Y-axis shaft through the bearings

4) Repeat instructions #1 through #3 for the other gantry_hip.

5) Brace the ‘Y’ axis shafts with wooden blocks as shown in the photo below. If you haven’t assembled the base yet, you’ll just have the hip, bearing and shaft to work on. Still, brace the shaft on either side of the hip for the next operation.

dsc00324Braced ‘Y’ shafts

NOTE: In the next step, if, during post processing you’ve finalized the gantry shaft tunnels with a 5/16” drill to achieve a “force fit” of the shaft into its tunnel, you should probably remove the bearing_retainer part—as I’ve done in the photo below—to better see when contact is made. If the contact is too strong, it may cause the small bearings to attempt to dig into the ‘Y’ axis shaft and prevent near-frictionless movement. With a too tight fit, the bearings may be damaged.

TIP: With the retainers removed, you can see the shafts as they enter the bearing-retaining area. Tap more lightly now until contact between the bearing and shaft is made. Verify the contact with an ohmmeter. A reading of a few ohms can be expected.

6) Using the mallet, lightly tap two of the 8mm gantry shafts into the 8mm holes on one of the gantry_hips. The shafts should lightly touch the barrel of each of the bearings. (As the shaft “bottoms” against the bearing with the tapping, you’ll feel and hear it). This metal-to-metal contact is important to the structure and accuracy of the finished machine. If you have an ohmmeter, you can verify this contact by measuring the electrical resistance between the parts. (There should be no, or very small, resistance—zero, or single digit, ohms).

dsc00325Contact between bearing and shafts (both entering photo from below)

NOTE: The confirmation of seeing the contact gives some comfort, particularly if you’re tapping with the hammer has been stronger than “lightly”.

dsc00329Contact verified!

7) Repeat Step #6 for the other gantry_hip.

dsc00330All four gantry shafts inserted into the hipand metal-to-metal contact verified

8) We’ll now move on to put the X-Z carriage onto the X-axis shafts and then attach this subassembly to the gantry that’s been built so far. For this, gather the 10mm x 500mm X-axis shafts, the X-Z carriage of your choice (Original or Alternative) and the two gantry shoulders.

9) Take the gantry_shoulder with two circular 10mm holes for the ‘X’ axis shafts and, using a mallet, tap the shafts into these holes in the shoulder.

The 10mm shafts should be visible when looking down the holes for the 8mm gantry shafts.

dsc0033310mm shafts are visible through the bottom holes.

NOTE: In the next Step, the assembled X-Z carriage should be turned such that the ‘X’ leadnut is on the opposite side of the shoulder where the motor is to be mounted. This is to allow the ‘X’ coupler to travel inside the X-Z carriage and thereby allow the Xmin microswitch to trip properly against the shoulder.

10) Gently slide the two 10mm shafts through both sets of X-axis bearings in the X-Z carriage, ensuring the correct orientation with respect to the X-Z carriage and the X-axis motor. As with the 12mm bearing earlier, this should be done delicately to avoid damaging the linear bearings.

NOTE: I’m using the Alternate X-Z carriage. Both the Original and the Alternate fit the same way, with the circular boss for the X-axis leadnut to the opposite side of where the motor will be mounted.

dsc00332Alternate X-Z carriage mounted on the X-axis

11) Add the gantry shoulder with the circular 10mm hole and the 10mm elongated hole to the just-done X-Z carriage, shafts, and opposite shoulder. For future reference, we’ll call this the “upper gantry assembly.”

dsc00334Upper gantry assembly.

TIP: For this next operation, the ‘Y’ axis 12mm shafts should be braced with wooden blocks as shown below.

12) Align the four 8mm holes (two, if you haven’t assembled the base yet) that are perpendicular to the 10mm shafts with the 8mm gantry shafts you inserted into the hips in Steps #6 and #7. Ensuring the holes are all aligned, lightly tap the shoulders in alternating fashion onto the gantry shafts. The result should be that the gantry shafts contact the 10mm X-axis shafts.

dsc00335Gantry mounted to base frame

13) Take up the 14½“ threaded rod that you’ve cut for gantry stiffening and insert each of the four into the angled hole in the gantry shoulder. As they peek out, thread first a star washer then two 5/16” nuts, finally another star washer onto each of them. These nuts will be run up against the innermost surfaces (top surface of the hip, lower surface of the shoulder) of the shoulder and hip “wings.”

14) Insert the four threaded rods through their respective tunnels in the hip.

15) Run the nuts nearly into position—say 1/2” (~1cm) from contact. (We need to make a small adjustment, first).

dsc00338Gantry stiffening nuts and washers

NOTE: The next few steps may seem tedious, but if you want your machine to stay in pristine shape, and if you’re like me and dislike re-doing things, these tedious steps are quite worthwhile. When working, any machine will give off vibrations. Over time, these vibrations can cause things to get loose. We’re trying to avoid this by getting the machine as “tight” as we can.

16) Screw four 5/16” locknuts onto the top positions (shoulders) of the threaded rods.


17) Using a pair of pliers (simple or vise-grips) to hold the threaded rod from turning, tighten those four locknuts down until you feel resistance. This resistance should come from the ‘X’ shafts being in contact with the 8mm gantry shafts, assuring (once more) metal-to-metal contact is made.

dsc00345Tightening up the gantry stiffeners

18) Check that metal-to-metal contact is being made with an ohmmeter, placing one ohmmeter lead on the ‘Y’ shaft and the other on the respective ‘X’ shaft. Little or no resistance is what you’re looking for.

dsc00349Testing for metal-to-metal contact

19) Tighten the other three nuts on each threaded rod

20) Use the resistance test for each tightened-down threaded rod.

21) Now that the metal-to-metal contact is assured, we need to secure it. Each shoulder has four small holes—two on each side—for setscrews. There’s one exception. (Isn’t there always?) The shoulder with the “sloppy” 10mm elongated hole has only three setscrew holes. It’s (correctly) missing one where the “sloppy” shaft enters. Screw in the 3mm setscrews and make contact with the shafts on each.

dsc00353Setscrews securing shaft position

22) Check the contact between setscrew and shafts using the ohmmeter.

NOTE: Most setscrew packets come with the hex (Allen) wrench (aka “hex key”) to drive them. However, if yours didn’t, the wrench (key) size for the 3mm setscrew is 1.5mm. (A 4mm setscrew takes a 2mm hex wrench. Hmmm, a pattern here?)

Time to tie the gantry together. The parts you’ll need are the two cut-to-size 3/8” threaded rods, six 3/8” nuts and star washers, four 3/8” locknuts, and the plastic y_gantry_drive part.

23) Place the y_gantry_drive in the center, between the two trapezoidal rods of the base. (This, so you won’t forget it).

24) If you’ve removed the bearing_retainers, put these into position as well.

dsc00362Positioning the parts

NOTE: Although you can start the assembly process either “top-down” from the Z-axis, or “bottom-up” from the base, the next steps are easier if you’ve got the base frame ready. If you want to do that now before finishing with the gantry, I’d suggest securing the gantry by tying it together with the 3/8” threaded rods and four nuts and four locknuts. This, so that while you’re working on the base frame, the gantry is together as a solid structure and won’t be nearly as fragile as if it were open. When you come back you can remove the 3/8” threaded rods and finish up, as shown below. If you do have the base ready, you can just continue.

25) Run the threaded rods through one of the hips and its bearing retainer and—making sure that the y_gantry_drive is between the trapezoidal threaded rods—through the y_gantry_drive.

dsc00361Partially run-through threaded-rods.

26) Add first a star washer and then a nut to the top rod. This will be used to hold the y_gantry_drive in place.

27) Add nuts followed by star washers to both rods. Thread these to about 4” (100mm) up the rod.

dsc00365Threaded rods with all internal nuts and washers

28) Shift both threaded rods such that you have access to the other ends.

29) Add nuts and washers to this other side of the rods, as in Steps #26 and #27.

dsc00366Nuts and washers in position, but not yet fastened

30) Shift the rods back so that they’re centered. (The ends protrude from the opposite hips about the same amount).

31) Snug up the nuts that are inwards of the hips. (Not too tight)

32) Check that the gantry moves freely in the ‘Y’ direction.

33) Apply locknuts to the ends of the rods. As you did before, secure the threaded rods from turning with pliers, while you tighten the locknuts.

34) As each locknut is tightened, check that the gantry still slides freely. If it doesn’t, loosen the locknut and check again.

35) If binding continues to be a problem after repeated tries of tightening/loosening, look at the “sloppy” hole in the ‘Y’ axis as you move the gantry. Does the ‘Y’ shaft inside it move completely to one side or the other? If yes, adjust the nuts on the near-end or far-end threaded rods while testing the results by moving the gantry back and forth. Another possibility could be that the gantry threaded rods were pulled too tightly against the ‘Y’ axis bearings. Resolve this by loosening them one-by-one to find the offending bearing, take pressure off it, test for free movement, then secure things and test again.

36) Assuming everything is just ducky now, check that every nut in the machine is secure.

The machine should look like this. OK. Your colors may be different.

dsc00370Completed base and gantry with alternate X-Z carriage.

dsc00372Gantry side-view

DONE: Go buy yourself a pizza—family-size, beaucoup toppings. You’ve earned it. Save some room for ice cream—the ultra-creamy kind with double chocolate dripped on top.

Assembling the Z-axis sub-assembly

This sub-assembly consists of:

Printed parts // Thumbnails of the printed parts are in

z_top_motor_mount // the Bill-of-Materials (BOM) document.


End-effector platform (EEP) of your choice

Precision parts

8mm x 300mm shafts (3) // Z-axis shafting

5mm x 6.35mm coupler // motor-to-leadscrew connector

¼” -20 TPI* x 10.75” (275mm) leadscrew

* The threads of inch-measure fasteners are usually measured given in “TPI” (threads per inch), where metric fasteners use “lead” or “pitch”, which is the linear distance traveled in one rotation, (the distance between one thread and the next).

Electrical parts

NEMA17 x 48mm (or longer) motor // Heavy tooling or high feedrates might

// need a longer or more powerful motor.

Fasteners – NOTE: Inch (aka imperial, aka SAE) measure #4-40 screws can be

substituted for M3 (3mm) referenced throughout this document.

M3 setscrews (12) // M3 x 6mm screws can be substituted

M3 x 12mm screws (2) // motor mount*

M3 x 10mm screws (2) // Zmin bracket

M3 x 6mm screws (2) // motor mount*

* #4-40 screws cannot be used here

Tools needed:

1.5mm hex (Allen) wrench // Usually included in setscrew packets

Phillips screwdriver

Small mallet // A tack hammer can be substituted

Punch // A bolt, or remnant of threaded-rod, or shafting can

// be used for this if a punch isn’t available

dsc00490Tools needed for the Z-axis sub-assembly


NOTE: Parts must have been post-processed by drilling out the tunnels for the shafts to 8mm before fitting them. The parts are at risk of damage unless drilled to fit.

dsc00504Z-axis parts

1) Paying attention to the orientation of the motor wires as well as the ‘top’ and ‘bottom’ sides of the z_top_motor_mount, use two M3x6 screws and two M3x12 screws to fasten the motor to the motor-mount.

2) Grab the coupler. If your motor has a ‘flat’ on its shaft, orient the coupler so that its setscrew will align with the flat. Tighten the setscrew against the motor’s shaft. Most couplers have four setscrews, two at each end. Tighten both. Tighten them good so that they won’t slip. (It can be annoying to find that an axis isn’t moving simply because the coupler setscrews weren’t quite tight enough).

dsc00505Coupler with motor on the z_top_motor_mount

Set the motor and mount aside.

3) Start the M3x10 screws that will be used to fix the position of the Z-axis minimum microswitch bracket to the Z-axis shafts into the z_min_uswitch_bracket. While this could be done later, it’s helpful to have it done early. (Did you somehow forget to drill out those holes in the z_min_uswitch_bracket?—as I’ve done, I must admit ;-Q

dsc00507Screws started in z_min_uswitch_bracket

4) Placing the z_min_uswitch_bracket on the workbench with the microswitch-attachment-end up, use the mallet to lightly tap in two of the Z-axis shafts.

dsc00508Shafts tapped into z_min_uswitch_bracket

5) Turn the resulting assembly 180 degrees, so that the ends of the shafts are on the workbench.

6) Using the punch positioned close to each of the shafts, alternating from shaft to shaft, lightly tap the z_min_uswitch_bracket to force it further down the shafts to make way for the z_axis_motor_mount. About 50mm (~2”) should do it.

dsc00509z_min_uswitch_bracket pushed down the shafts

7) Place the z_axis_motor_mount with the motor below the shafts and z_min_uswitch_bracket. Orient the shafts to their respective holes and, using the mallet, softly tap the shafts onto the motor mount, in turn, tapping at one shaft then the other to avoid damaging the part.

dsc00510Motor, mount, z_min_uswitch_bracket and shafts

8) To maintain the shafts position and avoid damaging the motor mount (notice the long, strong lever arms against the short, weak shaft tunnels of the motor mount), use another part with the same triangular formation and 8mm hole for the Z-axis shafts that you have laying around to temporarily “cap” the shafts at the other end. This part might be your EEP or the shaft-capturing part for it.

9) Using the hex wrench, screw six hex screws into their respective holes in the z_top_motor_mount.

dsc00512Setscrews driven into the motor mount

10) Screw in the two M3 x 10mm screws to fasten the z_min_uswitch_bracket to the Z-axis shafts.

dsc00518Z-axis sub-assembly

DONE: The assembly (minus the parts just mentioned) should look like the photo above. Attaching the leadscrew and microswitch will be done later.

Take a break. How about a glass of lemonade with some chocolate chip cookies, or a cup of hot chocolate with marshmallows and whipped cream?

Final Assembly of the Z-axis

For those who love options: your time has come. You can choose between the two types of X-Z carriages, between the end-effector platforms (EEP)–the Finix Extruder, the Finix 3Struder, the Auto Tool-Changer, or something of your own concoction. You could even choose to bottom-mount the Z-axis motor—though you ‘re on your own for that. As more than one of my teachers has said: “That’s an exercise for the student.”

For the record though, here’s a bottom-mounted motor on the Visible 3Bot.

dsc00519Bottom-mounted motor on a “tub” EEP

I’m going to continue with the system as currently assembled. That is, with the Alternate X-Z carriage. For an EEP, I’m going to mount the Finix Extruder.

If you are assembling with the Original X-Z carriage, skip to Step #7

1) As the first step, get the parts together. Here are the Alternate X-Z Carriage, the Z-axis shaft sub-assembly, and the Finix Extruder. The X-axis sub-assembly is already mounted on the gantry.

dsc00525Parts needed for Z-axis final assembly

2) If it’s not already done, mount the Z-axis leadnut. The Z-axis leadnut with its leadscrew can be mounted either from the top (of either X-Z carriages) or from the bottom. I’m mounting the leadnut to the bottom of the x_carriage, as with the Alternate X-Z carriage, this will give just a bit more Z-axis working envelope.

dsc00531Underside of the x_carriage with leadnut mounted

3) Position the z_carriage_alt along with its z_carriage_cap_alt atop the already mounted x_carriage.

dsc00526z_carriage_alt mounted on x_carriage

4) Fasten these three pieces together with three M6 x 130mm (or ¼” x 5 ½”) bolts and locknuts. The locknuts should be tight, but not over-tight. (We’re still dealing with plastic here. 😉

dsc00527z_carriage_alt bolted to x_carriage

TIP: If you’ve been getting ahead of me and testing the fit of the glass bed, remove it for the next operation. (You’ll be glad you did).

5) Remove the temporary end-piece that was used to secure the Z-axis subassembly and carefully insert the shafts into the bearings of the X-Z Carriage. As before, this should be carefully done.


Semi-complete Z-axis assembly

Um, notice in the picture the temporary shafts on the table and the lack of broken glass? Ah, disaster avoided!

TIP: A “jig” is an accessory that allows easier, safer, or more precision work to be done in a manufacturing operation (which is what we’re doing). In the next steps, there’s some mallet-work (hammering) going on and we’d obviously like to keep the danger of breaking parts to a minimum. Here’s a simple jig to help this along.

Take a piece of threaded-rod that’s slightly longer than the distance from the work-surface you’re using to the bottom of the EEP platform you chose and cap the threaded-rod with a nut. If you like, you can use two or three of these of the same size, so you don’t have to move the one around each time you need to tap a shaft down into the EEP platform shaft-capturing holes.

dsc00534A (really simple) jig

6) Line up the threaded-rod axially with the shaft—a shown in the photo below.

NOTE: A table-saving feature is the small piece of wood I put under the jig.

dsc00533Jig placement to protect the part

7) Now you can lightly tap in each of the shafts—just one or two taps before moving to the next shaft—without damage.

You’ll feel and hear when the shafts contact your jig, telling you the shafts are at the bottom of the shaft capture hole.

8) While the jig is still supporting your EEP, tighten the EEP setscrews to the shafts.

9) Remove the jig.

NOTE: Shims. Though we try mightily to avoid them, there are times when—due to printing or fitting issues—that a “shim” is needed. A shim is a thin piece of material that is used to “make-up” a void or create more distance between two parts. That is, it’s used to fill a space in order that the parts fit better.

In the photo below, I used a thin piece of plastic from a print that failed, to shim between the x_carriage and the z_carriage_alt. The shim was needed in order to allow the leadscrew to go straight through the Z-axis without forcing a bend in it due to an “out-of-true” part.


A shim



Shim placement.

The 6mm bolts retain the shim in place permanently.

10) Go around the Z-axis and tighten-up all bolts and setscrews.

DONE: Next is final mechanical assembly. But, first things first.

Step back and look at it. Lookin’ pretty good, isn’t it.

  • Lay down your tools.
  • Put them away (or don’t).
  • Butter up some popcorn.
  • Go watch a movie.

Assembling the Drive System

The drive system consists of:

Printed parts

nema17_centering_ring // Xmin endstop

x_leadscrew_capture // Xmax endstop and leadscrew capture

y_nema23_motor_mount // already assembled on base frame

y_gantry_drive // “ “ “ gantry “

y_far_end // “ “ “ base frame “

y_far_end_nut_seat // “ “ “ “ “ “

z_top_motor_mount // “ “ “ Z-axis “

Precision parts

NEMA17 motor (1) // Z-axis drive

NEMA17 motors (2) // X and Y axis drives


NEMA23 motors (2) // X and Y axis drives

¼” – .250 (lead) x 18” (460mm) leadscrew1 // X-axis

¼” – .250 x 30” (760mm) leadscrew1 // Y-axis

¼” – .250 anti-backlash leadnuts1 (2) // X and Y axes

¼” – 20 TPI x 11” (280mm) leadscrew1 // Z-axis

¼” – 20 TPI anti-backlash leadnut 1 // “

6.35mm x 6.35mm couplers (2) // NEMA23 motors to leadscrews


5mm x 6.35mm coupler (2) // NEMA17 motor (X&Y axes) to leadscrew

5mm x 6.35mm coupler (1) // NEMA17 motor (Z-axis) to leadscrew

Fastening dimensions are for Roton leadscrews & plastic anti-backlash nuts, though others may fit.


M4 x 20 screws (4) // X-axis NEMA23 motor

M4 x 16 screws (4) // Y-axis NEMA23 “

M4 locknuts (4) // Y-axis “ “

M3 x 10 screws (7) // NEMA17 “, y_gantry leadnut

M3 x 6 screws (4) // X-axis endstop

Tools needed:

Phillips screwdriver

1.5mm and 2mm hex (Allen) wrenches // often included with coupler

Tool recommended




1) Attach the x_leadscrew_capture part to the shoulder facing the X-axis leadnut (the shoulder without the motor). Orient the part such that its flat side is facing the workspace. (Besides capturing the leadscrew, the part is used to provide the Xmax endstop).

dsc00575dsc00576Mounted x_leadscrew_capture “oblong-holed” shoulder

2) Using M4 x 20 screws, mount one of the NEMA23 motors to the opposite shoulder (above the Y-axis shaft connecting base_corner_00 and base_corner_01).

NOTE: a NEMA17 motor is mounted the same way, just using the boltholes closer in toward the motor’s shaft.

dsc00579Mounted X-axis motor

3) If the X-axis leadnut hasn’t been fastened to the x_carriage or x_carriage_alt, using three M3 x 10 screws, do that now

TIP: For the next Step, if you’ve cut the leadscrew to size, thread the factory-finished end through the leadnut, as burrs from a “home-cut” on the other end can damage the anti-backlash leadnut.

4) Thread the X-axis leadscrew through its leadnut, starting the leadscrew through the x_leadscrew_capture part.

dsc00580 dsc00583Leadscrew piercing leadnut

5) Securely attach the 6.35mm x 6.35mm coupler to both motor and leadscrew. (As above, there are likely four setscrews on the coupler. Tighten them all).

dsc00585Coupler connecting X-axis motor and leadscrew


As a “pre-test” for alignment, run the gantry back and forth on the ‘Y’ axis. There should be no binding and very little friction.

1) Using three M3 x 10 screws, attach the Y-axis leadnut to the y_gantry_drive. In the photo below, note that the 3/8” nuts used to fix the leadnut into position are loose. They won’t be tightened against the y_gantry_drive part until we know that the leadscrew is parallel with the ‘Y’ shaft that’s being used as the ‘Y’ axis “datum.”

dsc00566Y-axis anti-backlash leadnut mounted

2) Center the y_gantry_drive part as best you can: by eye, or by measure. This is only to be approximate, as it will be tweaked later.

3) If you’ve cut the leadscrew, for the next Step, as mentioned above, make sure the the end you use to thread through the leadnut is the factory-finished end. Unless you’re a pro, the ends you’ve cut will likely have some burr remaining—unless you’ve ground the ends well.

4) Thread the Y-axis leadscrew through its leadnut. (I started it through the y_leadscrew_capture part, but you can start also it from the other end).

dsc00567Y-axis leadscrew inserted into leadnut

NOTE: For reference, below are pictures of various NEMA stepper motors. NEMA23 motors on the left and NEMA17 motors on the right. Note the different mounting features on the NEMA23 motors. Motors can come from suppliers with wiring of different lengths—or with no wires.

dsc00557NEMA23 and NEMA17 stepping motors (aka “steppers”)

5) If you’re using a NEMA23 motor to drive the ‘Y’ axis, skip to Step #8. Continue, with this next step if you’re using a NEMA17 motor:

Attach the nema17_to_nema23 motor mount to the y_nema23_motor_mount with four M4 screws and locknuts as show in the picture below. (The nema17_to_nema23_motor_mount is the blue part).

dsc00546NEMA17 motor mount piggy-backed onto the NEMA23 motor mount

6) Orient the motor such that the motor wires are facing the direction you want.

HINT: It’s probably toward the banding for ‘Y’ axis wiring that’s yet to be done. This would be to the side with the X-axis motor. (The side with the “open” area on the x_carriage part—the open area allows the coupler on the X-axis to fit inside the carriage when it’s at its X-min position).

7) Mount the motor using four M3 x 12 screws.


dsc00548Mounting to the Y-axis of a NEMA17 motor

8) If it’s a NEMA23 motor you’re using, mount the motor directly to the y_nema23_motor_mount with four M4 x 16 screws and four M4 locknuts.

dsc00568A mounted NEMA23 motor

The X-axis and Z-axis leadscrews are naturally aligned by the fixed position of their motors to their respective shafts. Not so with the Y-axis leadscrew and motor. Although the motor, leadscrew and leadscrew-capture parts are aligned with respect to their height from the base on which the robot sits, they’re not aligned such that each of them is the same distance from the main Y-axis shaft (the one connecting base_corner_00 and base_corner_10). This alignment is done next.

To align the Y-axis:

9) The y_leadscrew_capture part is assumed to be roughly centered—and roughly-centered is OK—by the two trapezoidal stiffening rods. These rods should be secure (tight) at both ends. If the nuts restraining the trapezoidal stiffening rods at both base_corners and the far-end part (y_leadscrew_capture) aren’t tightened, do that now. (Remembering that we’re still using plastic—i.e., somewhat fragile—parts).

10) With the nuts that restrain the y_gantry_drive and y_motor_mount loosened, center both of them such that they are approximately mid-way between the Y-axis shafts. No need to be terribly precise.

11) Push the leadscrew through the y_leadscrew_capture part and thread it into its leadnut so that it just pokes out the other side.

dsc00567Leadscrew fitted into leadnut

12) Move the gantry to a point where the leadscrew is nearly touching the motor shaft.


13) Without worrying about alignment with the motor, use a measuring stick or tape to accurately measure the distance from the base_corner_00 to base_corner_01 shaft (the ‘Y’ axis datum) to the center of the leadscrew. Measure at both ends of the machine.

14) Move the y_gantry_drive in the direction that causes the measurement at the far-end to be equal to the measurement at the motor end.

In the photo below, notice that the alignment with the motor is worse than it was before the adjustment for parallelism. That’s OK. The key thing is to have the leadscrew parallel with the shaft we’re using as the datum.

dsc00571Oops? (Not really).

15) Now, tighten the nuts securing y_gantry_drive without moving the part itself.

16) Making sure that you have room to do it (you don’t want to bend the leadscrew by crashing it into anything), move the gantry toward the far-end. The leadscrew, when moved, should remain in parallel alignment with the Y-axis shaft, If not, move the y_gantry_drive again to put the leadscrew into parallel alignment and secure it. Return to Step #12 through #16 and iterate until the leadscrew is parallel to the Y-axis shaft, using both measurement and “eyeballs,” whether the gantry is at the near-end or the far-end.

17) Bring the gantry back to the near-end (the motor end).

18) Look at the end of the leadscrew and the motor shaft. Are they lined up (one’s axis is the same as the other’s axis) as near as you can tell? If not, move the y_nema23_motor_mount part until the alignment is good.



Y-axis leadscrew aligned with motor shaft

19) Tighten the nuts securing y_motor_mount without moving the part itself.

NOTE: You may notice that the leadscrew isn’t in the exact center between the ‘Y’ axis shafts, as with the motor alignment in Step G, that’s OK. As mentioned above, the key thing is the parallelism of leadscrew and the datum shaft.

20) Attach the 5mm x 6.35mm coupler (if using a NEMA17 motor), or a 6.35mm x 6.35mm coupler (NEMA23) to both motor and leadscrew. As with the other couplers, make sure all four setscrews are tightened.

dsc00574Rigid coupler attached to motor and leadscrew (a flexible coupler could also be used—and may be preferable).

21) All nuts and bolts should have been tightened, but take the time to check that they are. It could save you hassle later.

The last thing to do mechanically is to put the leveling dials in place, set the glass work-bed on them, and secure the corners of the bed using the screws in the leveling dials.



A couple different variations of leveling dials

NOTE: The leveling dial above is an enhancement to the one below that was used earlier. It secures the bed from moving even after hours of operation of the robot.

22) To assure yourself that things won’t start rattling around and come loose when you start the robot moving, check that all the screws and set screws in the machine have been tightened.


THERE! You’ve done it! Getting the mechanical system together is a major milestone! Take the weekend off. Better yet, make it a long weekend. Go to the beach, Go camping. Go skiing. Or pick something special to do that you enjoy and GET IT DONE! You deserve it.

Mounting the Electronics and Wiring

The electronics sub-system consists of:

Printed parts

arduino_mega_pcb_bracket // holds Arduino & RAMPS

arduino_bracket_clamp (4) // clamps to gantry shafts

Electrical parts*

Arduino Mega2560 // robot control

RAMPS1.4 // motors, endstops, heaters, fans

Pololu A4988 and/or DRV8825 (3 to 5) // stepper drivers

USB cable Type A to Type B // communication & control

Power wiring // 18AWG

Motor & signal wiring // 20-22 AWG

*Other parts can be substituted in place of the Arduino / RAMPS / Pololu. These should be compatible as long as they can run Marlin, Sprinter or Repetier firmware. Examples are Printrboard (tested) and Megatronics V3 (not yet tested).


M3 x 10 screws (20) // Arduino/RAMPS bracket, // microswitches

M3 x 25 screws (2) // Arduino to RAMPS fastening


0.8mm to 1.2mm diameter 60/40 rosin core solder (4 oz. or 100ml)

Tools needed:

Phillips screwdriver

flat-head screwdriver

diagonal cutter


soldering iron

solder wick or solder sucker

light-duty metal brush

dsc00622Needed tools

Tools recommended – in addition to the tools above

anti-static wrist strap


wire-crimping pliers with various wire gauge crimping slots

long-nose pliers

small bench vise (2” to 4” – 50-100mm)

“helping hands”

dsc00624Recommended tools

If you choose to crimp your own wire connectors you’ll need:

metal-cutting plier (tin-snips)

long-nosed pliers

Dupont 2.54mm connector crimper

Dupont 2.54mm female connectors

Dupont 2.54mm male connectors

Dupont 2.54mm 3-pin connector sleeves

Dupont 2.54mm 4-pin connector sleeves

dsc00625Tools for crimping and assembling

Dupont connectors (terminals) and sleeves


1) Mount the arduino_ramps_pcb_bracket to the 8mm vertical shafts of the gantry using the four arduino_bracket_clamps and the eight M3 x 10 screws.



Both sides of the mounted arduino_ramps_pcb_bracket

NOTE: If the environment you’re working in is dry, or if you’re working on a carpeted surface, pay particular attention to the next Step.

2) If you have an anti-static wrist strap, now is a good time to put it on. If you don’t have one, you can discharge yourself of static electricity by touching a grounded surface—a bare metal surface of the power supply you’re using has a good ground.

3) Mount the Arduino and RAMPS boards with the two M3 x 25 screws. The screws go to the top right and the bottom left of the RAMPS board and through the Arduino into the bosses of the arduino_mega_pcb_bracket.

dsc00638Arduino (underneath) & RAMPS1.4 board mounted to the gantry

(Shown with DRV2588 Pololus and heatsinks mounted)

4) Use a small flat-bladed screwdriver to attach two 12VDC and two Ground (GND) wires from the power supply that you are going to use to the power receptacles (typically light green) on the lower right-hand side of the board. The picture below shows the arrangement.

dsc00736Arrangement of 12VDC and GND wiring to RAMPS

NOTE: If you buy or have to make a four-wire cable from your power supply (PSU) to the RAMPS board, be very careful that the 12VDC and GND wires of the cable are, in fact, connected to 12VDC and GND coming out of the PSU. A bench PSU I use without color-coded wires (an EVGA NEX650G) with three 12VDC rails (three sources of 12VDC power) has two of the rails (labeled CPU1 and CPU2) that mate properly with the four wire Molex-type connector-ended cable I bought. However the third rail I used (VGA) had the wires reversed on the 4-6 pin Molex connector.

Without checking, I would’ve put 12VDC where GND should have been and vice-versa. Checking before powering up probably saved me from having a very bad day.

5) The RAMPS board as shown below, comes with jumpers that determine the microstepping of the motors. These are labeled ms1, ms2, and ms3 and sit between the two rows of female connectors that will host the Pololu step-drivers (aka “step-sticks”). To get 16-step microstepping with the A4988 step-driver insert all the jumpers. (This will give 32 microsteps for the DRV8825). A good overview of the RAMPS board is provided at


Jumpers (3 of them) are shown just above the RAMPS1.4 board.

Three jumpers are shown mounted on the ‘X’ motor header to

the center-right of the board. (Though difficult to see).

6) Mount the Pololu stepper drivers. To the left in the pictures below is a Pololu using an A4988 chip. To the right is one using a DRV8825. They are shown in the correct orientation to place on a RAMPS1.4 board, which is vertically oriented (18-pin header at the top, power connectors and USB plug at the bottom—as in the picture above). Correct mounting of these parts is critical. Damage may occur if incorrectly mounted. The silvery Phillips-head-recessed components on the boards are trimpots (voltage trimming potentiometers). Note that on the A4988 the trimpot is at the top and on the DRV8825 it’s toward the bottom. You’ll later use these trimpots to calibrate the current for your motors.


Correct orientation of the Pololu stepper-drivers

NOTES on Pololus

The Pololus, whether of the A4988 or the DRV8825/24 varieties, come with heat sinks that can only be mounted atop the IC. Thing is, the Pololus (and the better knockoffs) with the DRV8825/24 come with a heat-removing pad underneath the board. Therefore heat removal—via the top-mounted heatsink—is marginal. If the machine is to get heavy use, it’s better to provide a fan perpendicular to the planes of the boards to remove the heat.

dsc00632 dsc00631

Heat sink and bottom heat-removal pad of DRV8825 Pololu

Another thing is that if your heat-sinks don’t come with an adhesive already applied via a “pull-off” piece of tape, you may be tempted to “glue” it on with a dab of Arctic Silver or some-such heat-transfer paste. Arctic Silver, though not conductive, does provide a small amount of capacitance. Due to the proximity of the IC leads to where you’d put the heat-sink and that Arctic Silver is viscous (goopy), it’s likely to spread to the pins of the IC with undetermined (though not likely beneficial) results. Other heat-coupling products are similar and may even be conductive. My advice: if you’re using Pololus with DRV8825/24 drivers, don’t mount the heat-sinks. Either use the fan as suggested above, or reduce the current (amperage) to the motors.





A case where less is more (better)

If, after you went ahead and attached the Pololu heat-sink with Arctic Silver (or other), you suspect it of causing problems (your motor doesn’t run or doesn’t run well, and you’ve checked out the cable), you can try to clean it with isopropyl alcohol. Don’t use the Jim Beam. Save that for later. Use a light-colored lint-free cloth (so you can see the removed goop on it). A lens cleaning cloth is ideal. Don’t use q-tips: the cotton scrap will get everywhere and may leave things worse than before. Work by rubbing away from the IC, using a clean section of cloth for every rub. Best to work under a bright light and a magnifying glass, with an anti-static wrist-strap if you have one. Remember that the IC leads are tiny and the goop is easily trapped between them, so clean really well. You might use the point of a needle to check: scrape it along the sides of each of the leads and wipe it on a clean section of your cloth until you see no more gunk. Finally, you may want to mark those Pololus you’ve suspected and cleaned as a reference for later when you try to move the motors again.

NOTES on Wiring

The final step in the assembly process is wiring it up.

Feel free to skip this section and move on to the instructions for the actual wiring of the devices to the controller board. You can come back to these notes as needed.

It goes without saying that wiring is key to any electronic system. For the system to work properly all connections must be made. For the system to work solidly over time, the connections must be made to be secure against all changes in environment they may come across in their working life. This means mechanical vibrations, humidity, temperature changes, etc. “Kind-of-OK” doesn’t work well in electronics. EEs (electrical engineers) and technicians know this all too well. (Not to lecture, just to give a heads-up).

Here are a couple of hints:

HINT #1: Either buy your motor with cables attached, buy cables pre-made from the motor vendor, or use Dupont connector-ended ribbon cable with the male and female ends pre-made for you. You can buy these in strips of 40 wires.

Using them is as simple as pulling them apart in groups (of four for the motors, of three for the microswitches). They commonly come in lengths of 10, 20, 30, 40, and 50cm (~4”, 8”, 12”, 16”, and 20”). And they are not expensive.

If you go this route, pay attention to the gender configuration of the ends, as they come in Male/Male (M/M), Male/Female (M/F), and Female/Female (F/F).

Check out the lengths of wire needed for the various connections in the Bill-of-Materials (BOM), add what you may need for trouble-shooting and your own hackathon needs, and purchase accordingly.

As to the advice above, the Dupont-style connector-ended strips alleviate many of the issues with making sense of single wire strands. They have four repetitions of 10 colors, so you could, if you wanted, be picky and use the same four colors for motors and three other colors for the microswitches.


The upside of purchasing the ribbon cable strips vs. “rolling your own” is you’ll save time and aggravation—and probably troubleshooting bad connections. (As a former technician, I can tell you that the vast majority of problems I saw were connection issues. And, believe me, intermittent connection problems are the toughest kind to troubleshoot).

Another upside to purchasing the cables is that you can use these to verify your cabling all the way from the RAMPS board to their terminations at the microswitch or through the motor.

For example; before connecting up a microswitch cable that you’ve soldered at the microswitch end, plug in three wires of a strip of three Male-to-Male-ended cable to the cable-under-test and check the cable and soldered connections with an ohmmeter, exercising the microswitch to see it making and breaking connection.

For the motor, use a four-wire strip for testing. Attaching the ohmmeter to two adjacent wires connected to one of the coils, it should show some very small resistance (usually less than 5 ohms) and an open circuit to each of the other two wires (four-wire, two-coil non-center-tapped motor assumed). Same for the other coil. This measurement should correspond to measurements taken directly at the motor terminals.

The colored ribbon cable’s stuck-togetherness-in-a-strip makes it a snap to ensure the arrangement of wires on one end is the same as on the other. (Just reference the colors).


The wire gauge of most of the colored 40-wire ribbon is thinner than the 22AWG that’s used by most of the NEMA17 and NEMA23 motors I’ve come in contact with. If your plans include usages where the motors will be more than moderately exercised, I strongly recommend that you avoid this solution and learn to properly crimp the Dupont-style terminals and fit them into their connectors.

A smaller downside to pre-made ribbon cable is that many of your cables will be a bit longer than they need to be. However, to minimize this problem, they can be bought in various sizes. As noted above, common lengths are 10cm to 50cm in 10cm increments.

Another is that being flat, they’re not easily twisted to prevent noise effects from escaping.

A fourth issue could be noise susceptibility. In an environment with several motors and electromagnets (solenoids, etc.) operating, there will be electro-magnetic “noise.” This noise may be sufficient to have an effect on both motor stepping and/or sensor operation. If the machine is to be used in such an environment it may be wise to “bite the bullet” and learn how to properly crimp wires with the Dupont connector system.

HINT #2: If you decide to do all your own wiring, rather than use ribbon cable, as I show how to do below, it will likely be cheaper to buy one big roll of the same color 22AWG wire than to buy a few smaller rolls of wires of different colors.

Don’t go this cheap route unless you have good mental health insurance and have enough time that you can take a couple weeks vacation in an asylum.

Good engineering (and mental health) practice is to follow (or draw up for yourself) a color-coding scheme for your wiring. Your motors likely came with one or more of (unfortunately) several schemes. Common schemes for motors are: Red, Green, Yellow, Blue; and Black, Green, Red, Blue. But yours may be Green, Yellow, White, Blue; or something else. Following the pattern your motor manufacturer used will lead to fewer headaches if you have to troubleshoot problems later.

You can get assortments of six to ten different colors in small rolls of 25′ or 10m for each color on the Internet. I’ve found six colors is quite nice. Four is adequate: Red, Black, Yellow, White.

One standard in general use is that the color Black is used to indicate a wire going to ground (GND). Red is used for +5VDC, and Yellow is used for +12VDC. White is commonly used for signals.

In extending cables where I needed to, I tried to follow the colors of the motors I’ve bought, maintaining the color-code used by the motor manufacturer to the RAMPS board. Invariably, though, as mentioned above, different motor manufacturers use different color schemes.

Following a consistent set of rules—whether it’s an acknowledged standard (best), or one you’ve drawn up yourself—makes it much easier to verify that the wiring is done correctly.

“Rolling your own”

I’ve made cables from rolls of wire, cut them to size and crimped them with a Dupont-type crimper. Until I became somewhat proficient at it, the results were, shall we say, less than satisfactory.

However, skill is obtained by practice and paying attention to “what works.” After a set of failures, I got to where I could produce consistently decent header connections.

There’s a good practical “howto” at

Regarding one of the suggestions in this Instructable though, I’d advise against tinning the wire and the connector. The Dupont connector system was designed as a “solderless connector.” Tinning just adds more material and lengthens the process.

The real trick with fitting the wire and connector I’ve found is in stripping the ends to the proper size (5mm – as the Instructable suggests) and fitting the insulation such that the crimping “wings” of the bare connector will grab it, then pushing the bare wire itself into the connector’s hollow—its “bed.” I use a pair of long-nose pliers to, just barely tighten (rather than fully crimp) the “wings” onto the insulation such that the connector isn’t falling-down loose from the wire it’s to be crimped to. I use my fingernail to “bed” the uninsulated portion of the wire into the ‘U’-shaped cavity. Then, push the connector fully into the crimping tool and clamp down slowly. I carefully inspect each crimp.

Here’s a quick photo gallery run-through of the process.










More information about the “Dupont” connector system can be found at

7) Connect the motors to the controller. (See “NOTES on Wiring” above, for hints). The X, Y, and Z motor connections on the RAMPS board are the four-pin headers immediately to the left of the three Pololus that provide the motor driving (micro-stepping) signals. They are marked on the board directly beneath their respective header pins. The lowest of the three headers is for the ‘X’ motor, next above it is ‘Y’ and on the top is ‘Z.’ If, after your motor is connected, it runs backwards to how you think it ought to run, you can just reverse the connection to correct things.

8) The ‘X’ axis motor is mounted just above the controller board. Fortunately, in this case—yours may be different (check the ‘B’, ‘D’, and ‘E’ below for other cases)—the motor selected is a wired motor with a four-wire Dupont connector at its end. The wire fits from the motor to the board with room to spare. This is also fortunate. I’ll use this extra length as a “service loop” as it allows better access to the board.

Additionally, this motor doesn’t move at all with respect to the controller when the robot is moving, so there’s no need to figure out an allowance for extent of travel. Easy peasy!

dsc00656The ‘X’ motor and its cable

9) The ‘Y’ motor on the other hand is wired, but the wire is too short to reach the controller. There is also no connector on the ends of the wires. This cable will need a connector fitted to its loose wire ends and also an extension all the way along the band supporting it on the way to the controller. To be sure of the size of the extension cable, we’ll move the gantry to its furthest extent, temporarily tie-wrapping it down along the ½“ steel band it will be riding on and measure the result.

10) Using an ohmmeter, I find that one the motor’s two coils are connected to the Red and Blue wires. The other is connected by the Green and Black wires. Using the ‘Z’ axis motor wiring as a model—the two motors use the same wiring color code—I’ll wire up the Dupont connector from one side to the other, as Blue, Red, Green, Black.

dsc00676‘Y’ motor connector

11) For the extension I’ll use two 50cm and one 30cm lengths of four-wire cable stripped from a Male-to-Female (M-F) ribbon cable. For color coding, although the wire colors are different between the motor and the cable strip, I’ve matched the Blue wire from the motor to Blue wires on each on the strips. I could have—and you might prefer to—strip off single wires of the same color to maintain the color-code throughout, but I prefer to keep the cable wires together as a four-wire ribbon, rather than deal with them loose.

dsc00684The ‘Y’ axis motor cable

12) The ‘Z’ axis motor came with a cable, too. Because the motor moves with respect to the controller—as it did with the cable providing the ‘Y’ motor with power—we have to check maximum extent of the moves. At its furthest extent (Z-max), the cable is just a bit too short—about 10cm (4”). This distance will be made up with a 40cm (~16”) M-F four-wire ribbon cable that I’ve stripped off a 40mm x 40-wire ribbon. Though I could’ve used a much shorter piece, the 40mm piece matches closely to the “service loop” of the ‘X’ motor cable—maintaining the loop and making it look tidier.

dsc00685‘Z’ motor cable above the ‘Y’, above the ‘X’

3D-printing extruders, and other motor-driven devices use the four-pin E0 and E1 headers on the RAMPS. These connections are found at the middle-left of the board. E0 for the first extruder—the lower one—is conventional, and E1—above it—for the next.

13) The extruder motor didn’t come with wires and will be connected with a separate-from-the-motor four-wire cable that I bought along with the motor from the same vendor. At its furthest extent (Z-min), the cable will (barely) reach. To keep it tidy though, I’ll add a 20cm four-wire strand of ribbon cable. Again matching up one wire color—this time Black—to the purchased cable to aid with later troubleshooting, if needed. This, again matches up with the “service loop” pretty well.

dsc00687Extruder motor cable with extension

14) The wires coming from the functional components of the E3D extruder (heater, thermistor, fan) run alongside the extruder motor wires, and have essentially the same distance to cover and the same travel extent. The heavier, blue heater wires though, need to reach a bit further to the power junction at the bottom of the controller board. This will necessitate a special wire arrangement because of the higher current the heater will take.

15) The fan and thermistor wires each have a Red-Black two-wire cable. They end at their furthest extent (Z-min), short, at about the same place as the Z-axis motor wires that came with the motor. Therefore we can use the same extension cable length—40cm—as we did with ‘Z,’ though with a two-wire strip-width instead of four.

16) The fan extension wires attach to a two-pin header that sits directly below the ‘X’ motor header.

17) The thermistor extension wires attach to T0. T0 sits with T1 and T2 as a combined six-pin header just to the left of the Z-axis motor headers.

18) The E3D heater uses insulated 22AWG (22 gauge) wire–by measurement. By measurement also, the wire in the ribbon cable we’ve been using is 30AWG. At minimum, for safety, we should match the wire being used. That means foregoing the ribbon cable solution and using two 40cm (~12”) lengths of stranded 22AWG wire for the extension to D10.

19_ Start by crimping M-F Dupont terminals to the ends of the insulated leads coming from the heater.


20) Insert the two crimped leads into a two-lead Dupont connector.


21) Next, we move along to the two extension wires. At one end of both wires crimp Male terminals—to fit the Female connector now attached to the original heater wires.


22) Fit them into a two-pin Dupont connector.


23) At the other end, just strip the wires back about 6mm (¼”).

24) Connect the Male and Female connectors.


25) All that’s left is to connect the two wires with the stripped ends to the D10 screw junctions on the bottom of the controller board.

dsc00695Connecting the E3D heater wires to D10

26) If not already done, post-process (drill out) the microswitch screw holes so they can accommodate M3 screws. The microswitches I’ve used have come with mounting holes that are too small to fit 3mm screws. Widening the holes to 1/8” does not damage the microswitch and allows the M3 screws to fit.

27) Solder the wires to the microswitches. (For tips on soldering, see uh, “TIPS on Soldering,” below).

ASIDE: For the microswitch wire connections I used Red for the 5VDC connection, Black for GND, and Yellow for the signal (bringing approving smiles from my German and Belgian friends—though a somewhat disdainful look from an EE friend, who suggested any other color for the signal wire would be better. “Didn’t you have any White?”).

TIP: Positioning the colors identically on each microswitch prevents confusion when attached to the microswitch header on the RAMPS board. If, when the robot is first being tested, you get the wrong result upon hitting a limit switch, say, the machine receives a ‘switch open’ signal when it expected ‘switch closed,’ because they’re all aligned identically by color on the header, they can all be reversed at the header as an easy correction. (Or you can change the configuration file—more on that later).

28) I’ve attached the Red wire—the one that’ll carry +5V—to the side opposite the extended lever arm of the microswitch. The Black—ground—wire is attached to the center and the Yellow—signal—wire to the side of the fulcrum of the lever arm. This applies a 5V potential to the signal wire when the switch is open and 0V—ground—when the switch is closed.

The photo below shows the arrangement of wires soldered to the microswitch.


TIPS on Soldering:

The essence of soldering is to heat the parts to be soldered to a temperature that will melt the solder and electrically bind the parts. People new to this skill are likely to first melt the solder onto the parts before the parts are hot enough to create a good bond. This results in what’s called a “cold solder joint”**—a joint that either won’t conduct electricity, or worse, conducts electricity intermittently.

The following steps will hopefully help develop this (very useful) skill.

STEP 1: After the soldering iron is turned on and heated to temperature, take a small metal brush and brush the tip. If the iron has been used before, it will likely have a nice shiny-metal sheen after brushing. If the iron doesn’t show this sheen, melt some solder onto the tip. This process is called “tinning” and is important. It allows for a good transfer of heat from the tip to the parts to be soldered.*

STEP 2: Mount the parts to be soldered in a vise or “helping hands” contraption such that the area of the parts to be soldered together are touching. (If they’re not touching, but close enough, you can just move one into the other with the tip of the soldering iron).

STEP 3: Touch the soldering iron to both parts. BOTH have to be heated to solder-melting temperature.

STEP 4: Touch the solder itself to the parts while keeping the tip of the soldering iron touching both parts. It should very shortly begin to melt and flow.

STEP 5: Remove the solder, then the soldering iron without moving the parts. (If the parts move, a cold solder joint may be created).

STEP 6: Inspect. The solder joint should be nice and shiny. Not shiny is not good. Also, there should be no “divot” where the wire goes through the solder. This, too, is an indication of a cold solder joint.

*If you have trouble getting the iron to temperature, check that the tip is securely fit. If your iron is adjustable, ensure you’ve dialed in enough current with the knob. If all else fails, make sure power is connected! (I’d be embarrassed to tell you the number of times this has been my problem—even when the little red light that shouts POWER! is dark. 8-(

**A “cold solder joint” is one where the solder hasn’t completely melted and created the conductive joint needed between the parts. It has a distinctive dull-gray look, as opposed to the shiny look of a good solder joint.

29) Attach the limit switches to their respective positions on the ‘X’, ‘Y’, and ‘Z’ axes. They all attach to bosses printed into the various parts using M3 x 10mm screws.

Ymax and Ymin are connected to the base_corners at the ends of the ‘Y’ shaft on the same side as the mounted RAMPS board.


Xmax and Xmin are mounted to the x_carriage_top part, with Xmin closest to the X axis motor.

Zmax is attached to the z_max_uswitch_bracket (Who wooda guessed?) which itself is attached between the x_carriage top and bottom parts.

Zmin is mounted on the z_min_uswitch_bracket (another wonder of naming) just below the z_top_motor_mount.

30) Route the limit switch wiring along the cable-supporting bands to the controller. You may want to temporarily tack them to the bands until they can be “dressed” properly.

31) Connect the limit switches to the controller. The limit-switch headers are the six three-pin headers at the top-left of the RAMPS board, just above the E0 and E1 headers. The pins are marked ‘S’ (signal), ‘-‘ and ‘+’. You can guess which wire goes where 😉

The order of the switches—starting from the bottom, where the ‘S’, ‘-‘ and ‘+’ stamps are located on the RAMPS board and moving upward are Xmin, Xmax, Ymin, Ymax, Zmin and Zmax. The four pin header just above Zmax is for I2C communication. It is left unused.

dsc00709Limit switches attached (Yellow wires most visible at top left)

32) As you did with the mechanical assembly, a final check will assure you that things electrical will work when you connect power and start the Visible Robot moving. Check the cables. Ensure that the orientation from the headers on the RAMPS board to the motors, and also to the microswitches is OK. Ensure also, that the cables have enough room to travel to the minimum and maximum limits of all axes, and will remain out of the way of any possible robot movement!

Ahhh! Time to talk about supporting the cables to keep them out of the way!

Cable support:

Among the most persistent problems I found with the 3D-printer I used to print the parts was the occasional interference with the mechanism by cables whose movement was only semi-controlled. I ended up using tie-wraps to secure the cabling into non-offending positions.

Better, in terms of controlling the cable’s movement is a system of banding (aka strapping) that permits the cable to move only in non-interfering ways.

The banding I used had been used to strap a washing machine to its pallet. While it can be purchased on the Internet as “banding” or “strapping,” it can also be had at appliance stores or other places that buy palletized goods. It’s just scrap to them. The size used is 1/2” (12mm). You’ll only need about 8′ (2.4m) of it. The strapping material to be used is steel. The plastic banding that’s also used by shippers isn’t sufficiently stiff, nor “springy” enough for our use.

This could be a good “scavenger hunt” item.

33) Cut the banding to length. Measure each axis between the points the banding will be anchored and add 4 inches (100mm) to this measurement. This allows space for fastening and forces the direction of bend. At either end of the band drill two 3/16” (~4.5mm) holes about 5/16” (~8mm) apart for the ‘X’ axis band and about 3/8” (~10mm) apart for the ‘Y’ axis bands.

NOTE: Quick solution to all this measuring: the banding of the Visible Robot being built with 500mm ‘X’ shafts and 800mm ‘Y’ shafts is 16” + 4” = 20” (400mm + 100mm = 500mm) for the ‘X’ axis band, and 29” + 4” = 33” (740mm + 100mm = 840mm) for the ‘Y’ axis band.

34) Four M3 x 6mm screws are used to fasten each of the bands, two at each end.

35) On the ‘Y’ axis the bands are fastened between the y_base_corner nearest the ‘Y’ motor (on the Arduino/RAMPS controller side) and the gantry_hip_band_attach part connected to the gantry hip. And also from the y_base_corner furthest from the ‘Y’ motor and the gantry_hip_band_attach.

36) For the X-axis, fasten the band to the shoulder that supports the ‘X’ motor and the z_cable_bracket on the mounted between the x_carriage top and bottom assemblies.

37) If the EEP you’ve chosen has a band-attach part, the band supporting the Z-axis and end-effector cables is fastened between the z_cable_bracket mentioned just above and the end-effector platform cable bracket. If there is no cable bracket for your EEP, the cables “float” from the EEP to the z_cable_bracket. If this is the case, ensure that the cables are fastened such that they cannot “drag” into the workspace.

38) Arrange the cables so that it’s not possible to have interference no matter to what extent any of the axes travel. Then tie-wrap the cables to the bands and to the structure.

DONE: Stand back and admire what you’ve done! Take a picture! You’re at a major milestone! Go into “deep thought” mode and come up with a reward for yourself that’s suitable for this substantial accomplishment!

You’re ready to bring your machine to life!

Next stop: Bringing an Assembled Machine to Life