// Variable holder for otical z-endstops // Used to attach endstops to 8mm rods // GNU GPL v3 // Jürgen Lochner // DERIVED FROM : // PRUSA Mendel // Endstop holder // Used to attach endstops to 8mm rods // GNU GPL v3 // Josef Průša // josefprusa@me.com // prusadjs.cz // http://www.reprap.org/wiki/Prusa_Mendel // http://github.com/prusajr/PrusaMendel clear = 0.5; // clearence for printing screw_hole_spacing = 20; // distance of parallel hexbolts faktor = 1/cos(30); // hexagon factor thightn = 0.1; // thighten the parallel hexbolt holes and wheel extra =6; // distance between inner connect hexbolt to opto hexbolt m8_diameter = 9; m3_diameter = 3.6; m3_nut_diameter = 5.3 + clear; m3_nut_diameter_horizontal = 6.1 + clear; m3_nut_diameter_vertical = 6.4 + clear; /** * @id var-z-endstop-holder * @name Var-Z-Endstop holder * @category Printed * @using 1 m3x20xhex * @using 2 m3x35xhex * @using 2 m3x15xhex * @using 1 m3x17.5xspring * @using 6 m3nut * @using 5 m3washer */ module endstop(){ outer_diameter = m8_diameter/2+3.3; // connecting arch's size opening_size = m8_diameter-1.5; // openingsize innerpos = 2; // position of the two bolts on the arm difference(){ union(){ translate([outer_diameter, outer_diameter, 0]) cylinder(h =10, r = outer_diameter, $fn = 20); // connecting arch translate([outer_diameter, 0, 0]) cube([15.5,outer_diameter*2,10]); // side walls of arch translate([innerpos-screw_hole_spacing, 0, 0]) cube([15+screw_hole_spacing-innerpos, 4, 10]); // arm extension translate([17, 17.5, 5]) rotate([90, 0, 0]) cylinder(h =5, r = 5*faktor, $fn = 6); // nut anti rotation support // translate([innerpos, 0, 10]) cylinder(h = 10, r=4, $fn = 18); // inner arm hexbolt hole support top color("red") translate([innerpos, 0, 0]) cylinder (h=11,r=4, $fn = 18); // inner arm hexbolt hole support translate([innerpos-screw_hole_spacing, 0, 0]) cylinder(h = 11, r1 =4.5*faktor, r2 =4*faktor, $fn = 6); // outer arm hexbolt hole support } translate([9, outer_diameter-opening_size/2, -0.1]) cube([18,opening_size,20]); // smooth rod fixture opening translate([outer_diameter, outer_diameter, -0.1]) cylinder(h =20, r = m8_diameter/2, $fn = 18); // smooth rod fixture end position translate([17, 17, 5]) rotate([90, 0, 0]) cylinder(h =20, r = m3_diameter/2, $fn = 10); // smooth rod fixture hexbolt translate([17, 19.5, 5]) rotate([90, 0, 0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // smooth rod fixture nut trap translate([innerpos, 0, -0.1]) cylinder(h =25, r = m3_diameter/2 -thightn, $fn = 10); // inner arm hexbolt hole translate([innerpos-screw_hole_spacing, 0, -0.1]) cylinder(h =20, r = m3_diameter/2 -thightn, $fn = 10); // outer arm hexbolt hole translate([innerpos-screw_hole_spacing, 0, -4]) cylinder(h =5, r = m3_nut_diameter_horizontal/2, $fn = 6); // outer bottom spring trap } } module holder(){ difference(){ union(){ cylinder (h=10,r1=4*faktor,r2=5*faktor, $fn =6); // inner vertical hex support translate ([screw_hole_spacing,0,0])cylinder (h =10,r1=4*faktor,r2=5*faktor, $fn = 6); // outer vertical hex support translate ([0, -2, 0]) cube([screw_hole_spacing+2+extra+0,4,6]); // arm support medium translate ([0, -1, 0]) cube([screw_hole_spacing+2+extra+0,2,10]); // arm support small for antishrink translate ([0, -3, 0]) cube([screw_hole_spacing+2+extra+0,6,4]); // arm support big color("blue") translate([screw_hole_spacing+2+extra+2,4+2-1,5]) rotate([90, 0, 0]) cylinder(h =5+5, r = 5*faktor, $fn = 6); // outer nut anti rotation support color("blue") translate([screw_hole_spacing+2+extra+2,4+2-1,5+10]) rotate([90, 0, 0]) cylinder(h =5+5, r = 5*faktor, $fn = 6); // outer nut anti rotation support color("lightblue") translate([2+extra,4+2-1,5]) rotate([90, 0, 0]) cylinder(h =5+5, r = 5*faktor, $fn = 6); // inner nut anti rotation support color("lightblue") translate([2+extra,4+2-1,5+10]) rotate([90, 0, 0]) cylinder(h =5+5, r = 5*faktor, $fn = 6); // inner nut anti rotation support } translate([0,0,7]) cylinder(h =5, r = m3_nut_diameter_horizontal/2, $fn = 6); // inner hexbolts nut trap translate([screw_hole_spacing,0,7]) cylinder(h =5, r = m3_nut_diameter_horizontal/2, $fn = 6); // outer hexagonal spring trap translate([0, 0, -0.1]) cylinder(h =25, r = m3_diameter/2 -thightn, $fn = 10); // inner arm hexbolt hole connect endstop translate([screw_hole_spacing, 0, -0.1]) cylinder(h =25, r = m3_diameter/2 -thightn, $fn = 10); // outer arm hexbolt hole connect endstop // blue translate ([screw_hole_spacing+2+extra+2,5,5]) rotate([90,0,0]) cylinder(h =20, r = m3_diameter/2, $fn = 10); // outer opto hexbold hole translate ([screw_hole_spacing+2+extra+2,4+3,5]) rotate([90,0,0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // outer opto nut trap front translate ([screw_hole_spacing+2+extra+2,4-6,5]) rotate([90,0,0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // outer opto nut trap back // blue translate ([screw_hole_spacing+2+extra+2,5,5+10]) rotate([90,0,0]) cylinder(h =20, r = m3_diameter/2, $fn = 10); // outer opto hexbold hole translate ([screw_hole_spacing+2+extra+2,4+3,5+10]) rotate([90,0,0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // outer opto nut trap front translate ([screw_hole_spacing+2+extra+2,4-6,5+10]) rotate([90,0,0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // outer opto nut trap back translate([2+extra,5,5+10]) rotate([90, 0, 0]) cylinder(h =20, r = m3_diameter/2, $fn = 10); // inner opto hexbold hole translate([2+extra,4 +3,5+10]) rotate([90, 0, 0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // inner opto nut trap front translate([2+extra,4 - 6, 5+10]) rotate([90, 0, 0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // inner opto nut trap back translate([2+extra,5,5]) rotate([90, 0, 0]) cylinder(h =20, r = m3_diameter/2, $fn = 10); // inner opto hexbold hole translate([2+extra,4 +3,5]) rotate([90, 0, 0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // inner opto nut trap front translate([2+extra,4 - 6, 5]) rotate([90, 0, 0]) cylinder(h =5, r = m3_nut_diameter_vertical/2, $fn = 6); // inner opto nut trap back } } module wheel(){ difference() { union(){ cylinder (h = 4, r = 8*(1+(faktor-1)/3)); // round wheel base cylinder (h = 4, r1=8,r2 = 8*faktor, $fn=8); // cones at top rotate(180/8,0,0)cylinder (h = 4, r1 = 8*faktor, r2=8, $fn=8); // cones at bottom cylinder (h = 5, r = 5*faktor,$fn=6); // nut trap } translate ([0, 0, -0.1]) cylinder(h = 6, r = m3_diameter/2 -thightn, $fn = 10); // hexbolt hole translate ([0, 0, 2]) cylinder(h = 6, r = m3_nut_diameter_horizontal/2 -thightn, $fn = 6); // nut trap } } endstop(); translate ([-16,-11,0]) holder(); color("orange") translate ([-9,14.5,0]) wheel();