(Final) Tuning the Elegoo Mars

After investigating the Z-height inaccuracy on the Elegoo Mars, and applying the official motor replacement sent to me by Elegoo (they have the best user support!) I was left with one unanswered question – what causes the last, quite small (roughly 2 %) linear error on the models’ height?

I started to measure the movement of the arm using an indicator, however, all the measurements looked good. I even measured the original screw using an optical microscope (see the raw data). It is pretty good – it features practically no jitter and only small linear error (0.2 mm/150 mm) which could be easily compensated in software.

Then I printed a large staircase (see photo below) which revealed the fact I was missing – the error is not linear. The printer prints some levels higher and some lower. The cause is in the combination of the long printing arm and the Z-rail. The Z-rail provides good guidance in the direction of the axis movement, however, it does not preserve the parallelity of the carriage and the axis. It means the carriage can “wobble a little bit” during the movent which translates into an observable difference in the Z-height on the end of the long arm (see illustration below). The reason I did not get the problem with an indicator was that I was measuring too close to the screw. My bad – there’s not plenty of places you can mount the indicator on the printer and I went with the easiest one…

There is no easy fix, however, as tuning Elegoo Mars become my hobby in the last few months, I decided to rebuild the Z-axis. You can see the results below:

I machined the new axis column and mounted two linear rails there. The columns are scraped so they are perpendicular to the display – currently, the perpendicularity is withing 0.03 mm/150 mm. I am not sure if it is an improvement over the original rail as I forgot to measure it. Also, the new rails were shifted so the linear rails are in a plane of the screw – this arrangement should minimize the wobbling of the carriages caused by the screw pushing to them.

I also decided to switch to a ball screw instead of the original one. Precision was not the main reason here – the original screw is pretty good and also featured practically no backlash when I used a casted nut. However, the casted nut has a too tight fit and squeaked occasionally. It was also an opportunity to use a proper screw housing with proper bearing. It also allowed me to mount the motor using a flexible coupling, thus to mitigate resonances from the motor. I used 1204 screw with appropriate FK10 housing.

I also changed the stepper driver to Trinamic TMC2025 – it supports StealthChop – a special current chopping, which allows the motor to move practically silently. I also changed the fan for quiet one.

Note that the modification are not final yet – some prototyped 3D printed components need to be properly machined (this is mostly as a proof-of-concept) and the wiring needs to be tidied a little.


The most noticeable improvement is the reduction of noise during printing. The printer is quieter than many laptops. I have also verified the printer produces square models that fit nicely together – and most importantly have the correct height. However, there is minimal or no improvement in the surface finish – it stays pretty much the same (as there is not much to improve anyway). So if you are printing minis and not functional pieces do no bother with such tuning.

If you are interested, you can download the CAD files for modification: https://a360.co/36D6BHS.

Did you enjoyed the post? Consider supporting me on Kofi:

Back To Top