// quality settings $fa=0.5; $fs=0.2; $fn=40; // printer settings tolerance = 0.5; // tension amount (amount of mm to try and compress filament) tension = 0.3; // housing boxheight = 23; holeheight = 9.75; // mk8 geardia = 6.8; // magnet magnetdia = 6; magnetheight = 2.5; // 683 bearing 3x7x3 bearingdia = 7; bearingwidth = 3; // 0.4mm nozzle with 3 perimeters wall = 1.2; picoextruder_mk8(); /**** illustrative only ****/ translate([geardia/2+1.75+bearingdia/2+1-tension,0, 0]) assembly(0); translate([0,-20,0]) assembly(2); /**** end illustrative ***/ module assembly(offset) { as5600(); color("red") translate([0,0,1.9 + offset]) cylinder(d=magnetdia,h=magnetheight); translate([0,0,1.9 + offset*4]) magnetholder(); translate([0,0,1.9 + magnetheight + 1 + offset*8]) m3screw(); translate([0,0,1.9 + magnetheight + 3.5 + offset*10]) bearing(); } module picoextruder_mk8() { difference() { translate([3,0,0]) rcube(18+tolerance+wall*2,10+tolerance+wall*2,boxheight,3); union() { // shaft out translate([0,0,-1]) cylinder(d=5+tolerance,h=5); // gearbox translate([0,0,wall]) rcube(12+tolerance,10+tolerance,boxheight,1.5); // cutout translate([-10,-5,wall]) cube([14,10,13-wall]); // idler with magnet translate([0,-5,holeheight-magnetheight-5.6]) cube([15,10,bearingwidth+magnetheight+4]); // M3 screw translate([geardia/2+1.75+bearingdia/2+1-tension,0,holeheight]) cylinder(d=3.5,h=15.5); // AS5600 translate([geardia/2+1.75+bearingdia/2+1-tension-3,-3,-0.1]) cube([6,6.2,2]); // filament translate([geardia/2+1.75/2-0.1,-10,holeheight]) rotate([-90,0,0]) cylinder(d=2,h=20); } } } module bearing() color("silver") { difference() { cylinder(d=bearingdia,h=bearingwidth); translate([0,0,-1]) cylinder(d=3.5,h=bearingwidth+2); } } module as5600() { color("darkgray") translate([-2.5,-2,0]) cube([5,4,1.75]); color("gold") for (i=[0:3]) translate([-2.3+i*1.3,-3,0.2]) cube([0.6,6,0.5]); } module m3screw() color("slategray") { difference() { union() { cylinder(r1=3,r2=1.8,h=2.3); cylinder(d=3.5,h=14); } translate([0,0,-1]) cylinder(d=3,h=2,$fn=6); } } module magnetholder() { color("lime") difference() { cylinder(d=bearingdia+wall*2,h=bearingwidth+2.5+magnetheight+1); union() { cylinder(d=3.5,h=10); translate([0,0,-0.1]) cylinder(d=magnetdia,h=magnetheight); translate([0,0,magnetheight+1]) cylinder(d=bearingdia,h=10); } } } module rcube(a,b,c,di) { // translate([di/2,di/2,0]) translate([-a/2+di/2,-b/2+di/2,0]) hull() { cylinder(d=di,h=c); translate([a-di,0,0]) cylinder(d=di,h=c); translate([0,b-di,0]) cylinder(d=di,h=c); translate([a-di,b-di,0]) cylinder(d=di,h=c); } }