3D Printing with the FlashForge Creator Pro and Slic3r
This article describes how to use the FlashForge Creator Pro with the open-source Slic3r program. There are other guides about this, but I have noticed that many of them are outdated, or keep copying the same old configuration bits full of cargo cult while lacking certain necessary improvements. Even if you're not going to use Slic3r, I also give some general advice, regardless of what software you use, about how to improve print quality and reliability.
If you want to see what kinds of results I get with my FFCP + Slic3r, check out my makes on Thingiverse.
Some five years ago, 3D printing broke through to the mainstream, partially thanks to certain patents expiring. As usual, a bit of a hype emerged and less-than-well-informed journalists started claiming that traditional stores would disappear and everyone would be downloading products and printing them at home. Of course, reality slowly returned and it became clear that 3D printers are not the ultimate solution to everything, yet they are useful for specific applications. I waited for the dust to settle and decided to buy a commercial 3D printer that was built with know-how accumulated over those five years. After evaluating different models, I picked the FlashForge Creator Pro due to its good reviews and its competitive price point.
Using a suitable slicer program
To convert a 3D model into a set of instructions that your printer understands, you need a ‘slicer’. It is a program that, as the name implies, slices the model into layers and then derives an optimal path for the extruders to follow to deposit each layer of material. The FFCP ships with an installer for ReplicatorG on the SD card. However, don't use this program for printing, there are much better ones (see below).
ReplicatorG is still useful for changing firmware parameters through the USB interface, but even then you must obtain the latest compatible release, because the version that came with your printer could be way too old and incompatible with the Sailfish firmware.
Obtaining the software
There are many options. A popular one is Simplify3D, but it is paid software and rather pricy. Many are enthusiastic about it because it “just works”. This means that if you want to actually learn about the intricacies of 3D printing, it is a bad choice because the software will shield you from all the things that can go wrong, which are usually also the things you learn the most from. If you just want to print things in the same way as you drive a car without knowing what makes it move, then you should just buy S3D, and you can skip the rest of this chapter and move on to the hints. If instead you want to go the slightly more adventurous way of using a free and open-source program, I recommend Slic3r. It has many powerful features and is being actively developed, so if you find a bug or have a feature request, you can report it on GitHub and hope the developers will look at it. Or if you have the skills, you can just fix it yourself.
Mind that the current 1.2.9 build of Slic3r is quite unstable, at least on Mac OS X. Moreover, development seems slow. I recommend using the Prusa3D fork, which is identical for the most part, but contains fixes that make it much more stable, some new features, and it is much more actively developed. You may also try out a developer build of the upcoming 1.3 release of Slic3r, it should also be much more stable but may lack some of the Prusa3D features.
Slic3r can only produce GCode files, but the FFCP only understands the binary X3G file format, therefore you need GPX, a program that converts GCode into X3G. Do not use the old version that exists on Thingiverse. You need a recent build that has support for the FFCP (machine type ‘fcp’). For Mac OS X, you can install it through Homebrew. Or, you can use GpxUi, which is available for Windows and Linux as well.
Slic3r lacks the ability to send commands directly to the printer over the USB serial connection. This means you either need to copy the X3G files to an SD card to print from, or use another way to send instructions to your printer. If you are in my situation where there is no need for a hyper-efficient pipeline to print in large volumes, I consider printing from SD card the preferred method. It does not suffer from typical problems of a serial connection like limited command throughput, and it does not require to keep a computer running near the printer and ensuring it does not crash or reboot. If you do have a dedicated computer connected to your printer, then it should be possible to use ReplicatorG to feed it GCode or X3G files. However, in that case a better option is probably to use OctoPrint. I have tried neither, but OctoPrint looks very interesting, and can be run from a cheap and power-efficient computer like a Raspberry Pi.
Configuring Slic3r: download config and G-code
There are two important parts when it comes to configuring Slic3r. First: general printer, filament, and slicing settings; second: the bits of GCode that will be executed at the start and end of every print. The G-code is included in the general Slic3r config, but I also provide it as a separate download so you can update the G-code separately from the rest of the config. I will try to make sure that the config file always has the most recent G-code, but if you want to be really sure, download and install both.
Follow the instructions in the following two sections to install the config and G-code. I provide the downloads as Things on Thingiverse. If you have a Thingiverse account, you can hit the ‘Watch’ button on the pages of both these things, and you should get notifications when I upload new versions.
Configuring Slic3r: general config
I provide my Slic3r settings as a config bundle that you can import, but beware: these are tweaked for specific filaments, a glass printing bed, and my personal preferences. Although it may be sufficient for your needs, this config bundle should be considered a starting point only. You will need to adjust the settings according to your setup, and possibly your specific prints. I rarely use the profiles as-is, I usually tweak things per print. For a guide on tweaking Slic3r's settings, I refer to the Slic3r manual.
Unzip the file you downloaded above, and use ‘Load Config Bundle’ in Slic3r's File menu to load the .ini file.
Remember, your FFCP only eats .x3g files but Slic3r outputs .gcode only. You could run each file through the GPX program manually, but that is a hassle. Luckily, you can have Slic3r execute GPX for you as a post-processing step. Ensure you have a version of GPX that has ‘fcp’ listed as one of the MACHINE types if you invoke ‘gpx’ in a console.
To automate conversion to X3G, you need a wrapper script that invokes the gpx command with the right parameters, because Slic3r only passes the gcode file as argument. The config bundle zip includes a Bash script ‘make_fcp_x3g’ that does exactly this, and more. It is also able to invoke the dualstrusion post-processing script, and work around a bug in Slic3r that can cause the wrong nozzle to heat up.
Edit the make_fcp_x3g file to set the correct paths to the dualstrusion script and gpx. Ensure all these script files are executable. Next, update the path to make_fcp_x3g in the ‘Output options’ of all your Print Settings profiles to point to where you placed the script on your system. To test it, load any model and use the ‘Export G-Code’ button. If everything is set up correctly, you should find an .x3g file next to the exported .gcode file.
If you're using Windows, you will either need to find a way to run Bash scripts (I have heard that this should be easy to do in Windows 10), or you will need to write your own equivalent using something else. I cannot help you with this because I only use Windows for the occasional game, for everything else I use Mac OS or Linux.
My make_fcp_x3g script invokes GPX with the ‘-p’ option, which causes it to replace the dumb print percentage indicator on the LCD display with something slightly less dumb. GPX calculates this improved percentage by estimating how long each print move takes, and making a wild guess at the pre-print warm-up time. Because of this guess and it being unaware of acceleration for print moves, it is usually overly optimistic, especially at the start of the print. It is however a whole lot better than just mapping the Z axis to a percentage, as Slic3r does.
Configuring Slic3r: custom G-Code
This code is responsible for preparing the whole printer up to the point where it can start extruding the very first layer of your model, as well as for finishing the print, and tool changes for dual extrusion. If you just imported the config .ini file, you should already have the latest G-code, but if you only want to update the G-code without risking to overwrite any of the other settings, proceed as follows.
Unzip the G-code archive you downloaded above, and go to Printer Settings. Copy each ‘Start’ code snippet to the ‘Custom G-code’ section of each corresponding printer profile. Remember to click the save button and overwrite the config after each change. Copy the ‘End’ code to all profiles. Copy ‘ToolChange’ to both of the the ‘Dual Material LR’ settings. There is also a file ‘Start-dual-extruders-postproc’, use this instead of the regular ‘Start-dual-extruders’ if you want to use my experimental dualstrusion post-processing script.
Beware: this code will move the extruders along a line at the front edge of the platform. If you use a glass plate, ensure that the nozzles will not knock any mounting clips off the front corners during the start procedure. Mount the clips at the sides, about 10 mm from the front edge. Or better, use side-mounted clamps (like these) that do not stick out above the plate. If the glass plate is wider than the platform, you may have to tweak the code to ensure the ‘chop’ works.
Sidenote: why this G-Code makes sense
If you look around on the internet, you will find copies of the same old GCode being circulated endlessly, with minor changes that sometimes do not make sense. If you find GCode snippets with the codes G130 or M108 in them, do not use them with your FFCP. Those snippets have been pasted together in a Cargo Cult manner by people who barely had a clue what they were doing.
The code I provide here has been tweaked over several months to greatly reduce the risk of prints that fail already before the actual printing has begun. This code is released under the Creative Commons Attribution license. (In a nutshell, this means you can distribute it freely as long as you mention the origin.) Changes compared to the typical code snippets, are:
- The exact same homing procedure is used as for bed levelling, giving the best chance of homing the platform to the same height (unfortunately there are many caveats, see the tips section below).
- Avoids fast unaccelerated moves.
- The coordinates have been adjusted to truly match the platform of the FFCP.
- All cargo cult cruft has been removed, including the G130 commands that could mess up your factory-tweaked stepper bias settings.
- The extruder steppers are shut off entirely during heating to save power, instead of doing something stupid with the bias voltages of all steppers and then resetting them to an arbitrary value.
- The nozzles do not heat beyond 140°C while the bed heats up. Only when the bed has heated, the nozzles continue heating to their target temperature. This minimises oozing and avoids ‘baking’ filaments like woodfill which may result in an extruder jam.
- The nozzles are parked in front of the platform while heating. Then they chop off any oozed filament on the edge of the platform before starting the print. This greatly reduces the risk that the ooze ends up messing up your first layer. This generally allows to start prints in a fire-and-forget manner if you have properly levelled your build plate. For some really sticky filaments like PETG, it may be necessary to stick a piece of painter's tape to the front of the bed or glass plate where the chop is performed, to ensure it works reliably.
- Speeds have been tweaked to be neither too fast nor slow.
- Left and dual extruder code does a proper tool change with sufficient clearance for the nozzle swap. This means your coordinates are not all messed up and you can use correct values for the platform origin.
- The code for dualstrusion does something useful and actually prepares both nozzles. The tool change code ensures the nozzle swap happens at a predictable and appropriate speed (this move is not accelerated, therefore it must not be too fast).
Long story short, the person who wrote this code, for the most part did know what he was doing. I explicitly waited to publish this code until I knew what each line did, and why. There is no Cargo Cult in here, at best one or two lines that are redundant.
The dual nozzle setup of the FFCP is not the best design for good dual extrusion prints, there are other printers with a much better configuration (e.g. two independent carriages on the X axis that have a dedicated wiping mechanism like the BCN3D Sigma). Originally I found the FFCP's dual nozzle setup mostly useful to always have my two most used filaments ready for use. Eventually though, I made it a habit to remove the right stepper motor and nozzle except for the very rare occasions when I do a dualstrusion print. This results in a very noticeable reduction in ringing artifacts (see below).
It is possible though to get good quality dualstrusions despite the limitations of the single-carriage-dual-extruder setup, by sacrificing print speed and material. The current editions of Slic3r however do not have the right provisions for this. If you simply let it do its thing, you will end up with a print full of ugly ooze and possibly holes as well. In the Prusa3D edition, improvements are being implemented, but they currently are specific to the Prusa printer models, so they might not give good results on the FFCP.
To work around this, I wrote a post-processing script that does all the necessary things to get the most quality out of the single-carriage-dual-nozzle setup for a dual extrusion print. You can find the script and instructions on another page.
I will not give a full manual for Slic3r here, there is an entire website for that. I will give some remarks about using Slic3r with the config I provide above.
My workflow is as follows. The above screenshot shows where in the UI each step occurs. If you're using a 1.3 developer build or the official 1.3 release (when ready), things will be in different places but the same principles do hold.
- Select print settings, this will determine layer thickness and other quality-related parameters of the print. Below I give an overview of what each of my print profiles do.
- Select printer profile, this determines whether you will be using the left or right (or both) extruder(s). My config contains separate profiles for dual material printing with either PLA and ABS, this allows to tweak retraction settings separately for both. It also has custom profiles for rigid.ink filament, which I've found to require custom retraction settings.
- Select filament type(s). Obviously, if you are using one of the ‘Single’ printer profiles, select the filament that is loaded in the extruder you will be using. For the dual extruder profile, the top filament is the right extruder, and the bottom one is the left. For ABS I have two profiles for each filament: ‘fan’ means the fan will be enabled all the time and the print temperature will be higher to compensate. This should only be used for smaller parts that have considerable overhangs or need to have a perfect finish, it is the recommended setting when using the ‘extrafine’ profile. Large ABS parts should not be printed with the fan enabled all the time! For PLA, the fan is always on.
- Load one or more models. If it will be a dualstrusion, only load one part of the model, and click the ‘Settings…’ button. Load the other parts inside that dialog, and select which ones are printed with what nozzle. See my dualstrusion article for more details.
- Scale, rotate, duplicate, move the object around if desired, and load any additional objects.
- Tweak any settings for this specific print (like perimeters, infill, supports, …) If you're using Slic3r 1.3, you'll notice that the UI has been modified, these tabs will only appear after you have selected them from the main menu.
- Inspect the preview and layers to see if there is nothing suspicious. Like any software, Slic3r has bugs, and poorly designed STL models may cause problems like missing layers. It is better to notice and work around bugs and problems before starting the print, than discovering your printer full of Angel Hair Pasta.
- Export G-code and feed the X3G file to the printer.
The right nozzle is ‘extruder 1’ and is the default; the left one is ‘2’. When you select filament in the Plater tab for a dual extrusion profile, the topmost one is extruder 1 (right), the second one is 2 (left). When dualstruding, the bed temperature is always set to the filament selected for extruder 1 (right), there is no way to change this. (I have submitted a feature request to remedy this. This might be fixed in the latest Prusa3D builds, but don't take my word for it.)
Beware: if you do not use the ‘make_fcp_x3g’ script included in the config bundle, and you want to do a print with the left extruder only, you must go into the object settings, and set the extruder for the STL file inside the object to 2. If you don't do this, Slic3r may start heating the wrong extruder after layer 1, messing up your print.
Print settings overview
After importing the config bundle, you'll have a list of ready-to-use print settings to choose from. They are grouped per material, and per general print quality. The profiles for ABS, PLA and the ‘Bioflex’ from rigid.ink are the most well-tweaked, the PETG ones may still need some tweaking, and the polycarbonate (PC) and NinjaFlex ones were only used for a few small prints and can probably be improved. Here is a short explanation of how the various settings differ within the same material:
- Extrafine: prints slowly at 0.1 mm layers. For ABS, this produces by far the strongest parts and usually also the best-looking. Of course, prints take ages, and it is not necessarily the best possible profile to get maximum quality in all cases, but if you need to print relatively small parts that need to look nice, this is a good starting point.
- Fine: prints a little faster at 0.15 mm layers. It will in many cases still produce very nice-looking parts that also are quite strong, but the print time will be considerably shorter. This is a good all-round profile for parts that aren't too big.
- Medium: prints at a normal speed at 0.2 mm layers. This is good for the typical print you don't want to wait ages on, and does not need to look super-detailed or be super-strong, although PLA parts will probably still be very sturdy, ABS maybe less.
- MediumStrong: a bit of a hybrid betweem extrafine and medium, prints slowly at 0.2 mm layers. Good for parts that need to be strong but don't need fine layers. Still, this will produce weaker ABS parts than ‘extrafine’. If you want to print ABS with the cooling fan enabled, its speed must be reduced considerably or the layers will delaminate.
- Rough: good for when you merely want to print a quick prototype where looks and strength don't really matter. This prints quite fast at 0.27 mm layers.
- You'll also find an oddball profile ‘wireframeShapes’ that is much more suitable to print thin skeletal structures like these. This illustrates how you sometimes need to deviate completely from the usual settings to obtain an optimal result.
All settings are tweaked for 0.4 mm nozzles. If you swap out your stock nozzles for a different size, you will need to modify the configs. Of course, feel free to create your own sets of print settings. If you want to keep my pre-made print settings up-to-date, keep in mind that any changes you make to them will be overwritten the next time you load an updated config bundle. Make your own profiles with unique names if you don't want them to be overwritten.
Hints for printing with the FFCP
As a general recommendation, make sure you have a good calliper or a micrometer. It is essential to know the exact diameter of filament you buy, so you can configure it in your slicer program. It is also extremely useful to accurately measure parts you are trying to make a 3D model of, and to check whether the first layer is printed at the expected thickness. I recommend a mechanical calliper with a clock-like dial. This is accurate, easy to read, and has no stupid batteries that die at the wrong moments.
Another good investment is a small infrared thermometer. This allows to check whether the temperature of the printing bed is correct, which is especially important when using glass (see the adhesion hints).
Highly recommended tweaks
- Use my custom plate levelling code files. They allow to align the left or right nozzle separately with more sensible probing positions. Moreover, different versions are available depending on the thickness of your levelling sheet.
- Print and mount my dual fan duct. This directs airflow at both nozzles so you can provide proper cooling when dualstruding. Moreover, it provides a better airflow than the stock duct even for single extrusion. This is not just recommended, I consider it essential. If you're only going to print with a single extruder, I have made a variation on this duct that provides even better cooling (but it requires always using the left extruder).
- Print adjustable spool holders. As soon as you buy a new spool, you will notice that every manufacturer uses spools of slightly different widths, while some have a recessed axle hole and some do not. My adjustable holders can handle any spool with a 54 mm hole that is between 35 and 80 mm long.
- Print a filament feeding spacer. It ensures filament is unwound from the spool in a more symmetrical manner. Mount it in the two topmost clamps. The filament guide tubes must not stick out from the bottom below their original starting point. You can ensure this by using the spacer model that does not allow the tubes to go all the way through, this also keeps the tubes from being pulled down when there is a lot of friction while the filament unwraps. You will need to cut a bit off the guide tubes to compensate for their higher mounting point, I shortened the tubes by about 30 mm.
Other models of this spacer exist with multiple holes to allow exact centring regardless of spool width, but that is overkill.
This is the older model that allows the tubes to stick out at the bottom, you should print the newer model.
- Print filament filters. These keep dust from reaching and possibly clogging the nozzles. Place the filter where the filament enters the guide tubes (see photo).
- Verify the alignment of your Y axis belts, see the section below.
- Ensure the umbilical cord is not sagging to the left or right where it exits the back of the printer. Otherwise it could get snagged on the transparent cover when the nozzles are at the front of the platform. You can print a simple support if necessary.
- Check the Z endstop at the back of the printer (visible with the platform lowered to the bottom). The switch should at least be parallel to the bottom of the circuit board. If the board sticks out farther than the switch, push the switch down a little. I have also clamped the switch to the PCB to ensure it is perfectly stable. Never operate the printer while this switch is removed, or it could destroy itself in spectacular ways. If you don't mind soldering a bit, I would recommend to replace the microswitch of the Z endstop with a Cherry DG23-B2LA.
- You can apply a few small blobs of silicone kit to the door to keep it from rattling while the printer shakes during prints. However, if you correctly tweak settings, the printer should not shake often.
- The plastic hood may have sharp edges that increase wear on the filament guide tubes and umbilical cord. Sand these (both at the top and bottom of the hole where the tubes enter the hood) until they are smooth.
Aligning the Y axis belts
A common problem that is not always easily noticed, is that the two Y axis belts (the ones at the top left and right of your printer) can become misaligned. This may happen if something has caused the belts to slip over their pulleys, for instance if the carriage has bumped into the front of the printer. Also, if you have detached these belts for some reason, it is pretty much impossible to re-mount them in an aligned manner. Misaligned Y belts have two undesirable consequences:
- Your X axis can become non-perpendicular to the Y axis, hence if you try to print a square, you'll end up with a parallelogram. If you use my start G-code, you'll see that the initial priming line is not parallel with the edge of the bed.
- There can be a noticeable ripple on walls printed parallel to the Y axis. The ripple will have a 2 mm period, because this is the pitch of the belts. You can also feel this ripple when manually pushing the carriage back and forth.
Next to checking whether the X axis rods are skewed w.r.t. the bed or printer housing, or noticing the 2 mm ripple, you can also easily detect misalignment by plucking the Y belts like a string. If they have considerably different pitches, they are misaligned. Correcting this would have been easy if FlashForge would have incorporated a detachable coupler on the rod that connects the two pulleys to the Y stepper motor, but since they haven't, a more cumbersome solution is needed. (If you don't mind hacking your printer considerably, you could saw the connecting rod in two, and re-connect it with a coupler. This makes it trivial to get perfect alignment of the Y axis belts.)
Cut two strips from a piece of blister packaging, 6 mm wide and about 5 cm long. Bring the carriage forward. Stick the strips in between both Y belts and the underside of their rear pulleys. Then push the carriage backwards until the strips are rolled around the pulleys, see the above photo. Now the belts can slip over the pulleys, and you can wiggle the X axis bars until they are perfectly parallel to the frame, and the belts have the same pitch when plucked. Finally, simply pull the carriage forward again to roll out the blister strips. Check the result and repeat the procedure if necessary.
There is an alternative to this procedure, it provides easier and more accurate adjustment but is not for the faint of heart. You can cut the narrow rod that connects the two Y axis belt pulleys, and reconnect it through a 5 mm axis coupler. If the belts become misaligned, you then only need to loosen the coupler, align the X axis, and tighten the coupler again.
Ensuring good adhesion
One of the most common problems with 3D printing despite many years of evolution, is the first layer sticking insufficiently (or sometimes too much) to the platform. Here are some tips in case you suffer from prints that won't stick or that you cannot remove from the platform without resorting to hammers or power tools.
- Ensure the bed is properly levelled. Ensure the nozzles are clean, and preheat the bed to the temperature that will be used for the first layer (do not preheat the nozzles: it doesn't make a difference in accuracy, while the oozing filament makes levelling a hassle). Use my custom levelling files instead of the file that came with the printer. Use the appropriate file depending on the thickness of your levelling sheet, and ensure there is a good amount of friction without needing to use a lot of force to get the sheet under the nozzles. If you do it right, you should only re-level when printing at a different bed temperature, or when switching nozzles.
- Ensure the build platform is free of any possible residue, especially greasy stuff. Isopropyl alcohol (also known as isopropanol, IPA, or rubbing alcohol) is highly recommended.
- If you print on BuildTak or the blue stickers that came with the printer, and you suddenly are unable to get any adhesion at all even after cleaning with isopropanol, you can try a fast wipe with a cloth that has just a little bit of acetone on it. This is generally not recommended and should only be a last resort, as acetone will dissolve the surface. If you use it sparingly however, it can do wonders to regain adhesion. Caution: make sure the platform has cooled down well below 50°C before you do this, or the sticker will most likely crack!
- Ideally, the printed first layer must have the thickness as specified in your slicer program. If it is thicker, you risk too little adhesion. If it is thinner, it could get hopelessly stuck. Print a single layer or take the skirt from any print, and use a calliper or micrometer to verify the thickness. If it is too thick, either use a thinner levelling sheet or strive for more friction while levelling.
- Adjust the bed temperature to the material. If it sticks too little, increase the temperature. If it sticks too much, decrease temperature. Do not expect all plastics of the same family to work with the same temperatures. For instance I have black ABS that nearly fuses with the blue print surface if it is hotter than 95°C, while the white ABS that came with the printer needs 110°C. With a glass bed, the variance tends to be much smaller.
- Do not extrude your first layer too thin or too narrow. A thicker layer helps with unevenness in the platform, while a wide extrusion is simply essential for good adhesion. Do not go below a thickness of 0.2 mm or an extrusion width below 125% of your nozzle diameter for the first layer. If for some reason it is crucial that the model is printed with a thin first layer, use a raft.
- Print the first layer at a slow speed. Do not go above 30 mm/s. If you need to use a thinner first layer, you may need to slow down. I usually set a fixed speed for the entire first layer, but you could also use a percentage of normal speeds.
- If you are fed up with the disadvantages of the blue print surface or similar, buy one or more borosilicate glass plates of 230×150 mm, and apply a thin layer of 3DLac or the right brand of hairspray (e.g. Aquanet) before each ABS print. Never spray hairspray inside the printer, do it outside before mounting the plate. For PLA, don't apply anything, just ensure the glass is perfectly clean (again: isopropanol is recommended), and heat it such that it is about 60°C at its top surface. If this provides too little adhesion, try a very fine layer of hairspray. Printing on glass has multiple advantages. It results in reliable adhesion as long as the plate is heated. When it cools down, the adhesion goes away and your print simply pops off, usually spontaneously. Moreover, if you have multiple plates with identical thickness, you can immediately start a new print by merely swapping them out, so you have all the time to remove the previous print from its plate. If you install a glass plate, don't forget to add a shim for the Z endstop. I also recommend using brackets that clamp the glass from the sides, so you don't need to worry about anything sticking out above the surface.
- If you use a glass plate, be aware that glass is a rather good thermal isolator, therefore to achieve a certain temperature at its top surface, you will need to heat the bed to a slightly higher temperature. For ABS, heating the bed to 110°C works fine for me when using a 3 mm plate, for PLA I use 60 to 65°C (depending on how cold the room is and the particular brand of PLA).
- The temperatures set in the LCD menu for preheating, are also the ones used during filament loading. This is good to know if you're loading special filament that requires a higher or lower temperature than usual.
- Unloading filament is often easier by choosing the ‘load’ option, waiting until some filament has been extruded, and then pushing the extruder lever and yanking out the filament. This avoids the problematic blob that usually occurs when unloading the normal way.
- Use a thin blade-like tool, like a safety razor blade in a printed holder, to start detaching prints at their corners. If this is not sufficient, use the initial clearance you made with the blade to shove a sheet of cut-up blister packaging under the print. If that still won't make the print detach from the platform, use the clearance you made with the blister sheet to shove some thicker sheet of plastic underneath. Avoid tugging on the print, it could mess up your plate levelling.
- When you are going to print something wider than 34 mm (the distance between the nozzles) with a single nozzle, and it is paramount that the unused nozzle won't bump into anything and ruin the print, unscrew it. The simplest way is to unload the filament, and unscrew only the nozzle itself with a 9 mm wrench, while clamping the heater with an adjustable wrench.
- For less crucial prints that do have certain fragile structures (like supports) at one side only, you can reduce the risk of disaster without removing the unused nozzle, by rotating the model such that the unused nozzle will not pass over the fragile parts.
An example of a print that miraculously recovered after the inactive nozzle had knocked over one of the supports. The other one survived, and the overhanging material stopped warping just in time. I avoided a repeat of this situation when I printed a second copy, by rotating the model with the supports pointing away from the inactive nozzle.
- To ensure both nozzles are at the same height, the easiest way is to remove the motor of the highest nozzle, loosen its set screw, and then align both nozzles right against the levelled plate (see YouTube video). If you cannot get a perfect alignment this way, you can correct those last few fractions of a millimetre by inserting a few layers of adhesive tape between the carriage and the aluminium bar at the side of the nozzle that is too high.
- Do not wipe the blue sticker or BuildTak-like material with a volatile solvent (like isopropanol) while it is hot, the sudden thermal shock from the boiling solvent could cause the sticker to crack. The same goes for glass, especially if it is not borosilicate glass.
- The cooling fan has no variable speed. Don't bother setting different speeds in Slic3r or Simplify3D, any speed higher than 0 will result in full throttle. This is because the microcontroller in the FFCP only offers an on/off control for the ‘EXTRA’ output the fan is connected to. There are two ways to obtain variable fan speed: either manual, by installing a PWM controller in between the ‘EXTRA’ output on the PCB and the fan, as explained here; or fully automatic through a more advanced setup as explained here.
(Note: in recent Sailfish source code, you'll find an improvised PWM implementation that can be enabled by recompiling the firmware. This however can only be controlled through the LCD menu before starting a print, and will not respond to variable speed values in the G-code.)
- When printing on a ‘disposable’ surface like the blue stickers or BuildTak, randomly position each print so the surface wears out more evenly instead of only in the middle.
- Some filaments, like flexible PLA, should not be printed on a BuildTak-like surface because they risk fusing with it. You can place some painter's tape on top. Of course, you only need to cover the front edge (for the priming extrusion), the rear edge (for bed levelling), and enough of the centre where you will be printing.
- If a print starts warping early on, do not hope it will end well, abort it. It is not worth it risking a huge mess or even damaging your printer due to the nozzles crashing hard into the warped print. Only if there are some problems in the final stage of a lengthy print, it could be worth it to give it a chance. I've had some prints that seemed hopeless but did end up alright (see the photo below). I even managed to save a dual extrusion print by anchoring a warped wiping skirt to the bed with tape, but this is stuff you should only try if you know what you're doing.
- Small holes will usually be printed with too narrow a diameter due to all kinds of effects. If it is crucial for a screw or axle to fit, you may want to design your models with polyholes, although they are not a guarantee for a perfect print. You can do a test print of only the part with the holes, and adjust the model if necessary.
- Models will shrink when cooling down after printing, this is especially the case with ABS. If accurate dimensions are needed, you should first print a long test piece with the same settings, and measure how its dimensions differ from the model. Then apply the inverse scale factor before printing the final model.
- Do not attempt to make dual material prints that mix ABS and PLA unless you really want to do something specific. The materials are quite incompatible.
- You can install a Toshiba FlashAir W-03 WiFi SD card to turn your printer into a WiFi base station or client, so you can wirelessly upload X3G files. (The info on that linked webpage is a little outdated, for instance recent versions of the card do support long filenames.) You may want to install my Web UI on the card to upload and manage files, it also comes with the necessary config templates to get the card working.
- Do not try to tap into the 5V lines of the endstops to attach LEDs or something, you are likely to trip a fuse that shuts down the 5V line for several hours, or worse, burn it out. If you want to attach extra lighting, your best bet is to use a separate voltage or current source hooked up directly to the 24V of the main PSU, or the mains lines if you really want zero risk of your tinkering blowing up the printer's electronics.
- Whatever hacks you try, make sure not to short-circuit any of the powered outputs (like the EXTRA output that drives the cooling fan). There is nothing that protects the MOSFETs from blowing up themselves. Replacing them is feasible, but requires considerable skill.
- Do not try to make an EEPROM backup with the ‘avrdude’ utility, the backup will be corrupt due to a bug in the bootloader of the printer. You can make a backup on SD card from within the LCD menu. You can use avrdude without problems to make and flash backups of the firmware itself, and sending an EEPROM file to the printer also works, only reading fails.
- Cooling is very important. Ideally you should cool the freshly extruded filament as quickly as possible to the point where it solidifies and no longer shrinks significantly, but not beyond that point. In theory you should blast the printed object with air just below the glass transition temperature, but that is not feasible with a consumer printer like the FFCP. To make things worse, the fan on an unmodified FFCP has no speed control, it is either 100% or 0% no matter what your slicing software pretends. The 100% fan speed is appropriate though in many cases, as long as you are using the stock hot-ends with undemanding filaments. PLA works fine with the fan at 100%. It usually also works well for small ABS objects printed with the ‘extrafine’ setting, which can result in deformation without cooling. For thicker ABS layers though, you need lower fan speeds for optimal results. For PETG it is even worse, it needs just a tiny bit of cooling to yield both strong and nice-looking results. The best solution to obtain variable fan speed is to let the printer communicate with a Raspberry Pi that handles the PWM control. A simpler but more cumbersome solution is to use a manual PWM controller.
- You will often read that you should “calibrate your printer”. What this means, is compensating for the discrepancy between actual versus expected length of filament consumed by the extruder. This discrepancy depends on how soft the filament is and how deep the teeth of the extruder gear bite into it. The deeper, the smaller the effective radius of the gear, and the more you will be under-extruding. This is compensated for by applying an extrusion multiplier. A traditional but cumbersome and wasteful method to determine the multiplier, is to print solid 20 mm test cubes and try various multipliers until the top surface doesn't sag nor bulge. Ths method had the ‘advantage’ of also compensating for the filament diameter not being what was assumed, but that is not what the extrusion multiplier is meant for. You must always accurately measure your filament diameter and configure this in Slic3r. If you do that, then you can use a far more effcient method to determine the extrusion multiplier. The idea is to extrude a known length of filament and then measure how much of it was actually consumed by the extruder. This article explains how to do this. Files to extrude specific amounts of filament on the FFCP can be found here. For typical filaments that are not extremely soft, the multiplier should be within the range 0.9 to 1.1. For things like NinjaFlex it can be higher. It is not essential to determine the multiplier exactly. In most cases you can make an educated guess at it, and if your prints look good and are accurate, then you shouldn't change the multiplier even if calibration says you should.
- To get maximum quality on single-extruder prints, remove not only the unused nozzle as explained above, but also the unused stepper motor. This will reduce carriage weight, hence reduce ringing (ripples at sharp corners). If you remove the right stepper, you must put a dummy one in place to ensure the X endstop is triggered.
- To minimise the visibility of seams, print at least two perimeters at near-identical extrusion rates. The easiest way to obtain this, is to enforce the same extrusion width and speed for internal and external perimeters. If you combine this with random perimeter start, you can get a truly seamless print without requiring vase mode. (The ‘extrafine’ profiles in my Slic3r settings do this.)
- Too large a retraction distance can cause air bubbles to be caught in the extruder, which will lead to an audible ‘pop’ a certain time after the extruder resumes, and a visible gap in the extrusion. Reduce extrusion distance until the pops are nearly impossible to hear. If you cannot eliminate the popping even with unacceptably low retraction distances, try reducing retraction speed (for some filaments I need to lower it to 9 mm/s).
- If your filament makes popping noises and holes in the extrusion at random moments even after you have perfected retraction settings, it has likely absorbed too much moisture. You can dry it by placing it in an oven at about 60°C (for PLA) or up to 80°C (for ABS) for at least 4 hours. Polycarbonate can even be dried quite quickly at 120°C, but you will probably need to take it off the spool, which cannot handle that kind of heat. Ensure the oven does not exceed the set temperature. A convection oven is best, but a regular oven is also OK if you put the spool in a cardboard box with holes in the sides, such that the box acts as a buffer against variations caused by the thermostat. Always store the filament in a sealed bag with desiccant when unused, to greatly slow down the rate at which it absorbs moisture.
- Some filaments like polycarbonate or nylon are even worse and are so hygroscopic (i.e. will absorb moisture so easily) that merely holding the filament with your bare hands will make it humid enough to ruin your prints. Do not use your bare sweaty hands to wrap a polycarbonate or nylon filament sample around a spool! Polycarbonate will not merely pop or look slightly bad when humid, it will foam like a rabid dog and ooze, and your prints will turn out a disaster. Manipulate such filaments with rubber gloves only, and keep exposure to room air to a minimum. If the room is reasonably humid, the filament may even become too humid within the duration of one print. Your only option in that case is to make an airtight spool holder box filled with desiccant, and provide an airtight feeding tube right up to the extruder.
©2016/09-2018/04 Alexander Thomas