Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Core XY triple leadscrew system

by dnewman, published

Core XY triple leadscrew system by dnewman Jan 7, 2015
1 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps



Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag


Thing Statistics

33892Views 3441Downloads Found in 3D Printers



This is a modification of Thing #393155 to use a Z stage supported by three leadscrews and two linear rails instead of a cantilevered Z stage.

There is extensive information provided in the Instructions section.

Build photos may be found at this Flickr link.

Updated 4 June 2015:

  • Added spool-rod-holder-8mm.stl and spool-rod-holder-10mm.stl. These are models for a bolt-on part to hold an 8 or 10mm linear rod for supporting a filament spool. The rod is canted upwards at a slight angle to prevent the spool from walking off the rod. The OpenSCAD source file used to generate the holder is also supplied.
  • Added spool-core-toybuilders.stl which is a spool core which fits in filament spools from Toybuilder Labs and other distributors of eSun filament. It accepts two 608 bearings and will then smoothly turn on a 8mm linear rod, particularly when supported by spool-rod-holder-8mm.stl. The OpenSCAD source file used to generate the spool core is also supplied.

Timelapse video of a triple-leadscrew Core-XY printer running Sailfish on an Azteeg X3


Model is Cymon's Cthulhu, Thing #17000. Video done with Octoprint runnning on a Raspberry Pi B+ using Mark Walker's GPX-based plugin. (One second of video is 25 seconds printing time.)

Updated 16 Jan 2015:

  • Modified the passthru hole near the stepper motor. It can now accommodate, if desired, a typical power cord grommet with integral strain relief. E.g., a Heyco 1857 or 1858.

Updated 15 Jan 2015:

  • Added cut files for an electronics box mounted to the rear of the printer.
  • Added an explanation of the electronics box to the Instructions.

Updated 12 Jan 2015:

  • Note that I found a 8x25mm shoulder bolt and 698 bearings to work best for the idlers.
  • Added a wiring pass thru hole to the lower Z stage plate for HBP wiring. Optional, but perhaps a little more tidy. Especially if a wire tie is also used.

Updated 9 Jan 2015:

  • Added text in the Introduction section of the Instructions describing the 180 degree rotation of the HBP and extruder carriage.

Updated 8 Jan 2015:

  • Comment that for my choice of parts, a 500 - 510mm frame height may work better.
  • Updated, easier to print crossbar spacing templates.
  • Expanded information on mounting the crossbar.
  • Python script plates-0.py for generating layouts.


0.0 Introduction

Updated 16 January 2015

In developing the Core XY printer of Thing #393155, we felt that its weakest link was the cantilevered Z stage. Even with a modest 200x200mm build area and two 10mm linear Z rods, the Z stage is impacted by vibrations and slight bowing of the 10mm rods as the stage descends. While the impact is arguably slight, with the other improvements brought about by the Core XY system, this became the new "weakest link", the most significant defect. Use of a cantilevered Z stage restricts the potential height of the Z axis and depth of the build platform.

This "Thing" is a Core XY printer derived from Thing #393155. The primary difference is that, unlike Thing #393155's cantilevered Z stage, a stage supported by three 8mm leadscrews and two linear rails is employed. Such a Z stage is more stable and makes practical larger, taller build volumes.

This Thing here describes just the differences from Thing #393155. For all other details, please refer to Thing #393155.

This primary difference brings about a secondary difference: the orientation of the extruder carriage ("XY plate") and the location of the X-max endstop. In order to not have a leadscrew interfering with front access to the build platform and to have the HBP well situated over the lower Z stage with widely separated leveling studs, I have rotated the HBP and extruder carriage by 180 degrees. This puts the X-max endstop on the left hand side of the printer rather than the right hand side. For sanity, that also means moving the Y-max endstop to the front. This makes motion to the front +Y motion, and motion to the left +X motion; a 180 degree rotation in the XY-plane from a standard Replicator 1, 2, or 2X. That's fine and works but will mean that (1) you see your models from their backside as they print, and (2) you need to wire your motors so that +X runs to the left, and +Y runs to the front. Rotate your models 180 degrees before slicing if you wish to see their front side as they print.

Alternatives to this design choice include:

  1. You can make the X and Y endstops "min" endstops and change all your gcode to home X and Y to their minimums rather than their maximums. However, for MakerBot-style firmware, the built in homing and leveling scripts will no longer be applicable to your printer.

  2. Mount the X axis endstop switch on the other side of the XY-plate (extruder carriage). So doing may require a little forethought if you also plan on mounting a print cooling fan.

  3. To keep the same extruder carriage and HBP orientation and placement of Thing #393155, you can move the holes for the leveling studs 78mm towards the back of the printer and 18mm towards the right. And then bring the rear leveling stud back forward as 78mm backwards puts it off of the lower Z stage. This layout doesn't look as pleasant and has a smaller leveling base.

For the 320mm long leadscrews shown in the pictured bot, a 340 x 340 x 520mm frame was used (width x depth x height; outside dimensions; see Note below). The idler pulleys are 36 tooth GT2 timing pulleys with a 5mm bore and intended for a 6mm wide GT2 timing belt of length 1032mm (516 tooth belt such as SDP/SI part number A 6R51M516060; custom length closed belts may be ordered from robotdigg.com). The two linear rails are Misumi SEB10-275 (10mm high, 20mm wide, 275mm long).

Note: For my choice of components, a 508mm high frame would have worked better. I'll be lowering the Y axis linear rods and thus the entire extruder carriage by 12.5mm. I could just use taller leveling studs, but I'd prefer not to. I intentionally used too tall of a frame in case I changed the design mid-build.

1.0 Chamber Plate

Situated in the bottom of the build chamber is the chamber plate which supports the three Z axis leadscrews and one stepper motor. Supported by the plate and located underneath are two idlers, four timing pulleys, and the timing belt itself.

The chamber plate may be cut using the file chamber-plate.svg.

Afterthoughts: My original design had two passthru holes near the stepper motor: one for noisy motor wiring and the other for noise-sensitive endstop cables. However, I had forgotten that the endstops would end up at the front. So in later revisions of the design, I reduced the two holes to one. I've also made the hole larger so that it can accomodate a power cord strain-relief grommet such as a Heyco 1857 or 1858, each of which can work with a plate as thick as 4.0mm. The hole is 22.2mm wide on its long axis and 19.6mm on its short axis with flats.

1.1 Z axis leadscrews

3 x Leadscrews, preferrably with turned down ends  
3 x Flange bearings with an inside diameter matching the mating leadscrew ends  

The plate is designed for flange bearings with a 10mm OD. If you instead use bearings with a 11mm OD, then change the diameter of the three holes accordingly.

The turned down ends of the leadscrews sit in the flange bearings. Gravity will keep them well seated. They will not be able to completely pull out as each will have a timing pulley acting as a collar below the build plate.

Note: You typically do not need ground flats on the leadscrew ends. You want at most one shaft out of the four -- the three leadscrews and one stepper motor -- to have a ground flat. At issue is that at some point you will need to get the belt and pulleys all synchronized together. To do that, you tighten down one pulley such as the one on the motor, tension the belt, run it back and forth a little, then tighten down the remaining three pulleys. If you tighten a pulley set screw near a ground flat, the screw may try to turn the pulley around on the shaft it is perpendicular to the flat. That, will disrupt the belt and pulley synchronization, putting one of the pulleys out of sync. If your leadscrews have ground flats, be sure to not place the set screws anywhere near the flats unless it is the "primary" pulley you are synchronizing everything to.

In the build pictured here, three TR 8x8(P4) leadscrews are used. They each have one 20mm long turned down end of diameter 5mm. The overall leadscrew length is 340mm, including the turned down end. Note that Zen Toolworks sells similar leadscrews of overall length 360mm but with both ends turned down, 20mm per end. These are listed by Zen Toolworks as 14 inch long leadscrews (ZENF8ALS; includes an anti-backlash nut which you may not want).

The build also uses 5mm ID, 10mm OD flange bearings. In December 2014, Atomik RC in the US was selling packs of five such bearings for approximately $4.

Afterthought: Wish I had cut a slot or other index into the top of one of my leadscrews: then I could have made a slide on/off crank that could be put on to quickly hand crank the platform up or down. Fortunately, the system is so smooth that I can easily turn with two fingers any of the three leadscrews and drive the entire platform up or down. If the stepper motor were not in the belt path, the platform would just drop on its own when left up. The knob-small.stl model does make a nice crank though.

1.2 Idlers

2 x M8 bolts, minimum length depends upon part selection  
2 x Locknuts, M8 for threaded M8 bolts, M6 for typical 8mm shoulder bolts  
4 x Small washers with an 8mm ID and a maximum OD of 16mm  
4 x 608 or 6 x 698 bearings  
2 x Fender washers, 8mm ID and a minimum OD of 23mm (698 bearings) or 25mm (608 bearings)  

Each idler is made by stacking bearings, spacers (small washers), and a belt guard (fender washer) onto a M8 bolt in the following configuration:

  1. (plate)
  2. small washer
  3. bearing
  4. bearing
  5. bearing (if using 698, you may need three)
  6. small washer
  7. fender washer
  8. possible spacer to consume remainder of shoulder length
  9. lock nut (or nut with loc-tite)

Ideally M8 shoulder bolts should be used, but normal M8 bolts will work.

Common 608 "skate" bearings may be used. They have an ID of 8mm and an OD of 22mm. They are 7mm thick. Alternatively, 698 bearings may be used. They too have an ID of 8mm but an OD of 19mm and are only 6mm thick. The plate locates the idlers in geometrically ideal spots for 22mm OD idlers (608 bearings). There is no loss in performance if 19mm OD idlers (698) bearings are instead used. The belt length will, however, increase by 1mm to 1032mm should 698 bearings be used. That increase is easily accomodated by the chamber plate's motor mounting slots.

The fender washers prevent the belt from walking off the bearings.

The small washers are to provide clearance for the outer bearing rings, preventing the outer rings from riding directly against the plate's bottom surface or the fender washers. They allow the bearings to spin more freely by keeping the outer rings from turning against those surfaces. To reduce the stack height, thin shim washers may be used. Depending upon the bearings, as thin as 0.3 or 0.2mm should work fine. Note that when using shoulder washers,
the total stack height and plate needs to be a tad taller than the length of the bolt's shoulder. Otherwise, the lock nut bottoms out on the thread before it contacts the top of the stack and the shoulder bolt then is loose, can rock a little, and generally won't work optimally.

Afterthought: The 36T GT2 pulleys I used were 17.5mm tall. With a 4mm thick chamber plate and 5mm flage bearings which stood almost 0.5mm proud, the 20mm end on each leadscrew only exposed 15.5mm of tail for the pulley. If I mounted a pulley with the belt close to the plate, the pulley's set screws were too close to the leadscrew's end. Thus, I mounted each pulley with its set screw collar close to the plate and its toothed section farther away -- about 10mm away from the plate. This then caused the top of the 6mm wide belt to be at least 16mm above the plate. Consequently, I didn't use two 608 bearings per idler -- 14mm tall -- as that would have required the belt to dip down, brushing against the fender washer at each idler. (Mind you, it'll work but we can do better.) Instead, I used three 698 bearings (18mm tall). That in turn necessitated an 8x25mm shoulder bolt and this final stack: 4mm plate, 0.2mm shim washer, three 698 bearings (18mm), 1.0mm shim washer, fender washer (1.4mm), 1.0mm shim washer for a total stack of 25.6mm. NOTE that the total stack height needs to be slightly taller than the shoulder; otherwise, the nut will bottom out on its threads before engaging the stack and tightening everything against the plate.

The idlers need not use 608 or 698 bearings: other bearings my instead be used. If bearings with a different inside diameter are used, then the chamber plate may need to be altered to accomodate a different sized bolt.

1.3 Z Axis Stepper motor

1 x Kysan 1124090 NEMA 17 stepper motor  

This motor is available from ultimachine.com; it's also the motor recommended for the X and Y axes. However, it requires stepper drivers capable of handling more current than the "stock" Botstep stepper drivers supplied with MightyBoard electronics. Typically, Pololu A4988s are used but will require (slight) modification for use with a Mightyboard.

Note: You will want to change in the printer's EEPROM the default digital potentiometer VREF for the Z axis from 40 to 118. You will also want to change your starting gcode to use a value of 118.

Afterthought: My Z stage travels very smoothly its entire range. Very little effort is required to move it via the belt and leadscrews. I may well have been able to use a lower torque, lower current stepper motor.

1.4 Timing pulleys

3 x GT2 timing pulley, 6mm belt width, bore to match Z axis leadscrews  
1 x GT2 timing pulley, 6mm belt width, 5mm bore  

The bore of three of the timing pulleys should match the ends of the leadscrews. E.g., 5mm bore if the leadscrews have 5mm diameter turned down ends. The bore of the fourth timing pulley should match that of the stepper motor shaft, typically 5mm.

For the timing pulleys, 32 or 36 teeth are fine. At 36T, the pitch diameter will be about 23mm. For the two forward leadscrews, the plate allows 8mm of clearance from the extrusions for a 36T pulley. If you use a higher tooth count, be mindful of this clearance.

Note: The stated belt length is for 36T pulleys. The necessary belt length will change if you use different size pulleys

Try to use the same tooth count for the pulley on the stepper motor that you use on the leadscrews. That way, a full rotation of the stepper motor shaft (3200 steps) will correspond to a full rotation of each leadscrew. This makes the arithmetic easier when determing the steps per millimeter for the Z axis.

With this layout the stepper motor pulley will have half of its teeth engaged with the timing belt. Each of the leadscrews will have a third of their teeth engaged. This is more than adequate with pulleys with 30 or more teeth.

The printer shown for this Thing uses four 36 tooth GT2 timing pulleys, each with 5mm internal bore.

1.5 Timing belt

1 x GT2 timing belt, 1032 mm long (516 tooth), 6mm wide  

The bottom plate is designed for a 1031mm long belt (608 idler bearings; 36T pulleys) or 1032mm belt (698 idler bearings; 36T pulleys). The bottom plate's motor mount has 8mm long slots which allow for increasing or decreasing the belt length by 8mm (+/- 8mm; sliding the motor back 1mm consumes 2mm of belt length). This adjustment is also how the belt's tension is adjusted so do not attempt to use a 1038mm long belt as that won't leave any room for adjusting belt tension.

In the printer pictured, a 516 tooth GT2 timing belt is used. Such a belt can be ordered from SDP/SI, part number A 6R51M516060. Custom length, closed belts may also be ordered from robotdigg.com.

2.0 Lower Z Stage

The lower Z stage plate is roughly triangular in shape and supports three leadscrew nuts as well as a crossbar which spans the plate. The leadscrew nuts allow the leadscrews to raise and lower the Z stage. The crossbar stabilizes the plate in the XY-plane by connecting the plate to the two vertical, linear rails on either side of the front of the Z stage. The crossbar prevents bent or non-parallel leadscrews from causing the Z stage to move about in the XY-plane.

The cutouts for the leadscrew nuts are intentionally oversized to allow some fine tuning of each nut's position. The 8mm hole near the rear right of the plate is intended as a wiring passthru hole for any heated build plate wiring.

The SVG file z-stage-lower.svg may be used to cut this plate.

2.1 Leadscrew nuts

 3 x Leadscrew nuts  
12 x M3 bolts  
12 x M3 nuts  
12 x M3 washers (optional)  

The Z stage is moved vertically by the turning of the Z axis leadscrews. The leadscrews connect to the Z stage via three leadscrew nuts. The lower Z stage plate has three cutouts for these nuts. Each cutout has four holes for M3 bolts spaced 90 degrees apart on a circle of diameter 16.5mm.

Note: Some of the diagrams for a commonly sold, brass TR 8x8 leadscrew nut manufactured in China shows the holes on a 16.0mm diameter circle. That diagram is in error or otherwise doesn't match the physical nuts sold which use a 16.5mm diameter circle to locate the four M3 screw holes.

2.2 Crossbar

1 x 340mm long cross bar  
8 x Short M3 bolts  

The crossbar is 340mm long and cut from aluminum L-channel or similar. Each end should have four 3mm holes cut to accept M3 bolts. The holes on each end are spaced 15mm apart horizontally and 10mm apart vertically. At each end, the outermost holes should be 2.5mm from the crossbar's end. The holes on the crossbar are marked assuming the crossbar will be mounted as an inverted "L" with the lower Z stage supported from below by the crossbar. That allows for a higher rise along the linear rails at the expense of how far the Z stage can be lowered. If you choose to flip the crossbar over -- not mount it as an inverted "L" -- then flip the spacing-2b.svg template as well: the holes are not symmetrical.

Note: The earlier photos for this Thing show the crossbar in a non-inverted "L" configuration.

For linear rails, the sliding blocks often accept only short bolts. For example, the miniature linear rails used in the pictured build, Misumi SEB10, can accept a bolt shank no longer than 3mm. Determine the size and length of bolt you will need.

The file spacing-1b.svg provides a punch template for the crossbar's vertical face (printer's left/right, up/down plane). The file spacing-2b.svg is a punch template for the crossbar's horizontal face (left/right, front/back plane).

It is recommended that you carefully layout, check, check again, and then drill the eight holes for mounting the crossbar to the vertical rails. Be warned: using a template is not proof against laying out the holes incorrectly. It's easy to have the holes correctly spaced relative to one another but not square to the crossbar itself.

Mark but do not drill the holes for mounting to the lower Z stage. I at least drilled those after I had the crossbar well fastened and aligned to the linear rails and the lower Z stage, leadscrews, pulleys, and belt all set up (Section 5.0). Only then did I drill the holes and attach the crossbar to the lower Z stage.

Warning: I did not myself use the spacing-2b.svg template. I drilled the holes after mounting the crossbar, lower Z stage, leadscrews, etc. The template appears correct....

Note Bene: While the holes are symmetrical on the vertical face, they are not on the horizontal face. This is because the extruder nozzle has approximately 9mm less reach to the right side of the chamber vs. the left side. As such, the build platform is shifted 9mm to the left.

3.0 Upper Z Stage

1 x Upper Z stage plate  
3 x Long M3 bolts, threaded full length (35mm long or longer)  
3 x Springs (leveling springs)  
3 x M3 nuts  
3 x M3 lock washers  
3 x M3 thumbnuts  
+ Hardware to attach your heater PCB (e.g., spacers, washers, nuts, bolts)  

The upper Z stage supports a 214 x 214mm MK2, MK2a, MK2b heater PCB and floats above the lower Z stage plate on stiff springs and long M3 bolts.

To attach the Upper Z stage plate to the lower plate,

  1. Put a long M3 bolt through the upper plate tightly securing it from the plate's underside with a lock washer and M3 nut. (This is why the bolts should be threaded their full length.)
  2. Repeat for the other two bolts.
  3. Slide a spring over each of the three bolts.
  4. Pass the three bolts through the three matching holes on the lower Z stage plate.
  5. Secure each bolt from the underside of the lower Z stage plate with a M3 thumbnut.

The necessary length of the long M3 bolts will depend upon other parts of your build.

The upper Z stage plate may be cut using the file z-stage-upper.svg.

4.0 Vertical Linear Rails

2 x Vertical linear rails  
+ Hardware to attach the rails and any rail endstops, if needed  

The choice of linear rails will be dictated by the maximum 3D printing height desired. The lower Z stage plate is designed for linear rails which project a total of 10mm from the extrusion frame. The plate can accomodate slightly deeper rails, but check first: you may need to move the three leadscrews, idlers and motor back slightly on the chamber plate. Accomplishing that will require modifying the cutting template, chamber_plate.svg.

Note: Some linear rails cannot be "ganged" together to make a longer rail. E.g., Misumi's miniature linear guides, SEB6, SEB8, SEB10, etc. cannot be extended by using multiple units.

NOTE: With some linear rails, you must not remove the sliding block as the ball bearings may fall out upon removal.

The build pictured for this Thing uses Misumi SEB10-275 miniature rails which are 20mm wide, 10mm deep and 275mm long (maximum available length for SEB10). When putting the corner brackets on the inside, lower, front corners of the left and right sides, be mindful of the bracket's height: the taller the bracket, the higher you must mount the linear rails. That in turn will impact how low your Z stage can descend. In the pictured build, small Adafruit corner brackets are used. The SEB10-275 rails mount with short 3mm bolts requiring 3mm frame nuts such as Misumi HNTASN5-3 or HNTAJ5-3 post-installation nuts. Stops had to be provided to prevent the sliding blocks from running off the rail ends; the rails are not provided with permanent stops.

Afterthought: The small inside corner brackets could have been omitted entirely from the build. They aren't needed given all the other brackets and plates employed; their omission will not compromise the rigidity of the frame.

5.0 Spacing Jigs

The spacing jigs are an assembly aid to help you square up the leadscrews as you assemble your printer. Their fit over each leadscrew should be a little loose but not have too much play. At issue is that when it comes time to remove them, you do not want to have difficulty sliding them off the leadscrews: if you have to torque a little, you may bend a leadscrew.

The file jigs.scad may be used to individually generate each jig and even to change the jig dimensions or placement of the leadscrews.

To align everything, I used this approximate method

  1. Install the crossbar. With the crossbar a little loose, run it up and down the rails with the printer laying on its front side. Make sure the crossbar runs up and down smoothly, adjusting the rails or the crossbar or both until smooth operation is achieved. It is not recommended that you drill or attach the crossbar to the lower Z stage yet.
  2. Install the leadscrews with the flange bearings.
  3. Put the three leadscrew nuts onto the leadscrews, one per leadscrew. DO NOT GREASE THE LEADSCREWS YET. If they are greased, this entire process will be more difficult as the leadscrew nuts or screws themselves will keep on turning and moving out of position as you work.
  4. Install the lower Z stage.
  5. Install the spacing jigs; if necessary remove the upper endstops on the linear rails and let the jigs serve as temporary endstops.
  6. Put some machinist's blocks or other blocks of very uniform height on top of the chamber plate and below the lower Z stage.
  7. Allow the Z stage to sit nice and flat above the blocks.
  8. Perhaps now or perhaps a little later, bolt the lower Z stage to the crossbar.
  9. Spin a leadscrew nut up until it mates with the hole on the Z stage's underside. Turn the leadscrew by hand to get the four fastening holes to line up while ensuring that the nut is flush against the underside of the Z stage. Loosely attach the nut with two M3 bolts, nuts, and washers.
  10. Repeat Step 9 for the remaining two leadscrews.
  11. Making sure that the leadscrews are well seated in the flange bearings and that the lower Z stage is sitting flat on the blocks, secure everything with some masking tape. Then carefully turn the printer upside down so that you can access the pulleys and idlers on the bottom.
  12. Firmly secure a pulley to the stepper motor and just put loose pulleys on the leadscrew ends.
  13. Install the timing belt. Make sure that the leadscrews are still properly seated and none have slipped out or that the flange bearing has slipped out of its seating hole in the chamber plate.
  14. Tension the timing belt but loosely.
  15. Make sure that the belt is properly engaged with each of the pulleys -- this is the synchonization phase. Make sure that if the leadscrews have ground flats, that the pulley set screws will not engage them. A set screw attempting to engage a flat may throw off the synchronization.
  16. Again make sure that the leadscrews are properly seated and the Z stage is flat against the blocks.
  17. When you are satisfied, finish tensioning the timing belt.
  18. Secure the other pulleys; provide a little clearance between the pulley and the underside of the chamber plate. E.g., use two sheets of paper as a feeler guage to create approximately a 0.2mm clearance.
  19. Turn the printer back over, clamp the crossbar to the lower Z stage and drill the mounting holes. You do not need to use all six holes. Fasten the cross bar to the lower Z stage with M3 bolts, washers, and nuts.
  20. Remove the tape, the blocks, and the spacing jigs.
  21. If you previously removed the upper endstops for the linear rails, then re-install them now.
  22. Test the motion of the platform by gripping the timing belt and pulling it. The platform should run smoothly over the entire travel distance. If not, figure out where and why it is binding.
  23. Lube the leadscrews with PTFE grease; e.g., Super Lube Synthetic Grease with Syncolon Multi Purpose Lubricant.

6.0 Electronics Plate

See Section 8.0, Electronics Box, for an alternate means of mounting the electronics.

The electronics plate is designed to mount to the underside of the four, horizontal 20x20 extrusions supporting the chamber plate. The power supply and motherboard mount to the underside of the electronics plate, just as with Thing #393155.

The electronics plate includes:

  • 4 x M4 mounting holes for a Mean Well SE-350-24 power supply or equivalent; these holes are at the vertices of a 150 x 50mm rectangle.
  • 5 x M3 mounting holes for a rev E MightyBoard.
  • Pass-thru holes for any leadscrew, stepper motor, or idler shafts which descend more than 20mm below the underside of the chamber plate.

When building your frame, allow a vertical space below the horizontal extrusions of at least 55mm plus the thickness of the electronics plate. The power supply requires approximately 50mm of vertical space but should attached to the plate with spacers to provide a little room for air circulation. This room is not to cool the power supply, but rather to keep it away from any plastic plate which may become warped over time from direct contact with a warm power supply; this is an insulating air gap.

Note: The electronics plate includes venting for the power supply.

Note: While the electronics plate has pass-thru holes for idler, motor, and leadscew shafts, only the holes for the idlers are big enough to accomodate M6 nuts. The other holes are only a few millimeters larger than 5mm in diameter and as such they will not accomodate a large obstruction such as an idler pulley. Do not allow the pulleys themselves to descend that far below the chamber plate.

Use the file electronics-plate.svg to cut the electronics plate.

7.0 Extruder Carriage

As previously noted, for this build the extruder carriage (XY-plate) is rotated 180 degrees. This necessitates using a mirrored set of belt clips as the belt face presentation is flipped: facing the extruder carriage you see the flat side of the belts rather than the toothed side. If you use a matching set of belt clips, you are okay since they are already a mirrored set. If, however, you use a single clip and the upper Nozzle blower fixture of Thing #393155, then you will need to print a mirrored copy of that fixture. Such a mirrored fixture is provided as the file Nozzle_blower_upper_mirrored.stl.

8.0 Electronics Box

Rather than mount the electronics below the build chamber, the electronics may be mounted vertically on the backside of the printer. This allows for easier servicing of the belt and pulleys below the build chamber. It may also eliminate any need to lengthen wiring from the extruder or stepper motors.

The electronics box, P3-electronics-box.svg and P2-electronics-lid.svg, is a set of two Ponoko cut files for laser cutting an enclosure out of 3mm thick acrylic using Ponoko's P3 and P2-sized sheets. A number of the shapes on the P3 sheet assume a 3mm sheet thickness and will be incorrectly sized oif a thinner or thicker sheet is used. They also assume the thin kerf of Ponoko's laser.

The lid is fairly self explanatory and fastens to the box using up to nine 2.25 inch long standoffs (57.15mm). The holes will accomodate #6 fasteners (e.g., 6-32); metric fasteners may of course be used as well. Electronics distributors such as Digikey and Mouser are good sources for standoffs; McMaster-Carr tends to charge high prices for them. Of course, you can also 3D print standoffs, make some out of wooden dowels, arrow shafts with inserts, etc.

The box sheet, P3-electronics-box.svg, contains some obvious part ... and some not so obvious parts:

  • The small rectangles with two holes apiece spaced 19mm apart are cover plates you can use over the Y and Z endstop switches. Perhaps the X axis endstop switch as well.
  • The rectangular plate with a rectangular hole in it may be used to reinforce the power switch cutout on the left hand side of the box (e.g., Mouser 691-LTA201TAB/125N; it will snap into a 3 or 6mm thick cutout).
  • The larger rectangles with a rectangular cutout and five holes apiece are for a fused power inlet and are meant to be bolted to the frame somewhere and not part of the electronics box (Mouser 16PJ522; Deltron 522-0010). I use two and double them up to give a nice, strong 6mm plate which can hopefully handle the power cord being plugged in by a gorilla.
  • The many little triangles are optional braces which may be used to strengthen the sides of the box where the sides glue to the box's bottom.
  • The many tiny, rectangular cutouts in the box bottom are for use with wire ties and are possible points where you may want to tie down wiring.

The box is intended to be glued up using acrylic glue which is a very fast and effective means of assembling acrylic boxes. Typical acrylic glues are actually very low viscosity solvents which wick between two acrylic pieces, dissolving their mating faces, and allowing them to weld together as the plastic again solidifies. I use SciGrip #4 and a needle applicator. There are a number of good instructional videos on YouTube and elsewhere demonstrating this method of gluing acrylic.

See the Flick photo set of this printer build for futher (visual) information on assembling the box.

9.0 Plates-nn.svg

The file plates-0.svg is a not well documented Python script which, if edited a little to change parameters, can be used to output an SVG file containing a layout of leadscrews, idlers, belts, etc. It puts the leadscrews at the vertices of an equilateral triangle, determines the belt length, etc.

More from 3D Printers

view more

File Name



All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

Treatstock is an online platform that offers decentralized manufacturing services such as 3D printing and CNC machining for business-to-business and business-to-consumer sales all over the world. W...

App Info Launch App

3D print your favourite design with NinjaPrototype, a professional 3D manufacture with consistent quality and speed.

App Info Launch App

Why did you use linear rods instead of rails for the x and y axis?

Because for that span, they work very well for the price.

Do you think that linear rails would be better (if price wasn't an issue)?

Rails bolted to the frame along their length will sag less. So, for the present Y axis they would be a slight improvement. For the X axis you need to do the calcs to figure out what will be stiff enough. A piece of 4mm x ??? x ??? aluminum which the rail bolts to and is then suspended from the Y axis rails? At issue is not having sag.

Any ideas on where to get 430mm leadscrews with 5mm turned down ends?

508mm http://www.zentoolworks.com/product_info.php?cPath=16_15&products_id=125
355mm http://www.zentoolworks.com/product_info.php?cPath=16_15&products_id=141
304mm http://www.zentoolworks.com/product_info.php?cPath=16_15&products_id=160
203mm http://www.zentoolworks.com/product_info.php?cPath=16_15&products_id=139

So, you could cut down the 508 to get 430mm. However, call Zen Toolworks and see what other sizes they might have. And also determine if you want their large and bulky leadscrew nuts or not. I order them from them without those nuts and thus pay less than the prices linked to above. Their bulky leadscrew nuts are zero-backlash but, with the pre-load of a build plate, you don't need that anyway. And did I mention that they are big and bulky?

Im unable to find the pitch of that screw! Can u tell me the pitch and how many starts does it have?

I was considering building a much larger printer than I currently have but could not find a good design for my lead screws. This is exactly what I am looking for! I have just a couple of questions.

1) Have you had any issues with your belt tension? The only reason I ask is because on my current printer I have had a numerous issues.

2) Can this be expanded to a larger printer? My current build size is just over 200mm square but I was looking into building one with a print size of 350 or 400mm.

I've never had an issue with belt tension. For Z, it's easy to slide the Z motor to adjust if it is an issue. For the carriage, I used the tensioners related to the Core-XY design of which this is a derivative.

It can be expanded. People have done 1m x 1m x 1m printers (e.g., http://www.thingiverse.com/unknown/about ). However, they invariably need to use four Z leadscrews rather than three for the build platform. I do not know at what volume they find that necessary. Also, they have to stiffen the X and Y linear supports to deal with sagging over those spans.

i couldn't find 3mm aluminum plate around where i live, but i found some 3mm steel plates and i had them cut. I knew that they would be heavier than the aluminum but i didn't expect them to be THIS heavy :). Do you think that the nema 17 can carry the weight? I don't know exactly how heavy they are but im guessing about 1kg per z plate and the chamber plate is a little heavier.

Weight of the chamber plate doesn't matter, although the heavier the better as it adds overall mass to the frame. As to the plates for the upper and lower z stage, I myself have no way of knowing if yours are too heavy or not. You can always try them.

P.S. 2.5 or even 2.0 mm Al plate is probably fine.

Hi Dan,

What thickness is your lower Z-stage aluminum plate please?

Also, that SVG file does not have the holes for attaching the aluminum cross bar. Done intentionally I assume?


3mm. Chosen because it's sufficient. 4mm is overkill. 2mm is a bit flimsy. 2.5mm might be okay.


Any chance you can provide a part number of the "power entry" female plug you used? The part from the previous design (Core XY Cube) bill of material does not fit the laser cut mounting plate and I see from the pictures that you have used a different power entry part.


EDIT: To be more clear, I only had the P2 and P3 pieces cut by Ponoko. I didn't catch the fact that there was another file (dxf) that likely is the right piece.... Regardless, if you do have that part number handy, I wouldn't have to cut new pieces.

EDIT: Ok, I went back and looked at the instructions and sure enough, you mention Mouser 16PJ522. Sorry about that! So, the BOM references a different part. I'll have to figure out which way to go....

Thank you for your feedback :) , i ordered the 36 gt pulleys cause i don't feel like experimenting, it was a headache enough sourcing all the parts from your and tempo's BOM, its my first printer build ever but i think i can handle it.... Thank you guys so much for contributing to the community, especially with such an exceptional build :)

If you have not already purchased it, I would recommend that you NOT purchase the LCD display in the tempo BOM. That lists a FlashForge display and the connectors on it point in the wrong direction. There will be interference with the electronics box.

You want the Wanhao LCD but unfortunately they are out of stock. I am trying to source it now.....

For the record, I use the WanHao displays since they save me a little time. I had a couple of FlashForge ones and removed
the pin header and put on new ones oriented the direction I preferred. With the WanHao's I don't have to spend time doing that.

I also wanted to mention that I just bought 5 of the short-xy plates for the extruder. Big Blue Saw priced them out at 5 for the price of 1. So, instead of an $88 water jet job, I will be receiving 5 of them.

If you have any interest, I would be happy to sell one or more at my cost.

Let me know and I'll have a picture on my Flickr page once they arrive.


I'm available to knock ideas around with you as well. I'm about 75% into this build.

Here is my Thingiverse page: http://www.thingiverse.com/thing:864017

There is a link to Flickr with pictures mentioned in the description.

I've only run into one significant problem so far. I used the motor brackets from tempo's build but want to mount the electronics box on the "back" of the printer frame. There is significant interference between the two so I am going to, in the short term, incorporate some spacers to make it all work.

Good luck with it.


Hi-Z Core XY triple leadscrew
by vronp

Ok then thx, i will order them. In the meantime i found some 8mm to 5mm bore adapters, but i have a 1032 tooth belt... will it fit the 32 teeth pulleys or will it be too loose?

You'll have to measure the diameters of your pulleys and do the math to determine the actual belt length needed. Once upon a time, I had the math all written up for calculating it but I don't know if I ever posted it anywhere. I still have it at home but I'm traveling at the moment.

An issue with bore adapters is that unless they were carefully machined, they tend to be ever so slightly off-center. I don't think that'll make much difference here if they are, but it's something to be aware of. In the Core-XY designs that wind up fishing line on spools, it's a very serious issue as you get steps/mm values which change as the spool rotates.


Are there settings that need to be tweaked if the Z-axis pulley diameters end up being different than what you specify?

I'm looking at engineering things a bit differently and using GT2 pulleys with an 8mm ID:


Well, I have to bail on this idea. My hope was to use straight 8mm lead screws the entire length but it looks like I won't be able to find a pulley with a small enough diameter to clear the frame.

So, one more question on this topic please. It seems as if you had wished to have a turned down length of the lead screw longer than what you originally specified.

If you did it all again, and maybe you are, what turned down length would you use?

Thanks once again Dan.

Turned down length of mine were fine. It just meant I had to make taller idlers than I originally expected.

So you're saying that the pulleys have such a large diameter that they hit the horizontal frame members which support the bottom plate? How many teeth did they have? Up to 36 should be fine unless they have really tall rims. The 36T GT2 pulleys I used still had 8mm of clearance. Only gotcha would be if you used thicker vertical rails pushing things further back on one end.

Yes, your assessment is correct. I was looking at these:


The pitch diameter is around 47 mm.

It just occurred to me that I could drop the pulleys and idlers "below" the horizontal frame members. The frame is the "standard" 20x20.

What I was trying to do was avoid the lead screw machining. Open Builds sells 1000mm long lead screw. I was thinking about using a stop collar above the bottom plate with some form of bearing.

I believe the final length of my leads screws will be in the neighborhood of 650mm. I do have some concerns about the rotational inertia involved but on the other hand, I don't have a solid feel for these steppers and what they are capable of swinging.

Contact Jetguy and ask his experiences with using leadscrews that way. I believe he tried similar once with thrust bearings.

Rotational inertia isn't an issue: you don't turn them very fast.

What matters is the ratio of pulley teeth between the Z-motor and each leadscrews. Each leadscrew must have the same toothcount, but the count can be different between the pulley on the Z motor and those on the leadscrews.

Ok, great, thanks for the info.

Ahhh i seem to hAve bought the 32 teeth pulleys and their bore is 8mm... I dont have the patience to wait for other ones to come in the mail as im located in europe, so do you think that printing the gt2 pulleys in petg will get the job done?

I would guess that you'll have backlash if you do that. These drive systems (e.g., GT2) are all carefully designed such that the belts and pulley's have extremely low backlash. But part of achieving that is correct angles, pitches, tolerances, etc. If you 3D print a pulley, it'll drive the belt back and forth but even being off a bit will lead to backlash and even perhaps slippage at moderate speeds. You can try it though.

Hi Dan,

Where did you find the long threaded (presumably) nylon spacers for the electronics box?


Digikey. Below is a URL but I don't know if it will get mangled or not. Search there for "nylon standoffs". You'll find them under "Board spacers, standoffs".


Sometimes I can find them on Amazon as well. The knurled thumb screws I got from McMaster-Carr. McMaster-Carr also carries standoffs / spacers, but charges too high of prices for them.

E.g. Digikey 1820K-ND, HEX STANDOFF 6-32 ALUM 2-1/4" ($1.04 apiece)

FlashForge sells a Creator Pro extruder stepper with the following specs. I was planning to use this for the extruder and perhaps the z-stage if necessary.

Rated Voltage: 4.83V DC
Rated Current: 0.84A
Phase Resistance: 0.75 ohm±10%(20℃)
Phase inductance: 9.3mH±20% (1kHz 1V rms)
Holding torque: 1.28N.m MIN (Two phase on/rated current)
Shaft diameter: 5mm
Shaft length: 17.7mm
Motor depth: 34.3 MAX

$14.50 gets you the stepper motor many of us use for X, Y, and Z. Available in the US from ultimachine.com,


Will that also work on the extruder?

Yes but it will approximately double the mass of the extruder requiring you to move it around with much lower acceleration. Would also require a design change to your XY carriage as the motor is much longer than an extruder motor.


How is the rail-stop.stl piece used?


Many rails do not have stops. Stops to prevent the car from sliding off and losing all of its tiny ball bearings. So, depending upon what is at either end of your linear rail, you may need to have a stop to prevent the car from coming off. Enter these rail stops. You bolt the rail down and also bolt one of these at either end of the rail which needs a stop. The stop bolts to the extrusion using a long 3, 4, or 5mm bolt and extrusion-frame nut. (Well, for 5mm you may need to ream the hole out; I don't recall.)


Your discussion surrounding the Z-axis stepper mentions a lower current motor would likely work. There is a reference to modification of the Pololu A4988 that is required otherwise.

Is the modification the EEPROM change you mention? And if so, would I need to make that modification on the X and Y axis if I use that motor for X/Y as well?


The issue is that the "standard" botstep stepper drivers shipped with MightyBoards can only supply a maximum of 0.77A, and that's if you modify the firmware to allow a digipot setting of 127. The firmwares for MightyBoards limit it to a digipot setting of 118 which limits to 0.72A.

So, if you use stepper motors requiring more current, then you have to use different stepper drivers. And the MightyBoard doesn't use a standard pinout. Thus, in all likelihood, you must modify whatever alternate stepper driver you use. For example, if you use a Pololu A4988, you have to modify it. See, e.g., https://www.flickr.com/photos/d-newman/sets/72157654553957262 .

Ok, that Pololu mod site stipulates Rev E, G, and H boards. Okay with D ?

You don't have a rev D mightyboard. You have a rev E mightyboard. FF only sells rev E mightyboards. The rev E refers to the electronics and how they are layed out. It does not refer to some FlashForge internal revision code.

Ok, well, I think I'll try to locate a lower current motor in light of the fact that you thought the Z stage didn't require a lot of torque.

Hold on there. I wrote that I MAY have been able to use a lower torque motor. I could well be wrong, I've not tried it and I've not done the measurements and calculations to see what roughly is required. So, if you simply try some other motor be prepared that it may not work. If I were going to simply try a lower torque motor, I'd perhaps try one of the stepper motors used for the extruders. That way, if it doesn't work for the Z axis, I still have a use for the motor (extruder axis).

It looks like you have built a few machines now with the basic configuration. Can you comment about any concerns where the belts cross each other?

They cross. It's no big deal. They don't mind rubbing. However, it does seem to rub the fur the wrong way on some folks. (Particularly people who have never built or used one.) It's just not worth worrying about. As to the best place for them to cross I have no opinion.

And no, I do not find belt dust on the table below where they cross on my bots. The belts see far more wear running over the pulleys and from any contact with pulley flanges then they see passing by each other. It most definitely will not be a source of belt wear and most definitely will not cause print artifacts. The belts are not under extreme tension.


Your "X lasercut carriage" doesn't appear to match the piece on 393155 (xyplate-short.dxf).

I'm looking at this picture: https://www.flickr.com/photos/d-newman/14521954744/in/album-72157645313526624/

There is no picture of this piece on the Flickr site for your triple lead screw design so I really don't know what you used there.

Would you please advise?


  1. That's not a laser cut carriage, it was machined out of 3mm aluminum plate.
  2. It doesn't match any published build files. Indeed, there are no build files for it as I designed it the old fashioned way (pencil, paper, straight-edge, etc) and handed the dimensioned drawing to my-father-the-retired-machinist.

Hi Dan,

I want to use that xstageshort.dxf file from 252041.

I wonder why you cut a slot in place of the through hole in this picture on the older design:


Did something not line up correctly with the through hole?

With a slot you can use different belt fasteners, a taller motor stack, etc. It's more flexible is all.


Did you use these idler brackets?


Unless I am missing something I don't see these on the tempo502 CoreXY Cube project. I want to be sure I am using the parts you used and also make reference to this on the remix I created today.


Core XY Idler & Motor Brackets for 2020

Yes, those are the brackets I used (Thing #364426)


Very nice design. I want to build this to accommodate parts that are 21" tall. Do you have any concerns at that height? I was thinking I would build the aluminum frame with centered side spans.


These frames built with 20x20 extrusion are very rigid, especially if the lengths are cut with adequate precision and squareness. However, at that overall height, 0.75 meters or more, I'd worry about twisting moments. For that, centered side spans may not help much and you might be better off with some diagonal elements. I know that Jetguy on his large bots has ended up needing to use diagonals. He's posted about them to the 3dprintertipstricksreviews @ googlegroups.com list starting with his first for the NYC MakerFaire in 2013. (P.S. Jetguy lives in NC and does frequent some of the makerspaces down that way.)

Thanks, I'll look into that.

Say, do you happen to have a formula for calculating the cage height based on the maximum height of the parts desired? Or perhaps you can tell me what max height this design can create and I'll just add on from there.

I read through everything but that didn't appear evident....

Wow, this is a really nice looking setup. You paid attention to the aesthetics for sure! I love the green acrylic.

Thanks for the kind words. I have a nearly finished even larger 625mm (outside height) but don't have details on the specifics of working out the height. I'll see if I can add that to the instructions. You can sort of reverse engineer them from this slide,


Basically, if

  1. You do NOT mount the electronics on the underside,
  2. Do not use corner brackets above the bottom chamber plate,

then the outside vertical height boils down to

outside height = B + E + C + Zu + 75 + E
outside height = B + 2E + C + Zu + 75 mm

E = extrusion vertical height (e.g., 20mm for 20x20 extrusion),
B = height of bottom corner brace (e.g., 35 mm),
C = chamber plate height (e.g., 4 mm), and
Zu = length of the Z axis leadscrews above the chamber plate (e.g., 470 mm).

That 75 mm is a combination of things, some relating to component choices:

  • 19 mm inside corner brace
  • 43 mm tall flanged shaft support block for an 8mm linear rod (which this holds the center of that rod at 21.5 mm below the 19 mm tall corner brace)
  • use of the TR_Y.stl bracket on the 8 mm linear rods to support the two 8 mm linear rods for the X axis (http://www.thingiverse.com/thing:252041/#files)
  • use of the XY extruder carriage of this bot and direct drive extruder with the particular height it holds the nozzle above the print surface

Note you can go higher and be okay: if the extruder nozzle is too high above the build plate, then you just lower the flanged shaft support blocks thus lowering the Y axis linear rods and thus lowering the X axis linear rods and the extruder carriage.

Core XY cube
by Unknown

Do you plan to post your 625 mm build here? If so, I may wait until you do before I begin. I plan to use the BOM posted by tempo502 and tweaking as necessary to match the design changes.

A picture of it, maybe but nothing more.

Did you buy the belt as a closed loop ?

I have a 2m timing belt , and would be keen to do something similar . However , mine isn't a closed loop.

Closed loop for the Z axis. For the XY axes (Core XY axes), two open belts are used. I just buy whatever is the least expensive form of getting the necessary length, be it closed or open.

Great thanks. Is your bottom plate 3mm Aluminium ?
What fittings are you using to mount the threaded rod onto the bottom plate and pulleys?

These and many other questions are answered in the Instructions section and within the comments of the photos in the Flickr album. (E.g., thickness of the metal plate is in the comments to the photo showing the metal plate installed; 4mm.)

Hey this build looks super great! I have a question though... Why do you have be leveling springs? Couldn't you use the lead screws to level the bed?

Why introduce needless complexity? The bed gets out of level over time (or the surface treatment does or whatever). Changing the lead screws minutely means having to turn the bot upside down, loosen the pulleys on each one, then turn it back over, tram the build surface to the extruder, then not disturb any of that, turn the bot back over, then tighten down all the pulleys without disturbing the lead screws. Pretty complicated and not likely to work the first couple of times -- you're likely to discover that
something moved a tad and now isn't trammed.

You have to loosen the pulleys since otherwise, turning one leadscrew any amount turns all the others. And you have to keep all the pulley's sync'd with the belt.

So that makes more sense. However, if there was a mechanism to disengage the pulleys from the platform then you could double up on the benefit of triple lead screws. Regardless of that this is a very nice build. I hope my bot looks like that when it grows up.

Comments deleted.

What's the build area on your machine? Is it the same as the base design?

In XY, same as the base machine. In Z it's however tall you choose to make it.

Interesting. Are you the same "Sailfish" Dan? The stepper motors + code have no problem with steps and the larger distances?


Yes and depends. Depends upon what firmware you choose to use. Jetguy has his 4foot by 4foot by 1meter corexy bot using Sailfish and it works fine. Even then incredibly large numbers of steps can be broken into two (or more) moves but we're talking, IIRC, things exceeding 524287 steps in a single move along any one axis.

You are awesome! Love the way you think and make your OWN design. and how you improved the Z stage with 3 screws. Keep up the great work!