AO-100 Upgrade - printed x-end 2.0 clamp have wrong dims


This forum is a great idea, thanks for setting it up. :slight_smile:

This is quoted from the Getting control of layer variations on smaller prints topic.

I saw the AO-100 Upgrade blog post and printed a pair of x-end 2.0 clamps this weekend. I used the AO-x-end-clamp_acme_2.0_2.gcode file from

Problem is, the parts are not dimensionally accurate on some important details:

  • Center to center distance between the half-hexagonal grooves to sit under the smooth rods is about 1mm shorter than it should (see picture - at the bottom of the picture you can see the rod does not sit on the groove).
  • Center to center distance of holes on the bottom plate to attach to the upper x-end-idle is 31mm instead of 32mm
  • The rounded cutout on the smooth rod side is 13mm wide instead of 14mm.

It baffles me that all other dimensions seem correct, outer dimensions and the pillow block bushings holes.

Dimensioning an STL is a PITA in any CAD program and OpenSCAD code is gibberish to me. I opened the original scad file in FreeCAD, even though the import process is still not perfect it recreated most primitives which parameters can be read easily.

Any idea why something like this would happen? I have yet to generate new gcode from the original STL and print it to see if I have the same problem.

P.S. I’m NormandC on the FreeCAD forum, I’m the one who converted the TK-0 part models from SketchUp to FreeCAD. :slight_smile:

You’ll want to grab the model from and re-slice it. The rod grooves are going to be a little tighter, but they shouldn’t be as tight as what you are seeing. The G-code file you used may have been based off a changed model.

Thanks for the info. I also found that the OpenSCAD file here is missing some important geometry.

Last night I decided to remodel the x-end clamp in FreeCAD. It puts out nicer STLs than OpenSCAD IMHO, and they’re often half the file size. Based on the holes on the x-carriage_pillow.sldprt original SolidWorks file for the extruder mounting plate, I determined that the smooth rods on the X axis should be 50mm center to center and modeled my grooves accordingly.

I printed it tonight but had to cancel the print because I had bad drooping on the hexagon hole bridging. This is why I used the existing gcode in the first place, I’m really a complete noob at slicing and 3D printing.

As for the distance between the grooves, it’s not easy to measure, depending on where I take the measurement it seems to be between 49.5 and 49.9mm which is not too bad. But the part still won’t sit correctly on the smooth rods!

I researched further and found the problem is not where I thought it was. The problem is with the center to center distance of the X axis smooth rods. On the motor side they are 50.18mm apart, but on the opposite side (the one I pictured) they are 50.92mm apart.

I’m wondering if the grooves shouldn’t be made wider so to allow for such tolerance (which may cause other problems?), or maybe I should print a complete set with x-end-idle and x-end-motor and make sure the center to center of the grooves are as identical as possible between parts.

I have to admit that the idea of disassembling the whole X and Z axes to do the upgrade intimidates me. I have never assembled a 3D printer. I’m a designer and CAD guy, usually other people build the things for me!

Do you have pointers on avoiding that? Some parameter to set, or speed? I’ve attached my gcode file.

Thanks! (428 KB)

Would you mind exporting the Slic3r config you used to cut the models? It will be more helpful than the .gcode file. You may want to try to increase the Bridge Speed. Thanks for your feedback on the aforementioned models- I’ll forward it along.

You may want to go ahead and reprint the both portions of both sides of that axis, to make sure they match the dimensions.

Hi, the forum attachment utility does not allow .ini or .txt files, so here it is in code tags.

I’m actually using the default Lulzbot AO-101 Slic3r configuration for 0.5mm nozzle at 0.40mm layer thickness. For this specific print I changed the first layer width from 150% to 100% because I don’t like that it creates a wider base layer, plus with the hair spray trick I don’t have adhesion problems anymore (I hadn’t produced ABS juice yet).

# generated by Slic3r 0.9.8 on Sat Apr 20 00:00:32 2013
bed_size = 190,200
bed_temperature = 0
bottom_solid_layers = 3
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 60
brim_width = 0
complete_objects = 0
cooling = 1
default_acceleration = 0
disable_fan_first_layers = 1
duplicate = 1
duplicate_distance = 6
duplicate_grid = 1,1
end_gcode = M104 S0 ; turn off nozzle temperature\nM140 S0 ; turn off bed temperature\nG28 X0  ; home X axis\nM84     ; disable motors
external_perimeter_speed = 100%
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 1
extrusion_width = 0
fan_always_on = 0
fan_below_layer_time = 60
filament_diameter = 2.89
fill_angle = 45
fill_density = 0.8
fill_pattern = line
first_layer_bed_temperature = 0
first_layer_extrusion_width = 150%
first_layer_height = 100%
first_layer_speed = 50%
first_layer_temperature = 0
g0 = 0
gap_fill_speed = 40
gcode_arcs = 0
gcode_comments = 0
gcode_flavor = reprap
infill_acceleration = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0
infill_speed = 120
layer_gcode = 
layer_height = 0.4
max_fan_speed = 100
min_fan_speed = 35
min_print_speed = 10
min_skirt_length = 0
notes = 
nozzle_diameter = 0.5
only_retract_when_crossing_perimeters = 0
output_filename_format = [input_filename_base].gcode
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 90
perimeters = 2
post_process = 
print_center = 95,100
randomize_start = 1
retract_before_travel = 2
retract_length = 1.4
retract_length_toolchange = 3
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 25
rotate = 0
scale = 1
skirt_distance = 6
skirt_height = 1
skirts = 2
slowdown_below_layer_time = 8
small_perimeter_speed = 50
solid_fill_pattern = rectilinear
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_speed = 120
start_gcode = G28 ; home all axes
support_material = 0
support_material_angle = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_pattern = rectilinear
support_material_spacing = 2.5
support_material_speed = 60
support_material_threshold = 45
temperature = 0
threads = 2
toolchange_gcode = 
top_solid_infill_speed = 110
top_solid_layers = 3
travel_speed = 130
use_relative_e_distances = 0
vibration_limit = 0
z_offset = 0

Im having a really hard time printing these as well. Is there any purpose to the hex bridge layers, other than support? I assume to cut these out after printing to insert the threaded z rod?

I managed to clean mine up a bit with a dremel, but when I installed them I noticed that the pillow block end bottoms out on top of the coupler. The revised clamp is so long that it prevents the nozzle from making contact with the bed. I cannot seem make the proper adjustment to make this work. Is there any particular method to print and install these?

Hello Daubster,

You’re farther along than I.

I made a new print and this time I increased the bridge speed from 60 to 90mm/s but oddly it does not appear in my gcode file. Changed travel speed from 120 to 150 since that’s the speed in the Lulzbot gcode file I originally printed. I got only marginal improvement on bridging, but still sagging even in the small half-hexagon “channels”.

What I don’t understand is that the gcode file I downloaded from the Lulzbot website was not doing the bridging fast, and it turned out near perfect. What amazed me is that one of the “channels” was even printed longitudinally instead of transversally, so it had to bridge a 40mm distance instead of 5mm, and it didn’t sag! My sliced model has trouble not sagging with barely 5mm distance to cross.

The only noticeable difference I can see in the gcode is this:

extrusion_multiplier = 1.04

Mine is set to default 1.

I’m assuming the same, just comparing with the current part on my AO-100, this needs to be cut out since the ACME leadscrew has to go through it.

I just checked on my printer. I’m clear by a mere 2mm on the X-axis pulley side, but I need about 1.5mm on the motor side. I can see that the motor side coupler is installed higher than on the opposite side. At these small values there’s no room for error.

I’ve been modeling the AO-101 in FreeCAD partly to practice my FreeCAD skills, and partly to understand its construction better and its differences with the AO-100. Tonight I modeled the lower Z motor mount as per the AO-101 latest STL and in fact, it’s been redesigned to lower the motor.

So the AO-100 lower z motor mounts need to be replaced with the AO-101 ones for this upgrade as well.

Honestly I think this might be a little more than what I’m prepared to do at the moment. I have no experience building a 3D printer. I have printed so few parts so far and have so little experience I think I would not really see the benefit of this upgrade at this point.

I completely forgot to mention that the Lower_Z_Mount_Motor_V2.4.stl file available at does not seem complete. The holes for the M5 screws fastening the z clamp are not drilled through. I wonder if that’s intended, maybe they are drilled through after printing. There is no recess for the hex nuts either. And that region has a massive overhang of 12.5mm x 44mm. Maybe that one needs support.

Fine research Gemini! You are absolutely right. The new x-end clamp only works with the AO-101 motor mount. Wish this would have been documented here before I disassembled my printer and spent several hours rebuilding and calibrating!

Me too. It was pretty scary disassembling the x carriage. But now that I know how to do it I feel a little more confident in printing upgrades and recalibrating. However, replacing the z motor mounts will introduce another potential problem that I am not ready to deal with. For now, I modified the new x-end clamp by shortening the pillow block end so that it doesn’t interfere with the original AO-100 z motor mounts and coupler. Pics here: This should still resolve some of the layer variation and drift problems I have been experiencing.

I was finally able to print these with satisfactory results. I used the 5mm nozzle and downloaded the 5mm slicer config for the AO-100 from here The only thing I changed was to increase the bridge speed to 60mm/s and the layer height to .4. This significantly improved the sagging problem.

If anyone thinks they may have use for this modified x clamp 2.0 I can upload it. I can going to find time to install them this week and report back the results. Hope this info helps!

OK so I was completely wrong. I just had a quick look at the STL in FreeCAD:

At first look it seems like the holes for the smooth rod clamp don’t go through.

But tonight I checked the gcode file preview in Pronterface and saw that bridging is done in one layer then the hexagon cutout is printed. So I opened the file back in FreeCAD, converted the stl to solid and set the part’s transparency to 70% and here it is:

So the holes and the hex cutouts need to be cut afterward with a knife.

That’s some big overhang surface and no support is used in Lulzbot’s gcode file. Even if I may not do the upgrade before some time I think I’ll attempt to print this and see if I can achieve this kind of bridging.

I’ll post a comment to link this topic when I get the chance.

Good call, that will save you more disassembly.

What problem would that be?

Well, I’m speculating that the x axis must be perfectly perpendicular to the y axis in order to make quality prints. If you replace the z motor mounts than you could potentially skew the x axis. Im guessing a straight angle will help recalibrate, but again I’m completely new to this.

You shouldn’t have to print new Z motor mounts to update the X clamps from AO-100 to AO-101.

Sorry but… we do. There is not enough clearance with the old AO-100 Z motor mounts. It’s no coincidence the AO-101 Z motor mount was redesigned with a lowered top surface! The step motor is lower on the AO-101 than on the AO-100.

Compare this picture with the FreeCAD screen capture of the Lower_Z_Mount_Motor_V2.4.stl file I showed earlier (here).

I homed the Z axis prior to taking this picture. As I said earlier

By “I need about 1.5mm” I meant I’m short 1.5mm.

Hey guys, this is Seth from Lulzbot.

I wanted to jump in and state that you indeed do not need to upgrade your lower z motor mount.
We’ve upgraded our fleet of 40x AO-100s with these clamps without a single motor mount.
If you do run out of space, you’re hitting the clamp on the top of the coupler. All you need to do is lower your coupler a little and you should be good to go.
I updated the motor mount for the AO-101 just to give us some extra space, but it’s not needed for the upgrade.

Hi Seth, thanks for the input. I have an AO-100 and printed these new x clamps. As described in my earlier post, I am having trouble installing these. I recall lowering the couplers as low as they could go without hitting the motor mount and was barely able to reach the bed (within 1mm). The bigger problem I had was that the end-stop was interfering with the x clamp on the other end. I could not get it low enough to clear the clamp, as it still sits taller than the coupler.

Overall, it just seems that these tolerances are so tight and its not such an easy swap. I printed the lower z motor mounts already and plan to install them soon. Hopefully this gives me enough clearance. I will try to document the process and some of the problems I have been experiencing.

OK, so I finally performed the complete upgrade as described here:

Now, I know you guys at Lulzbot will say otherwise, but for you folks with the A0-100 there are some other parts you might need to print and install before swapping out these new x-end clamps 2.0. I needed to install the updated z-motor mounts and adjustable end-stop holder for the A0-101, because the original parts for the A0-100 caused too much interference with the elongated pillow block end on the new x clamp. I also replaced my original plastic couplers with some aluminum flex couplers. They are much shorter so there is plenty of clearance for homing the x-ends.

Im happy to report that the upgrade is successful and I’m getting quality prints. No more z-wobble or skipped steps!

I wanted to point out that the problem may be caused by hairspray shrinking the lower layers of the parts, as I was using it at the time.

I have yet to print those parts again on PET and lulzjuice to check up on that.