Quantified Stiffness

I am contemplating some mods to improve stiffness, in particular for the case of taller-than-recommended Z axis.

I have made some measurements using a known load and a dial indicator, although it was a while ago and I lost them, so I will measure again. The idea is that by measuring the deflection at different locations, I should be able to estimate the stiffness of the individual modes of flexing. I’ve drawn some cartoons showing four modes that seem most significant:

  • "Twist" is deflection of the z-axis away from vertical
  • "Bend" is horizontal deflection of the gantry rail
  • "Belt" is stretching of the belts or zip ties
  • "Rack" is parallelogram deflection of the legs
The method I'm using to measure stiffness is to use cords and pulleys to hang weights to pull horizontally at the bottom end of the Z axis. I fashioned a pretty simple pulley which I've posted here: https://www.thingiverse.com/thing:3696218

I was a reluctant to post numbers before because I am afraid my assembly might be poor, and low stiffness might reflect poorly on my machine and possibly on MPCNC. But it’s essential to have numbers if I’m serious about making improvements.

What I am wondering is what the target should be for stiffness in terms of mm per kg. I am just starting to search online and am nowhere near a sense of what stiffness would be considered “decent” for milling aluminum or steel. A starting point would be stiffness of a well-built MPCNC that is capable of milling steel.

I’ll post my numbers later tonight and I’m hoping others might take measurements and share, or point me in the direction of some good information on stiffness, or advise me if my measurement-centric approach is not the right way to think about this.


To measure deflection both ways I hang one weight 1.9 kg in weight, which pulls in the positive X direction. Then I have a second weight of 3.8 kg arranged to pull in exactly the opposite direction for a net pull of 1.9 kg in the negative X direction. By lifting the heavier weight I can shift from -1.9 to +1.9, back and forth and see how the machine moves.

I attached the cords to the Z axis at a point 110 mm below the bottom of the center assembly. The outside dimensions of my machine are 895 in X and 577 in Y. The legs are long: the distance from the table to the underside of the side rails is 235 mm.

These are the measurements:

  • 1.65 mm deflection at point where force is applied
  • 0.48 mm X movement of roller rolling along y max rail
  • 0.58 mm X movement of roller rolling along y min rail (belts are evidently not equally tight)
  • 0.61 mm deflection of gantry rail near center
  • 0.61 mm movement of center assembly in x direction
  • 0.127 mm movement of corners
From the differences between these movements I'm inferring:
  • 0.127 mm racking of legs
  • 0.41 mm belt stretch
  • 0.075 mm bending of gantry rail
  • 1.04 mm twist of Z axis
The deflection per kg would be these numbers divided by 3.8.

The twist of Z axis is the worst, which confirms what I’ve heard essentially everyone say. The belt stretch is I think my fault, because my zip ties are not fully straightened and I can see the zip ties move. I think this is also why the two X belts show substantially different deflection.

Racking of the legs is fixable with added supports. This context also shows that it is hardly worthwhile without attention to other modes of deflection. These other deflections are not so easy to remedy. Belt stretch can be improved with Leon’s (BraunsCNC) approach, and I’d be interested to see how much it improves.

I am also expecting to find that 1.04 mm twist of Z axis (at height of 4 3/8 inch below the bottom of the center assembly) to be due to poor assembly or some other imperfection on my end. I don’t know what is typical but I have a hunch this is not normal.


I don’t have anything to add at this time but I’m commenting to commend you for your approach and also so I’m notified of any updates you post. Good work!

This could get interesting.

Make sure on zip tie on each side is pulling the belt completely tight against the corner, that should instantly halve any issue you have. Than you can either shorten or lasso the other end if you lasso it just warp another tie around and get rid of any bulge your tie might have. I wouldn’t call it stretch unless you test just the belt outside of the system as I doubt the belt is adding much actual stretch.

As for actual required rigidity super tough. The calc linked on the basics page has a load number, no idea how good it it is but I know it came up with 1.2kg for, what I consider to be, a beefy aluminum cut I made. I made the cut then put in the specs in to the calc to see what it came up with.

My quick and dirty test. Which is crazy, we have nearly the same numbers on different sized builds, with very different loads. I think that means overall rigidity is good but maybe the builds need to be preloaded a bit to get rid of that fist 1mm deflection. I had always thought about forcing a tiny bend in the 6 main rails…or the center need to get reworked again.


1 Like

Agreed the “belt stretch” is mostly not really belt stretching. I just realized I could probably print out the dual-endstop pieces and measure how much the belt is actually stretching vs. how much the ends are moving. Just to prove it and put numbers to it.

I’ll check that link and see if I can digest the measurements that have been done before. Thank you.

I don’t generally like to post my plans in advance, because I don’t want to jinx it and I don’t want to feel obligated, but this I need to share.

I am considering a stacked version with basically two MPCNC machines stacked on top of each other, with the Z axis traveling through both. Only the lower gantry would have a motor and lead screw to drive the Z axis vertically.

[attachment file=103735]

The upper gantry would constrain the Z axis from twisting. Both sets of gantry rails would have motors and belts like the MPCNC, and each motor driver would drive four stepper motors in series instead of two. I can get a 24V power supply to make sure I’m not running out of voltage with so many motors in series.

To maximize stiffness, I was considering extra stiff rails for the lower gantry and the Z axis, shown in yellow. The upper gantry need not be quite as stiff. This depends on the height, which I’ll get to in a bit. It’s fairly easy to find 1" (25.4 mm OD) tube with thick or thin walls, so I was thinking the yellow rails can be thick-walled, while the blue rails are cheaper. The green outer frame has lower stiffness requirement, and I was considering using 3/4" EMT to minimize cost.

I will need to design corner pieces that allow the legs to pass through, which should be straightforward enough. If I go with mix-and-match tubing sizes I will need to make a roller piece that rolls on 3/4" EMT but accepts a 25.4mm gantry rail, which I was thinking I would just take the “C” design and bore out a 25.4mm cylinder digitally on the STL file. The center assemblies would be unmodified “J” design since all rails are the same size.

Side panels of wood or diagonal braces would support the machine from racking. Mid-span supports on the lower rails would minimize sagging, but one interesting possibility is using the upper assembly to support the weight of the tool and Z axis, either though a counter-weight or some elastic. It seems to me the upper rails could sag a lot before it has a negative effect on the system, so why not have the upper rails bear all the weight. Apart from speed, I would have much less penalty for heavy tools or rails.

[attachment file=103736]

The height of the upper portion presents an interesting choice. Let’s say the lower rails are 1 foot from the deck, and the upper rails are x feet above the lower rails. Then one kg of horizontal force on the tool at maximum extension (minimum Z) produces 1/x kg of force on the upper gantry (in the opposite direction), and 1+1/x kg of force on the lower gantry. (This neglects the center assembly’s stiffness against twisting.) The mathematically “ideal” height is perhaps very tall, resulting in the Mostly Printed Telephone Booth :). But there are diminishing returns, so for practical reasons I will probably choose an overall height of perhaps 4 feet. Horizontal dimensions are not yet decided but won’t be more than 4 feet. With some thought into the corner design, it should be possible to make the height adjustable without disassembling the machine.

Cost wise, this build is definitely a higher expense. Most parts you have to pay for twice, but the tool, the z-motor and leadscrew, and the electronics are paid for only once. I’m estimating about $160 for motors, belts, bearings, PLA, and conduit. I don’t have a good number for thick-walled tube or the 5/16" hardware but my rough estimates are about $600 all-in.


I have mentioned before that I don’t have any “real work” to put this machine to use. This is entirely academic/entertainment. A certain minimum Z height does matter for a tool changer, and the tool change capability also demands more x/y area because it gets consumed by the tools. I have not yet looked seriously into a 4th axis (or 5th, ha), but I am expecting that it could require a decent Z height to fit under the tool. Also MPCNC as 3D printer would require some Z height, although it is a pretty silly waste of stiffness.

I know this “just in case” for everything is not the smart way to achieve any one purpose for real work, but since my purpose is experimentation I think it will serve me well.



I can’t wait to see it moving!

I also did my own measurements today. I also used a dial indicator, but instead of a fixed weight I used a “hanging scale” (not sure of the right term in English, I used this thing). I manually pulled the scale, looked at the dial indicator, and then noted the values.

My observations:

  • “Belt”: my belts seem to stretch 0.320mm per kg for a one meter long belt. (Determined from a simple regression using 3 different belt lengths and 5 weights per belt length, so a total of 15 measurements.) Quite similar to Jamie’s results in this post, where he finds values of 0.351mm and 0.377mm per kg per meter.
  • “Rack”: the XY frame tubes only move 0.005mm when I put 1 kg of weight on the end mill in horizontal direction. (My legs are a lot shorter, the metal part of the leg is only 85mm).
  • “Bend”: in another thread I estimated this at 0.040mm to 0.050mm for a one meter 304 stainless steel tube.

My measurement of “twist” is where it gets interesting.

I did not directly measure it (I tried, but didn’t work well). Instead, I put the gantry at a certain position and turned on the steppers. I measured the belt stretch at that position by pulling on the front roller with my scale. At that X position, with a 1 kg load, the belt stretch was 0.220mm.

Then I pulled on the end mill at various Z heights. That same belt stretched 0.133mm when I pulled 25mm below the bottom of the Z axis tubes, 0.128mm at 35mm, and 0.119mm at 45mm.

Around 62% of the force was on this belt, the other 38% on the belt on the other side. If 100% of the force would be on a single belt (the whole 1kg), the stretch would have been 0.214mm at -25mm and 0.192mm at -45mm. This is very close to the 0.220mm belt stretch I measured by pulling on the roller!
That would mean that the “twist” effect is very limited.

So, long story short, my measurements seem to indicate that a lot of the stiffness can be gained by reducing belt stretch. At reasonable stick out, “twist” seems to be a much less important issue. The “bend” is relevant, but also quite a bit less than belt stretch. “Rack” is almost non-existent for reasonably short legs.

I have been working on a “rack and pinion” style system using a rack cast in epoxy. I glued some GT2 belt to the bottom inside of a aluminum C section tube, closed the ends, and poured epoxy in it. It makes a perfectly matching rack for the belt. I’m still working on a roller that moves over this epoxy rack using a closed-loop GT2 belt and looks like a tank tread. I have seen something like it mentioned on the forums before, and I hope it works better than BraunCNC’s glued-on-GT2-belt-rack attempt. Anyway, so many ideas and so little time… :slight_smile:

1 Like

I like the idea of the tank tread rolling on a rack and I think it should have great stiffness. I had a crude conceptual sketch but the devil is in the details. It might need a nontrivial preload to maintain good contact between the belt-pinion and the belt-rack, but if someone can pull it off it would be great.

I am not sure how you are concluding that the twist is small. It sounds like you are comparing the belt stretch without twist (applying the force to the rollers) and the belt deflection with twist (applying the force to the tool at various Z), and allocating the difference to twist. I’m not sure that is valid because the adds additional deflection to the tool that you have to measure at the tool. One would expect the belt deflection to be the same regardless of where in Z the force is applied but the tool will not deflect the same amount.

Am I incorrectly understanding your measurement?

I’m going to replace the rollers with something of my own design. The straight forward way would be to put the rack on top of the tube, and let the tank tread ride on top of it. The weight of the gantry would provide the preload.

I’m a little worried that dust and chips will fall on the rack though, so I’m going to try to mount the rack on the bottom of the frame tubes. I plan to use three bearings similar to the current roller design, plus an assembly that holds the tank tread. This assembly will be adjustable, to set the right preload.

The epoxy rack has way more “grip” than a second GT2 belt. The GT2 teeth do not mesh that well with each other, but they mesh perfectly with the rack. So I’m hopeful it will work. We’ll see though.

Dang you’re right. I should think things through a bit more before posting. It does not (necessarily) mean that twist is small.

As I said, I tried to measure the tilt directly, but I didn’t trust my setup to be reliable. I’ll look into it further when I have some time (might take a while).

Today I took the time to measure the Z axis tilt under (static) load. I got a new stand for my dial indicator, which allows me to take more accurate measurements.

I measured a tilt of 0.014 degrees per kg of load. I estimate that a deflection of about 0.040mm is attributable to the tilting with a 1630 gram load.

I hung two different weights on the end mill, roughly 50 mm below the bottom of the center assembly. I measured the deflection of the Z tubes, once near the bottom (about 30mm above the load) and once close to the top (about 255mm above the load).

1630 grams of weight gave a difference of 0.090mm over a distance of 225mm, and 2300 grams gave a difference of 0.130mm over the same 225mm. Those both work out to 0.014 degrees per kg.

I measured belt stretch to be 0.060mm for 1630 grams and 0.090mm for 2300 grams. The gantry tube is 750mm, so I estimate it flexing roughly 0.015mm to 0.020mm per kg.

So belts + tube flex for 1630 grams would be around 0.090mm. I measured 0.040mm displacement at the top, and 0.130mm at the bottom. So the deflection due to tilt would be around 0.040mm. It also implies that the pivot point would be 15mm above the center of the gantry tube around which the Z axis tilts. I would expect the pivot point to be the center exactly, so the measurements and estimates are not 100% accurate, but it seems to be in the ball park.

This angle depends on the point where the load is applied, and I only measured it at a single point (at about 50mm below the bottom of the center assembly). Some of the tilt may be in the router or router mount, but I would expect the majority to be tilt in the Z axis.