Skip to content

Rest times and TSMC

Tiago Conceição edited this page Nov 3, 2021 · 44 revisions

This guide is a walkthrough in new features of Rest times and TSMC available on Chitubox v1.9.0 and CTBv4.
What are they for? Should i use it? Which values? Are you ruining your life? Most likely...

Wait/Rest times

The new rest time settings introduced on Chitubox v1.9.0 are very important and the most useful new feature, let's find out why:

The problem:

When the build plate lifts and then retracts into the VAT, the cured object and/or plate will produce shock waves on contact with the resin, making the particles to move around, similar to when you throw a rock into the water and you get the shock wave effect. Curing moving resin is bad and can lead to crack, failure, weak bound, bad quality, visual artifacts, and maybe others… So, it's very important to wait some time to stabilize the resin flow before cure a new layer in.
Rest times come in handy to wait some time before cure a layer object, solving this problem.

The wrong solution:

Before new rest time settings, Chitubox always had (still have) the light-off delay, that field is always a confusion and a trouble/hard to set, as it's not a raw value it requires manual calculations or a calculator to properly set. Light-off delay = time to lift + time to retract + the desired wait time. With math, the value is calculated as:

Light-off delay = lift height / (lift speed / 60) + retract height / (retract speed / 60) + Desired wait seconds.

This means, if you change any of the parameters used in the formula, you need to recalculate the light-off delay to the correct value. This is very impractical and I will never understand why they put this ***** to the end user when firmware can do it alone… And of course, almost all users are setting this wrong with no desired effect.
Also note that any value lower than the base formula will have no effect as firmware will cap this value to a minimum. So, let's say that the movements take about 5s to finish, any value you put lower or equal than 5 will have no effect! But if you put 6 it will wait about 1s after the movement finish. But if you change lift speed to a slower value then 6 will not result in 1s anymore! What a mess…
To take this worse, notice that formula is not taking acceleration into account, so it's calculating instant speed which in real word that never happen and the movement always require an acceleration time before reach the maximum set speed, so you always need to give a bit of margin to know for sure the wait time is at least near to what you want, for example +0.75s to 1s is a good margin to have in fast acceleration settings.
Now you see, you have the perfect receipt to make it wrong all the time if you go with this trashy light-off delay… UVtools by default set light-off accordingly + 3s if you open a file there and while you have automations on and light-off comes not set (0) on the file. Still, this automation happens only once, and if you change lift height or any other parameter via UVtools it will not recalculate the value.

The correct solution:

With the introduction of the new firmware and CTBv4 is now possible to use an alternative to the light-off delay, that is the rest times. Rest times now do exactly what you need, you choose a time to wait before a action and that time is the real time without any other considerations. So, if you want to wait 3s before cure, you just need to set it to 3, and no other parameters matter in the equation. This approach should be here from beginning instead of light-off, again I will never understand why, even if they come with a good reason…
Unfortunately, not all printers will have the firmware upgrade to be able to use these new parameters, but if yours do, I highly recommend to upgrade just to use this feature!
Before, light-off delay allows you to control only one wait time, that is, the wait time before cure, but now you may notice there are two more stages available to wait, let's take a look at them by order of event:

  1. Rest time before lift: Time to wait before a lift, this is also known as the wait time after cure the layer, because lifts are made between curing and a new layer. This parameter is important, it can help in a better layer separation from FEP, remember that when you cure a layer/resin, it will heat up with the UV reaction, and hot layers can attach harder to FEP. So, allowing some time to the layer cooldown can be a good thing to help detaching and prevent failure, more useful on bottom layers where you have larger cure times, but by stupidity Chitubox don't provide a bottom setting for rest times, but if you have Chitubox Pro you can set those bottoms with different time at a great expense of a tedious workflow by playing with multi-parameter slicing. Save yourself some time and money and use UVtools to do that via Tools -> Edit print parameters.
    Bottom line: Set higher wait time for bottoms and less for normal layers. The more exposure time the more you can increase this delay. (Exposure time / 3s) is a good start point. Bottoms: 5s / Normal: 1s to 2s.

  2. Rest time after lift: Time to wait after a lift is done and before retract happens, this will wait your desired time when build platform finish the lift movement and before retract back. I really can't find any good reason to use this other than waste time, but you are free to point me some useful cases. You may think: Oh, this will let resin to settle! Sure, it will, but when retract back it will introduce the same problem, so don't worth to wait any time in this stage. What about let resin dip back into VAT? Again, I see no point here. But the funny thing are some people using this field to set the larger wait time of all the others, so the most useless field is getting more attention, I can't understand why... My advice is to never use this if you can and spare yourself some time, set this field to 0s!
    » Tiernan raised a good point here: "The only thing I can think of where the rest after lift time is useful is if you've got super viscous resin and want to let it flow back in the vat where the model was more before the retraction, or when printing with some clear resins to let the uncured resin fall off the model more (this is handy with clear resins as sometimes the uncured resin is slightly exposed through the model itself which if not moved after a few layers will completely solidify and ruin details on the build plate side)".

  3. Rest time after retract: Time to wait after the retract is completed and plate is on the layer cure Z position, this is also known as the wait time before cure the layer. Before cure a layer this field will wait your desired time, and this field is what you should use the most! This solves the "The problem" described on top of this article and it's the direct replacement of the light-off delay. My advice is to set to 3s, but this value depends on some variables, for example, how big is the area, will the plate submerge into the VAT? Volume of the object that gets into the VAT at this stage, resin viscosity and density. So, in a perfect tunning we would need some kind of an analysis to combine all these variables and tune the wait time per layer, to optimize the process without sacrifice time. As that not exists yet, as general rule, 2s-3s is a good start point, you just need to increase on more viscous resins, but you can also observe the resin flow in VAT and from there pick the best time for your process, remember that you always want the resin to settle before cure the layer!

Bottom line:

These new rest times come to solve two problems and I highly advice to use them if compatible with your printer and firmware, but they have a counterpart, they will sum up time to your print. So, lets assume my print have 1000 layers. I set rest time before lift to 1s and rest time after retract to 2s (these are already minimums), 1000 * 3 = 3000s extra seconds / 50 extra minutes! If you don't have trouble with FEP peel you can remove the 1s before lift and spare 1000s and reduce the total delay to 33.3 minutes. Now you see, the more layers and wait times you have the print time will escalate, so it's very important to not waste time on stupid stages and optimize the ones that really benefit from it, also don't set less nor more than required! But everything has a tradeoff, right? Is up to you if you want print fast or have the best quality and peace of mind, sometimes slower is better ;)

TSMC

Two stage motor control (TSMC) adds an additional lift/retract to the printing sequence, so instead of one lift&retract you can have a kind of slow lift to safe peel the layer from the FEP, a fast lift to go a little bit higher, a fast retract back and then a slow retract to the next layer position to be safer. In other words, the sequence is as follow: lift1 @ slow speed -> extra lift @ fast speed -> retract 1 @ fast speed -> retract 2 @ slow speed.

The problem

The TSMC solution come to “solve” a “problem” where some printers with fast acceleration does the lifts too fast and then the layer detach from plate or have some deformation, as well as others problems that may come from this. So, this will allow you to do a safe and slow peel, go a bit higher faster, go down fast and finally the last few millimeters do it slow to be safe in case it hit the LCD due a damaged object.

The wrong solution

(Spoiler alert) For the belovers of trends, TSMC and/or VROOM stop here, wipe your hard-drive and lock yourself in a cave to be safe as a promise that you will never see this post again! You have been warned!

Well, the TSMC itself is the wrong solution! Useless, dumb, stupid, non-sense and time waster! Really don’t use it, and kill it immediately with fire! Here’s why:

  1. Wastes a ton of additional time.
  2. After the layer peels (detach from FEP) you don’t need any additional lift. Serious! If your layer detaches at 1mm for example, why you want go like 2+5mm? This is just stupid and wasting your printer precious time. We always give a margin to be sure, but like instead of 7mm go 3mm or 4mm, but having an additional lift for that is just non-sense.
  3. The movement implementation is bad (they are too lazy to do better), because the first lift will start, accelerates to the target height/speed and then deaccelerates to finish that lift at 0mm/min, head stops, then repeat the process for the next lift, and repeat for the next two retracts. The problem here is that each lift/retract is single movement, they are stopping the head in each movement when this should be a whole/one smooth movement without any stop in between, this will just waste time and make the TSMC even more stupid and useless than never. Don’t get it yet? Well, I have made an illustration that worth a million words: (Hint: you are on the blue team)

TSMC-COMPARE

Now do you see? Does it make sense to you? Instead of making this a whole smooth movement they are ruining it, adding a ton of extra time to process… In my overkill example you are wasting 39s when you can spare 15s with the good TSMC and only waste 24s in total. Of course, in a real print you will not have such high times but still you will lose some seconds when could be much better/optimized! Again, non-sense crap!
Even if they implemented a good TSMC, this still not the ideal solution to the problem!
And as I’m already sick to speak in it and see people to praise and cry for this **** I will stop here and get you to the real solution!

The correct solution

The real solution to the problem and all you needs is to adjust the acceleration value into the printer EEPROM (If able to) and use only 1 lift sequence with the optimal height and “high” speed (150mm/min to 300mm/min).

The acceleration value tells the printer how fast it can reach the desired speed, in other words, the more acceleration you have, less time it took to reach the maximum speed. To understand better, think like your printer Z motor is like your car, when you start driving you can’t start at 100km/h in that instant, you need to accelerate from 0km/h until you reach the 100km/h, and that takes time! The printer acceleration value works like your car gas pedal, the harder you press the faster you reach the desired speed, but if you soft press it will take much more time to reach the desired speed. Also, if you hit the gas pedal to the limit very fast, something bad can happen, like car starts to skate, you can lose control, bump into something, etc. For the printer a very fast acceleration also has bad effects, like: Lose steps, layer detach or in worst case damage fep or something else.

To understand better the acceleration lets see the following graphs: accelerations

There are different acceleration profiles:

(a) Constant linear acceleration: Acceleration keeps same value in entire time (No change over time), speed increases over time in a linear way.
(b) Variable linear acceleration: Acceleration changes with time, as time goes the acceleration starts to increase/decrease as it get closer to the target speed.
(c) Variable dynamic acceleration Acceleration changes with time, as time goes the acceleration starts to increase/decrease as it get closer to the target speed, but it attempts to burst the acceleration to get a more aggressive speed line where starts slower, bump to fast and then start to smooth the speed as it get closer to the target speed.
(d) Multi-constant linear acceleration: Multiple (a) profiles over time.

Of course, there are more profiles, but this will give you an overview of some basic types. By looking at graph and observing printer movements you may realize that they use a acceleration type like (b), it start to accelerate from stand still in a smooth speed increment, then when speed is reach it will keep constant and then, when movement is about to end it start to deaccelerate in same way toward to 0mm/min.

Can you realize already? If we can change how fast the few millimeters behave why do we need multi lifts wasting your time and print cycles? It’s really a shame that most manufactures don’t know **** about their machines, acceleration values are large and then you need either to slow down the lift or go with TSMC crap. All you need is tune the acceleration value, to when it starts to increase speed, it does slower and when it passes the peel height it does in a convenient speed for the peel at that stage, this mean, speed will not matter much after that, you can really use 300mm/min everywhere because it will never reach that speed after all, as you need time to reach the desired speed with a low height you can never hit those speeds.

How to tune acceleration

(This guide should be universal, but we never know, some firmware will not able to change it or use another command to do such!)

First you need to know there are variables into acceleration equation:

  1. Maximum starting speed: When the movement speed exceeds this speed, it will start at this speed. This speed is mainly to limit and prevent loss of step.
  2. Jerk: The Jerk setting measures the speed at which your print head moves from its still position. The higher the setting, the faster it will move off from a stable position, the lower the setting, the slower it will move off from a stable position.
    It can also be known as the minimum speed your print head will slow down before initiating speed in a different direction. Think of it like a car driving straight, then slowing down before a turn.If Jerk is high, your print head won’t slow down as much before making the directional change. When the print head is told to change speed and direction, if the difference in speed calculations is less than the specified Jerk value, it should happen ‘instantaneously’.
    Higher Jerk values gives you:
  • Reduced printing times
  • Increased vibrations from rapid changes in direction
    Lower Jerk values gives you:
  • Less mechanical stresses to your printer
  • Smoother movements
  • Less noise from your printer
  • Less lost steps as you may get with higher values. Common values go from 0.4mm/s to 0.8mm/s
  1. Acceleration: How fast speed increment/decrement over time. Common values go from 800mm/s2 to 1000mm/s2

Default settings and backup:

If manufacture don’t share the original .gcode file, will be very hard to know the defaults, but the more probable are those settings are too aggressive and tuned for speed and bad quality.
Anyway you can attempt to dump the current settings by print this file: (Click to download)

Apply the new settings:

To change those values you need to prepare a file.gcode and print it on the printer, here my starting point script:

  1. Put the file in the printer USB drive (Click to download)
  2. Print the file
  3. Reboot the printer to fetch the new configuration

If you compare this configuration with other original manufacture configuration you will see a huge difference on values, mostly they don’t know what they are doing, others uses FDM settings in here 🤦‍♂️ For example, see this insane shame: https://github.com/elegoogroup/ELEGOO-Mars-Machine-Parameters/blob/master/ELEGOO%20Mars%20Machine%20Parameters.gcode and compare 😐

While my settings slow down your print compared with the original and 1 lift sequence it still wins over TSMC times and is able to finish the print soon with more quality!

You are free to test and change those values, it will not fit everyone, nothing better than run some dry tests without VAT and see how it goes with your liftings. The settings I post are conservative for quality and to solve the problem. This is anti VROOM and serious VROOM print faster but at a cost. Is up to you what you are after, speed or quality and peace of mind.

Video of the effect: https://www.youtube.com/watch?v=twbTG8OcJYI

Bonus

If you are unable to change the acceleration settings via gcode there still one thing you can use: UVtools dynamic lift heights! Still, you need a compatible printer to do such, it will tell you if not compatible, but even still not compatible there is no risk in run the tool. Even if you do the acceleration tuning you can benefit from this tool, because acceleration does not dynamic change based on layer, and this tool can change lifts and speeds based on layer mass!

dynamic lifts

My recommendation is as follow:

  1. First you need to know your optimal lift height, what normally works to you all the time.
  2. Go to the tool and select only normal layers, we want to discard bottom layers from equation
  3. Then click on “Smallest” button, that goes to the smallest layer in mass
  4. Look and decide how many lift height is optimal for that lowest layer, write down the first lift height field
  5. Do the same for lift speed, low mass can lift faster and high mass slower, so pick a high speed and put into lift speed maximum field
  6. Click on “Largest” button, that goes to the largest layer in mass and repeat 4. And 5. but set the to the opposite field
  7. All done, now you have the down and upper limit of your lifts and UVtools will calculate and optimize all layers with that into consideration, larger masses will lift more at slower speed while smaller masses lift less at higher speed, and all in between will be co-related.

Warning: The thicker and vicious the resin is, you will need more lift height and less speed!

If you able to understand and do this you will have a very optimized workflow that will give you:

  1. Overall print speed
  2. Better print quality
  3. Less failure
  4. Less headaches
  5. Less frustration
  6. More success
  7. Shame to others who fail to do this

Bottom line: When someone introduce a new feature that doesn’t mean better, you need to think with your head and analyze the effect/results in real life and compare with other solutions. TSMC to the grave and give your printer the respect she deserves!