XY Motion System | Design

A DIY tool changing 3D printer

The most important part of a 3D printer IMO is the XY motion system. Thats why it is the first part of the design I have focused on. Now it is finished!
A few things changed from the concept design, but the design is generally still the same CroXY style kinematics – Why CroXY?

This is what my design looks like:

My XY motion system - Homed position.

Guiding The Motion

A CroXY motion system uses 4 stationary profile rails and two moving profile rails to guide the motion.

I use MR12 size for the stationary rails mounted to the XY frame. MR9 size rails for the moving rails to reduce weight.

I use CPC chieftech rails made of stainless steel. They are close to HIWIN quality and you can order them in any size and preload class. For us EU people the best source I found is Dold Mechatronics.

I have chosen to go with long blocks in the VS preload (no clerance) to increase the torsional stifness of the system. I would have prefered to use a higher preload for the gantry expansion blocks but the lead time is redicouless..

My gantries are mounted with a second carriage block in one end to allow for thermal expansion without causing wear or even binding when heating to 80C (Cudos to Mark Rehorst for the idea).


My XY motion system will be moving up and down in Z. Therefore, it is built as a stand-alone assembly that is not a structural part of the frame. Moving in Z or not, it is really convineant to be able to easily remove the XY motion system entirely from the machine for maintenance and or upgrades.

The frame is build from 20×40 extrusions and assmebled with blind joints. It weighs 2.1 kg. Not much more to it.

4 optical end stop switches are placed on the frame. The reason to use 4 endstops are that each motor is homed individually during homing. No matter who or how the gantries are moved around when the machine is unpowered it will always correct itself and return to a proper squared alignment during homing. I chose to go with optical end stops to avoid any wear on the end stops. I know that a micro switch can handle many cycles, but a optical switch can handle infinetly many cycles. Besides I would like the machine to home relatively fast. This will be really tough on mechanical switches. but the optical swithces wont care.

Optical Endstops at XminYmax.

Drive Assembly

All 4 drive assemblies are identical. They are made of a Pulley block mounted below the frame and a stepper motor tower mounted on top of the frame. This design is made to increase the stifness and life of the motion system. The pulleys are supported in both ends by a much larger bearing than those found in toothed idlers. This greatly increases bearing life. It also reduces the load on the motor to pure torque, which will also greatly increase motor life.

The pulley blocks are made of two identical pieces of aluminum. The two pieces are spaced with 4 pices of M5 OD 8mm 25mm long aluminum standoffs.

The motor tower is made of two 5mm carbon fiber plates spaced by 4 pices of M5 OD8 30 mm long standoffs. The plates will be cut from carbon fiber because I know a really good and cheap source for carbon plates – simple as that.
The 30 mm standoffs allow room for a Ø25 L30 shaft coupling. I plan to use a Flexible jaw coupling. I will however, compare to a Bellow and solid shaft coupler to see the effect on ringing. The flexibel coupler will be the ideal choice if it does not negatively impact printing as it allows for some misalignment. It dampens and it is much cheaper than bellows. The motor is mounted on a stepper dampener. This is done to reduce noise, but I will compare both with and without to see if it affects the print quality.

I am using W625-2Z berings as they have roughly the same diameter as the 20 teeth pulley. I use metal shields to reduce friction. I chose 9 mm belts. Given the very short belt path, 6 mm belts would probably do fine. But in an attemp to reduce ringing I went up one step. 12 mm would be total overkill and just introduce more resistance. 


XY Drive Unit

Belt Tensioner

I have chosen to do the belt tensioning on the moving part that connects the gantry to the carriages. This allow me to have a simpler Drive Assembly and I can even use the exact same belt tensioner for the Z-Axis.

The tensioner consists of a aluminum base. The base has a cutout for the belt in one side that allows the belt to be looped around a screw and catch its own teeths. On the other side there is a cutout for a slider. This slider has teeth all the way around and by tightening a set screw this slider can be moved to tension the belt. The whole thing is closed off with a minimalistic carbon top plate. The plate keeps the belt and slider in place by slightly compressing them, as well as suppports the screw that fixes the belt.

On each end of the base part there are 3 M4 threads. These are used to mount the gantry.

Belt Tesnioner Assmebly

The only downside to this design is that it weighs 42g. Thats 84g added to the gantry. However, it is very stiff and relatively simple prooven design.

Gantry Design

The Gantries are fairly similar in design. The only differences beeing that the X-Gantry is 50 mm longer and lowered compared to the Y-Gantry. They are based on a Carbon fiber tube with a MR9 rail. But instead of using a traditional rail with M3 countersunks I use a undermount rail with M4 threads. This means I do not have to worry about nuts or threaded inserts of any kind. I plan to use aluminum bolts to reduce weight.

Cross sectional view of undermount rail installation.

The Rails are mounted on the side of the gantry tube instead of the top or bottom. This is done to remove any thermal expansion effect on the Z direction. A gantry this long can easily bend 0.5 mm in the middle when heated to 80C (Dificuilt to analyse eactly on Carbon fiber without knowing a lot more details on the tube). This is neglectable in the XY plane over the full 450mm length of the gantry, but it corresponds to 10 layers at a 0.05 resolution! Yes bed mesh can compensate for this, but I rather not have that deflection in Z  at all.

Both gantries are fixed in one end but in the other end they are mounted to the belt tensioner via a second carriage block. This allows for differences in thermal expansion without issues with jamming or exessive wear. After all, the aluminum frame expands much more than a carbon fiber tube which has a thermal expansion of roughly 0. The tube and block are connected to the belt tenioner via a carbon fiber plate. These plates also holds a long M3 set screw used for adjusting the end stops.

Y-Gantry ends.

Motor Chioce

I have been looking at MANY differnet motors from Moons, to E3D, to OMC, and LDO. I have considdered NEMA 17 vs NEMA 23. Servos vs. steppers. 0.9 vs. 1.8. I have used Eddie the engineers excel sheet to simulate all these differnet motors. Through various reading and discord chats (namely Annex engineering) I came to the cocnlusion that NEMA 17 was probably the best size for this kind of setup.

Given that the motors are located in the chamber I either have to use the water cooling on the motors as well or choose motors that can handle the 80C chamber.

Eventually I narrowed it down to either the 1.8 degree LDO-42STH48-2504AH or the 0.9 degree equivalent LDO-42STH48-1684MAH. They can both handle a coil temperature of 180C which should be fine. If not.. Then I have the water cooling a hand anyway.

Finally Simon Vez made just the comparision I needed:

So as he did, I have chosen the 1.8 degree LDO-42STH48-2504AH. This is the theoretical perfromance I can expect on 48V. That is neglecting everything called friction though. On 24V it would only be half the speed. I have choosen a 500g weight as I do not know the exact moving mass yet. But the Y-gantry will weigh around 500g. That leaves 500g for the tool head (two motors). I set the acceleration to 10.000mm/s^2 – Roughly 1g. It seems I should be able to safely reach my goal of 1000 mm/s at 10k. Depending on final tool head weight and total friction in the system I may even be able to increase the acceleration to 20k.

LDO-42STH48-2504AH Torque Graph at 48V, 10k acc. and 500g pr motor.

Read More About

A DIY tool changing 3D Printer

Notify of

Inline Feedbacks
View all comments