I had some time during a business trip to learn the steps that most people use to design and print 3D objects. I specifically needed to follow the path of others whose 3D printers are based on CNC mills. Since I built my own machine from scratch, I could not directly take advantage of code written for instance for Arduino-based printers. I had to work out how to control a Stepstruder through my stepper motor controller fourth axis. I had made the 3D printer work using manually written and spreadsheet generated G-code for simple objects, but those prints were not based on staring with a 3D drawing.
Fortunately, I found at least one example of the really great, open source program Replicator G that had been modified for use for people with machines like mine. Although the following is described in many other places, I want to review an example path to 3D printing using programs that are almost all free.
1. Google Sketchup – you can directly download many example objects
2. STL export plug-in – you can likewise download many example STL files
3. Replicator G – modified at cnc2printer3d.wordpress.com
4. Mach 3 – the registered version is required for large G-code files
Here is a list of the hardware I am using
My CNC mill uses three Nema 24 stepper motors
A modified Engravograph machine makes up my X and Y axes
A stepper motor controlled linear stage makes up my Z axis
A four axis stepper motor controller with a parallel port interface
Two PID controllers heat the extruded and heated bed
A Stepstruder Mk-6 is my print head
A PC with a parallel port running Windows XP
Mach 3 – I am using a registered version
A wooden platform with threaded rod height adjustment supports the machine
A RepRap heated bed
A spool of 3 mm ABS plastic
Interfacing Mach 3 to the CNC mill and extender is described elsewhere on this web site. The aspect that I want to explain here is how the extruded stepper motor is controlled in this system. Earlier 3D printers use servo type extrudes that simply dispense melted filament when they are turned on. Each mechanical move of the print head can be accompanied by filament extrusion. The Stepstruder is a differ device. It uses a stepper motor and is essentially treated as a fourth mechanical axis by Mach 3. The program assures that movement of all axes are coordinated so that X, Y, Z, and reach their destinations at the same time. The Stepstruder thus dispenses filament at a speed determined by the length of the A axis move programmed in G-code and the time taken by the mechanical maneuver. The Stepstruder will dispense a programmed length of filament if the A axis value is increased, but it’s thickness will be determined by the length of the maneuver competed to the A axis length change. This is the same as considering addition of a Z axis to an X, Y maneuver. If you have G-code telling the machine to move from X, Y = 0,0 to 1, 1 and then add movement of Z from 0 to 5, the mechanical maneuver executed by Mach 3 will make sure that a direct line is drawn from 0, 0, 0 to 1, 1, 5. Add a move from A = 1 to A = 2, and Mach 3 will make sure that a straight line is drawn from 0, 0, 0, 1 to 1, 1, 5, 2. The “line” drawn by the A axis is extrusion of 2 mm of melted filament during the mechanical maneuver in X, Y, and Z that starts and ends with the mechanical maneuver.
This method is in a way more complicated than a servo type extruder where G-code can simply instruct the extruder to dispense filament (turn on) during the mechanical maneuver and turn off afterwards. From a different point of view, the A axis view of a Stepstruder is logical and definitely more flexible. Making a larger move in A with the same mechanical movement in X, Y, and Z will dispense a thicker filament. The Stepstruder can also prime the extrusion by dispensing a bit of extra filament before mechanical movement starts as well as making clean ends by retracting a bit of filament at the end of a mechanical maneuver. Calibration of the Stepstruder is obviously as important as calibration of all other axes. One wants to be sure that telling axis A to advance by 5 mm will actually dispense 5 mm of filament.
I was pleased to find out that Replicator G talking to Skeinforge was ultimately just producing G-code. I understood how G-code told the axes how to move, so thinking of the extruder as nothing but another sort of move made sense. Fortunately for me, AUTHOR had worked out determining the correct A axis filament length for each G-code step in his modified version of Replicator G. Now I can create or download 3D drawings and turn them in to plastic objects.
The PC controlling my CNC mill does not communicate with my PID temperature controllers. Stand-alone PIDs are the simplest and least expensive means of controlling extruder and heated bed temperatures. If I ever reach the level of sophistication in a print that requires multiple extruder temperatures or multiple bed temperatures, I will need to reconsider this choice.
My goal in the entire 3D printer building exercise has been to Lear how these machines work. Using a CNC mill that I also built myself as the basis for my 3D printer ultimately required G-code in any case, so my hand-written (spreadsheet assisted) G-code used to make simple objects like boxes, cylinders, cones, and spheres is a perfectly valid alternative to the group of programs that I listed above. Writing the code by hand assures that I really understand how it works.
Now that I am familiar with creating G-code for 3D printing, I can better appreciate programs like Skeinforge, Replicator G, and Google Sketchup that allow me to create a real object from a 3D drawing.
The first 3D print that I made directly from a drawing was the sculpture of a woman that I downloaded in STL format for use with Replicator G. Using the modified form of Replicator G intended for converted CNC mill 3D printers, I created G-code that I could run with my registered version of Mach 3. Since all the other programs are free, I am interested in investigating the free alternatives to Mach 3 that I could also use for CNC mill and lathe work.
Since I could not find Mach3 motor settings elsewhere for a CNC based 3D printer, here are mine
X axis: 78.74 steps per mm, velocity 750 mm per min, acceleration 400
Y axis: 78.74 steps per mm, velocity 750 mm per min, acceleration 400
Z axis: 62.99 steps per mm, velocity 750 mm per min, acceleration 400
A axis: 9 steps per mm, velocity 750 mm per minute, acceleration 400
Here are some other machine settings. I am modifying these with every print to determine optimal settings. My prints are improving quickly.
Stepstruder temperature: 250 C
RepRap heated bed temperature: 120 C
Skeinforge setting modifications
Carve, Layer height: changed from 0.4 to 0.35
Dimension, retraction distance: 1.0 mm to 1.5 mm
Dimension, Restart extra distance: changed to 0.0 mm
Note that I prime the extruder and reset its position to zero just before a print. I also have Z zeroed touching down to the print bed firmly. That helps the first layer of plastic stick well. I do not print a raft. Kapton tape was very important for successfully laying down the first plastic layer as it did not stick well to the mirror surface.
My Z axis is limited to 60 mm, so this little sculpture is the tallest object that I can make with my machine.