3d printer rebuild, software and electronics

Please Note: I am no longer using this control setup, I have switched to using Marlin firmware and ramps 1.4 with an arduino mega 2560. I will post an article on this setup sometime during the week of 11/28/16

Any computer controlled device uses a “stack” of hardware and software so I think it’s best to start at the top of that stack and move down. For 3d drawing I use SketchUp Make (version 13). I save the working drawings in sketchups native format and save the drawings to be printed as “stl” files (using a sketchup plugin). I always load the stl files into Netfabb Basic to diagnose and fix any problems with the stl before printing. After performing any needed repairs in Netfabb I save the fixed up stl file for printing (netfabb automatically renames repaired files).  I use Creation Workshop for creating supports, slicing and printing and I have been quite satisfied with it, however, I do use Creation Workshop in a very specific way, I have written my own custom low level step motor driver controller software (arduino) that responds to custom commands that I have added as settings to Creation Workshop.  These commands are sent to the arduino controller by Creation Workshop during each layer exposure cycle.  DLP 3d printers have very simple command requirements, basically: project a layer image through the printers vat floor for x seconds, when finished projecting the layer tilt the vat and raise build platform x amount then un-tilt the vat and lower build platform x amount minus the layer thickness, repeat until all the layers have been exposed.

I have Creation Workshop sending 4 commands to my custom programmed arduino to control my printer:


What the arduino controller does: Initializes the step motors position to 0 and sets the step motor speed and acceleration. Gets the LIFT-SEQUENCE-TIME  (basically the time between layer exposures) and saves it for use in timing the vat tilt/un-tilt and build plate raise/lower sequences. Opens the projector shutter for the first exposure. Sent once per build.  This is the first command sent by Creation Workshop to the arduino controller.


;<Delay> 250
;<Delay> %d$BlankTime

What the arduino controller does: Waits a short time after the last layer exposure, closes the projector shutter, tilts the vat/raises the build plate x amount, un-tilts the vat lowers the build plate to the last position minus 1 layer thickness. Opens the projector shutter at the end of “BlankTime”.  Sent once per layer by Creation Workshop after a layer exposure. This command is where all of the work is done. Note: the <Delay> %d$BlankTime  line is required. Creation Workshop needs it for an internal timing function of some sort.


;<Delay> 250

What the arduino controller does:  Turns on a UV Led or other projector mod light source. Sent once per layer at the beginning of a layer exposure  by Creation Workshop (not currently used by me).



What the arduino controller does: Closes the projector shutter. Sent once per build. This is the last command sent by Creation Workshop after the last layer has been printed.


Moving the build plate up and down from within Creation Workshop:

In Creation Workshops “settings” (the gear icon) Machine Control tab you can use the Z-Axis up button to raise (home) the build plate to the top limit switch and you can use the Z-Axis down button to lower (home) the build plate to the bottom (vat) limit switch. If you have homed the build plate to the bottom limit switch you can start your print run from there (I use a screw connected to the z axis carriage to trip the vat (bottom)  limit switch, this allows me to adjust for the vat floor location).


Listing of Arduino code for use with step/direction step motor drivers:

Note: some instructions and code comments added/updated 03/17/14


To use the arduino code:

get the arduino software and install it if you don’t already have it.

you will need to download and install this arduino library: AccelStepper http://www.airspayce.com/mikem/arduino/AccelStepper/

get the arduino code and Creation Workshop settings. (dlpsidewinder.zip) and extract the files to a convienient location. Make a note of this location.

wire your printer (see diagram below).

get Creation Workshop rc 3 and unzip it to a folder on your pc (do not use the program files folder), use something like C:\Projects\CreationWorkshop (I will use this path as an example).

rename the C:\Projects\CreationWorkshop\Profiles\testprof to something else (such as testprofX).

copy this folder testprof from the folder where you extracted dlpsidewinder.zip to the C:\Projects\CreationWorkshop\Profiles\ folder.

Load the arduino code (CreationWorkshopToStepperInterpreterStepDir_v10.ino) from the folder where you extracted dlpsidewinder.zip files to into the arduino software. Upload the arduino code to your arduino uno, duemilanove or other compatible arduino after setting parameters such as PlatenStepsPerLayer (which is the number of steps needed to raise the build plate 1 layer thickness, this thickness must match the “Slice Thickness (mm)” set in Creation Workshop), StepsToRaiseLowerBuildPlate,  StepsToRaiseLowerVat, motorSpeed (z axis), motorAccel (z axis), TiltDownSpeed (vat), TiltDownAccel (vat), TiltUpSpeed (vat) TiltUpAccel (vat). See the comments in the arduino code for information on these parameters.

run the Creation Workshop software: C:\Projects\CreationWorkshop\CreationWorkshop.exe (you may want to create a shortcut to this file and place it on the desktop or in the start menu). setup your exposure times, set your projector, select the arduino serial port and speed (115200), etc., load and slice your part. Connect to the arduino home the build plate and print.


The Drive Electronics:

An arduino

A 12V 30A power supply

A 9V 1A power supply for the arduino

2 step/direction motor drivers.  I used 2 DIV168N-3.5A, there is an updated version of this driver: HY-DIV268N-5A.  Any step/direction step motor drivers that can handle the current for your motors will work)

2 step motors (they should have decent torque, you probably want to go nema 23)

1 hobby servo (for the projector shutter)

wire, connectors, arduino screw shield etc

2 limit switches

3d printer wiring diagram

3d printer wiring diagram, driver uses single power supply, DIV168N-3.5/DIV268N-5 used as example


wiring diagram stepper drive with different logic and output power supplies

wiring diagram stepper drive with different logic and output power supplies, a A4988 is used as an example.


The wiring diagram shows the wiring for DIV168N-3.5A/DIV268N-5A step motor drivers. Most step direction drivers (Big Easy, a4988 modules) should be similar. Note that some drivers will use separate logic and power power supplies.

Set you step motor driver to supply power to the motor windings (apply holding torque) even when they are not turning. You do not need to supply 100% power to the windings all the time (the motors may get hot).  I use a 50% power setting when the motors are idle to lock them in place. If you don’t do this you will have all kinds of weird printing issues (the motors will “freewheel” under load, for example, the build plate could be pulled DOWN when the vat tilts.  Also the dip switch settings printed on the housing of DIV168N-3.5A/DIV268N-5A step motor drivers may not be (are not) accurate.  For now I’m using <1-off,on,on,on,on,off-6> and <1-off,on,on,on,on,on-6>  on the dip switches which gives me 16 microsteps per step and what I believe to be 3.5A to the motors and 50%/100% current when idle, when I get time I’m going to play with the dip switches a bit more.

printer electronics

printer electronics



This entry was posted in 3d printing. Bookmark the permalink.

Leave a Reply

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