Parallel LED Array For Elegoo Mars: Higher Precision, 3-4x Faster Printing

As you may have noted from my blog, I tune Elegoo Mars for better performance as my hobby. After the complete rebuild of the Z-axis, making it quieter, more-precise in XY direction, and easy print removal, I focused on printing speed.

I have already experimented with making the screen monochrome, however, due to lack of resources (dead screens) I abandoned the idea. The second way is to tune the light source. You can already buy LED lamp replacement, but what hobby would it be if just bought everything? Also, their parameters are not as good as my aims.

One disclaimer – the whole build was performed during the lockdown period during COIVD-19 outbreak, so many manufacturing and supply options were limited. Therefore, some of the approaches presented in this post are rather hacky and I would make them differently during normal times.

I decided to build a 7×4 LED array. The reason for going for such a high number of LEDs is to limit their radiation cone – the goal is to produce as parallel rays as possible. With fewer LEDs, I would need a wider cone. When you have rays under an angle, it leads to a side exposure and imprecisions in the print. I used LG6565 – 10W LEDs which emit peak wavelength 405nm. That’s 240 W. Original Mars is roughly 30 W.

I created a simple PCB. I used copper-clad with an aluminium substrate to provide better cooling. Normally, I would buy sodium persulfate and etch the board. However, during COVID outbreak all the drug stores were closed so I just cut the board with an X-acto knife and peeled the excessive copper. Soldering the LEDs on the aluminum substrate was not an option and reflow oven was out of the reach – so I just cut pieces of solder wire, put them on the PCB, put some flux on it, and put it on a gas stove on a thick piece of steel. After 2 minutes, the solder melted, the LEDs nicely arranged. After attaching some wires, the PCB was ready. To improve the cooling I also mounted a beefy heatsink to the backside of the PCB and I added two 60 mm quiet fans.

To drive the LEDs, I decided to go with a separate power supply. I used a switching boost constant-current DC/DC converter bought on Aliexpress. I decided to power it from 24 V to make it as efficient as possible. I added a MOSFET for switching the LEDs. To make things simple, I attached wire on the gate of the original on-board MOSFET for LED switching. One note – the LED array is really bright! There was also a lot of heat coming out of it – but not the excessive heat in the heatsink – the blue light itself carries a lot of energy and you could feel warm even when you put your hand nearly meter from it.

This was the basic prototype. Next, I focused on making the light rays parallel. First, I started with designing a mounting bracket, which features ribs shuttering the light from neighboring LEDs. It limits the angle to roughly 45 °. I printed in 2 pieces on my Mars. I painted the insides of the ribs with Black 3.0 to limit the reflection.

Then I decided to create custom lenses to make the beams parallel. I wrote a simple Python program to calculate the shape of an aspheric lens, which in theory should make the beams parallel.

I decided to cast the lens from clear epoxy. First, I measured that it has roughly the same transparency for 405nm light as glass by casting a test piece and using a photoresistor and 405nm laser pointer. Then I measured the refractive index of the epoxy by shining the laser pointer in it and drawing the light beam path on a paper underneath the test piece. Then used the program above to create a spline sketch of the lens, created a 3D model in Fusion 360. Then I offset the lens surface by 0.05mm and printed it on my Mars using Siraya Tech Fast resin. After printing, I mounted the lens in a hand drill and used sandpaper (grid 400, 600, 800, 1000, 2000, and 4000) to polish it. To finish it, I used a fine abrasive paste to create a glass finish.

Having the shape of the lens, I created a silicone mold and cast the lens out of the epoxy. To my surprise, it worked! The lens was nicely transparent and few experiments with my headlamp showed it does what it is supposed to do – when you put LED in the focal point, it produces a nice circle of light. To verify the parallelity of the beams, I pointed it at a wall roughly 2 meters away. On 2 meters, the casted circle had a diameter of 100 mm. That means that from the initial 45 ° cone of radiation it went to 4 ° – not bad for a homemade lens from scratch!

The next challenge was to create 28 of them. Since the epoxy cures 48 hours I decided to create multiple silicone molds, put them in a frame, and cast a single piece lens. I struggled a little with capturing large bubbles inside the mold, but after two fails I cast a usable piece. Well, sort of. The individual lenses work, unfortunately, the boundaries between them have a lot of artifacts. Therefore, the result was not good.

I run few tests prints – with and without the lens. My observation were the following:

  • the 0.05mm layer cure time for Siraya Fast and Elegoo Gray was 1 second
  • the lens caused some blind spots – which was expected,
  • surprisingly, I observed much less exposure bleeding without the lens compared to the original Mars light source,
  • there was no significant difference in exposure bleeding with and without the lens,
  • the resin was easily able to reach 50 °C – the amount of light energy carried in the light is really high. In such conditions, even the thickest resins are nicely thin and practically water-like 😛
  • I overestimated the LED cooling and the heating never got hotter than 5 °C over ambient temperature,
  • with such short exposure times, build platform peeling and retraction takes most of the print time – you expose in a single second and then it takes 5 seconds to peel the layer…

My first impressions were good. The mod was working and I was getting nice prints. I didn’t need a heater, actually, I was considering building a cooler for the build area. However, after 10 printing hours, I started to observe weird print failures. The models did not stick, were soft, and broke often. Increasing the exposure time did not help. I noticed, that the LCD is not as bright as it was. It was actually pretty opaque, but there were no dark spots on it like in the case of “common LCD failure”. Probably the heat killed it.

Therefore, I decided to cut the LED power in half (120 W) and to add an extra fan, which blows the air from the side of the array and therefore, creates a constant airflow below the LCD which cools it. After this mod, my exposure times are around 2-3 seconds per layer and the resin stays cools. Even it is double the original value, the printing times are reasonably low as most of the time is consumed by layer peeling. With this mod, I printed over 150 hours with a single LCD and it serves me well. I do not observe any damage except the damage I caused by accidentally scratching it. Note that it roughly equals to printing 600 hours on unmodified Mars.

To sum it up – you don’t need monochrome when you have enough power (and enough cooling)! Well, to be more serious – this was an interesting experiment and I am personally happy about the results. The mod itself is rather hacky and therefore, I do not publish any materials to reproduce it. It was a nice fun project during COVID lockdown, but it is not suitable for people to reproduce it. Currently, I am out of time and energy to invest into finishing this mod into a reproducible form. This is also why this report is quite brief and not-so-detailed as I was originally aiming for.

PS: It makes no sense to make commonly available lenses! Buy them! I made the lenses only as challenge and a hobby. It (kinda) works, but probably is not worth your time.

Tenacious by Siraya Tech – a Versatile Resin

Recently I got in touch with the customer support of Siraya Tech – my favorite resin brand. I love their Fast Grey resin – it is easy to work with, it is low viscosity resin, which is not brittle. The only downside is that you cannot easily buy it in Europe. I hope it will change soon!

They offered me to test their Tenacious resin – the resin I wanted to try for a long time. You can find a lot about the resin on line. But I wanted to have the first-hand experience.

The resin comes in 500g bottles

Tenacious is marketed to be flexible, rubber like with high impact resistance. The exact opposite you are used to with standard resins like Elegoo or Anycubic.

The resin is light yellow and semi-transparent. When you open it, it smells similar to Siraya Blu. The smell isn’t bad – to be honest, I find it quite pleasant. It is is a viscous liquid.

To test it, I decided to print tips of legs for a walking robot. The tips should be soft and provide friction for the legs to not slip on the floor. Since Tenacious is marketed as rubber-like, I thought it could be a suitable option. The resin was easy to print on my Elegoo Mars and the prints came out great. However, I was disappointed with the results. The parts were quite hard and did not provide enough friction. Even when I hollowed them to have a 3mm wall, a 2mm wall, and a 1mm wall they were still too hard for this application. And too slipper. Note that this is not the fault of the resin, rather my mismatched expectations. I revisited all the reviews and videos about tenacious and I found the cause of my mismatched expectations – when you see tenacious prints to be flexible, they are really thin lattice structures. Not beefy pieces.

My first print with Tenacious. Came out great! I used the same settings I use for Elegoo Grey

I decided to torture the pieces a little. To my surprise, the pieces are practically undestroyable. You can throw them to ground, smash with a hammer or even put them in a vice and squeeze them to half their original thickness – they do not break! The piece I put into vice stayed deformed, however, after three hours it got back into its original shape.

Compared to FDM printing, do not think about Tenacious like “Flex filament for SLA printers”. No, Tenacious is a tough and ductile material. It is much softer compared to standard resins, but it is not rubbery. It is not hard, but it is not brittle. I would compare it to ABS for FDM printers – it can elongate quite a lot and does not break (like PLA). I will definitely use it for components where I expect high impacts.

I also experimented with adding Tenacious to standard resins like Elegoo Standard. You can read about mixing Tenacious into other resins a lot online. So there is no point in rewriting it – I can confirm that adding 5-20% (by weight) of Tenacious to Elegoo Standard makes a huge difference. The resin is not as brittle – I would compare it to Siraya Fast. This makes a huge difference when you print large objects directly on the build plate. With Elegoo Standard, it is quite challenging to remove them in a single piece. Either they don’t survive the impact of a spatula or they break in half when you put the spatula beneath them. With the 10% of Tenacious, it is still hard to remove them (they stick like hell), but when you are finished you end up with a single piece – no more shattering. The resulting mixture is cheaper than Siraya Fast, however, in my opinion, it cannot replace Fast. Fast is less viscous and easier to work with.

As I pointed in the previous paragraph, I noted that Tenacious sticks really well to the build plate. This brings me to second use for Tenacious I found.

I have experimented a lot with dying resins to custom colors. Recently, I was printing a large batch (2500 pieces) of board-game tokens in customs colors. I used Elegoo Standard white and put epoxy pigment paste in it. It yields nice colors. Dying resins is really easy – you just have to be careful about two things: mix the pigment really well and don’t put too much in it. When you put too much pigment in it, your prints won’t stick to the build plate and also you can observe layer separation. You can save it by adding more of the base resin or printing thinner layers. Then your prints will come out fine. However, you might not get as vibrant colors as you wish or you get extremely long print times. I guess that the layer separation is caused by the pigment blocking too much UV light, therefore only the bottom part of the layer is cured and the top is left uncured. The uncured resin will not stick to the build plate or the previous layers. Therefore, when you add the base resin, you make the resin more transparent and it prints fine. This probably the reason why black resins are extremely hard to print from.

The tokens I was printing

In this project I wanted to get really vibrant colors, so adding a base resin was something I didn’t want to do. Since I had a bottle of Tenacious and I noted that it sticks really well, I tried to add it to the dyed resin. It helped a lot. In my concrete setup, I mixed a color resin which was hard to print. I divided the resin in half. In one half, I added the base resin, in the second I added Tenacious. I had to add 20 % of the base resin to make it nicely printable. In the second batch, once I added 5 % of Tenacious I started to see an improvement. With 10 % of Tenacious, the results were perfect and every print came out great. What’s the best, Tenacious does not change the color of the resin – the colors are still dark and vibrant. Even when I mixed up to 20 % of Tenacious (the same amount as the base resin in my control sample) the colors were practically unaffected. Unfortunately, I wasn’t able to capture the difference on camera – but trust me, the difference is tremendous when you see the printed tokens in person.


I am glad that I tried Tenacious on my own. It is different than I expected. It is not a resin I will use a lot directly, but definitely, it is a handy resin which I would like to keep at least a bottle in my workshop. I will use it to print durable components or to solve issues with layer separation. I can recommend you the same. It is not the cheapest resin, but I think it is worth the money – especially when you use it as an additive. One bottle will last you for an eternity.

Adding a Flexible Sheet on Elegoo Mars Build Platform 2: Final Design

A month ago I experimented with a flexible build plate on Elegoo Mars – see the previous blog post. It gave promising results, so I decided to design it properly.

First of all – why flexible and removable build plate? There are three reasons:

  • you can take the sheet off, bend it at peel the prints really easily. No more spatula scraping and breaking prints from fragile materials (I am looking at you, Elegoo Standard!).
  • you can quickly change the sheets without the need for multiple build platforms (a platform costs around 30 €, a sheet around 2 €).
  • you can chapel and safely experiment with various surface finishes.

First of all, I used an ordinary galvanized steel sheet in my first experiment. It is really not suited for the task since it is soft and once you bend it stays deformed. The proper choice is the spring steel sheet – it is flat enough and you can bend it as you want. However, since it is hardened steel, you cannot machine it easily. Fortunately, there are companies laser cutting an arbitrary shape out of them on laser or water cutter. The sheets are pretty cheap to make – I made them in a small quantity and depending on the material the price for a single piece was 1-2.5€/piece including shipping. So I made the sheets 2 mm larger than the build platform with a 2mm radius on the corners. This way, there a flange you can press on to remove the sheet from the build plate.

I experimented with different thickness – 1 mm, 0.5 mm, 0.3 mm and 0.2 mm. 1 mm is practically unusable, as it is hard to bend in hand. 0.5 mm is usable, but I prefer much more 0.3 mm. 0.2 mm is my choice for extremely fragile prints.

The second part of the design are the magnets for holding the sheet. They have to be strong enough to not stick away when peeling the layer from the bottom of the vat. Also, you have to mount them on the build plate. First, I bought a self-adhesive magnetic 1mm film. It worked nicely – easy to apply and my biggest fear of the resin dissolving the adhesive showed up false.

There was however one drawback – the magnetic sheet provided enough adhesion for 1mm and 0.5mm sheets, but not enough for 0.3 and 0.2mm ones. Therefore I started to look for another solution.

I ended up with 20x20x1mm neodymium magnets, which I attached to the build platform via 3M tape. I also oriented the magnets with opposing polarity to force the magnetic flux to close though the steel sheet to get enough adhesion. And it worked – the adhesion of even the thin sheets is sufficient to peel the whole plate covered. See the photos below. There are gaps between the magnets, but I have no trouble with resin being there – the gaps seem to be small enough that the viscous resin doesn’t get deep – only about 8 mm. Which is acceptable. One thing I don’t like about it is the fact that I didn’t get the spacing quite right and it triggers my OCD. Unfortunately, the 3M adhesive is so strong, that I am afraid of breaking the magnets…

To end it, see video below of peeling the prints out of it. One disclaimer – I didn’t was the prints properly, so there is some excess resin (and yeah, I am aware of not having gloves, but small quantities of resin for short period of time does not trigger a reaction for me).

This is how easy is to peel the prints now

There is, however, one disadvantage of my current solution – the magnetic stirring bar I use for cleaning the prints sticks to the build plate. So I probably need some separator in the tank to use it again.

One observation: my hypothesis I stated in a my previous experiments about surface reflectiveness affecting the size of elephant foot seem to be correct – with the shiny, nearly mirror-like surface I get much larger elephant foot. So the next step will be to coat one the sheets in the dark surface finish – probably by cold bluing the steel sheet.

Adding a Flexible Sheet on Elegoo Mars Build Platform

Many people report print adhesion problems on the Elegoo Mars build platform. The build platform is sand-blasted anodized aluminum. Some of them report that sanding of the build platform flat helps. I have never experienced adhesion problems; however, I also sanded my build plate to make it perfectly flat which allowed me to print PCB stencils. Since then I face another problem – my prints stick too well and it is sometimes nearly impossible to take them off the build platform undamaged.

I thought; would it be possible to mimic what Prusa on FDM printers do? That is to attach a flexible steel sheet to the bottom of the platform so once you finish the print, you put the sheet down, bend it and get the prints off the build plate easily? I decided to give a shot. Note that this setup is different from other SLA machines, which claim to have a build plate attached via magnets.

So I designed a simple prototype (probably not suitable for long runs). My goals were the following: make it as simple as possible and to avoid irreversible modification of the build platform as currently, you cannot buy a spare one.

I decided to attach the sheet using neodymium magnets. I designed two simple FDM printed pieces: one plate with pockets for the magnets and one clamp to hold the plate on the bottom of the build plate. You can find my Fusion 360 drawing here.

I put plenty of pockets for magnets as I wasn’t sure how many of them are really necessary to hold the sheet. I have plenty of magnets at home, unfortunately, I accidentally chose a magnet size from which I have only 4 pieces. So it broke my plans with many pockets. But I decided to give it a shot anyway with just 4 magnets. Surprisingly, the 4 magnets hold the sheet quite good (sorry, no precise measurements here). You can find pictures of the assembly below:

I used a 1mm galvanized steel sheet as the sheet – nothing fancy. The sheet is not hardened, therefore it does not act as a spring (can be deformed pretty easily) as you are used from Prusa’s printers. But it’s just a proof of concept. The build plate becomes thicker so I had to lower the Z-axis z-limit switch to be able to level the plate. The plate is designed so it barely fits into the vat.

I did several test prints. All prints were large prints printed directly on the plate – I chose previously prints which I fail to remove from the build plate for the experiment. The results? Subjectively, it helps a lot! The prints come off very easily. Even large, fragile pieces are a piece of cake to remove. Also, event with 4 magnets in the corner the sheet seems to be attached good enough.

This modification opens a lot of possibilities – we can experiment with different surface finishes (e.g., black color, surface roughness, etc). You can also wash the prints with the steel sheet and start printing the next batch immediately.

Note that I do not recommend using this design – it is just a proof of concept. It takes a lot of valuable vat capacity, requires modification of the z-switch trigger, etc. I plan to get a hardened steel sheet (not sure about the proper English term for it – in Czech, we call it “planžeta”) and redesign it to make it more compact and flat. I also consider to machine a new build plate out of aluminum with the pockets for magnets already present.

Did you enjoyed the post? Consider supporting me on Kofi. I use the donations to buy hardware necessary to perform my experiments.

Making LCD on Elegoo Mars Monochrome

The LCD used for printing on Elegoo Mars is RGB – there are three subpixels – red, green and blue. Since the backlight LED produces a quite narrow range of wavelengths (peaking around 405nm), only the blue filter passes the light. That means that 2/3 of the backlight power is wasted to the LCD. Also, it means that only 1/3 of the pixel is exposed and the rest is hardened only via exposure bleeding – the effect we, on one hand, want to eliminate, on the other hand, it is essential for properly working screen. After my modification, which removed the protective glass, you can see on my prints under a microscope the effect I mentioned – 1/3 of the voxel is nice and sharp, the remaining 2/3 are smudgy.

There were recently announced printers with monochromatic LCD. They feature low exposure times (around 2 seconds) with less power than Elegoo Mars. However, their LCDs have poor resolution.

So I was wondering – would it be possible to turn Elegoo Mars LCD to a monochromatic one?

The LCD stack up

First, I examined the LCD. I figured out that the two most outer layers are the polarizer. They are not glued, they hold similarly like to protective glass. Then there is a bottom plastic film with the pixel electrodes (I am sorry for not providing pictures, however, I was not able to take them from the microscope). Then there is a glass layer – on one side (the top side) it is covered by ITO – a conductive clear coating. On the bottom side, there is a layer of color filters. Between the glass and plastic film is a layer of liquid crystals, more specifically between the plastic film and the filters.

One important part – the ITO layer is connected to the plastic film via a conductive ink – see photo below.

The procedure

Having experiences with disassembling LCDs before, I know how to separate the glass from the plastic film. Just use a fresh Xacto knife and slide it between the layers, move along the perimeter and the layers separate:

You can nicely see the liquid crystal. I used a rubber spatula to save as many crystals as possible from the glass. Then, I started to scratching of the filters. It was pretty easy using a knife. I decided to leave the black border – it probably provides correct spacing between the layers – but I am not sure.

You can see that the glass got much more transparent. Then I cleaned it properly and put the LCD back together. Unfortunately, I was not careful enough and I got some dust particles to the crystals. Therefore, I got polarizing patterns on the LCD:

The patterns due to dust particles – I am sorry for the photo quality

I connected the LCD to mars and run an exposure test. To my surprise, the LCD was working – you can clearly see the test pattern:

The LCD is working!

So – it is possible to do! To fix the issue, I separated the layers again, cleaned them both with IPA using a paper towel, put liquid crystals I harvested from an old computer screen between them. I got LCD without dust particles, but with strange, colorful, patterns:

Unfortunately, the LCD stopped working. I have no idea why, just a few theories:

  • there are different type of crystals and they are not compatible,
  • by cleaning the LCD with IPA and paper towel I corrupted the pixel electrodes,
  • or I destroyed micro scratches in the surface – see the video by Applied Science about the scratches
  • or something else.

Also, I don’t know what caused the colorful effects after using the crystals from a big LCD. Do you have any ideas? Please, leave a comment.

To do more experiments, I am looking for screen donors – I look for people willing to send me their LCDs with dead pixels. Doing these experiments on brand new displays seems to be wasteful to me. So if you have such a display and you live in Europe, please contact me!

Does Dark Build Plate on an SLA Printer Reduce Exposure Bleeding?

In one of the recent posts I printer a solder paste stencil. The print is challenging as it contains small details, is thin and prints directly on the build plate. Even I use the same exposure on the first layers as did on the other layers, the first layer showed some exposure bleeding.

The hypothesis is that the silver surface of the build plate reflects the light, which cures the resin, and therefore more resing gets cured. I was thinking about getting really dark black paint and to paint the build plate. One of my readers, Zemerick (thank you!), brought up that Vantablack cannot be used (as it is a fragile forest of carbon nanotube), but Black 2.0 or 3.0 is just acrylic paint with a lot of pigment. So I got Black 3.0 and painted half of my build plate:

Half of the build plate painted by Black 3.0

The paint can get be scratched easily (you can see the test scratches), so I was afraid it would peel of. To my surprise – it didn’t. But the test print didn’t stick to painted plate:

The first test print

Reason for that? The paint is soluble in resin. I got leaking black pigment to my vat, the paint after a 5-minute print was really soft. I tried 2 more prints with roughly the same result.

Since the prints peel off, there is not much to compare and I cannot say if it helped or not.

Conclusion? None. I still think UV absorbent surface finish on the build mitigates the exposure bleeding. However, I am not sure how to create one. Anodizing would stick but is still too reflective. I could use spray paint, but not sure if it is dark enough and if resin will stick to it. I probably wait until the replacement build plate will be available and then (maybe) try some more experiments.

Printing Solder Paste Stencils on an SLA Printer

A few months ago there was a tweet discussing printing solder paste stencils on a 3D printer. Someone suggested we should try it on an SLA printer. After two months I did the experiment.

First of all, I struggled a little to get the 3D model of the stencil. There is a service which is supposed to generate the models of the stencils from gerber files. Unfortunately, when I uploaded the gerbers of my board, the model I got was completely broken. So I decided to write a custom tool. The easiest way was to use OpenSCAD (and finally an opportunity to learn it!).

So I wrote a short OpenSCAD script which takes two DXF files on the input – one for the outline and one for the holes. It also takes information on whether to generate a front or a backside stencil. You can also supply custom thickness, frame thickness, etc. If you use KiCAD I also wrote a simple Python script to export all the necessary files (which allows you to use Makefile to generate all the manufacturing data!) For the reason to me unknown, sometimes OpenSCAD produces corrupted STL files. Therefore I use admesh to post-process the STL files.

The generated 3D model of the stencil

Then I started printing on Elegoo Mars – without much success. The holes were not good enough – I wasn’t able to print 0.2 x 0.5 mm pads. Then I discovered, let’s call it “a room for improvement”, on my printer. I wrote a full blog post about it (if you have not read it I recommend to read it first and then to continue reading). After the modification, I got usable results. What works for me the best it to use Siarya Fast grey resing, 1 bottom layer with a 15-second exposure and normal exposure of 7 seconds. No supports and to print it directly on a build plate. I also do not post-process the stencil (i.e., cure them under UV lamp) – I am afraid of curving them. As they are not mechanically stressed a lot, I think it is fine. They also stay nicely flexible. The nice thing about printing the stencils – one stencil is printed in 4 and a half minutes.

Then I tried to populate some boards using this stencil. I used Microprint 2006 solder paste. I think the pictures below speak for themself. All resistors are 0402, the ICs usually have a pitch of 0.5 mm.

I am excited about the results. I know I stress the printer a lot and I was able to easily populate a board with ICs with a pitch of 0.5 mm with the stencil. I have to admit there were few defects, but otherwise, they serve just like the metal ones.

Since the price of a professional-grade stencil is roughly 10$ it does not make much sense to not buy them and print them. To print them it is actually more work and slightly worse results. However, what I like about printed stencils is that they are self-aligning. Also, you can customize them easily without thinking much in advance – if you buy the metal one, you have to wait at least a week to get it. With a printed stencil you are ready to go in less than 10 minutes. I see potential here for repairs – you can easily print a partial stencil to, e.g., put paste only for one IC and then to reflow the whole board.

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

Making Elegoo Mars More Precise in the XY Direction: Hardware Mitigation of Exposure Bleeding

I wrote several posts on the precision of the Z-axis and gaining the precision in the XY direction on Elegoo Mars. However, last week I wanted to print models that feature narrow rectangular holes – roughly 0.2 x 0.3 mm. I thought it will be trivial – I have well explored the problem of exposure bleeding and wrote a tool for its compensation.

However, my first experiments were a complete failure. I used Elegoo standard grey and Siarya Fast grey – both without acceptable results. See the photo below (left first results, right expected results). Practically all the holes were rounded and closed in the bottom. No matter how big compensation I used, I got the same result. And when you think about it, it makes sense – the exposure bleeding rounds the sharp corners. If I compensate for it, I might get the correct dimensions of the holes, but I cannot get sharp corners.

I thought – the holes are only 5 pixels wide, maybe I am running at the edge of what the printer is capable of. Then I took of the resin vat and looked at the pattern the display is showing. It showed a nice, sharp, crisp image of what I wanted to print. Therefore, the limitation is not in the display itself. I took one of my old broken displays from the printer and start to examine it.

There is protective glass on the display (see photo below). The glass is not glued to the display, in fact, it is similar to a glass you can put on your smartphone. It is not held by an adhesive, rather it is some kind of electro-static bond (I actually don’t know the physics behind sticking the protective glass on your smartphone). So it is easy to remove. I thought this glass contains the top polarizer, but it is not the case. This glass is 0.7 mm thick and provides a gap between the resin and the displayed patter itself. This gap provides a space for the beam of light to spread and therefore, to reduce the effective resolution of the display – well – it is one of the significant causes of exposure bleeding.

The protective glass of the display

The Modification of the Printer

So I decided to try an experiment – remove the protective glass and print without it. The good news is there is a piece of glass underneath the display which provides mechanical support for the display (the glass is there to probably protect the top polarizer from scratches and also from resin leaks not to strengthen the display).

The supportive glass underneath the display

To print directly on the display there is a need to lift it by the thickness of the glass. I actually decided to lift the display 0.2-0.3 mm above the vat bottom to ensure my FEP film lies directly on the display – the FEP film stretches over the display. To do so, I printed some spacer I put between the pink base plate and the supportive glass.

Since I removed the protective glass with a black outside frame, some of the UV-light was passing around the display. I solved it by putting a thin aluminum tape around the display.

And then the modification was done. Below you can see the vat sitting on top of the display:

The vat on top of the display


I poured resin in and started printing. As you could see in the introduction, the modification helped a lot. See microscope photos below (I am sorry for the poor quality, but I haven’t created a photo shooting jig for an optical microscope). On the left the original one, on the right after modification. One thing you note immediately – you can clearly see individual pixels/voxels after modification. When you look by eye, the prints are matte, not glossy – this is probably due to the “pixelated” surface. In the prints, I used only one bottom layer. You can see that the other layers are nice and sharp, however, the first layer (despite I used only 15 seconds for exposure) is bloated. This is probably caused by the light bouncing off the build plate. But this is only a speculation and I would appreciate the opinion of the others.

I also printed the AmeraLab test piece. The result is wonderful. You can see that even the smallest strands on top the building got printed (however they got bent during washing).


I am pleased with the results of this modification. However note that this modification has its downsides – if your resin leaks, you can probably say bye to your display. You can scrape the resing with a razor from the protective glass, however, I think you cannot do the same with the polarizer – the resin will stick to it much better and the polarizer is soft, compared to the glass, so no razor.

Also, this mod adds accuracy, however, it removes nice smooth, glossy surface finish many Mars users are used to. So you get detail for I am not sure if worse, but definitely different surface finish.

I haven’t done tests that measure the amount of the exposure leaking but I expect much fewer problems with it, maybe it will be reduced under a measurable amount. I am also left with an open question on how to deal with the exposure bleeding of the initial layer which is significant even in case I use the same exposure as for regular layers. It would be interesting to put an extremely dark coating on the build plate. However, even if I got vantablack or similar, I don’t know how to protect the paint from the prints and during scraping the prints.

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

(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:

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

Getting Rid Off The Elephant Foot On Elegoo Mars

In one of my previous posts, I examined the XY precision of the Elegoo Mars printer. If you are not aware of the “exposure bleeding”, please read the post first. There was one problem though; ChiTuBox does not support compensation for exposure bleeding. Therefore, your models can be slightly overgrown and most importantly, when you print directly on the build plate, there is en elephant foot – the first layer are roughly by 0.1-0.4 mm larger than they are supposed to be. This is due to the long exposure period of the first layers.

I wrote a simple command-line utility, which I call ElegooMarsUtility, in September. The utility can read an already sliced file and compensate for the exposure bleeding by eroding the image (imagine removing a few pixels on the edges of white areas). You can find the utility on its GitHub page.

I posted about this utility on the Elegoo FB Group, however, people seem to struggle with the usage of command-line tools. Finally, I found a little spare time, so I programmed a simple (and probably lame) GUI for the tool, so people can use it. I hope it will do the job. It is a single form window, where you enter your compensation values in pixels, specify the input and output files and hit the run button. After a while (depending on the size of the input file) you get a compensated file.

If you use Windows, you can download the utility here, if you use Pip. Unfortunately, the Windows version is bloated and takes few seconds to start, however, there is not much I can do about it – it is the price for having a single executable. If you install the tool on Windows using Pip, the startup will be instant.

Also, if you like the tool (or my other work) consider supporting me on Ko-FI. Supporting me allows me to buy hardware and resing which goes into my research and experiments.

Most importantly; the utility works with the anti-aliased files (thanks to fookatchu and his wonderful library for handling the sliced files) and allows you to specify compensation for the bottom layers and the normal layers. This allows you to get rid of the elephant’s foot.

What compensation values you should put in? It depends on your resin and exposure time. The best way is to experiment. Personally, for Elegoo Gray I use an exposure of 8 seconds, bottom layer exposure 30 seconds, the bottom layer compensation is 6 and the normal layer compensation is 1.

One last think about the compensation. Currently, the tool compensates only for exposure bleeding. However, there could be also an error caused by the UV-light rays not exposing the resing perpendicular to the build plate, but under a slight angle (as the light source is more a point than a surface). I was not able to measure the impact of this effect on the size of the components – in theory, the worst-case scenario is that the error is 0.02 mm on the sides (based on the light source geometry and the layer thickness). The error depends on the position of the object on a build plate – objects placed in the middle are effected less than the objects on the sides. If it proofs that this error is significant, I will implement it into the tool. However, as we are dealing with compensation less than a pixel, it requires some experimenting with partial exposure.