The Great 3D Printer Experiment: Prelude – Experiment Design

My Anycubic I3 printer (based off of the open source Prusa design) is finally up and running. I was genuinely apprehensive about the purchase: it was low cost (red flag) and based on a modified Arduino Mega board (another red flag), however, after I worked through the larger problems, I have come to the conclusion that my business going toward Anycubic was worthwhile. With that being said, there are still some kinks to work through.

The prints are accurate and square, but I don’t know the degree of how accurate or square the prints CAN be; so, I’ve devised an experiment that my son and I can work through over the weekend. We are going to ask the question: “What are the best slicer settings for the Anycubic I3 3D printer when printing with PolyLactic Acid (PLA)?” and answer it with a series of test prints. What follows is my first attempt (since high school) to work through experimental design (so go easy on me).20170128_104537

The purpose of this experiment is to compare the alternatives in slicer settings (slicer being the program that translates a 3d model into layered instructions for printing) in order to determine the optimal settings for a precision print. Factors for the experiment are below:

Factors to be tested:

  1. Anycubic I3 3d printer
  2. Generic brand polylactic acid (PLA) filament
  3. Blue 3M paint tape (adhesion surface)
  4. Cura slicer software
  5. 3D model (square 10mm x 10mm x 30mm with a 0.4mm offset)

Due to time constraints imposed by a pregnant wife and the needs of a 6 year old, as well as the budget constraints associated with the same, factors 1-3 will remain static. I have one Anycubic 3D printer, one spool of PLA (1kg), and ½ roll of blue 3M painters tape. I’ve chosen Cura as the slicer software, namely because that is all that I could get to interface with the Anycubic Tri-Gorilla Arduino mutant… the software is also an older version than what is currently available (version 14.07 to be exact). Since these factors will not change in the experiment, we will focus on the input settings for Cura v. 14.07 as the single source of adjustable levels.

Cura v. 14.07 settings:

  1. Quality
    1. Layer Height (mm)
    2. Shell Thickness (mm)
  2. Fill
    1. Bottom/Top Thickness (mm)
    2. Fill Density (%)
  3. Speed and Temperature
    1. Print Speed (mm/s)
    2. Printing Temperature (C)
    3. Bed Temperature (C)
  4. Filament
    1. Diameter (mm)
    2. Flow (%)
  5. Machine
    1. Nozzle Size (mm)
  6. Retraction
    1. Speed (mm/s)
    2. Distance (mm)
  7. Quality
    1. Initial Layer Thickness (mm)
    2. Initial Layer Line (%)
    3. Cut Off Object Bottom (mm)
    4. Dual Extrusion Overlap (mm)
  8. Speed
    1. Travel Speed (mm/s)
    2. Bottom Layer Speed (mm/s)
    3. Infil Speed (mm/s)
    4. Outer shell speed (mm/s)
    5. Inner shell speed (mm/s)
  9. Cool
    1. Minimal Layer Time (sec)
    2. Enable Cooling Fan (y/n)

Thats a lot of settings, so factoring in time constraints imposed and the understanding that I need to keep the 6 year old entertained, we need to eliminate a few of these level adjustments from our tests. Settings that will get the experimental axe and the justifications for doing so, are below:

  1. Speed and Temperature
    1. Bed Temperature (c): The bed temperature at 70 degrees C has allowed the generic PLA to adhere to the 3M painters tape nicely. This level is already optimized, though I will consider the effects of this temperature on the bottom layer of the print in future tests (just not this one).
  2. Filament
    1. Diameter (mm): This represents the diameter of the PLA filament and remains constant at 1.75mm. This value should be as accurate as possible, meaning accurate calipers should be used to determine the actual number. My measurements yield 1.75mm for the diameter, so this measure has been optimized.
  3. Machine
    1. Nozzle Size (mm): This represents the physical size of the extruder nozzle and determines line width for printing. The nozzle is a constant at 0.4 and will not need to be adjusted.
  4. Retraction
    1. Speed (mm/s): This represents the speed at which the extruder stepper motor will “suck” the filament away from the nozzle. This allows the printer to “jump” over empty space without leaving a trail or string of heated filament. There have been no issues with this setting at 60 in previous prints, and since we are not testing a print jump, this setting can be ignored for the test.
    2. Distance (mm): This represents the distance that the extruder stepper motor sucks filament away from the extruder nozzle. Like the speed setting, there have been no issues with this set at 6mm, and we will not be testing a print jump, so this setting can be ignored for the test.
  5. Quality
    1. Initial Layer Thickness (mm): This setting allows the bottom layer to be slightly thicker to facilitate adhesion to the print service. There have been no issues previous issues with this being set at 0.1, and will be ignored for the tests.
    2. Initial Layer Line (%) Like the thickness setting above, this setting only affects the initial layer and allows the initial line to be wider. Again, there have been no issues with previous prints adhering to the print surface under this setting at 100%, so it can be ignored for this test.
    3. Cut Off Object Bottom (mm): This setting sinks the 3d model below the print surface. It will remain at 0.0 and can be ignored for this test.
    4. Dual Extrusion Overlap (mm): This setting is for multi-colored prints with dual extruders. The Anycubic I3 only has one extruder nozzle, so this setting can remain at 0.0.
    5. Shell Thickness (mm): This setting represents the thickness of solid objects. Basically, if the model is solid, this is how thick the outermost “shell” is in relation to the hollowed out or infilled center. Since our test object is hollow, we can ignore this setting.
  6. Speed
    1. Travel Speed (mm/s): This setting represents the speed of the stepper motors while the extruder is not printing. The factory setting is at 60; there have been no errors associated with this setting and we will not be printing multiple objects, so this setting will not need to be adjusted.
    2. Bottom Layer Speed (mm/s): The setting represents the speed of the bottom layer and affects filament adhesion to the print surface. Since this setting at 30mm/s has had any previous issues, it will remain constant and can be ignored for the test.
    3. Infil Speed (mm/s): This setting represents the speed that the extruder prints the “insides” of an object, or rather, everything that is not the inner and outer shells. This setting can reduce print time at the cost of print quality; for this experiment I am concerned with the outside aesthetics of the print and not necessarily the speed, so I will ignore this for now (but note that this is a worthy setting to explore at a later time).
    4. Inner shell speed (mm/s): This setting determines the print speed for all areas that are not part of the infill of a solid object or its outer shell
  7. Cool
    1. Minimal Layer Time (sec): This setting is the minimum amount of time the printer will allow before moving onto the next layer. This allows the filament time to cool and mainly affects the print speed of smaller objects.
    2. Enable Cooling Fan (y/n): This turns the extruder jet fan on and off. It will remain on for the test.
  8. Fill
    1. Fill Density (%): This setting determines how much material is required to print a solid object. 100% denotes an entirely solid object, while 0% denotes a completely hollow object (minus the outer and inner shell thickness). Since our object is already hollow, we can ignore this setting completely.
    2. Bottom/Top Thickness (mm): This setting is the vertical equivalent to the outer and inner shell thickness in relation to the infill settings of a solid object.

After eliminating the 18 variables/levels above, we are left with 4 levels to adjust for our experiment:

  1. Quality
    1. Layer Height (mm): This setting represents the height of each layer of the print. The smaller the number, the higher the quality of the print at the cost of the speed of the print.
  2. Speed and Temperature
    1. Print Speed (mm/s): This setting determines the overall speed of the print, but is listed as a dependent variable on other settings. We will need to test variance in this setting to determine effect on print quality.
    2. Printing Temperature (c) : This setting determines the amount of heat applied to the extruder nozzle. Default settings are set at 215.
  3. Speed
    1. Outer shell speed (mm/s): This setting determines the print speed for all areas that are not part of the infill of a solid object (to include the inner shell). Our test object is hollow, but is still considered to have an outer shell, so we should test to see if this is true. The default setting is 30mm/s.

Since the factors and levels have been established for the experiment, we can now focus on the structure. The experiment will be broken into two parts. We will be using one factor experimentation methodology for the first part followed by a taguchi array for the second part (Thanks Andy!). We will analyze the results of both parts, independent of each other.

The first part will test one of the adjustable levels while the remaining 3 variables remain constant. We start with a baseline print under the default settings and then make two prints that vary in positive and negative values for each variable for a total of 9 print runs. We will then make qualitative judgments based on the accuracy of the corner, smoothness of face, and amount of anomalies (if any). Each run will get a value 1-15 and will have an ordinal ranking. This will (hopefully) confirm or deny the conjecture that is rampant on the internet…and… I may just learn something as well. I put the test runs in a simple array (below) to illustrate how only one variable changes per run.

Part One: Single Factor
Independent Variables
Run # Layer Height Print Speed Print Temp Outer Shell speed
1 (base) 0.2 50 215 30
2 0.3 50 215 30
3 0.1 50 215 30
4 0.2 70 215 30
5 0.2 80 215 30
6 0.2 50 210 30
7 0.2 50 200 30
8 0.2 50 215 10
9 0.2 50 215 20

The second part is the result of having engineer friends and will help determine the optimum settings as for each variable in relation to the other. We’ll be using a Taguchi array to optimize the experiment.

Part Two: Taguchi Array
Independent Variables
Run # Layer Height Print Speed Print Temp Outer Shell speed Performance Value
1 (base) 0.2 50 215 30 p1
2 0.2 70 210 10 p2
3 0.2 80 200 20 p3
4 0.3 50 210 20 p4
5 0.3 70 200 30 p5
6 0.3 80 215 10 p6
7 0.1 50 200 10 p7
8 0.1 70 215 20 p8
9 0.1 80 210 30 p9

I’d explain this array in more detail, but I’m going to wave it off for two reasons: My understanding of the method is cursory at best and I can expand on the concept later during part 3 of this 3 part blog post, after I’ve gained better grasp. As I type this, I am finishing the final print of the single factor experiment, and I can already reveal that I have had several revelations about how not to make a mutant print, but alas, what kind of blogger would I be if I didn’t build in some sort of cliff hanger. More will be revealed in Part Two of the Great 3D printer experiment!

20170128_145839

 

One thought on “The Great 3D Printer Experiment: Prelude – Experiment Design

  1. Pingback: The Great 3D Printer Experiment: Results of the Second Test – Military to Maker

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s