f=1.8; hole=22; // NEMA-17 motor mount diagonals h=24; // height of main housing housing=35; // Diameter of main housing // [ diameter, thickness, inner diameter ] b608=[22,7,8]; b626=[19,6,6]; b625=[16,5,5]; bshaft=b625; bidler=b608; // Positions of top and bottom bearings b1=[0,0,h-bshaft[1]+1]; b2=[0,0,1]; slop=0.5; // artaoss' hob //hob=8+1.25; // central hole diameter. //hobid=6.5; // central diameter of gear wheel hob=12+1.25; // Central hole diameter. mk7 gear is 12mm hobid=10.4; // inside diameter of gear wheel hobh=13.5; // The Z plane where the gear meets the filament fx=(hobid+f)/2; // Placement of filament hole t=8; // Z position of tightening bolt push=10; $fs=1; $fa=1; xx = 0.5+(hob+bidler[0])/2; support=0.5; // set to 0 for no support //support=0; difference() { union() { linear_extrude(h,convexity=3) union() { hull() { circle(d=housing); translate([xx,0]) circle(d=bidler[1]+6); } translate([3.5,0]) square([16.3-3.5 + 2,21]); } linear_extrude(5, convexity=3) hull() for(x=[ [-1,0],[0,-1],[0,1] ]) translate(hole*x) circle(d=10); translate([fx, -18-1, hobh]) rotate([-90,0,0]) rotate([0,0,30]) cylinder(d=22, $fn=6, h=8); } for(x=[ [-1,0,0],[0,-1,0],[0,1,0] ]) { translate([0,0,-1]+(hole*x)) cylinder(d=3.5, h=h+2); translate([0,0,1]+(hole*x)) cylinder(d=6.2, h=10); } difference() { translate([0,0,-1]) cylinder(d=36, h=3); if(support) { for(X=[-20:3:20]) translate([X-2.1,0]) // The 0.1 is "magic" so openscad likes it cube([support,50,10],center=true); } } // Move to axis of tightening slats translate([11,-7,-1]) // Rotate ten degrees to miss 625 bearing rotate([0,0,0]) { // Slat for tightening translate([-1,0]) cube([2,22+10,h+2]); // Hole to make spring bendier cylinder(d=4, h=h+2); } // Hole to mount a push-fit translate([fx,-28,hobh]) rotate([-90,0,0]) { cylinder(d=push, h=9+8); cylinder(d=f+1, h=50); } for(T=[t,t+12]) translate([0,17,T]) { // Hole for M3 tightening bolt translate([20,0]) rotate([0,-90,0]) cylinder(d=3.75, h=20); // Nut holder for M3 tightening bolt translate([4.5,0]) rotate([0,-90,0]) rotate([0,0,30]) cylinder(d=7, h=20, $fn=6); } // Hole for idler bearing translate([xx,0,hobh]) difference() { cylinder(d=bidler[0]+slop, h=bidler[1]+slop, center=true); if(support) for(X=[-10:3:10]) translate([X,0]) cube([support,20,10],center=true); } //for(Z=[h-bshaft[1], -1]) translate([0,0,Z]) for(Z=[b1,b2]) translate(Z) cylinder(d=bshaft[0]+slop, h=bshaft[1]+1); translate([0,0,-1]) cylinder(d=hob+slop/2, h=h+2); translate([xx,0,5]) cylinder(d=bidler[2], h=h); }