Frank-O-Squid Configuration

My old Thing-O-Matic has new life as the Frank-O-Squid at Squidwrench Galactic HQ, with all the original Makerbot electronics replaced by an Azteeg X3 controller. Over the last several weeks I’ve coaxed it into doing most of the right things at the proper speeds & feeds, so we can now move on to actually making stuff:

Frank-o-Squid in action
Frank-o-Squid in action

The warping on that little digital caliper thumbwheel holder show that I don’t have the tiny-object slowdown settings quite correct, but it’s getting close.

The Marlin firmware is on GitHub. I intended to set it up so that pulling changes from upstream Marlin would be easy, but totally blundered something along the way. I’ll eventually plug the changes from Configuration.h, Configuration_adv.h, and pins.h into a clean branch and start over, but, for now, we’re slowly diverging from consensus reality.

Although the platform still has the Z-min switch over on the right edge, neither the firmware nor Slic3r pay any attention to it. A stub in the startup G-Code sequence does a head fake toward the switch, but doesn’t actually probe it.

I scrapped the original craptastic Makerbot ATX power supply and replaced it with Makergear’s huge 12 V laptop brick that powered the original M2 platform, so the thermal switches on the extruder no longer do anything useful; it’s running bare, pretty much like all other 3D printers.

The Slic3r configuration exports thusly:

# generated by Slic3r 1.0.0RC1 on Mon Mar  3 07:48:29 2014
avoid_crossing_perimeters = 0
bed_size = 105,120
bed_temperature = 100
bottom_solid_layers = 3
bridge_acceleration = 0
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 40
brim_width = 1.0
complete_objects = 0
cooling = 1
default_acceleration = 0
disable_fan_first_layers = 1000
duplicate = 1
duplicate_distance = 6
duplicate_grid = 1,1
end_gcode = ;---- end.gcode starts ----\n; TOM 286 - Al plates + Geared extruder\n; Ed Nisley - KE4ZNU - January 2014\n; Marlin with tweaks for Azteeg X3 with thermocouple\n;- inhale filament blob\nG91\nG1 E-5 F900\nG90\n;- turn off heaters\nM104 S0         ; extruder head\nM140 S0         ; HBP\n;- move to eject position\nG0 Z115 F1000   ; home Z to get nozzle away from object\n;G92 Z115      ; reset Z\nG1 X0 F6000     ; center X axis\nG1 Y35          ; move Y stage forward\n;---- end.gcode ends ----
external_perimeter_speed = 50%
external_perimeters_first = 0
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 0.95
extrusion_width = 0.50
fan_always_on = 0
fan_below_layer_time = 1
filament_diameter = 2.95
fill_angle = 45
fill_density = 0.15
fill_pattern = honeycomb
first_layer_acceleration = 0
first_layer_bed_temperature = 100
first_layer_extrusion_width = 0.50
first_layer_height = 0.25
first_layer_speed = 10
first_layer_temperature = 210
g0 = 0
gap_fill_speed = 30
gcode_arcs = 0
gcode_comments = 0
gcode_flavor = reprap
infill_acceleration = 0
infill_every_layers = 2
infill_extruder = 1
infill_extrusion_width = 0.50
infill_first = 1
infill_only_where_needed = 1
infill_speed = 50
layer_gcode =
layer_height = 0.25
max_fan_speed = 100
min_fan_speed = 35
min_print_speed = 10
min_skirt_length = 3
notes =
nozzle_diameter = 0.4
only_retract_when_crossing_perimeters = 1
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
overhangs = 1
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0.50
perimeter_speed = 30
perimeters = 1
post_process =
print_center = 0,0
raft_layers = 0
randomize_start = 1
resolution = 0.05
retract_before_travel = 0.0
retract_layer_change = 0
retract_length = 0.75
retract_length_toolchange = 10
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 30
rotate = 0
scale = 1
skirt_distance = 2
skirt_height = 1
skirts = 1
slowdown_below_layer_time = 30
small_perimeter_speed = 50%
solid_fill_pattern = rectilinear
solid_infill_below_area = 5
solid_infill_every_layers = 0
solid_infill_extrusion_width = 0.50
solid_infill_speed = 150%
spiral_vase = 0
standby_temperature_delta = -5
start_gcode = ;---- start.gcode begins ----\n; TOM 286 - Al plates + Geared extruder + Zmin platform sense\n; Ed Nisley - KE4ZNU - January 2014\n; Marlin with tweaks for Azteeg X3 with thermocouple\n;\n; Set initial conditions\nG21                 ; set units to mm\nG90                 ; set positioning to absolute\n;----------\n; Begin heating\nM104 S[first_layer_temperature]         ; extruder head\nM140 S[first_layer_bed_temperature]	; start bed heating\n;----------\n; Home axes\nG28 X0 Y0 Z0\nG92 X-53.5 Y-58.5 Z114.5\n;----------\n; Initial nozzle wipe to clear snot for Z touchoff\nG1 X0 Y0 Z3.0 F1000     ; pause at center to build confidence\nG4 P1000\nG1 Z10                  ; ensure clearance\nG1 X39 Y-58.0 F1000    ; move to front, avoid wiper blade\nG1 X55                  ; to wipe station\nG1 Z6.0                 ; to wipe level\nM116                    ; wait for temperature settling\nG1 Y-45 F500            ; slowly wipe nozzle\n;-----------------------------------------------\n; Z platform height touchoff\n; Make sure the XY position is actually over the switch!\n; Home Z downward to platform switch\n; Compensate for 0.05 mm backlash in G92: make it 0.05 too low\nG1 X56.0 Y8.2 F5000\nG1 Z4.0 F1000     ; get over build platform switch\n;G1 Z0 F50                    ; home downward very slowly\n;G92 Z1.45                    ; set Z-min switch height\nG1 Z6.0 F1000                ; back off switch to wipe level\n;-----------------------------------------------\n; Prime extruder to stabilize initial pressure\nG1 X55 Y-45 F5000   ; set up for wipe from rear\nG1 Y-58.0 F500      ; wipe to front\nG91                 ; use incremental motion for extrusion\nG1 F100               ; set decent rate\nG1 E10              ; extrude enough to get good pressure\nG1 F2000            ; set for fast retract\nG1 E-1.0            ; retract\nG90                 ; back to absolute motion\nG1 Y-45 F1000       ; wipe nozzle to rear\n;----------\n; Set up for Skirt start in right front corner\n; Compensate for Z backlash: move upward from zero point\nG1 X40 Y-40 F5000\nG1 Z0.0 F1000     ; kiss platform\nG1 Z0.2 F1000       ; take up Z backlash to less than thread height\n;G92 E1.0            ; preset to avoid huge un-Reversal blob\n;G1 X0 Y0\n;---- start.gcode ends ----
start_perimeters_at_concave_points = 1
start_perimeters_at_non_overhang = 1
support_material = 0
support_material_angle = 0
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0.50
support_material_interface_extruder = 1
support_material_interface_layers = 3
support_material_interface_spacing = 0
support_material_pattern = honeycomb
support_material_spacing = 2.5
support_material_speed = 60
support_material_threshold = 0
temperature = 210
thin_walls = 1
threads = 2
toolchange_gcode =
top_infill_extrusion_width = 0.50
top_solid_infill_speed = 50%
top_solid_layers = 3
travel_speed = 150
use_firmware_retraction = 0
use_relative_e_distances = 0
vibration_limit = 0
wipe = 0
z_offset = 0

All of that should become three TOM286 - Default sub-profiles.

The Pronterface configuration looks like this:

set port /dev/ttyUSB0
set monitor True
set last_bed_temperature 100.0
set last_temperature 210.0
set baudrate 115200
set temperature_abs 210
set xy_feedrate 5000
set z_feedrate 1000
set build_dimensions 110.00x120.00x117.00+0.00+0.00+0.00+0.00+0.00+0.00
set extruders 1
set slic3rintegration True
set tempgauges True
set preview_extrusion_width 0.4
set e_feedrate 100
set last_extrusion 3
set last_file_path /home/ed/Documents/Thing-O-Matic/Calibration/Thread Thickness
set recentfiles ["/home/ed/Documents/Thing-O-Matic/Calibration/Thread Thickness/Caliper Thumbwheel Holder.gcode", "/home/ed/Documents/Thing-O-Matic/Calibration/Thread Thickness/Thinwall Open Box.gcode", "/home/ed/Documents/Thing-O-Matic/Calibration/Thread Thickness/Platform Level.gcode", "/home/ed/Documents/Thing-O-Matic/Calibration/Circle Diameter Calibration/Small Circle Cal - M2 0.2 mm.gcode", "/home/ed/Documents/Thing-O-Matic/Calibration/Circle Diameter Calibration/Small Circle Cal - TOM.gcode"]

As you can see, it’s all running from a directory on my old laptop. The next step involves migrating everything to a dedicated PC next to the printer, so nobody else need worry about this stuff…

6 thoughts on “Frank-O-Squid Configuration

  1. Awe – Ed —- Why did you not build your own printer? Over the last several years you’ve had so many ideas, changes, corrections and accumulated experiences. You would make a good printer.

    I’ve still my T-O-M but, rather than remake it I made a new Rostock a year ago w/RAMPS 1.4, Marlin, & Pronterface. I’m contemplating making my own Delta version – but, would not want to disrupt the T-O-M. It is now a classic and there are better/bigger platforms to grow into. And with the T-O-M you are still with the platform which wobbles the printed parts under the stationary hot end.

    Last week I made a mostly metal hot end – Stainless pipe nipple delivery tube, push-to-connect fitting for bowden, aluminum heat block with a heater core instead of resistors and a thermistor instead of a thermocouple. Hmmm. I see now it is a remake of the MB MK5/6. Granted I started with SS pipe nipple, alum. block and connector. Seems to work but, does need the fan on the entry tube. I’ve tested it to 220mm/m with even flow. – last week I also reworked a Chinese J-Head MK V to be bowden with the addition of the push-connect fitting. Will be receiving another hot end from Poland ( It will be customized by the maker to bowden for me. — Now, with the extra hot ends I’ll need to make more printers.??? I’ve still parts for an original Printrbot from their first Kickstarter – but, don’t know if that is a wise effort to build. I surely need to get ideas into builds.

    Say, are you regularly working or contracting?

    Pittsburgh, PA

    1. build your own printer?

      Makerbot’s description of their shiny-new Thing-O-Matic was so compelling that I figured it would Just Work. After the first few improvements (the ones that made it work), the Thing-O-Matic was pretty close to what I needed: a way to build parts I couldn’t create any other way. All the incremental tweakage improved the results, but, as you observe, there’s a point beyond which it simply cannot go.

      The M2, after a few minor tweaks, is just about perfect for my simple needs. The long-stalled LinuxCNC conversion project aside, there’s little motivation to change it; some recent developments in platform leveling look interesting, though.

      So I haven’t had much motivation to build a printer from scratch; it’s been easier to start with whatever’s closest to the goal and build on that foundation. The M2 is quite close to the goal!

      need the fan on the entry tube

      I must do more doodling on water cooling, because I think tighter thermal control (heck, better thermal instrumentation) of the extruder would produce much better results; it should be impossible to wreck a hot end under normal operating conditions.

      regularly working or contracting?

      Let’s say that, while I remain busy around the house, I could be distracted… [grin]

      1. FYI – You likely know that the Marlin firmware can monitor two hot end thermistors so that a heater cartridge enabled hot end doesn’t experience thermal runaway and burns up. ??? The two thermistor temps are compared and when out of sync by X% they turn off the hot end. I haven’t used but, it is supposed to be within the firmware.

        LOL. Hot End Burns Up! An event that I experienced two weeks ago when the thermistor connector wire began to break and the hot end temperature ran away – Sizzling, black, bubbly, melting and smoking the PEEK insulator disintegrated in the machine. Only damages/losses were the hot end and my efforts having recently finished calibrating the machine. The smoke out was the reason I was re-building a hot end into an all metal hot end and awaiting the mail for other replacements. :-)

        1. Marlin firmware can monitor two hot end thermistors

          Huh… learn something new every day: thanks for the tip!

          There’s a bunch of stuff in there that I’ve barely glanced at, like the Z-min probing and platform leveling. At some point I need to just sit down and read the code, but …

          hot end temperature ran away

          I stand admonished!

      2. “Long stalled LinuxCNC conversion project”

        I was just looking into this, myself. Did you see the BeagleBone Black running LinuxCNC running printers through, eg. BeBoPr++? It looks almost exactly like what I’ve seen you aiming for (Note: I’m about 3-4 months behind reading your blog) It seems that the CPU in the BeagleBone Black has two dedicated realtime coprocessors, which already have HAL setups for LinuxCNC.

        1. BeagleBone Black running LinuxCNC

          Yup, I may have to break down and do that, although the capes seem both expensive and hard to get.

          The x86 implementations have more HAL features, like the USB-HID interfaces, than the ARM versions; it’s probably just a matter of time before they have that working.

Comments are closed.