3d Printing

Using replicatorg and Skeinforge 50 (or any version over 35 or so) with a Thing-O-Matic (TOM)

So you have a thing-o-matic and you are vaguely (or acutely) aware that there have been bugs addressed in the last 15 or so versions of Skeinforge but don't know how to make the software spit out something that will play nicely with your machine. I was in the same boat, after spending the summer on home renos and not fiddling with my printer I came back to quickly make something only to find out how far behind the curve I had drifted, so quick searching on the web showed that others had figured out what to do but their explanations were pretty vague if you didn't already know what what was going on, so I figured I would put together a quick step by step guide on what to do.

First thing is first, I'm running replicatorg on a linux box so the location of various files will doubtless be different under windows. As of me writing this, the current version of replicatorg is 0037 and skeinforge is 50 but in all likelyhood newer versions won't change things too much. Also I'm just using the vanilla Makerbot firmware (v3.1) and not any of the fancy replacements that allow acceleration support to work.

  1. Start up the current version of replicatorg and go into GCode->GCode Generator and pick "skeinforge (50)".
  2. Go into GCode->Edit Slicing Profiles... and pick "no5D", then press duplicate and name the new one thingOmatic or something.
  3. There are several pieces that go into the gcode that will eventually be executed to build your print including a number of files we have to now modify. On linux you will find these files in "~/.replicatorg/sf_50_profiles/thingOmatic/alterations" Assuming you named your duplicated profile as above and you are using skeinforge version 50. If you didn't, the directory name is left as an exercise to the reader.
    1. start.gcode - You need to steal this one from your skeinforge 35 profile or just use the linked one. This file sets up some preamble code that skeinforge doesn't bother with, including homing all the different axis, pre-heating the build platform and extruder and setting some defaults. One difference between the default you pick up from the SF35 profile and mine is that the default draws a diagonal line from the corner of the build surface to the start of the build, on mine I have disabled that line because it currently starts at the front corner of the build surface and goes to the back corner of the item you are building (thus under the object I'm building). This line is important however because the plastic will not start extruding immediately so if you use my version of start.gcode you should also make sure that you turn on "skirt" in skeinforge (described below).
    2. end.gcode - You need to steal this one from your skeinforge 35 profile or just use the linked one. This one provides the shutdown code and does what you would expect, turning off the heat to the extruder and such.
    3. replace.csv - You need to make sure the M108 line is not commented out (remove the semi-colon) or just use the linked one. This one is the magic, the start.gcode sets the flow rate of the extruder to some semi-sane default and that will be the only flow rate you bot sees if this line isn't changed (if yours is anything like mine, that flow rate will be too high and things will work but not all that well) in addition, any of the settings you mess with in skeinforge that affect flow rate will appear to do nothing because although the lines are output they are commented out.
  4. "Dimension" should be turned off in skeinforge, if you picked the "No 5D" profile to copy from it will be, but it is worth mentioning again because "Dimension" will not play nice with the other changes here.
  5. "Skirt" should be turned on in skeinforge if you copied my start.gcode so that the extruder has a chance to shoot some plastic before working on the actual model.
  6. At this point things should probably work as well as they have for you before with skeinforge 35. We can probably tune things in a bit better by ignoring the print-o-matic stuff and using skeinforge directly though...

Tuning Skeinforge

I'm by no means an expert at this and in fact haven't really played with it too much as of yet, but none the less here are some things that I have picked up:
  • Using profile maker will help you hone in on good settings for skeinforge quickly. There are a few terminology differences that are noted below on the newer versions of skeinforge that you should keep in mind though.
    1. Carve-> "Layer Thickness (mm)"
        is now Carve-> "Layer Height (mm)"
    2. Carve-> "Perimeter Width over Thickness (ratio)"
        is now Carve-> "Edge Width over Height (ratio)"
    3. Fill-> "Infill Width over Thickness (ratio)"
        is now Inset-> "Infill Width over Thickness (ratio)"
    4. Speed-> "Feed Rate (mm/s)"
        hasn't changed
    5. Speed-> "Flow rate Setting (float)"
        hasn't changed but the documentation has changed to say that this should be set to the same value as the "Feed Rate" setting above. Don't do this, use the value Profile Maker provides otherwise you will end up with a potentially absurd amount of flow.
  • You can potentially get better adhesion to the build platform if you slow down printing the first layer of plastic and skeinforge provides a few easy to set parameters to accomplish exactly this. I read this tip originally on the soft solder blog somewhere.
    To do this we have to change a few settings under "Speed", specifically we want to cut all the numbers under "Object First Layer" to about half of their original values, "Feed Rate" refers to how fast the platform moves so cutting those numbers to 0.6 or 0.5 means we will put the first layer down about half as fast as otherwise. "Flow rate" refers to how fast we are extruding the plastic and we need to reduce those numbers by about the same amount as the "Feed Rate" numbers above so that we have a nice solid base but not some giant oozy mess.
  • I like to turn on "Skirt" which puts an outline around the project which was on by default in the older versions of skeinforge, the main reason I do this is because I have modified the start.gcode so that it doesn't begin extruding right away, this in turn is because the first layer of anything I print ends up with a diagonal line through it, not important but it offends my OCDish sensibilities.
  • For the most part the documentation for the individual settings is pretty good so if you start from here, hopefully, you are getting pretty good prints and you can play with other settings to your heart's content based on the documentation or just happily print away.

Using Dimension With MakerBot Firmware

As a result of this thread I now know how to get dimension (5D) working. Conceptually the difference from a gcode perspective is instead of having M108 gcode lines that set the flow rate, you have a flow set (specifically how much plastic should go into the extruder) right in the G1 move commands. To do this we have to use a different driver in replicatorg to compile the gcode, reverse the extruder's rotation axis, do a little bit of fiddling with skeinforge and change the start end stuff in the alterations directory again. I'm assuming you have read the stuff above and have things working without 5D now.
  1. We need to create a new Machine Type so that we can use the different driver to compile the gcode. To do this we need to go to the directory where replicatorg was untarred and modify the "replicatorg-0037/machines/thingomatic.xml" file, specifically we need to duplicate the section that reflects your machine, so in my case I want to copy everything from <machine> to </machine> for the entry whose name field was "Thingomatic w/ HBP and Stepstruder MK7", then I plunk in a copy of these 24 lines and change the name field to, "Thingomatic w/ HBP and Stepstruder MK7 w/ Dimension Support" and change the driver field from <name="makerbot4ga"> to <name="makerbot4g">. Now we can save the file and exit.
  2. In the Machine->"Machine Type (Driver)" menu, pick your new entry. If everything is grayed out just disconnect the machine (unplug icon), and then you should be able to change the setting.
  3. Now we have to change a global setting that affects every profile so you have to remember to change this back if you ever change your machine type back. Apparently the new driver we used in the previous step reverses the sense of the extruder's rotation so we have to go into Machine->"Onboard Preferences..." and in the "Endstops/Axis Inversion" tab check or uncheck as appropriate "Invert A axis ...". Once you have changed the checkbox press "Commit Changes" and you are done.
  4. We will want a new skeinforge profile for 5D now, like above we need to duplicate a skeinforge profile, give it a name and then copy a good start.gcode and end.gcode from either a working skeinforge profile or the linked ones. We do not want the replace.csv now though because we no longer want to have M108 lines in our gcode.
  5. In our new profile we now need to turn on "Dimension", set the "Filament Diameter (mm)" to whatever your plastic measures out as. Set "Filament Packing Density (ratio)" to something that works and make sure that the "Flow Rate Setting (float)" in the Speed section is set to the same value as "Feed Rate (mm/s)". All good except for the handwavyness in setting packing density, on the plus side we have only one variable that is handwavy now, on the minus side, it is calibration cube time, I found anything below 1.0 for ABS was too much plastic and I'm still dialing it in.