123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453 |
-
- // adapted from https://www.thingiverse.com/thing:1383913
-
- // #######################################################
- // ###################### Extruders ######################
- // #######################################################
-
- include <rounded.scad>
- include <nema.scad>
- include <tslot_xy.scad>
-
- draw_extruder = false;
-
- extruder_width = nema17_size;
- extruder_depth = 15;
- extruder_height_m = 15; // material below motor
- extruder_cover_d = 12;
-
- extruder_filament_d = 1.75;
-
- extruder_gear_od = 12; // outer diameter: mk8 = 9, mk7 = 12
- extruder_gear_ed = 10.25; // effective diameter: mk8 = 6.75, mk7 = 10.25
- extruder_gear_groove_width = 3.5;
-
- fillet = 1.5;
-
- extruder_supports = true;
- extruder_brass_tube = false;
- extruder_lever_with_switch = true;
-
- // bearing 624
- extruder_bearing_od = 13;
- extruder_bearing_id = 4;
- extruder_bearing_h = 5;
-
- extruder_filament_offset = (extruder_gear_ed + extruder_filament_d) / 2;
-
- echo(extruder_filament_offset=extruder_filament_offset);
-
- bracket_height = 8;
- bracket_width = extruder_height_m;
- bracket_width_add = 10;
- bracket_dist_add = 1;
-
- extruder_bearing_x = extruder_filament_offset + (extruder_filament_d / 2) + (extruder_bearing_od / 2);
-
- lever_h = 12;
-
- // #######################################################
-
- if (draw_extruder)
- extruder(30, "1", true);
-
- module extruder(slot, id = "", draw_slot = false) {
- translate([-nema17_size / 2 - bracket_dist_add, 0, slot + bracket_height + 10])
- rotate([-90, 0, 0])
- extruder_assembly(id);
-
- color("green")
- extruder_bracket(slot);
-
- if (draw_slot)
- %translate([bracket_height, -100, 0])
- tslot_y(slot, 300);
- }
-
- module extruder_bracket(slot) {
- difference() {
- union() {
- translate([bracket_height, 0, slot])
- cube([slot, bracket_width + bracket_width_add, bracket_height]);
-
- cube([bracket_height, bracket_width + bracket_width_add, slot + bracket_height]);
-
- translate([-nema17_size - bracket_dist_add, 0, slot])
- cube([nema17_size + bracket_dist_add, bracket_width, bracket_height]);
- }
-
- translate([bracket_height + slot / 2, (bracket_width + bracket_width_add) / 2, slot - 1])
- cylinder(d = 4.4, h = bracket_height + 2);
-
- translate([-1, (bracket_width + bracket_width_add) / 2, slot / 2])
- rotate([0, 90, 0])
- cylinder(d = 4.4, h = bracket_height + 2);
-
- translate([-bracket_height - 14, 0, slot + bracket_height + 6])
- rotate([-90, 0, 0])
- extruder_screw_holes_main();
- }
- }
-
- module extruder_assembly(id = "") {
- color("cyan") extruder_holder();
- color("yellow") extruder_top_plate();
- color("orange") extruder_cover(id);
-
- if (!extruder_lever_with_switch) {
- color("red")
- extruder_lever();
- } else {
- color("red")
- translate([6, 0, 62.4 - 4.9])
- extruder_lever_switch();
- }
-
- color("silver", 0.5)
- %extruder_bearing();
-
- // Filament mockup
- color("blue", 0.25)
- %translate([extruder_filament_offset, 0, -15])
- cylinder(d=extruder_filament_d, h=100, $fn=64);
-
- // NEMA17 mockup
- color("gray")
- %translate([-nema17_size / 2, 40 + 10, extruder_height_m])
- rotate([90, 0, 0])
- nema17(40);
- }
-
- module extruder_holder() {
- difference() {
- union() {
- translate([-extruder_width/2, 0, 0])
- rounded_cube(extruder_width, 10, extruder_height_m, 0, fillet, 0);
-
- translate([-extruder_width/2, -6, extruder_height_m])
- rounded_cube(extruder_width, 16, 11, fillet,fillet,fillet);
-
- translate([-extruder_width/2, -6, extruder_height_m-5])
- rounded_cube(extruder_width, 16, 10, 0,0,fillet);
-
- translate([extruder_filament_offset-5,0, extruder_height_m+10])
- cube([10, 7.5, 9]); // tip for flex filament
-
- translate([-12,0, extruder_height_m+10.9])
- cylinder(d2 = 5, d1=8, h=2.1, $fn=64); // spring
- }
-
- translate([-extruder_width/2-0.15, -15, 0.1])
- rounded_cube(extruder_width+0.3, 15, extruder_height_m, fillet,fillet,fillet);
-
- translate([0,10.1,extruder_height_m+21.5])
- rotate([90,0,0])
- cylinder(d=23, h=2.6, $fn=64);
-
- translate([-12,0, extruder_height_m+11])
- cylinder(r = 1.5, h=20, $fn=64, center=true); //spring
-
- //hotend mount
- translate([extruder_filament_offset,0, 0]) {
- extruder_hotend_mount();
- translate([-5.1,-10,20])
- cube([10.2, 10, 20]);
- }
-
- //motor screws
- translate([-31/2, -6, extruder_height_m+6])
- rotate([-90, 0, 0]) {
- cylinder(r = 1.6, h = 25, $fn=32);
- cylinder(r = 3.1, h = 6, $fn=32, center=true);
- }
- translate([ 31/2, -6, extruder_height_m+6])
- rotate([-90, 0, 0]) {
- cylinder(r = 1.6, h = 25, $fn=32);
- cylinder(r = 3.1, h = 6, $fn=32, center=true);
- }
-
- extruder_screw_holes_main();
- extruder_flex_guide();
- }
-
- // tip extruder_supports
- if (extruder_supports)
- for (xx =[-5.2, -2.5, 0, 2.5, 4.7])
- translate([extruder_filament_offset+xx, 7.6, extruder_height_m+11.4])
- cube ([0.55, 2.4, 8]);
- }
-
- module extruder_top_plate() {
- difference() {
- hull() {
- translate([-14.5, 6, extruder_height_m+39.5]) rotate([-90, 0, 0]) cylinder(r=3, h=4, $fn=32);
- translate([-18, 6, extruder_height_m+36]) rotate([-90, 0, 0]) cylinder(r=3, h=4, $fn=32);
- translate([-18, 6, extruder_height_m+29]) rotate([-90, 0, 0]) cylinder(r=3, h=4, $fn=32);
- translate([ 31/2, 6, extruder_height_m+37]) rotate([-90, 0, 0]) cylinder(r = 5.5, h=4, $fn=32);
- translate([18, 6, extruder_height_m+29]) rotate([-90, 0, 0]) cylinder(r=3, h=4, $fn=32);
- }
-
-
- translate([0,10.1,extruder_height_m+21.5]) rotate([90,0,0]) cylinder(d=24, h=5, $fn=64);
-
- //mount holes
- translate([-31/2, 5.9, extruder_height_m+37]) rotate([-90, 0, 0]) {
- cylinder(r = 1.6, h = 5, $fn=32);
- cylinder(r = 3.5, h = 2, $fn=32);
- }
- translate([ 31/2, 5.9, extruder_height_m+37]) rotate([-90, 0, 0]) {
- hd = extruder_brass_tube ? 4.2 : 3;
- cylinder(d = hd, h = 5, $fn=32);
- }
- }
- }
-
- module extruder_lever() {
- translate([0, 0, extruder_height_m])
- difference() {
- union() {
- hull() {
- translate([-8, -(lever_h/2), 32.5])
- rounded_cube(38-14+fillet, lever_h, 10, noback = true);
-
- translate([-13, -(lever_h/2), 39.5])
- rotate([-90, 0, 0])
- rounded_cylinder(3, lever_h-1, fillet, true, true);
-
- translate([-13, -(lever_h/2), 35.5])
- rotate([-90, 0, 0])
- rounded_cylinder(3, lever_h-1, fillet, true, true);
- }
-
- // lever tip
- hull() {
- translate([-13, -(lever_h/2), 39.5])
- rotate([-90, 0, 0])
- rounded_cylinder(3, lever_h-1, fillet, true, true);
-
- translate([-13, -(lever_h/2), 35.5])
- rotate([-90, 0, 0])
- rounded_cylinder(3, lever_h-1, fillet, true, true);
-
- translate([-18.5, -(lever_h/2), 35.5])
- rotate([-90, 0, 0])
- rounded_cylinder(3, lever_h-1, fillet, true, true);
-
- translate([-25, -(lever_h/2), 39.5])
- rotate([-90, 0, 0])
- rounded_cylinder(3, lever_h-1, fillet, true, true);
- }
-
- // bearing holder arm
- hull() {
- translate([extruder_bearing_x-extruder_bearing_od/2+1, -(lever_h/2), 21.5])
- rounded_cube(extruder_bearing_od/2, lever_h, 15);
-
- translate([ 31/2, -(lever_h/2), 37])
- rotate([-90, 0, 0])
- rounded_cylinder(r = 5.5, h = lever_h, rrnd=fillet, $fn=64);
-
- translate([extruder_bearing_x, 0, 21.5])
- rotate([-90, 0, 0])
- rounded_cylinder((extruder_bearing_od-2)/2, lever_h, center=true);
-
- if (extruder_bearing_od <= 16)
- translate([min((extruder_bearing_x+2),20-(extruder_bearing_od-2)/2), 0, 21.5])
- rotate([-90, 0, 0])
- rounded_cylinder((extruder_bearing_od-2)/2, lever_h, center=true);
- }
-
- //spring tip
- translate([-12,0, 30.5]) cylinder(d1 = 5, d2=8, h=2.1, $fn=64);
-
- //filament tip
- translate([extruder_filament_offset,0, 30])
- cylinder(d1 = 6, d2=10, h=3, $fn=64);
- }
-
- translate([extruder_filament_offset, 0, 42.5-3])
- cylinder(d1 = 4, d2=5, h=3, $fn=64);
-
- //mounting hole
- translate([ 31/2, -(lever_h/2), 37])
- rotate([-90, 0, 0]) {
- hd = extruder_brass_tube ? 4.2 : 3;
- cylinder(d=hd, h = 20, $fn=32);
- cylinder(d=8, h = 7, $fn=32, center=true);
- }
-
- translate([extruder_bearing_x, 0, 21.5])
- rotate([-90, 0, 0]) {
- difference() {
- cylinder(d=extruder_bearing_od+2, h=extruder_bearing_h+0.5, $fn=64, center=true);
-
- difference() {
- cylinder(d=extruder_bearing_id+(extruder_bearing_od-extruder_bearing_id)/3, h=extruder_bearing_h+0.5, $fn=64, center=true);
-
- cylinder(d=extruder_bearing_od, h=extruder_bearing_h+0.1, $fn=64, center=true);
- }
- }
-
- cylinder(d=extruder_bearing_id*0.95, h=20, $fn=64, center=true);
- }
-
- //translate([extruder_filament_offset, -(extruder_bearing_h)/2, 0]) cube([20, extruder_bearing_h+0.1, 21.5]);
-
- // filament hole
- translate([extruder_filament_offset,0, 25])
- cylinder(d=4.2, h=20, $fn=64);
-
- // spring screw
- translate([-12,0, 32.5]) {
- cylinder(r = 1.6, h=30, $fn=64, center=true);
-
- translate([-3, -3.3, 3])
- cube([6, 10, 3.0]);
- }
- }
- }
-
- module extruder_switch_model() {
- $fn = 15;
-
- difference() {
- union() {
- cube([12.8, 5.8, 6.2]);
-
- translate([-0.5, (5.8 - 4) / 2, 6.2 + 2.5])
- rotate([0, 11, 0])
- cube([13.5, 4.0, 0.3]);
-
- translate([0.9, 5.8 / 2, -4.0])
- cylinder(d = 0.8, h = 4.0);
- translate([12.8 - 0.9, 5.8 / 2, -4.0])
- cylinder(d = 0.8, h = 4.0);
- translate([12.8 / 2, 5.8 / 2, -4.0])
- cylinder(d = 0.8, h = 4.0);
- }
-
- translate([3.1, 5.9, 1.0])
- rotate([90, 0, 0])
- cylinder(d = 2.0, 6.0);
- translate([3.1 + 6.5, 5.9, 1.0])
- rotate([90, 0, 0])
- cylinder(d = 2.0, 6.0);
- }
- }
-
- module extruder_lever_switch() {
- $fn = 20;
-
- translate([-6, 0, extruder_height_m - 77.4 + 4.9])
- extruder_lever();
-
- %translate([-9 + 0.5, 3, 0])
- rotate([180, -90, 0])
- extruder_switch_model();
-
- difference() {
- cylinder(d = 9.0, h = 13.0);
-
- translate([0, 0, -0.1])
- cylinder(d1 = 5.1, d2 = 2.5, h = 13.2);
-
- translate([-5.5, -15, 0])
- cube([5, 30, 13.1]);
-
- translate([-9 + 0.5, 3, 0])
- rotate([180, -90, 0])
- extruder_switch_model();
- }
-
- difference() {
- union() {
- translate([-11, 3.0, 0])
- cube([11, 1.5 + 1.5, 13]);
- translate([-11, -6.0, -3])
- cube([11, 1.5 + 1.5, 13 + 3]);
- }
-
- for (off = [-1 : 0.1 : 1]) {
- translate([-7.5 + off, 10, 3.1])
- rotate([90, 0, 0])
- cylinder(d = 2.5, 20.0);
- translate([-7.5 + off, 10, 9.6])
- rotate([90, 0, 0])
- cylinder(d = 2.5, 20.0);
- }
- }
- }
-
- module extruder_cover(id = "") {
- difference() {
- union() {
- translate([-extruder_width/2, -extruder_cover_d, 0])
- rounded_cube(extruder_width, extruder_cover_d, extruder_height_m, fillet,fillet,fillet);
- translate([extruder_filament_offset-5,-6, extruder_height_m-1])
- cube ([10, 6, 20]);
-
- // add id number
- translate([-6, -extruder_cover_d + 1, 12])
- rotate([90, 90, 0])
- linear_extrude(height = 3)
- text(id, 12, font = "Liberation Sans:style=Bold");
- }
-
- translate([extruder_filament_offset,0,0])
- extruder_hotend_mount();
-
- extruder_screw_holes_main();
- extruder_flex_guide();
- }
- }
-
- module extruder_hotend_mount() {
- cylinder(d=4.2, h=46, $fn=64);
- cylinder(d=5.8, h=8, $fn=64);
- }
-
- module extruder_screw_holes_main() {
- translate([extruder_width/2-5.5, -extruder_cover_d, extruder_height_m/2]) rotate([-90, 0, 0]) {
- cylinder(r = 1.6, h = 50, $fn=32);
- cylinder(r = 3.2, h = 11, $fn=32, center=true);
- }
- translate([-extruder_width/2+5.5, -extruder_cover_d, extruder_height_m/2]) rotate([-90, 0, 0]) {
- cylinder(r = 1.6, h = 50, $fn=32);
- cylinder(r = 3.2, h = 11, $fn=32, center=true);
- }
- translate([extruder_width/2-5.5, extruder_depth-4, extruder_height_m/2]) rotate([-90, 0, 0]) cylinder( d = 6.6, h = 4.1, $fn=6);
- translate([-extruder_width/2+5.5, extruder_depth-4, extruder_height_m/2]) rotate([-90, 0, 0]) cylinder( d = 6.6, h = 4.1, $fn=6);
- }
-
- module extruder_flex_guide() {
- difference() {
- translate([0, -10, extruder_height_m+6+31/2]) rotate([-90, 0, 0]) cylinder(d=extruder_gear_od+1, h=20, $fn=64);
- intersection() {
- translate([0, -10, extruder_height_m+6+31/2]) rotate([-90, 0, 0]) cylinder(d=extruder_gear_od+1, h=20, $fn=64);
- translate([0, 0, extruder_height_m+6+31/2]) rotate([90, 0, 0]) rotate_extrude($fn=64) {
- translate([extruder_gear_ed/2 + (extruder_gear_od - extruder_gear_ed)/2 +0.5, 0, 0])
- resize([(extruder_gear_od-extruder_gear_ed), extruder_gear_groove_width]) circle(d = extruder_gear_od-extruder_gear_ed, $fn=64);
- }
- }
- }
-
- translate([0, 3.5, extruder_height_m+6+31/2]) rotate([-90, 0, 0]) cylinder(d1=extruder_gear_od+1, d2 = extruder_gear_od+2, h=0.55, $fn=64);
- translate([0, 4, extruder_height_m+6+31/2]) rotate([-90, 0, 0]) cylinder(d=extruder_gear_od+2, h=20, $fn=64);
-
- translate([0, -3.5, extruder_height_m+6+31/2]) mirror([0,1,0]) rotate([-90, 0, 0]) cylinder(d1=extruder_gear_od+1, d2 = extruder_gear_od+2, h=0.55, $fn=64);
- translate([0, -4, extruder_height_m+6+31/2]) mirror([0,1,0]) rotate([-90, 0, 0]) cylinder(d=extruder_gear_od+2, h=20, $fn=64);
-
- translate([extruder_bearing_od/2 + extruder_gear_ed/2 + extruder_filament_d,-10, extruder_height_m+6+31/2]) {
- rotate([-90, 0, 0]) cylinder(d=extruder_bearing_od+1, h=20, $fn=64);
- translate([0,0,-(extruder_bearing_od+1)/2]) cube([(extruder_bearing_od+1)/2, 20, (extruder_bearing_od+1)/2]);
- }
- }
-
- module extruder_bearing() {
- translate([extruder_bearing_od/2 + extruder_gear_ed/2+extruder_filament_d, 0, extruder_height_m+6+31/2]) {
- difference() {
- rotate([-90, 0, 0]) cylinder(d=extruder_bearing_od, h=extruder_bearing_h, $fn=64, center=true);
- rotate([-90, 0, 0]) cylinder(d=extruder_bearing_id, h=extruder_bearing_h+0.1, $fn=64, center=true);
- }
- }
- }
|