126 lines
2.7 KiB
OpenSCAD
126 lines
2.7 KiB
OpenSCAD
|
// universal endstop holder for rostock delta printer
|
||
|
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
|
||
|
// -> https://www.thingiverse.com/zeus
|
||
|
// -> https://github.com/zeus86
|
||
|
// 2014-09-21
|
||
|
//
|
||
|
// edit "module wall" for your needs if not using "sainsmart mechaical endstop pcb"
|
||
|
// for further instructions look at the comments above the "wall"-module in this code.
|
||
|
//
|
||
|
// ===================================================================
|
||
|
//
|
||
|
//rod-diameter, set a bit thicker than the rod really is
|
||
|
rod_dia=8.5;
|
||
|
|
||
|
//center-to-center distance of the rods; set a bit smaller than the original 60 to keep the bearings smooth
|
||
|
rod_distance=59.7;
|
||
|
|
||
|
// overall thickness
|
||
|
material_t=2.0;
|
||
|
|
||
|
// mounting-wall thickness
|
||
|
wall_t=5;
|
||
|
|
||
|
//overall height
|
||
|
holder_h=16.5;
|
||
|
|
||
|
//diameter of the holes
|
||
|
hole_dia=3;
|
||
|
|
||
|
//cone cut-in of the holes for easier screw insertion; set to "0" if not needed
|
||
|
cut_in=1;
|
||
|
|
||
|
wall_w=rod_distance-material_t*2+rod_dia/2-1;
|
||
|
$fn=30;
|
||
|
|
||
|
// ===================================================================
|
||
|
|
||
|
module hex_standoff(){
|
||
|
rotate([90,0,0]){
|
||
|
translate([-rod_dia*0.66,holder_h/2,0]){
|
||
|
difference(){
|
||
|
cylinder(r=holder_h/1.75,h=rod_dia+material_t,center=true,$fn=6);
|
||
|
cube([rod_dia/1.5,rod_dia/1.5,rod_dia+material_t],center=true);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
module clip(){
|
||
|
difference(){
|
||
|
|
||
|
union(){
|
||
|
//outer cylinder
|
||
|
cylinder(r=rod_dia/2+material_t,h=holder_h);
|
||
|
//outer hex standoffs
|
||
|
hex_standoff();
|
||
|
}
|
||
|
|
||
|
//inner cylinder
|
||
|
cylinder(r=rod_dia/2,h=holder_h);
|
||
|
//cutout
|
||
|
translate([-rod_dia,0,holder_h/2]){
|
||
|
cube([rod_dia*2,rod_dia/1.25,holder_h],center=true);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module hole(){
|
||
|
rotate([90,0,0]){
|
||
|
cylinder(r=hole_dia/2,h=wall_t*2, center=true);
|
||
|
if (cut_in==1) {
|
||
|
cylinder(r1=0,r2=hole_dia*0.6,h=wall_t*1.01,center=true);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ===================================================================
|
||
|
// Edit the module below to add the holes you want to appear in the center-part.
|
||
|
// should be mostly self-explaining
|
||
|
//
|
||
|
// translate([-22,0,3]){
|
||
|
// hole();
|
||
|
// }
|
||
|
//
|
||
|
// this example code creates a hole, which is moved by -22mm(x), 0mm(y), and 3mm(z)
|
||
|
// measured from the absolute center of the coordinate-system (enable under "View -> Show Axes").
|
||
|
// ===================================================================
|
||
|
|
||
|
module wall(){
|
||
|
difference(){
|
||
|
translate([0,0,holder_h/2]){
|
||
|
cube([wall_w-material_t*4,wall_t,holder_h],center=true);
|
||
|
}
|
||
|
union(){
|
||
|
translate([-22,0,3]){
|
||
|
hole();
|
||
|
}
|
||
|
translate([-3,0,3]){
|
||
|
hole();
|
||
|
}
|
||
|
translate([11.5,0,3]){
|
||
|
hole();
|
||
|
}
|
||
|
translate([11.5,0,14]){
|
||
|
hole();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//left clip
|
||
|
translate([-rod_distance/2,0,0]){
|
||
|
clip();
|
||
|
}
|
||
|
|
||
|
//right clip
|
||
|
translate([rod_distance/2,0,0]){
|
||
|
rotate([0,0,180]){
|
||
|
clip();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//wall
|
||
|
wall();
|