Gas station without pumps

2018 July 9

Monoprice delta 3d printer glass clips

Filed under: Uncategorized — gasstationwithoutpumps @ 14:50
Tags: , ,

In addition to the legs I added to my new Monoprice Delta Mini 3d printer, I’ve also added a 120mm borosilicate glass plate to the heated bed.  The glass plate needs to be immobilized, so I designed some clips loosely based on designs I saw on Thingiverse.

This is version 7 of the clip. The clip here is shown upside-down, which is how it is built on the printer. The rim holds the plate down, and the two cantilevered sections fit under the aluminum baseplate.  The image is exported directly from OpenSCAD.

Here is another view, with the clip the right way up, viewed from the pin side, rather than the glass side. The existing pin for holding down the aluminum plate rotates into place in the semicircular hole left for it.

Several of the dimensions of the clip are critical, and getting them even half a millimeter off made the clip non-functional. Because I’m not very good at measuring (nor very observant about all the dimensions I needed to measure), it took me seven tries to get a design that would work.

To make the design easier, I recalibrated my printer based on the Make magazine dimensional accuracy test object. The test object was printing a little smaller than it should, so I scaled the steps/mm calibration from the 113 steps/mm to 116 steps/mm. To make the change, I gave the “m503;” command to get the current settings, then “m92 x116 y116 z116;” to rescale the steps, and finally “m500;” to save the settings in non-volatile storage. I power-cycled the 3d printer and confirmed that the settings had been saved with “m503;”.

I designed the clips with OpenSCAD and sliced them with Cura, using 0.1mm/layer, 3 layers for the walls, and 4 layers top and bottom (I think—Cura does not save any of this metadata in the gcode file except the layer height).  The V7 clip supposedly uses 70cm of filament, which at 1.24 g/cm3 or 3g/m for 1.75mm diameter PLA is about 2.1g of PLA per clip. At 2¢/g, the clips cost under 20¢ for materials, even with the 6 failed designs, but I spent a lot of time on the design and a fair amount on the printing (each print run takes about 15–20 minutes, so there were about 3–4 hours of printing involved).

Some parts of the design were simple, like getting the 120mm diameter circular arc and the 2mm wide lip to hold down the glass plate. The harder parts were getting the pin diameter and distance from the glass plate right, leaving room on the bottom for the alignment pin, and making the clip under the plate thin enough not to interfere with the button movement for the automatic bed leveling.

This is the top view of all 7 clip designs showing the evolution from a pair of circular arcs to a more solid object.

The bottom views are more informative. V1 did not extend below the aluminum plate at all, and had too small a radius for the pin. V2 extended below the plate, but did not wrap around it and the cutout for the plate did not extend back far enough. V3 extended the cutout for late back far enough, but got the angle wrong. V4 tried wrapping around the edge of the plate, but got the depth of the slot wrong—I also had to cut some of the print with diagonal cutters to make room for the alignment pin. V5 fixed the angle of the slot and left room for the pin, but did not correct for the change in angle by increasing the slot depth. V6 got the slot depth and other XY dimensions right and reinforced the side of the slot by adding triangular panels to the clip, but was too thick below the plate, so that the buttons wouldn’t press. V7 extended the plates to reinforce the slot for the whole length of the slot and had only 1mm below the plate.

Here are the clips in place, holding down the glass plate after reprinting Make‘s dimensional test.

The prints pop off the glass plate very easily—perhaps too easily.  I used the last of our spray fixative on the plate before printing, as an attempt with nothing on the plate ended up with no adhesion—I’ll probably go buy some hair spray to use as fixative for future prints.

The glass plate does result in a shiny bottom layer for the prints—a much smoother bottom layer than the slightly textured surface of the provided bed.

Here are the dimensions of the dimensional test printed on the glass bed:

nominal 25mm 20mm 15mm 10mm
center X 24.95mm 19.95mm 15mm 10mm
center Y 24.85mm 19.9mm 15mm 10mm
outer X 25.05mm 19.95mm 14.9mm 10mm
outer Y 25.15mm 20mm 15.25mm 10mm

Center Z height: 20.4mm  Outer Z height: 20.5mm

The X measurements are using the edges with a notch, and the Y measurements are from the perpendicular pair of edges. The center measurements are from the copy closer to the center of the bed. All XY dimensional inaccuracy is less than 1%, so the step size is adjusted about as good as I can make it (maybe I could change the X to 116.1 steps/mm and Y to 115.9 steps/mm) , but the Z dimension is 2–2.5% too large, so I should set the Z steps/mm to 113.4.

Here is the OpenSCAD code for the clip. It is not the most elegant way to describe the clip (because of the evolution of the code over the 7 versions), but it works. (Update 2018 July 15: I’ve made the clips available on Thingiverse: https://www.thingiverse.com/thing:3001881)

// Clip for holding down 120mm diam glass plate
// on Monoprice Delta printer
// Kevin Karplus
// 2018 July 6 

// xy plane is top of the clip.

thickness= 3;   // thickness of glass in mm
radius = 60;   // radius of glass in mm

overhang_thickness = 2;   // thickness of overhanging lip that holds glass
overhang_width = 2;     // how fare lip extends over the glass.
glass_angle = 42;   // arc in degrees of lip for glass

above_plate= thickness+overhang_thickness;

plate = 2;      // Existing plate is 2mm thick
below_plate=1;  // Max thickness below plate
                // (2mm space, but need 1mm travel for bed leveling)

height = above_plate + plate + below_plate;

pin_radius = 5.5;   // radius of circle cut away for pin
big_pin_radius = pin_radius+4; // size of ring around pin

pin_center = radius + 11;

plate_angle = 100;   // angle of plate edges in degrees.

intersection()
{
    difference()
    {
        union()
        {

            // Part that holds down glass
            intersection()
            {
                difference()
                {   // outer-edge
                    cylinder(r=radius+4, h=height, $fn=180);  // outer edge
                    translate([0,0,overhang_thickness]) cylinder(r=radius, h=height, $fn=180); //glass edge
                    cylinder(r=radius-2, h=3*height, center=true, $fn=180);// inner edge
                } // end difference

                // wedge to reduce arg
                linear_extrude(height=3*height, center=true)
                {   polygon(points=[ [0,0],
                        [100,100*tan(glass_angle/2)],
                        [100,-100*tan(glass_angle/2)]]);
                }

            } // end intersection

            // part that connects with existing clip pin
            translate([pin_center,0,0])
                difference()
                {   cylinder(r=big_pin_radius, h=height, $fs=0.2);  //outer edge
                    cylinder(r=pin_radius, h=3*height, center=true, $fs=0.2); // edge contacting pin

                    // cut to half circle
                    translate([3*pin_radius,0,0])
                        cube([6*pin_radius,6*pin_radius,3*height], center=true); 

                } // end difference

            // triangular fill to reinforce join between pin and glass
            translate([pin_center,0,0])
            {   outside_x= pin_center - cos(glass_angle/2)*(radius+4);
                linear_extrude(height=height)
                {    polygon(points=[ [-big_pin_radius, 0], [0, big_pin_radius],
                        [-outside_x, big_pin_radius+outside_x*tan(plate_angle/2)]]);
                };
                linear_extrude(height=height)
                {    polygon(points=[ [-big_pin_radius, 0], [0, -big_pin_radius],
                        [-outside_x, -big_pin_radius-outside_x*tan(plate_angle/2)]]);
                };
            } // end translate
        } // end union

        // cut away space for baseplate
        triangle_x = 40;  // large enough to cut everything
        triangle_y = triangle_x * tan(plate_angle/2);

        translate([pin_center+3,0,above_plate])
            {    linear_extrude(height=plate)
                    polygon(points=[[0,0],
                                [-triangle_x,-triangle_y],
                                [-triangle_x,triangle_y]]);
            }
    }

    // keep only those parts that don't interfere with the alignment pin
    // trimming the cantilevered below-plate part to a narrow rim
    union()
    {
        // everything above the plate is fine
        translate([0,0,above_plate/2]) cube([500,500,above_plate+0.001], center=true);
        // below the plate, make circular keep-regions
        keep_radius=22;
        translate([pin_center+8, keep_radius, above_plate])
            cylinder(r=keep_radius, h=height, $fn=180);
        translate([pin_center+8, -keep_radius, above_plate])
            cylinder(r=keep_radius, h=height, $fn=180);
    }
}
Advertisements

4 Comments »

  1. Since you are using 3d-printed parts to hold together a heated bed, you should keep in mind that the heat from the bed will eventually affect the parts. One possibility is that it will eventually anneal the parts, which will change their dimensions non-uniformly (typically will shrink in X and Y and grow in Z).

    If you encounter this, you could print a calibration cube and anneal it, then scale your part in the inverse and anneal it before use. There are a lot of approaches to annealing. I’m guessing you don’t cook sous vide, so that approach wouldn’t work for you, but maybe you can run one of your incubator boxes you built, if you can get them hot enough. For PLA, heat slowly to about 65⁰C, leave it for about an hour, then slowly cool.

    Comment by Michael Johnson — 2018 July 15 @ 17:07 | Reply

  2. […] I downloaded the program and looked at it carefully, to make sure it wouldn’t mess up my printer.  It seemed pretty clean, except for one block that set the steps/mm for the stepper motors.  The step setting would have been way off for my printer (I think it was appropriate for an older version of the software that had a coarser microstep option).  I removed all the code that referred to steps/mm, since  I had already calibrated that with the Make dimensional print (see Monoprice delta 3d printer glass clips). […]

    Pingback by Fixing Monoprice Delta Mini end stops | Gas station without pumps — 2018 July 29 @ 20:17 | Reply

  3. […] which I tracked down to the glass plate on the bed rotating a little in the clips (pretty much as Michael Johnson had warned me).  I fixed the problem by adding some dabs of hot-melt glue to hold the clips to the plate.  I […]

    Pingback by Tool for sweeping roof valleys | Gas station without pumps — 2018 August 3 @ 21:43 | Reply


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a free website or blog at WordPress.com.

%d bloggers like this: