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);
}
}
Like this:
Like Loading...