Shutter / Lift cycle timing Problem on LCD Printer


Hey guys, first of all many many thanks for this awesome tool !

Now onto my problem :frowning:

Ive got Photonic properly installed on a KLD-2150 T1 ( Actually it came pre loaded with a working config for the display ) but the slicer settings etc were way off.

So i slowly made my way up to finally get a print sticking to the build plate but now a nasty problem rears its head:

Im using the shutter code to switch the Leds and a to wait for the lift cycle but as i understand it the lift cycle depends on the actual print area and is thereby variable, what happens next is that the led gets either switched on to early ( really bad ) or to late.

How would i go about fixing this ?

Thanks alot in advance, you guys are awesome !


hi @lenne0815 ,

Could you share some more information with us, for example the variable code? Also it would be helpfull if you post the logs. You can retrieve these by clicking download at the bottom of the page of the webinterface of photonic!

Kind regards,



Hey Robin, thanks for your quick reply !

The part i understand as variable lift sequence:

Lift Speed:

var value = 0.25;
if ($CURSLICE > $NumFirstLayers) {
value = 4.6666666666666705e+000 * Math.pow($buildAreaMM,0) + -7.0000000000000184e-003 * Math.pow($buildAreaMM,1) + 3.3333333333333490e-006 * Math.pow($buildAreaMM,2);

I configured the uv as followed:

Z Lift sequence (Required)

;****** Lift Sequence ****
G1 Z${ZLiftDist} F25.0
G1 Z${(-ZLiftDist+LayerThickness)} F170.0
; 8000

( there is the delay which never exactly hold true ) and:

Shutter (Optional)

<#if shutterOpen>

But i think i understand it now, i have to set the delay so high that the shutter never M106s before the sequence settled ?

( some tags arent shown here but they are in there )LogBundle (1).zip (319.9 KB)

If the display config is contained in this zip please feel free to distribute it for other KLD-2150 T1 users


It’s kludgy to try to predict the amount of time that the lift sequence will take and delay by that amount. What you want is for the print sequence to continue exactly after the lift sequence is complete.

For Marlin firmware, the key thing is G4. You want to do something like G4 S1 after the lift sequence, which will make the firmware complete the previous moves first before returning “OK”, which will then trigger Photonic3D to move on to the next step, which can be to execute the further G-code to turn off the LED.

If you are not using Marlin, you will need to determine for your firmware which G-code command will cause the firmware to wait for all pending moves to complete before returning OK and use that.


Thanks for that answer ! I already noticed there are some advantages to the delay aswell, but ideally it would go like this: Move down, wait 2s, start uv led, no matter how long the cycle durated. Ill investigate which firmware runs on the stepper driver board and see if i can find the apropriate gcodes for the “wait until finished”

Right now im having a bigger problem unfortunately, im running into the same issue this guy had: Any YHD-101, Aliexpress, Proniks KLD-1260 users here?

Erratic up and down movements etc, he apparently fixed it by “hardcoding the delay” i have no clue what he means by that :frowning:


I think ive found the “holy grail” :wink: As far as i could tell sprinter is installed on the stepper driver board, “wait for all” is M400 on sprinter.

The resulting Z lift sequence is:

G1 Z${ZLiftDist} F170.0
G1 Z${(-ZLiftDist+LayerThickness)} F170.0
; 10000

And the shutter part is left blank.

I dont know if the first M400 is really necessary but i think the problem with the printer going crazy stemmed from overlapping G / M Code commands, so i just put it there.

This way i can individually tune the “settle resin” delay and exposure, ill test some more now if it works in all situations but so far the only problem i noticed is that the very first layer isnt printed ( No normal lift cycle ? ) but thats either fixable by Hardware adjustments or long enough first layers exposures.

Edit: Aaaand thats been solved aswell with a new header

G21 ;Set units to be mm
G91 ;Relative Positioning
G28 ; Home Printer
M650 D${ZLiftDist} S${ZLiftRate} P0; CWH Template Preferences
M17 ;Enable motors
; 10000


Nice! Thanks for persevering and finding a complete solution.


Thanks for the right pointer jkao ! I wasnt aware something like M400 exists in these new firmwares, my last machine has been a diy cnc for wood and aluminum with a 90 x 210 cm workspace running mach3 :wink:


I’m starting to gather that our default printer configuration is a bit stinky. Anyone want to donate some settings that are a bit more sane?


Hey Wes,

I think a good starting point for us “China Victims” :wink: would be:

FTD industrial Blend

12000 0,05 / 70000 first 7

F25 lift up F150 down.

Lift Distance 3mm

That should atleast yield some kind of result, even with a badly aligned build plate.

But - and thats the important part now :wink: the M400 needs to be in there and the “resin settle” delay aswell, preferably as a formula, depending on

a ) model height

b ) mm2 printing area

Reasoning behind this is, the resin settles faster and faster the further the model comes along ( in the beginning the whole build plate sandwhiches the resin with the vat, so it needs more time to flow, but as soon as the model is about 2-3 mm in height this effect is hugely reduced.

Printing area i think is self explanatory.

High value maybe something around ~2,5s low value ~0,5s

It would be great if that delay is just another input field in the Ink configuration and the M400 needed default enabled with maybe a checkbox to turn them off if further customization is wished for.

Furthermore a default LCD UV Led Profile shouldn’t show the whole light source control but instead two user input fields “UV On” with M106 as default and “UV Off” with M107 as default.

I think these changes would enable most people to quickly get a grip of photonic and make them pursue it further ( Tweak it for their respective needs )

The first time user crowd now coming in due to china shops preinstalling photonic might have a different knowledge base than the complete diyers so just these little changes could go a long way.


First, to answer a question that you had earlier in this post. Yes, that download has your configurations in it.

I’m trying to make out two things here:

  1. You’d like to contribute a profile. Awesome, thank you. That’s easy and I can get that done quickly if you believe you have a working profile for users to autoinstall. Provide us the final version(click download just like you did before) that you’d like us to distribute and let us know the name of the print profile we can put up on Github.
  2. You have some feature requests:
    a. Add Model height as a variable for calculators
    b. Allow exposure delay to be an input field (This already seems to exist)
    c. “Projector Power” should be renamed to “Light Source Power” and allow higher level capabilities than just projector serial comms.


Spot on wes ! Ill check and reup my working config later today.

Edit, here it is: LogBundle (4).zip (24.9 KB)

The name should already be in there, its KLD-2150 T1


Uploaded to git. Unimaginatively named: KLD-2150-T1.json

Will be ready for anyone to use in Photonic 3D now.


Hi WesGilster: Apologies for resurrecting a very old thread, but I’m trying to revive my KLD-2150-T1 that’s been sitting dormant since I bought it in May '17, and I have some questions about your json config:

When I first got the printer I had some similar issues to many that have been reported; the UV cover arrived cracked, at least one cable internally was unplugged, etc. At the time I started to experiment with trying to print and ordered some FTD Industrial Blend and at first got a few prints to sort-of work, but increasingly saw poorer and poorer results with adhesion etc.

Upon doing some investigating at the time I realized my build plate was nowhere near the surface of the vat; at the time ‘Wendy’ from the Chinese company I ordered from through Alibaba sent me a kit with a pane of glass I was supposed to adhere to the build plate to make up for the difference (lack of) Z-height.

Fast forward ~18 months: I haven’t had a chance to mess with the printer due to a move etc. However I pulled it out over the holidays here and lapped the build plate with 120 grit sandpaper (I may go down to 80? 40?) to make it level and give it texture, replaced the FEP on the bottom of the vat (with not FEP - this may well be part of my current problem but please read on) - used a digital level to get it pretty level across all planes, and reset the clearance between the build plate and the bottom of the vat by adding some material between the build plate and the screw block that holds it to the Z-axis stepper.

With all that done: still seeing builds congeal on the bottom of the vat and not stick well to the build plate. I remember having done some experimenting with the settings in Photonic3D to try and get better adhesion and function but unfortunately I can’t find my notes on the default/original settings for the printer.

Thus I just tried to download your json file and import it, although I don’t see the mechanism in Photonic3D to apply settings/profiles, and I curiously also saw that there’s two settings in the machineConfig node for XRenderSize and YRenderSize that are set to 1920 and 1080 respectively: as the display is 2560 x 1600 in this printer, can you explain why that’s set this way?

Second, how can I use this .json file without having to paste in all the values manually?

Last, any other suggestions on how to resolve my printing issues beyond replacing the vat film as well as eliminating for bad settings in my machine config? I used a sheet of overhead projector transparency but I can hear a sort of “rriiip” sound and see the sheet flexing upward when I’m currently lifting the print off of the film (right or wrong machine is currently set to 10 base layers, 100 seconds per base layer, and then 8 second cures for each standard 50 micron layer. As noted above this isn’t working well.)

Thank you!