Testing the precision of Elegoo Mars – Volume 4: More observation, no solutions

Since the last post I have made many more experiments regarding the Z-issue on Elegoo Mars.

First, I tried to mount an indicator to the Z-axis. I mounted it in the middle of the arm carrying the print bed and printed my test model. To analyze the results, I aimed my phone camera to the printer to capture the measurements. I performed both dry and an actual print run. You can find the whole, uncut footage of the experiment here (warning, it is really boring):

Then I took the footage and put the numbers in a table (direct link to the table):

Continue reading “Testing the precision of Elegoo Mars – Volume 4: More observation, no solutions”

Testing the precision of Elegoo Mars – Volume 3: New view on the Z-axis problem

In the previous post, I observed squashing of the prints in the Z-direction near the build plate (roughly first 20 layers). I have discussed the problem on the Elegoo group on facebook and some of the people suggested it might be related to viscosity or surface tension of the resin itself – when a thin layer of resin forms it can either push the build platform away from the print due to viscosity or it can pull the platform closer due to the surface tension. Therefore, I run some experiments.

I appended the results of my experiments to the table starting with sample 6 (direct link to the table):

There are several interesting outcomes. First, when I introduced a 40-second delay before exposure (sample 7) I was expecting to get things better if the problem is caused by the viscosity of the resin, which is pushing the build plate away. However, I would say it had nearly the opposite effect.

So I tried the opposite – to increase the drop speed. I observed no difference in the result. It might be caused by not actually increasing the speed – there might be a software limit in the firmware and I haven’t measured the actual speed.

The last experiment is the most interesting one. I tried to print the full print bed of the material with the staircase:

The object around the staircase is only 1.5 mm tall, the staircase is 3 mm tall. The first layers of this sample (number 9) have the height of the first layers nearly good (it might be related to the precision of leveling), however, once the object ends, it gets flat. See the graphs in the table and a photo:

I have then tried to print just a frame around the build plate, however, the results were the same as in previous experiments. Therefore the problem is not related to the lead screw (as it happens practically on an arbitrary height) and occurs whenever a large surface area of a layer is printed. It means that printing on supports is not the solution to the problem! Imagine printing a box – when the flat bottom ends, the walls near the bottom get distorted. Tilting the prints could help, however, it requires supports and on many of my planned parts, it is undesirable to put the supports on the sides as they are functional surfaces which should not be distorted (or it might be too much work to polish them up).

Interestingly enough there is one more observation – the layer height distortion happens only when the dense layer ends – in my test case the layers between 0-1.5 mm have a rather good thickness. From the table, it seems like the effect takes place once there is a vertical gap between large surface area on a build plate and the FEP film between 0.1-0.5 mm. However, I have no explanation of the phenomenon yet. Last what I struggle with is the fact that if it would be simple FEP film deflection, it wouldn’t cause a change in the total object height. I would expect the object to have the correct height as the other layers will be a little taller. This leads me to an idea of actually losing steps on the stepper driving the Z-axis. But I have not verified yet.

Do you have some observation, ideas? Please let me know! If you try to reproduce my experiments, let me know!

Testing the precision of Elegoo Mars – Volume 2: XY plane

As I mentioned in the previous post I am for printing precise mechanical components with Elegoo Mars. I have already tested the dimensional accuracy in the Z-axis direction. If I omit the precision problem near the build platform, it is sufficient enough.

The dimensional precision of the printed components in the XY direction is affected by the following constraints:

  • the display itself. Here I assume it is precise enough. If not, I could tweak display size in the slicer.
  • Exposure and “overgrowth”. If you cure the resin for a long period of time, some of the UV light gets reflected from the resin itself and therefore it exposes the resin around the exposed area. This leads to a bigger outer and smaller inner dimension. There are two ways to compensate for it – you can lower the exposition time or you can compensate in the slicer.
  • Linear shrinkage of the resin. Like all resins (epoxy, polyurethane, etc.) even the UV curable resin change their dimensions (usually shrink) during curing. Usually, the manufacturer provides information about shrinkage in the datasheet or you can try to measure it and compensate for it.

I have a rule – in the CAD I design the components as they should be in reality. I do not want to put any compensation in my CAD models. I want the manufacturing process to take care of them: e.g. the slicer does it itself or I have a script to post-process my CAD models. Luckily, ChiTuBox can compensate for all the sources above.

To compensate for LCD size, you can directly change its parameters in the default setting dialogue of the print. See image below. However, I think there is no need to do that.

To compensate for the overgrowth, you can only tune the exposure time in the ChiTuBox menu. However, this has a problem that incompletely cured layers, which don’t overgrow are in some cases not strong enough to support the print. Fox example with Elegoo Gray, exposure time of 4 seconds leads to quite precise components. However, if there are massive planes, the risk of breaking the prints are quite high.

Luckily, if you export the profile and open it in a text editor, you find out it is just a plain text file with key-value pairs. There are two interesting keys: edgeCompensationPixel and edgeCompensationTimePercent. I expect the first one to shrink the sliced by the given number of pixels using the traditional erode operation on images. It can be used to compensate for the overgrowth. The second one seems to scale the entire slice – which can be used to compensate for resin shrinkage. You just edit the values and import the profile back. A little inconvenient, but better than nothing.

Actually, the previous two paragraphs are not true. The compensation feature does not work and the experiments below are results of bad labeling of my files (I mismatched the exposure settings in them). I plan to publish a new post with corrected results and alternative solution soon.

To find the right values I modeled a simple test piece (Fusion 360 model):

These pieces should form a press-fit – they should go inside each other but the joint should hold and it should require some force to put them together.

Then I printed them twice for every setting – one set aligned to X and Y axes, one set tilted by 30 degrees in the Z-direction. The tilted set should verify how the joint behaves when it is not a nice straight line but is formed out of pixels. The printing was time-consuming as you have to print for each setting separately – I haven’t hacked the printer and process to support multi-exposure prints.

My results for Elegoo Gray are 5.5 seconds exposure time and edgeCompensationPixel is 2. I did not compensate for shrinkage as it is probably insignificant for the size of my prints. This gives me nice results really close to expected size and expected fits:

The only downside right now is that ChiTuBox does not support separate compensation for the first layers which are over-exposed to stick well to the build platform. Hope it will be available in the future along with the option to specify compensation parameters in the GUI.

Testing the precision of Elegoo Mars – Volume 1: Z-axis

I have recently bought a new SLA printer – Elegoo Mars. For 250 € it is a wonderful device (I have to admit there are some minor flaws, but for the price).

I am interested in making precise mechanical components with it. Small teaser – you can make herringbone gears with module M0.5 or even M0.3. Wonderful. However, during my experiments, I have found a strange behavior regarding the height of the components. It seems like the first 5 layers have a wrong height. Therefore, I prepared a test piece and performed some measurements.

The test piece is simple – it is a staircase with steps of 0.2 mm in the Z-axis and 1 mm in the horizontal plane. Then I printed the piece several times and measured the height of the steps.

Numbers 1, 2 and 4 were printed directly on the bed. Piece number 4 was printed on supports (3 mm height). See, that pieces 1, 2 and 4 seem to have a thin beginning. My measurements confirm that (direct link to the table):

As you can see the printer is quite precise, however, there seems to be something wrong with the first 1 mm of the Z-axis – once I lift the model on the supports, the problem disappears. Note that I sanded the bottom of the lifted model, as the overhangs are always a little bit convex. I examined the sliced files with Photon File Validator and they seem fine. Therefore there has to be something wrong in the printer – either buggy firmware or hardware error.

I haven’t found the cause of the problem yet – do you have any ideas what could it cause? Does your printer feature the same behavior? Test it and let me know. Here is the Fusion model: https://a360.co/2NlHemW.