Advertisements

Archive for April 16th, 2013

Makergear M2: Fundamental Test Object

Building these things seems to be the simplest and best way to figure out whether you have all the pieces flying in formation:

Thinwall box - first success

Thinwall box – first success

I took that picture after cracking them off the glass plate, then putting them back: the box really does line up with the skirt while printing. There’s another object visible in the background; that little box really was the first completely successful object.

It’s adapted from Coasterman’s classic calibration set, redone in OpenSCAD so it’s easy to modify. A pair of Minkowski sums produce two shapes that ensure the wall remains exactly one thread wide all the way around the perimeter.

[Update: The revised version works better.]

When your printer can print one of these, then you can move on to more complex objects, secure in the knowledge that you’ve established:

  • Proper bed leveling and height setting: measure the skirt thickness
  • Both the layer thickness and width match your settings
  • Extrusion temperature: not too hot, not too cold
  • Printing speed / acceleration for all layers
  • First layer adhesion to platform
  • Minimum layer time to prevent melting / slumping
  • Filament diameter
  • Extrusion “packing density” multiplier: the fundamental fudge factor
  • Accurate steps/mm for all axes to get exact XYZ dimensions
  • Mechanical stability and rigidity

Basically, this object leaves no place for errors to hide. It doesn’t check infill, the various perimeter speeds, solid layers, and suchlike, but all the fundamentals must be correct or you’ll see painfully obvious flaws.

For example, there’s a bit of a zipper at the layer changes. It’s better than the Thing-O-Matic ever was, but it improved as I twiddled the Retraction settings on later objects.

No, the first few didn’t work quite that well:

M2 - Thinwall box with previous attempts

M2 – Thinwall box with previous attempts

For what it’s worth, the last problem turned out to be a loose setscrew in the X axis motor pulley that produced a layer shift that closely resembled a stepper motor losing steps. All of the setscrews now sport a dab of low-strength Loctite, so that problem shouldn’t happen again.

Yes, I did the happy dance…

The slic3r header:

; generated by Slic3r 0.9.8 on 2013-03-26 at 11:01:10

; layer_height = 0.25
; perimeters = 1
; top_solid_layers = 3
; bottom_solid_layers = 3
; fill_density = 0.20
; perimeter_speed = 100
; infill_speed = 150
; travel_speed = 500
; scale = 1
; nozzle_diameter = 0.35
; filament_diameter = 1.70
; extrusion_multiplier = 0.9
; perimeters extrusion width = 0.40mm
; infill extrusion width = 0.40mm
; first layer extrusion width = 0.39mm

The solid model has no surprises:

Thinwall Open Box - solid model

Thinwall Open Box – solid model

The OpenSCAD source code:

// Thin wall open box calibration piece
// Adapted from Coasterman's Calibration set
// Ed Nisley - KE4ZNU - Dec 2011
// Adjust for Slic3r/M2 - March 2013

//-------
//- Extrusion parameters must match reality!
//  None of the fill parameters matter

ThreadThick = 0.25;
ThreadWidth = 0.40;

Protrusion = 0.1;           // make holes end cleanly

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

//-------
// Dimensions

Height = IntegerMultiple(5.0,ThreadThick);

WallThick = ThreadWidth;

CornerRadius = 2.0;
CornerSides = 4*8;

SideLen = 20.0 - 2*CornerRadius;

Rotation = 45;

//-------

module ShowPegGrid(Space = 10.0,Size = 1.0) {

Range = floor(50 / Space);

for (x=[-Range:Range])
for (y=[-Range:Range])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);
}

//-------

ShowPegGrid();

rotate(Rotation)
translate([0,0,Height/2])
intersection() {
difference() {
minkowski() {
cube([SideLen,SideLen,Height],center=true);
cylinder(r=CornerRadius,h=Protrusion,$fn=CornerSides);
}
minkowski() {
cube([(SideLen - 2*WallThick),(SideLen - 2*WallThick),2*Height],center=true);
cylinder(r=CornerRadius,h=Protrusion,$fn=CornerSides);
}
}
cube([2*SideLen,2*SideLen,Height],center=true);
}

[Update: You should use the code from the revised version.]

Advertisements

,

24 Comments