Intro: Using Open FL With the Form1+ - How to Set the Dose
Open FL is an API for interacting with the Form1/Form1+ printer. Among other things (like playing music with the stepper motors?), OpenFl lets one easily create resin settings files. This instructable will highlight what the important settings for curing are and provide some guidelines on how to adjust them for different resins.
Step 1: Installing OpenFL, Updating the Firmware
The github page covers installing the open version of Preform, updating the firmware, and getting a copy of the .ini file for the resins settings. None of that needs to be repeated here. Once you have everything setup adding a new material just involves loading the .ini file for the material.
Step 2: What Is in the .ini File?
The .ini file is mostly ASCI art, but there are also about 40 settings values that need to be specified. The file was not word wrapped in the version I downloaded, but if you open and save it in WordPad, and then reopen it in notepad the formatting is pretty intelligible.These files are conveniently grouped into fairly descriptive sections called: "perimeter", "printSettings", "Overview", "laser routine", "betweenLayerRoutine", and "fill".
The print appears to be broken up a couple of different ways. First, there are separate laser speeds and laser powers for the "raft", model, and supports. The same settings can also be set separately for the fill and perimeter. Finally, the number of laser passes per layer can be set for the 1st, "other", and "early" layers. The number of "early" layers appear to be set by the "earlytimesexpose" parameter. These settings control the dose of light to resin, and as such they are the first values I would try to adjust when getting a new material to print. We will dive into these a little later.
The "Printer Settings" include some values for scaling parts for shrinkage, setting the layer thickness, and importantly the scan line spacing. The "btwnLayerRoutine" appears to describe the separation process for the printer. In addition to setting the separations distances and speeds it also appears possible to adjust how close the print moves back to window and how long the printer holds this position while it is waiting for the resin to squeeze out. Most of these settings are probably driven more by the what is being printed and the mechanics of the system, so this would not be the first place I would start to play with. However, if you are using a much more viscous resin you may need to decrease the "p1downvel" to decrease the Stefan adhesion force or increase the "squishwaitmaxt" to allow more time for resin to flow out between the window and print/buildhead.
Step 3: What's the Dose?
The curing of a layer in a 3D printer depends on a lot of different factors ranging from the temperature of the resin to the material used in the printer window. However, the biggest factor is the amount of light passing thru the window. Herein, I'll just refer to this as the "dose".
The first part of getting a new resin to print is figuring out what dose it needs to cure for a given layer thickness. In an open market this would probably be something that you resin supplier would provide. In the 3D printing world of 2016, you'll have to figure this out yourself, but see this Instructable for more details.
For a DLP printer calculating the dose is pretty straightforward if the pixels are just black or white:
Dose = light intensity * exposure time
For an SLA printer like the Form 1+, it get's a little more complicated:
Dose = Laser Power / Laser Speed / scan line spacing * number of passes * efficiency
In order to check that everything was working correctly I measured the dose of the a layer "printing" using a G&R labs radiometer. The test file was simply a large block.
The ranges I looked at were:
laserpowermW: 7 - 80 mW (80 appears to be the upper limit the software will allow)
feedrate: 750 - 3000 mm/s
scan line spacing: 0.03 to 0.024 mm.
As one can see from the graph above the calculated dose correlates very well with the measured dose, its just 40% lower. In this case I was using an old tray and a lot of the light was probably being absorbed by components of the resin that had leached into the window. Resins like PR48 and Form clear can easily lead to a 40-60% loss in light transmission if resin sits in the tray for a long time. Its also possible that there are other losses in the system. However, this clearly highlights the value of checking the light output of the printer from time to time, otherwise one has no way of know if the resin is getting enough light to cure.
Step 4: Holy Bejesus Bartman There Are 18 Resin Dose Settings!
With three layers, two areas, and three types of pars there are 18 exposures types. Looking at the settings for FormClear included in OpenFl there are in fact 18 different values are used. How is one supposed to figure this all out, quickly?
The approach I took was to do an ANOVA analysis on the settings. This statistical technique basically looks at how different all 18 values are. Two trends are clear from this analysis:
1) The average exposure decreases going from the "1st layer" to the "early layers" to the "other layers".
This is probably because it is very difficult to squeeze all the resin between the build head and tray. As the layer number increases and the build head moves away from the window the forces go down and as a result the 1st layer is thicker than the early layer and the early layers are thicker than the model layers. As thicker layers need more light to cure all of the way through theses trends make a lot of sense. To get an idea how thick these layers I measured the working curve for FormClear, and then calculated the thickness that corresponds to that dose. This gives
1st layer - 350 microns
early layers - 150 microns
Model Layers -110 microns
As the settings for 100 microns you can see that the estimate from the working curve appears to be pretty good.
2) The perimeter needs more energy to cure than the bulk.
There are a number of reasons why this might be done such as balance surface hardness v. shrinkage or having to account for oxygen inhibition being a bigger factor at the edge or just trying to speed things up by under curing the bulk.
Step 5: Getting Started
The ANOVA analysis suggested that while there 18 different values, they probably all don't need to be different.
Taking that in consideration I set out to print with PR57K on the Form1+. Using the working curve I estimated the dose to print the 1st layer, assuming it is 350 microns thick (496 mJ/cm2). I then used the working curve to estimate the dose for 55 micron layers (117 mJ/cm2). I decided to take a chance and not worry about the "earlylayers" needing a different dose or setting the perimeter to a greater value. I just used different values for the 1st and model layers. The reason I probably got away with this is the cross section of the test print I used is not that great. Your mileage may vary with this assumption.
Printing the BJA-28 test artifact and examining the features was pretty insightful (as seen in the figure above). 1) Very small diameter posts were produced by this estimate (100 microns nominally, actually probably quite a bit thicker). So the working curve approach is definitely viable for quickly generating settings. 2) A much smaller dose would have worked. In fact, it looks like as low as 40 mJ/cm2 would have given accetable results. This means that I was probably printing with about 1/2 the speed I could have printed at. The fill areas could have probably used an even smaller dose, if I had kept the perimeter high, resulting in an a bigger speed increase.
Step 6: Conclusions
To get settings for any resin on the Form1+ as quick as possible:
1) Use a working curve test to estimate the dose you need. Assume a 350 micron layer for the 1st layer and then the slice layer thickness for the rest (and consider using 150 microns for the "other layers")
2) Do a test print and adjust the other settings to your heart's content if your want to really push speed.
3) Don't bother with the other movement related settings unless you viscosity is higher than FormClear.