Sunday, January 26, 2020

UMMD X and Y Axis Modifications

When I was mounting optical endstops on the X and Y axes in UMMD I discovered that one of the Y axis linear guides had gone bad- motion was very rough.  I tried cleaning it to see if that would fix the problem but nope, it was finished.  I bought the guides in used condition, so there's no telling what sort of abuse they may have been subjected to before they ended up in my printer.

I searched ebay for the same type NSK linear guides I had used originally and couldn't find a pair, but I did find a single, new-old-stock guide that came with two bearing blocks and was 760 mm long.  After checking my CAD model of the printer to make sure it would work, I ordered the guide.

When the new linear guide arrived I cut it using a cut-off saw at the makerspace and ended up with two pieces just under 380 mm long- shorter than the original guides, but still long enough to allow edge to edge printing on the 300 mm square bed, because the new bearing blocks were shorter than the originals.

The belt layout with pulleys labeled for reference.

The screw hole spacing in the new bearing blocks was different, requiring a minor redesign of the X axis.  The P1 and P2 pulley mounts at the ends of the X axis were originally made from 2" square aluminum tubing.  If I had reused the old pulley mounts, the extruder would not have been able to print over the entire surface of the bed without moving the whole Z axis toward the front of the printer.  I decided that I'd rather just make new, smaller pulley mounts.  I also had to print new spacer blocks for the P3 and P4 pulley mounts at the back corners of the machine, which I did before I took everything apart.

Original P2 pulley mount from the left end of the X axis, made from 2" square aluminum tubing.  The four small holes on the top of the tube are tool access holes to get to the screws that hold the tube on the Y axis bearing block.  The four small holes on the front of the tube are to access the screws that hold the X axis bearing block on the tube.
The new pulley mounts are made from 1.5" x 2" tubing instead of 2" square tubing.  In the original tubes, I cut back the metal near the pulleys to give the belts more room, but it really wasn't necessary.  I didn't bother to cut the material back in the new mounts.  I found my original tool access holes too small, so I made them a little bigger.

The overall size of the mounts was 1.5" x 2" and 58 mm long, so I cut the tube on a bandsaw into a couple pieces roughly 62mm long.  Next I milled one cut end of each piece square, then milled the other end of each piece square and to 58mm long.  

I prepared drawings with ordinate dimensions of each piece so I could drill the holes accurately on the mill.  Here's an example of one of the drawings with the ordinate dimensions.  I put the origin in each view at the top left corner of the part because the left edge of the fixed jaw of the vise on the mill is at the left rear of the vise.  Now I set the origin of the DRO of the mill at the corner of the fixed jaw of the vise on the mill table using an edge locator tool.  Once that was set, all I had to do was position the workpiece against the left rear corner of the vise and use use the DRO on the mill to move the drill to the coordinates on the drawings and drill the holes.

The new P2 pulley block made from 1.5 x 2" aluminum tubing, with no metal cut away near the belts- not necessary.  Larger tool access holes, smaller Y axis bearing block, opto endstop flag mounted on top.
The new pulley mounts had the pulleys positioned closer to the X axis guide rail than the old ones, so I needed to move the extruder carriage belt clamps a little closer to the X axis guide rail, too.  All I had to do there was drill new holes for the screws at the right position to keep the belts parallel to the X axis guide rail.  The original printed ABS belt clamps, three years after installing them, have held up well, and I can see no evidence of distortion due to belt tension and heat.  This is why I print with ABS instead of PLA.

Left side belt clamp on the extruder carriage moved a little closer to the X axis guide rail.  You can just see the edge of one of the original mounting holes peeking out from under the edge of the clamp.
In the original design, the belt clamps were able to fit inside the P1 and P2 pulley mounts when the extruder carriage moved to the ends of the X axis.  There was no change there- they still fit so I get the full range of motion in the X axis.

Extruder carriage at the right end of the X axis.  The right side belt clamp disappears into the P1 pulley mount without touching anything.

The extruder carriage at the left end of the X axis.
When I installed the new guide rails, I aligned the left side rail with the edge of the aluminum plate on which it mounts.  I made a spacer bar from a piece of aluminum scrap and drilled holes to mount it on the Y axis bearing blocks, then starting at one end of the Y axis, screwed the right side guide rail down as I moved the bearing blocks along the rails.  That put the rails into parallel alignment.

After that I mounted the right side of the X axis guide rail and the spacer on the back of the P1 pulley mount (had to do that first because the pulleys would block access to the screws), then mounted the X axis bearing block on the left side (P2) pulley mount.

Next I installed the pulleys and all the nylon washers used as spacers, and then mounted the X axis on the Y axis pulley blocks.  The next steps were to check and adjust the level of the X axis guide rail and then to reassemble the extruder carriage and connect the cables.  

The final job was to tweak the config file because the range of motion changed by a few mm, adjust the bed level, and then run a test print to check squareness of the X and Y axes.

I initially thought this was going to be a real PITA job, but it turned out to be pretty easy.  I was able to access everything from the front openings of the printer so I didn't have to take any of the side panels off the machine.  That would have been a pain because the side panels fit into the slots in the frame and I would have had to take some frame members out to get the panels out.  I never took the belts out of the belt clamps, and was shocked to discover that when I put it all back together and ran a test print, it came out perfectly square- I didn't have to tweak the belt tension (that's how you get X and Y square in a corexy printer) at all!

The latest view of the XY stage of the printer.

I put a copy of the Fusion 360 CAD file of the XY stage here.  Note- the design was originally done in DesignSpark Mechanical, and someone was able to port it to Fusion360 for me.  That process isn't very neat so if you look at the structure of the components in the browser, it's a bit of a mess.  I tried to clean it up a little, but it's still pretty bad.  As I do more work on the printer it should get better over time, but don't hold your breath and wait.

If you were going to try to build this XY stage, you might consider that the P3 and P4 pulley mounts in the back corners don't have to be made from 2" square tubing.  They can be made of 1.5" x 2" tubing.  Both motor mounts can be made from 1.5" x 2" tubing, too, with the upper belt mount sitting on a printed spacer.  That means you can buy a single short piece of 1.5" x 2" tubing to make all the pulley mounts and the extruder carriage belt clamp mount for the XY stage.

Update: 2/19/20

I replaced the printed ABS Y axis endstop flag with one made of aluminum.

New aluminum Y axis endstop flag made from a scrap piece of aluminum tubing.

UPDATE: 3/30/20

I tested the precision of the optical endstops and wrote another blog post that you can read here.


  1. Hi Mark,

    Thanks for presenting us this great design! I found this site when I had a look at the SecKit 300, which has some similarities in the XY stage to your design.
    After finishing my self built first CoreXY printer that is a more stable and enhanced version of a Tronxy kind type but with certain enhancement to the frame, a direct driven BMG, heated bed with ALU plate using a 230V silicone heater and Pertinax plate on top (all filaments stick great so far), I would like to get in a full-metal machine with the ability to print ABS, PC, ASA in a closed frame and your design would completly fulfill these criterias.
    I think I have read somewhere in your blog that you wished to have the XY motors integrated in the frame instead of exposing them out of the front. How would you have done this as the belt tightening mechanism would be an issue then (screws to the motor cube not freely reachable from the bottom of the Y plate)?
    Next thing I would like to change is the extruder carriage. My idea is to put the extruder motor within a 50/40mm cube as carriage and put the BMG right on the front of the carriage with a Mosquito hotend directly inserted to the extruder - very short and lightweight. I am not sure, but it looks like if there could be an issue with the top position of the heated bed not being high enough to touch the nozzle in such short-height configuration of extruder/hotend - what do you think?
    I am able to share any modifications in the design (Fusion 360) if wished, but it will take time...


    1. As near as I can tell, the guy who sells the SecKit printers copied my design from the stuff posted on the RepRap forums. He even had the balls to ask me for some technical help on the forums as he designed the kit to sell.

      I run the enclosure at 50C and the X and Y motors don't heat up much in operation, so they can go inside the printer which means there would be no need to cut openings for the belts in the front panel. That might require making the entire printer frame larger, so maybe it's OK the way it is.

      Your extruder carriage idea sounds good, but you'd have to make the Z axis a little different from mine in order to make it work. It shouldn't be a big modification. Maybe the XY stage can be flipped over...

      The extruder carriage in SoM is similar to your idea- the carriage is made from a 2" square aluminum tube and the extruder motor fits inside the tube. You can see it in this picture:

  2. Mark, first I want to comment you on a great blog. I have learned a lot from you, regarding CoreXY printers and implemented this on my RepRap 400 mm cube implementation of the OpenBuilds Plastic Beast. I am using the SKR Pro V1.1 with LCD screen for the controller with TCM 2130 stepper drives in SPI mode. I did not implement sensorless homing. I implemented X & Y end stop at -10 mm.

    I discovered a problem. If I move execute a move from position 0,0 to 0,400 (G1 X0 Y400). During the 2nd half of the movement (y > 200 mm) the carriage starts moving left (x < 0). When executing the reverse, ie (G1 X0 Y0), the reverse takes place. This movement is at least 5 mm.

    I cannot think that this is a mechanical problem.

    Any thoughts on this?

    1. It doesn't seem likely to be a mechanical problem- at least not one that wouldn't be obvious upon inspection. I am not familiar with that controller, but it seems likely that there's some issue with the signals to the driver chips. Maybe the timing needs to be tweaked if there's some way to do it in the configuration files. Are you doing anything like switching the driver modes based on speed- stealth chop or spreadcycle? Maybe speed/acceleration is set too high for the mechanism to keep up?

  3. Mark, thank you for the reply.

    I did implement stealth chop and spreadcycle. I will investigate all your suggestions and report back. What I find strange is that it starts on the second half of the travel. I investigated by performing a 45 degree move, thus only one stepper is turning, to see if the second motor turns in error. It did not.

    By the way, I find this an effective way of calibrating CoreXY X- and Y Steps/mm since one only activates one axis at a time. And as X-steps/mm = Y-steps/mm, one perform two calibration steps in one go. For other interested parties, the only thing to keep in mind (as an example) is that for say 100 mm 45 degree travel, the X-axis (or Y-) travel command is 0,707*100 mm.

    1. Make sure that the drive pulley set screws are tight- if there's a loose screw and the motor shaft has a flat, the pulley may rotate a bit on the shaft.

    2. Good day Mark, some feedback/update for future reference.

      I adjusted acceleration, velocity, jerk... no difference.
      I configured various stepper parameters (spread cycle ect), no effect.
      I swopped driver boards, no effect.
      I used DRV8825 drivers, no effect.

      The stepper belt pulleys are secure.


    3. Does the machine use steel core belts? The steel wires can break from over flexure around the small diameter pulleys in a 3D printer and the rubber part of the belt can stretch over the wires resulting in very strange behavior, such as you are experiencing.

    4. Hi Mark

      I received the belt today (wow, same day delivery).

      I can confirm, it was/is the belt. I just so happened that both belt were broken on more or less the same but opposite sides. This resulted in experiencing the same effect in mirror image. There was not enough stock for both belts, so I replaced the one in the mean time, as an experiment.

      I can confirm that a broken belt inner cables caused the problem.

      Any thoughts on Neoprene Rubber and Fiberglass Reinforced belts vs Polyurethane with steel core belt?

    5. Yeah, one thought- don't use steel core belts! They stretch less, but require very large pulleys to prevent breaking the internal steel wires. They also require a lot more force to bend around pulleys which means the motors have to work harder. See:

  4. Thanks Mark

    I actually came across a post (,833097) that suggests exactly that. I ordered some GT2 belt today to replace mine. I was going to post my findings once I replaced the belt. I'm quite confident that this is the answer to the problem. I hope to have good news by the weekend.

    Based on your earlier blog, I increased my pulley diameters, and improved my belt//to XYZ.

    I truly appreciate your time spent replying to my posts.


    1. Let me know if the new belts solves the problem.

  5. Good day Mark

    I'm happy to confirm, new belts solved the problem.

    Thank you for your blogs and speedly replies.


    1. I'm glad you were able to fix the problem. Now to move on to the next one...

  6. Mark Hi,

    Great posts and writeups, can you confirm that you run toothed belt side towards smooth idlers (bearings in your case), no issues with that ? (Gates design manual states that toothed idlers should be used) thanks a lot.

    1. Yes, belt teeth run on the smooth pulley surfaces with no issues. It works because of the large diameter of the pulleys. There's a Gates white paper somewhere that says you should have at least 9 belt teeth in contact with a smooth pulley. In a coreXY mechanism, the belts wrap about 90 degrees on the pulleys, so that would require a pulley diameter equivalent to a 36 tooth pulley. 36 x 2 mm / pi = 22.9 mm diameter. The F608 bearings I used are 22 mm in diameter.

  7. Nice work! Do you recall if you were able to create the ordinate dimensions in DesignSpark Mechanical or were they added after you moved the design to Fusion360?

  8. I'm not certain, but I think I put them in in DSM. That said, they probably wouldn't transfer to Fusion, so maybe I dimensioned in both. Is there a dimension that needs clarification?


Leave comments or a questions here and I'll try to post a response as soon as I can.