Building a Stereolithography 3D Printer

Here’s a cool “how to” that I found and wanted to share. Hopefully on day I can find the time to build one… or buy one. The thought of uv light curing a resin to form a 3d object is so intriguing.

More can be found here

Here is how to make a Stereolithography 3D Printer. It is still a bit of a work in progress but so far it is working pretty well. This is mainly an experiment which started as a Delta Robot Stereolithography Printer but ended as a more traditional Cartesian Stereolithography Printer.
“I’ll be honest, we’re throwing science at the walls here to see what sticks. No idea what it’ll do.” – Cave Johnson

Stereolithography (SL or SLA from Stereolithography Apparatus) is an additive manufacturing process using a vat of liquid UV-curable photopolymer “resin” and a UV laser to build parts one layer at a time. On each layer, the laser beam traces a cross-section pattern of the part onto the surface of the liquid resin. Exposure to the UV laser light cures, solidifies the pattern traced on the resin and adheres it to the layer below.

I have wanted a 3D Printer for a while now and there are some very reasonably priced kits available like the Makerbot, Ultimaker and the RepRap project. I could have just bought a kit and started printing things but at the time I had not seen great resolution or print quality from those. I started looking around at the other 3D printing technologies and found SLA made some amazing quality prints, so I decided to try making my own. Since I started this a while back those projects have come a long way and they can make some beautiful prints now. There are also people working on a UV resin and DLP projector 3D printer which is showing promise.

I decided to enter this in the Epilog Challenge Contest because I could really use a laser cutter 🙂 I also have some ideas how to redesign this project, for creation on a laser cutter. I wouldn’t mind making kits for people if I had one.

Something to keep in mind is the current cost of commercially available UV/Visible resins. 1 Liter is about $200 – $250 so compared to ABS or PLA for the plastic extrusion printers it is about 4 – 5 times more as far as I can tell. There are other types of resin that are cheaper but I do not know how well they will work.

Since I wasn’t really sure if this was going to be a viable method of creating 3D objects, this was a fairly cheap and quickly designed project. I have a small Taig CNC Mill for cutting metal so the custom parts are made of scrap aluminum I had laying around. You can probably use wood and maybe even hand cut the parts if you are careful.

This project is Open Source Hardware.

Step 1: Materials, Tools and Safety

This is a list of the parts I used.

General Parts
3 – 16″ x 171/2″ x 3/4″ Plywood for the back and sides of the case
2 – 16″ x 16″ x 3/4″ Plywood for the top and bottom of the case
24 – #6 x 3″ wood screws and washers
4 – Rubber Stoppers 1 7/8″ x 1 3/4″
4 – 1/4-20 x 2 1/2″ Bolts
8 – 1/4-20 Nuts and washers
1 – 4″ x 4″ x 1/4″ Black Acetal sheet (Delrin)
1 – 1 Liter Beaker

Linear Rail and Blocks from Automation Overstock
4 – AG Linear Rail 15mm x 200mm
2 – 15mm Bearing Block, 2 Bolt Flange
2 – 15mm Bearing Block, 4 Bolt Flange

Electronics Parts from Sparkfun and others
6 – microswitches with roller
3 – ROB-09238 Stepper Motors
3 – EasyDriver Stepper Drivers (Pololu drivers should work too)
3 – Polarized Connectors 4-Pin housing
3 – Polarized Connectors 4-Pin Header
2 – 6 pin female headers
2 – DC Barrel Jack Adapters – Female
1 – Sanguino (Arduino Mega would work too with code modifications)
1 – 5V FTDI USB Cable
1 – Omron G5V-1 Relay
1 – LD33V 3.3V Voltage Regulator
2 – 9V 500ma or higher Power Supplies (could use one but they are cheap)
1 – 12V – 24V 2000ma or higher Power Supply (for Stepper Motors)
1 – TIP120 Transistor
1 – 1K Resistor
1 – Protection Diode such as 1N4148
2 – 2 pin screw terminals
Various Male and female .1″ headers, wire and protoboard big enough to fit everything

Leadscrew from McMaster-Carr
1 – 1018 Carbon Steel Precision Acme Threaded Rod, 1/4″-16 Size, 3′ Length

Leadnuts from DumpsterCNC
3 – Acme 1/4″-16 (1 Start) Leadnuts Square flange 4 hole
3 – Acme 1/4″-16 (1 Start) Couplers 5mm Bore

Laser parts from Aixiz
1 – Aixiz blue laser glass lens
1 – Aixiz 405nm violet laser 20mW
1 – Iris Diaphragm, Zero Aperture, 21mm Outer Diameter from Edmund Optics

The UV/Visible light cure resin from Ellsworth Adhesives
1 – liter Dymax 3099 Ultra Light-Weld Adhesive
1 – liter Loctite 3105 Light Cure Adhesive

Tools Needed
Drill and various bits
Drill Press
4-40 tap
Access to a CNC Mill
Gorilla glue or similar
Long clamps

Laser Safety Goggles such as these. They must protect against 405nm light to be effective.
Well ventilated area, don’t inhale the vapors from the resin or those produced when curing.
Step 2: Y Axis

A couple of notes before you begin.

The bearing blocks come with a piece of plastic where the rail goes, this holds the bearings in place. Do not take it out. When putting the bearing block on the rail just push the plastic piece out with the rail. If you have to take the block off the rail push the rail out with the piece of plastic lining it up the way it came.

Some of the pictures have bearings for support on the end of the Acme rods, I found that they were not needed due to the short length of the rod.

If the assembly order doesn’t work right or you have questions about anything let me know and I will modify the instructable to include the changes.

Please use laser safety goggles for 405nm lasers. This laser is strong enough to cause permanent eye damage.

Cut all the parts on the mill. The part drawings are attached as dxf files and the sketchup file is there also.

Drill holes in the stepper mount flanges and the edge of the Acme nut block. See image notes above.

Insert the Acme nut into the mounting block and mark the holes. Drill them out and tap them with a 4-40 tap or drill them larger and use machine screws long enough to go through and a nut to hold them.

See the drawing above for how to cut out the top part of the case.
UVLPrinter.skp1 MB
XY – Laser Mount 12.7mm.dxf181 KB
XY – Main Beam 9.8mm.dxf151 KB
XY – Stepper Mount One 12.7mm.dxf154 KB
XY – Stepper Mount Two 12.7mm.dxf154 KB
Z – Arm 9.8mm.dxf152 KB
Z – Bracket 12.7mm.dxf154 KB
Z – Plate 6.8mm Delrin.dxf151 KB
3D Printer – Model.dxf1 MB
XY – Main Beam Acme Rod Mount 12.7mm.dxf149 KB
3D Laser Printer DXF files.zip190 KB
Step 3: X Axis

Mark, drill and tap with a 6-32 tap the bottom of the stepper mount. Attach the stepper mount to the bottom plate with 6-32 machine screws.

Attach the stepper to the stepper mount. My stepper used M3 screws.

Mount the linear rail to the bottom plate using 4-40 screws and nuts.

Drill holes in the laser mount flanges and mount to a 2 hole bearing block. (I know it shows a 4 hole block in the pictures you should use a 2 hole block.)

Step 4: Assemble X and Y

First put the rails into the two bearing blocks making sure to push the plastic bearing retainer out with the rails. Then screw the plate to the two bearing blocks. Check to make sure the rails are parallel by measuring the distance apart at both ends of the rails. Then check that they are square to the plate. If they are not parallel then loosen the screws and adjust until they are and then tighten.

Once the assembly is adjusted set it on the top piece of the case and then mount the stepper. Screw the Acme rod into the nut and the coupler then attach to the stepper.

Once everything is lined up mark and drill the holes for the rails to attach to the top piece of the case. Attach with machine screws, nuts and washers on the outside of the board.
Step 5: Z Axis

Drill the flange holes in the Z arm mount. Drill and tap 4-40 holes in the end of the arm mount by the slot. See the picture below.

The arm should fit into the slot and stick out a little past the end. Cut a short piece of 1/8″ thick 2″ x 1″ aluminum and drill holes to match the ones in the end of the arm mount. Then place the arm into the slot and screw the aluminum on to clamp the arm in place. See the pictures above if you need clarification.

In the bottom piece of the case use a jigsaw to cut out the hole for the Z axis stepper.

To mount the stepper to the case bottom you can see the picture above but that was actually kind of hard to line up right. You could find a single piece of aluminum that is wide enough to cut a hole that matches the raised circle area on the stepper. Once it is cut you can mark and drill the holes for the stepper and then holes to mount to the case.

To mount the circle platform onto the arm just drill and tap with 4-40 tap the bottom of the arm then drill a hole in the platform and mount with a screw.
Step 6: Finish the Box

Show All 10 Images

Clamp the box together as shown and make sure everything is as square as you can make it. Then drill holes following the pictures above and screw together with wood screws and washers.

You can use store bought leveling feet or just make some with a stopper, bolt, 2 washers and 2 nuts. Follow the pictures above. Just drill into the stopper far enough to fit the head of the bolt then drill holes in the bottom of the case. Use a bullseye bubble level to level the case by placing it in the center of the bottom then turn the bottom nut on each foot to get the case level.

Cut three 9″ (about 228mm) lengths of ACME rod. File the ends so that the threads are formed well enough to thread into the ACME nuts. You may have to use a small triangle file to form the threads back to a usable shape.

Once the case is assembled you can attach the Z axis linear rail to the back of the case. First assemble the whole Z Axis including the linear rail, the ACME rod and the ACME coupler. slide the coupler onto the stepper shaft. The rail should be flush with the back of the case, if not then you may need to adjust the position of the Z stepper.

Position the rail about where it is in the pictures above and mark the 4 sides. Take the Z assembly back out. Measure the rail from the end to the center of the first hole then the space between the other holes and mark lines across the outline of the rail on the back of the case. Find the center of your marks on the back of the case and draw a line down. Where the lines cross drill holes to mount the Z axis rail and then mount it.

Drill a hole in the top big enough for the 4 pin connectors on the steppers to go though.
Step 7: Stepper Driver Board

Show All 10 Images

I may design a proper circuit board for all this but since I was designing as I went this was the most flexible setup for me.

Hopefully the drawings and pictures make sense, let me know if clarification is needed. This was my first use of Fritzing so it’s not as pretty as I could probably make. The Fritzing file is attached below.

Start by soldering the polarized 4 pin connectors into the Easydriver boards on top. Then solder the male header pins into the other holes on the Easydrivers on the bottom*.

*One thing I should have done is put the header pins marked MS1 and MS2 on the top so it was easy to jumper them to ground or solder up some headers on the protoboard for jumpers. I ended up wanting to change the microstepping from the default of 8th step microstepping. I have added these jumpers to the drawings now.

Once you have the male headers soldered, cut the female ones to match then put them on the male pins and place them in the protoboard spaced out with enough room to work.

Solder the screw terminal to one end then wire up it up to each of the headers for the Pwr In on the Easydrivers. Mark + and – on the screw terminal.

I used a 10 pin header and ribbon cable to pass the 6 step and direction pins and ground to the Sanguino. you could just put a regular header row to pass the signals straight to the Sanguino. Dont forget to connect the ground from the different boards together.

The wire colors for the coil pairs in my steppers are yellow+blue and green+red. Verify your stepper coil pairs by following these instructions. Solder the female polarized headers to the stepper wires using the pairs you verified for your steppers.

The drawings show headers for the microstepping selection. I am using half steps for the X and Y axis and it is working pretty well. To use half stepping put a jumper on the ms2 pin to ground.
UVLPrinter.fz696 KB
Step 8: Laser Driver Board

There is most likely a better way to do this but I am not an Electrical Engineer, the parts I used were on hand. This setup has worked fine for me for hours of printing so far.

The drawings below are a little different than what I have wired but should work. You could also put this all on one board, this was the biggest board I had on hand.

The Laser driver board takes 9V from a wall wart power supply to drive the relay and the LD33V 3.3V Voltage Regulator that powers the laser. The TIP120 transistor switches the relay which switches the ground of the laser to turn it on or off.

Step 9: Limit Switches

The limit switches keep the controller from accidentally moving too far in one direction. They can also be used to home the machine and tell it where to start from.

Solder wire to the NC and common pins on each switch.

Put a little dab of gorilla glue on the switch then place it so the bearing block with hit the switch before going too far. A 1/2″ in from the end of the rail is fine. Tape them in place, making sure they make good contact to the wood. The X axis ones were glued to the aluminum plate and it worked fine. If you have switches with holes for mounting you can drill and mount them that way. I couldn’t find screws small enough for the mounting holes on the ones I had.

Run the wires up and out the hole for wires in the top of the case. I tacked them in place with wire staples.

Solder all of the common side switch wires into a 6 pin female header. Then solder the NC side wires to another 6 pin female header.

Step 10: Wire it all up

Mount the boards to the top of the case with screws or nonconductive double sided foam tape.

*Do not plug any power in before you connect the steppers. Connecting or disconnecting the steppers while power in on to the stepper drivers will fry the driver board.

Connect the the steppers to the Easydrivers.

Connect the laser to the 3.3V header for it on the laser board.

Connect the ground for the limit switches and then the signal to digital pins on the Sanguino. I used 17-22.

Connect the Step and Dir pins to the Sanguino. I used 2-7.

Connect the laser pin to the Sanguino. I used pin 23.

Make sure ground from the laser board and the stepper board are both connected to ground on the Sanguino.

Connect all the power supplies. 9V for the laser board, 9V for the Sanguino and 12V – 24V for the Stepper board. I connect all of these to a power strip to control them all at once. You could wire a header on the laser board and then connect it to the Vin pin on the Sanguino to power it from there if you want.

Connect the the 5V USB FTDI cable to the Sanguino. It is marked with the wire colors. If using an Arduino Mega just use a regular USB cable.
Step 11: Software Setup

Download and install the Arduino IDE and install it. If using a Sanguino see this page for the rest of the setup.

Download and install Replicatorg and install it.

Download the file below and extract it to your Arduino Sketchbook folder or just open UVLPrinter.pde wherever you extract it from. It contains a modified version of the Sprinter firmware.

Open the pins.h tab and change any pins that you may have connected differently than my setup.
The step and dir pins should be easy to find, the MIN_PIN and MAX_PIN for each axis are the top and bottom limit switches. Anything with a -1 is not used. Everything else should be easy to figure out.

#define X_STEP_PIN 6
#define X_DIR_PIN 7
#define X_MIN_PIN 19
#define X_MAX_PIN 20

If you are using anything other than half stepping you will need to go into the configuration.h tab and change the following line.

float axis_steps_per_unit[] = {251.971678, 252.4475, 1007.87402,700}; //Half Step

The information needed to figure this out is the 16 Turns per inch on the Acme rod, the 200 steps per turn of the stepper and the microstepping. If using 1/8th stepping then take the 200 steps of the stepper times 8 to get 1600 steps.

The calculation for figuring out the steps per mm for 8th stepping is:

1 inch is 25.4mm so 25.4 / 16 TPI = 1.5875 mm per turn
1.5875 mm / 1600 steps = .0009921875 mm per step
1 mm / .0009921875 mm per step = 1007.87402 steps per mm

So for 8th stepping you would put 1007.87402 for each axis like this:
float axis_steps_per_unit[] = {1007.87402, 1007.87402, 1007.87402,700}; // 1/8th Step

The following lines are for configuring the max speed the steppers will try to move at. I start to loose steps past 400 and the Z axis doesn’t need to go faster than 200. Test out your setup and change if needed.
float max_feedrate[] = {400, 400, 200, 500000};
float homing_feedrate[] = {400,400,200};

Once you have made any changes needed you can verify and upload the code to the Sanguino.

To setup Replicatorg copy the file uvlprinter.xml into the machines folder in the replicatorg folder.

Start Replicatorg and click on the Machine menu then Driver and choose UV Laser Printer. Set the serial port to the one you are using. On the GCode menu and Choose GCode Generator choose Skeinforge (40).

Go to File then Examples and pick any of them. then press the Generate Gcode button. Press the duplicate button and Name it UV3D or whatever you want. Select that profile and click the Locate button. It will open a folder with the settings for this profile. Click cancel on the GCode Generator window. Copy everything from the UV3D file into this folder replacing what is there.

You should be configured with the basic settings for running the printer.
uvlprinter.xml1 KB
end.gcode166 bytes
replace.csv30 bytes
start.gcode243 bytes
UV3D .1mm.zip41 KB
UVLPrinter.zip68 KB
Step 12: Laser and Iris Mount

Place the laser in the slot for it and tack in place with dabs of hot glue on each side.

Put on Laser Safety goggles now.

To turn on and off the laser, open Replicatorg and connect to the printer. Click the control panel and then toggle the checkbox for Valve.

Move the Z axis down to about the level where you will fill the beaker. I usually fill it to about 500ml unless I am printing something tall. Turn the lens in the laser until the dot is a small as it can go, there is a point where it will get small then big again, try to get it as small as possible.

Slide the iris into the slot for it and line it up with the laser. Center the iris by turning the laser on and moving the iris around. Close the iris slowly and watch the dot get dimmer until it almost disappears then open it up just a little bit so the dot is small and not too bright.

Once you have it lined up carefully tack it in place with hot glue. There is probably a better way to do this with set screws or something else but I haven’t spent the time to redesign it yet.

You will have to adjust the iris and laser focus if you change the build height. I have not come up with an easy calibration system yet. I will update this if I do. Right now I adjust the iris and print something and see how well the layer thickness and line width worked.

Step 13: Print Something!

Show All 13 Images

Using the 1 Liter beaker that I have the print area is about an 85mm circle by about 100mm tall. You can adjust the build area size in the uvlprinter.xml file if needed.

To use Replicatorg there is already an excellent How To at Makerbot’s wiki.

To set the Z height on this machine pour the resin into the beaker up to the height that you set the laser at. Use the control panel in replicatorg to move the Z platform down into the resin to coat the platform then back up to just above the surface of the resin. Set all the axises to 0 then close the control panel and print.

The Z axis lowers into the resin then raises and waits a few seconds after each layer is printed. The commercial printers use a wiper to wipe a precise amount of resin across the part but that would have made the design much more complicated. This process isn’t perfect but so far seems to work alright.

I have only done a little bit of work with coloring the resin so far. What I have tested so far is using Castin’ Craft pigments and dyes and they seem to work.

Step 14: Wrap up

So, there it is. It works, but should you build one? Well that depends on what you want to get out of building/buying a 3D printer. If you just want to print 3D things for cheap then no, I wouldn’t build one. Get a Makerbot or an Ultimaker or build a RepRap. If you want to tinker and possibly get some amazing prints and don’t mind that they cost a bit more to print than the others then go for it. I would love to have some other people testing and thinking up new ways to tweak this.

As for cost of building the machine, I think I spent about $600 – $800 for everything. Less than the extruder printers but the material cost is about 4-5 times more so it’s not really the economy option.

There are also other ways to print with UV cured resins, like using a DLP projector to show images for long enough to cure a layer. There is one person that has made one that seems to work well but it looks like it is closed source and going to be expensive when he starts selling it. There is also a Yahoo group called diy_3d_printing_and_fabrication with people sharing their DLP based builds and resin tests.

You should have used a laser galvanometer (galvo)! Sounds great, if you find one accurate enough for under a few hundred dollars let me know!

Just for fun, the picture above shows most of the bad prints I’ve made so far.

I probably missed something so let me know if you have questions and I will get to them as soon as I can. Thanks for reading.



Go here for the full detail:



Sign Up to get updates on the latest article

Get the latest from my blog when you sign up.  Special offers are only offered to those who sign up.  Specific DIY are emailed to users when they become available.  Sign up today to get notified.

4 thoughts on “Building a Stereolithography 3D Printer”

  1. Hi, i would like to do a similar machine, i see your design and other, with projector and with galvos, i think this system will works well, but asume that galvos will be faster!! tehr are people makinh it with galvos but cant find much info aorund how to configute it…

    Cuold your system work with galvos? there are some cheper galvo systems on ebay…

    Your help will be apreciate.

    best regards

    fernando palacio

  2. Fernando,

    This is not my build. I found it on and thought it was cool. You might want to check out the link on my site that points to the original owner who developed this.


  3. An advantage of this bottom-up mode is that the build volume can be much bigger than the vat itself, and only enough photopolymer is needed to keep the bottom of the build vat continuously full of photopolymer.

  4. The other important piece of process is a liquid crystal display panel, that is being applied to the whole surface of building material during single run of DLP process.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.