Gas station without pumps

2018 July 1

Adding feet to the Monoprice Delta Mini 3D printer

Filed under: Uncategorized — gasstationwithoutpumps @ 09:22
Tags: , , ,

The first functional prints I’ve created from the new Monoprice Delta Mini 3D printer that I bought earlier this week (see Three boxes this morning!) are small plates to attach rubber feet to the bottom of the printer, to raise it off the table and improve airflow.

I looked at what Thingiverse had for accessories for the printer, and several people had designs for feet, but I didn’t really like any of the designs, so I decided to design my own.

Because 3D printing is so slow, I decided not to try to print tall feet, but to use some rubber feet that I bought back in 2012 from Parts Express. (If you follow that link, you’d find that Parts Express no longer has these feet, but has slightly smaller black rubber feet for about 66¢ each.)  This meant that I only had to design and print adapter plates that could be screwed on over the existing  feet, with a central hole for attaching the rubber foot.

The plate attaches with M3 screws. The design calls for replacing the existing M3×8 Phillips head screws with M3×12 socket-head screws, and I decided to recess the sockets into the plate, both for looks and to see whether the printer could bridge over the recess.  (If the printer had not been able to bridge, then I would have made that surface of the adapter plate be flat, and used M3×16 screws instead.)

I spent a fair amount of time measuring the irregular hexagonal end of the uprights of the printer, so that I could match it and the get the screw holes in the right places.  The measurements were not perfectly consistent, so I had to decide which measurements to take as “correct” and which to compute based on the chosen parameters.  I decided that all the angles should be treated as canonical (multiples of 30°), since that seemed like a likely choice for the designers of the printers.  I decided that the two parallel edges and the distance between them would be my other defining parameters, since that allowed easy definition in Cartesian coordinates, which also seemed like a likely choice for the original designers.

I did the design in OpenSCAD, which does not have anywhere near the feature richness of a professional tool like SolidWorks, but which is (for a programmer) much easier to learn to use, and easier to get precise results with.

Unfortunately, OpenSCAD does not produce the pretty renderings that SolidWorks does, so I can’t show you pretty design pictures. I can, however, share the source code for the design, which you can modify to produce different designs, or just compile and print. The code is at the end of this post.

View of the adapter plate from the outside, rendered by Finder’s “Quick Look” on a Mac.

View of the adapter plate from the printer side, showing the countersunk hole in the center, rendered by Finder’s “Quick Look” on the Mac.

My first print was to test whether I had the holes in the right places, and whether the printer was printing things at the specified size.  (I was pretty sure it was not, as I had printed the Make magazine test piece for dimensional accuracy, and had seen that the printer was printing about 3% small.)  The test print was just a 3mm slab, printed with 10% infill and 0.2mm layers for speed.  OpenSCAD made it easy to create this slab, by intersecting the design with a rectangular prism of the appropriate thickness and location.

The two test pieces I printed. Test piece 1 is a little small and has a few holes misplaced.  On test piece 2, you can see a little “stringing” where the unsupported bridging filaments drooped, but the overall integrity of the bridge seemed adequate.

The slab showed me that the printer was indeed printing a little small, and that I had misplaced the hole for the existing printer foot by 1mm and the screw holes further from the outside edge by about 0.5mm.  I moved the holes, figured out how to do scaling in Cura to scale the part by 102.9% when slicing, and did another test print—a 4mm slab that included the end of the recesses for the socket-head screws, so that I could test the overhang capability.  I printed this one with 20% infill.

The final design is a slab 7mm thick, which 5 screw holes: 4 for the M3 socket-head screws, and one for a 10-24 flat-head screw for attaching the rubber foot. The 10-24 hole is countersunk and is at the base of a cylindrical recess deep enough that the head of the screw has clearance from the foot that is already on the base of the printer. Because the existing feet are just stuck on with double-stick tape, it would probably have been easier to remove them rather than make clearance for them.

Outside view of a disassembled leg.

Printer-side view of a disassembled leg.

Because the 10-24 screw will be hard to retighten once the leg is on the printer, I squirted a little low-temperature hot-melt glue onto the nut after tightening it, so that it would not work loose from vibration.

The three printed legs, with the rubber feet attached. If you look closely, you can see a little of the clear hot-melt glue in the right-hand foot, to keep the nut from loosening.

Bottom view of the printer with the legs attached.

Side view of the printer with the legs attached.

Closeup of the printer with the legs attached, showing the greater space now available for airflow.

I printed the legs one at a time, so that in the event of printer failure, I would only have to redo one leg, rather than all three.

To print the legs, you need to open the .scad file with OpenSCAD, render it, and output a .stl file. Then use Cura to slide the model. I chose a layer height of 0.1mm, a wall count of 4 layers (for strength and stiffness), 4 top layers and 3 bottom layers, a concentric top and bottom pattern, 20% infill (a compromise between strength and speed of printing), and no special build-plate adhesion. The top layers are excessive, as that face is buried against the bottom of the printer and does not need to be pretty. The first leg I printed had some sort of printer/communication failure and froze after only one top layer had printed, and it is still a perfectly usable leg.

(Update 2018 July 15: I’ve made the clips available on Thingiverse: https://www.thingiverse.com/thing:3001872)

Here is the code for the adapter plate for extending the legs of the printer:

// Kevin Karplus
// 2018 June 30
// Leg for extending height of Monoprice Delta Printer, to improve airflow under printer.


// create a screwhole for metric screw of given length,
// with head extending in -z direction and screw in +z direction
// Loose=0.10 for loose fit, 0.05 for tight fit, about -0.15 for threaded hole
module screw_hole(metric_size=3, length=10, loose=0.10)
{   union()
    {   cylinder(d=metric_size*(1+loose), h=length*1.1, $fs=0.3);  // body of screw
    translate([0,0,-metric_size]) 
        cylinder(d=metric_size*2.2, h=metric_size*1.1, $fs=0.3);  // counterbore for head of screw
    }
}

// make countersunk hole for 10-24 flathead screw
// surface on xy plane at (0,0), screw extends in +z direction.
// length is the length of the hole for the threads (past the base of the head)
// diam is the diameter of the hole for the screw threads
// depth is the depth of the countersink
module countersunk_10_24(length=35, diam=5, depth=3)
{
    // top_diam is the diameter at the surface (the xy plane)
    // assumes that cone has an apeture of 90°
    top_diam = diam + 2*depth;
    union()
    {    cylinder (d=diam, h=length+depth, $fs=0.3);   // hole for screw
        // countersink (adding 0.1 overshoot to avoid coincident faces)
        translate([0,0,-0.1]) 
cylinder (d1=top_diam+0.2, d2=diam, h=depth+0.1, $fs=0.3); 
    }
}


// polygon that matches the foot of the Monoprice Delta printer,
// with outside edge on the x-axis, with center of edge at origin.
// "base" is the length of the outside edge in mm.
// Long edge of plate parallel to x-axis at y=height, of length long.
//
// The default parameter values were measured from the printer.  
// The angles are taken as canonical, and the parameters were chosen as
// those that could be easily defined on a Catersian coordinate system,
// with the other side lengths calculated from the geometry.
module foot_poly(base=50,long=65, height=32)
{   
    // how wide trapezoid would be without trimmed-off corner
    extra_long= base+ 2* height/tan(60);
    echo("extra_long=",extra_long);
    
    short = (extra_long-long)/2 * cos(30);  // shortest edge
    
    // Width at widest point (right-angle vertex)
    width =long + 2*short*cos(30);
    
    // remaining edge
    side = (width-base)/(2*cos(60));
    
    // How high up is the widest point
    height_at_width= side*sin(60);
    
    echo("edges=", base, side,short, long);
    echo("width=",width, "height=", height);
    echo("height_at_width=",height_at_width);
    polygon(points=[ [base/2,0], 
            [width/2, height_at_width],
            [long/2, height],
            [-long/2, height],
            [-width/2, height_at_width],
            [-base/2,0]]);
}



module foot(screw_length=12)
{
    // For the 4 M3 screws that hold foot plate to delta printer
    hole_length=screw_length-8;  // how much of screw thread is left?
    counterbore= 3;  // depth of counterbore
    thickness = hole_length+counterbore;
    
    old_foot = 3.7;  // height of bore to avoid old foot
    
    difference()
    {
        color ("red")  linear_extrude(height=thickness) foot_poly();

        color("green") translate([22.5,5,counterbore])  
            screw_hole(metric_size=3,length=hole_length);
        color("green") translate([-22.5,5,counterbore])
            screw_hole(metric_size=3,length=hole_length);
        
        color("blue") translate([32.5,25,counterbore])
            screw_hole(metric_size=3,length=hole_length);
        color("blue") translate([-32.5,25,counterbore]) 
            screw_hole(metric_size=3,length=hole_length);
 
        // make hole for old foot
        center=18;
        color("brown") translate([0,center,thickness-old_foot]) 
            cylinder(d=14,h=old_foot +0.1, $fs=0.6);
        
        // make countersunk hole for 10-24 screw for new foot
        color("magenta") translate([0,center,thickness-old_foot])
            rotate([180,0,0]) countersunk_10_24();
        
    }
}


{  foot();  
}
Advertisements

Blog at WordPress.com.

%d bloggers like this: