Scratch built DLP printer


I am building from scratch, but of course if I find ready made parts I don’t like to reinvent them. I purchased a very nice Z axis assembly on Ebay for $89 that already has Thomson AccuGlide rails and a very nice lead screw with zero backlash nut. I found a DLP projector on Craigslist for $40, but it needed a new bulb ($80). I also bought a new medium size flexvat and build plate from

I initially tried to get it all working using NanoDLP, but there were issues with motor motion. I would push the move up 10mm button and it would move the proper distance, but then if I push the move down 1mm button, it would move down 10mm instead. Same was true for larger movements. Anyway, this made me pause and try your Photonic3D image in my Raspberry pi3, and it all worked perfectly on the first try. I am quite impressed!

I am ready to print as soon as I put all my parts on a frame and then tune it up, but before dealing with issues of the vat lift sequence and speeds, I might want to get into printing quickly by going top-down in a 400ml Pyrex beaker. I noticed that the “lift sequence” is a required line item in the software. Can you give me a quick suggestion to get the unit to just drop by the slice depth without all this prolonged lift sequence? Or perhaps you still effectively do a “lift sequence”, but you call it a drop sequence instead to make sure there is fresh resin on the surface. Hmmm… I’m learning.

I made a long (boring) video of my progress to date if you are interested. I give a review of the flexvat and a good endorsement of the Photonic3D running on the pi.


Looking good! Welcome on the forum! And ofcourse hopefully in the photonic3D community! Exciting you got it working so quickly!

For the lift sequence, just keep in mind these codes are just devided in pieces so we can call them in a specific order.

As you already suggest for the drop down move you can also just use the lift sequence since at the time you normally would lift you now want to drop. You can hardcode the Gcode if desired or use freemarker templates to make it more generic! If you want to know more about those templates, just ask :)!


Thanks Robin.

I am familiar with Gcode and I have never heard of a freemarker template. I would like to know more about them. Is there a tutorial somewhere?


To be honest, it’s new for me too, I will dive into it this weekend. Wes, one of the lead developers implemented this ;)!

I think the best advice for now is to just google and/or read the docs here :slight_smile: :

Have fun :innocent: If you find difficulties, just ask then here and maybe I can answer them after the weekend and otherwise Wes can help you, no worries!



I take it that this is a follow up on the post you made to where you were able to successfully start with the Titan 1 profile for a bottom-up style print?

Top down is much simpler than bottom up. If you take a look at the documentation section for calculators, there is a link to the article I wrote documenting how I created the Titan 1 template:

For top-down your template would be dramatically simpler. All you’re likely to need is:

G1 Z${((LayerThickness) * ZDir)} F${ZLiftRate}
G4 S2

For simplicity, you probably don’t need to even reference the ZDir variable and just do:

G1 Z${(LayerThickness) * -1} F${ZLiftRate}
G4 S2

make the lift sequence a simple “lower Z by the LayerThickness”.

Your calculators will also likely be much simpler. You won’t use the ${ZLiftDist} variable at all (since there’s no lift), so the Z Lift Distance calculator will be ignored entirely. Your ${ZLiftRate} will most likely be a constant value, so you can set this to something like:

var result = 60.0

Which will make the speed at which you lower a fixed 60mm/min.

You can probably keep the decay function for the transition from the initial layer exposure time to the normal layer exposure time, although since the separation forces are much smaller in top-down, there’s a good chance that you could replace that with a simple if statement like the blank CWH Template Printer does.


@jkao Ah i totally forgot your great guide! Thanks for reminding and writing this! I will use it myself to update the LC10 too :)!


Thanks James! Yes, I posted on, but the forum seems pretty dead. It seems to have hit a peak in 2014 and 15, but not much activity since. Yes, it was your Titan profile that got me started and it worked exactly as I had seen on your video. I’m sure that the settings will not need much modification for my medium sized FEP flexvat, but being so new to SLA printing I will start with top-down to get a feel for the process. Last night I was fiddling with another copy of the Titan printer profile to make it a top-down printer, and rather than reversing all the Z directions, I simply flipped the 1A 1B wires on my ramps board, which reverses the direction of the stepper. I’m lucky in the linear stage I found that the end limit switch is in a sliding slot, so once I reverse the Z motion, I just slide my limit switch up to the new location up top instead of at the bottom. Voila… top-down.


Great, yeah that should work to start. That profile will make a bunch of unnecessary, but harmless, moves in the case of a top-down and will work to prove out the system.

Once you have it working, you can revisit and simplify the movements.