author | Michael Krelin <hacker@klever.net> | 2018-08-22 10:48:07 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2018-08-22 10:48:07 (UTC) |
commit | 55fdf941a3514b04e7c49d4428b6cd141e087783 (patch) (unidiff) | |
tree | 9898f9590f369b5279aa97c87b18ad2dfab42986 | |
parent | 4bb6687a7d733a947943b67cf77c3963041c6fb0 (diff) | |
download | extrudery-55fdf941a3514b04e7c49d4428b6cd141e087783.zip extrudery-55fdf941a3514b04e7c49d4428b6cd141e087783.tar.gz extrudery-55fdf941a3514b04e7c49d4428b6cd141e087783.tar.bz2 |
WIP: funnel to catch filament after driving
-rw-r--r-- | another.scad | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/another.scad b/another.scad index 23243d9..4a9fc01 100644 --- a/another.scad +++ b/another.scad | |||
@@ -18,64 +18,65 @@ module the_extruder( | |||
18 | // pulley properties | 18 | // pulley properties |
19 | pulley_d = 11.5, pulley_h=10, | 19 | pulley_d = 11.5, pulley_h=10, |
20 | pulley_elevation = 1, // pulley elevation above the protrusion | 20 | pulley_elevation = 1, // pulley elevation above the protrusion |
21 | teeth_elevation = 7.5, // distance from the bottom of the pulley to its teeth | 21 | teeth_elevation = 7.5, // distance from the bottom of the pulley to its teeth |
22 | filament_offset = (8.25-(3.0+3.5)/2) - 11.5/2 + 1.75/2, | 22 | filament_offset = (8.25-(3.0+3.5)/2) - 11.5/2 + 1.75/2, |
23 | // idler properties | 23 | // idler properties |
24 | idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height | 24 | idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height |
25 | // spring properties | 25 | // spring properties |
26 | spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length | 26 | spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length |
27 | // filament path properties | 27 | // filament path properties |
28 | filament_d = 1.75, | 28 | filament_d = 1.75, |
29 | filament_path_d = 2, | 29 | filament_path_d = 2, |
30 | filament_guide_d = 4, // PTFE filament guide diameter | 30 | filament_guide_d = 4, // PTFE filament guide diameter |
31 | // knob properties | 31 | // knob properties |
32 | knob_h = 10, | 32 | knob_h = 10, |
33 | knob_bore_l = 4, | 33 | knob_bore_l = 4, |
34 | knob_indent_d = 4, | 34 | knob_indent_d = 4, |
35 | knob_indents = 12, | 35 | knob_indents = 12, |
36 | // spring tensioner | 36 | // spring tensioner |
37 | st_nut_d = 9, st_nut_h = 4, | 37 | st_nut_d = 9, st_nut_h = 4, |
38 | st_screw_d = 5, | 38 | st_screw_d = 5, |
39 | st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, | 39 | st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, |
40 | 40 | ||
41 | // screw it | 41 | // screw it |
42 | mount_screw_d = 3.1, mount_screw_l = 20, | 42 | mount_screw_d = 3.1, mount_screw_l = 20, |
43 | mount_screwhead_d=6, mount_screwhead_h=3, | 43 | mount_screwhead_d=6, mount_screwhead_h=3, |
44 | idler_screw_d = 3, | 44 | idler_screw_d = 3, |
45 | idler_screwhead_d=6, idler_screwhead_h=3, | 45 | idler_screwhead_d=6, idler_screwhead_h=3, |
46 | 46 | ||
47 | pf = pushfit_embeddest, | 47 | pf = pushfit_embeddest, |
48 | pf_shell = max(3*layer_height,3*extrusion_width), | 48 | pf_shell = max(3*layer_height,3*extrusion_width), |
49 | pf_smooth = true, | 49 | pf_smooth = true, |
50 | pf_guidelen = 3, // the length of ptfe guide before pushfit | ||
50 | 51 | ||
51 | // empty spaces | 52 | // empty spaces |
52 | idler_travel = 3, // how far should idler travel when pressed | 53 | idler_travel = 3, // how far should idler travel when pressed |
53 | idler_clearance=1, | 54 | idler_clearance=1, |
54 | pulley_d_clearance=2, | 55 | pulley_d_clearance=2, |
55 | lever_v_clearance=.7, // vertical clearance for the lever | 56 | lever_v_clearance=.7, // vertical clearance for the lever |
56 | spring_d_clearance=1, | 57 | spring_d_clearance=1, |
57 | protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion | 58 | protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion |
58 | protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion | 59 | protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion |
59 | mount_screw_d_tolerance=.4, | 60 | mount_screw_d_tolerance=.4, |
60 | idler_v_tolerance=.5, | 61 | idler_v_tolerance=.5, |
61 | knob_bore_d_tolerance=.6, | 62 | knob_bore_d_tolerance=.6, |
62 | st_nut_h_tolerance=.2, | 63 | st_nut_h_tolerance=.2, |
63 | st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */ | 64 | st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */ |
64 | st_screw_d_tolerance=.5, | 65 | st_screw_d_tolerance=.5, |
65 | 66 | ||
66 | min_z_shell = 4*layer_height, // the very minimal shell thickness along z-axis. | 67 | min_z_shell = 4*layer_height, // the very minimal shell thickness along z-axis. |
67 | 68 | ||
68 | what="lever", // lever|body|knob|springpad|* | 69 | what="lever", // lever|body|knob|springpad|* |
69 | left=false, | 70 | left=false, |
70 | vitamins = true, | 71 | vitamins = true, |
71 | supports = false, bridges = true, | 72 | supports = false, bridges = true, |
72 | tensioner = true, | 73 | tensioner = true, |
73 | debug = false | 74 | debug = false |
74 | ) { | 75 | ) { |
75 | fnd = 2*PI; fnr = 2*fnd; | 76 | fnd = 2*PI; fnr = 2*fnd; |
76 | 77 | ||
77 | idler_filament_offset = filament_path_d/2; // -filament_offset; | 78 | idler_filament_offset = filament_path_d/2; // -filament_offset; |
78 | lever_shell = mount_screwhead_h+0.5; | 79 | lever_shell = mount_screwhead_h+0.5; |
79 | lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); | 80 | lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); |
80 | lsd = idler_d-idler_clearance*2; | 81 | lsd = idler_d-idler_clearance*2; |
81 | longwing=gearbox_d/2+spring_d/2+lsd/2; | 82 | longwing=gearbox_d/2+spring_d/2+lsd/2; |
@@ -287,65 +288,78 @@ module the_extruder( | |||
287 | translate([-pfbs/2,0,0]) { | 288 | translate([-pfbs/2,0,0]) { |
288 | hull() { | 289 | hull() { |
289 | translate([0,-pfba,0]) cube(size=[pfbs,pfb2a,pfbl]); | 290 | translate([0,-pfba,0]) cube(size=[pfbs,pfb2a,pfbl]); |
290 | cube(size=[pfbs,filament_elevation,pfbl-filament_elevation+pfba]); | 291 | cube(size=[pfbs,filament_elevation,pfbl-filament_elevation+pfba]); |
291 | mirror([0,1,0]) | 292 | mirror([0,1,0]) |
292 | cube(size=[pfbs,body_h-filament_elevation,pfbl-body_h+filament_elevation+pfba]); | 293 | cube(size=[pfbs,body_h-filament_elevation,pfbl-body_h+filament_elevation+pfba]); |
293 | }//hull | 294 | }//hull |
294 | }//translate*/ | 295 | }//translate*/ |
295 | }//if(pf_smooth) | 296 | }//if(pf_smooth) |
296 | }//translate rotate translate rotate translate | 297 | }//translate rotate translate rotate translate |
297 | }//union (first child of difference) | 298 | }//union (first child of difference) |
298 | 299 | ||
299 | // protrusion | 300 | // protrusion |
300 | translate([0,0,-1]) | 301 | translate([0,0,-1]) |
301 | cylinder(d=protrusion_d+protrusion_tolerance_h,h=protrusion_h+protrusion_tolerance_v+1,$fn=fnd*(protrusion_d+protrusion_tolerance_h)); | 302 | cylinder(d=protrusion_d+protrusion_tolerance_h,h=protrusion_h+protrusion_tolerance_v+1,$fn=fnd*(protrusion_d+protrusion_tolerance_h)); |
302 | // mount screw holes | 303 | // mount screw holes |
303 | for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) { | 304 | for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) { |
304 | translate([0,0,mount_screw_l-mount_depth-(bridges?layer_height:-epsilon)]) | 305 | translate([0,0,mount_screw_l-mount_depth-(bridges?layer_height:-epsilon)]) |
305 | mirror([0,0,1]) | 306 | mirror([0,0,1]) |
306 | cylinder(d=mount_screw_d+mount_screw_d_tolerance, | 307 | cylinder(d=mount_screw_d+mount_screw_d_tolerance, |
307 | h=mount_screw_l-mount_depth+1, | 308 | h=mount_screw_l-mount_depth+1, |
308 | $fn=fnd*(mount_screw_d+mount_screw_d_tolerance)); | 309 | $fn=fnd*(mount_screw_d+mount_screw_d_tolerance)); |
309 | translate([0,0,mount_screw_l-mount_depth]) | 310 | translate([0,0,mount_screw_l-mount_depth]) |
310 | cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); | 311 | cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); |
311 | }//for | 312 | }//for |
312 | // pushfit | 313 | // pushfit |
313 | translate([0,0,filament_elevation]) | 314 | translate([0,0,filament_elevation]) |
314 | rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) | 315 | rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) |
315 | rotate([-90,0,0]) | 316 | rotate([-90,0,0]) |
316 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon]) | 317 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon]) |
317 | rotate([0,0,180]) { | 318 | rotate([0,0,180]) { |
318 | pushfit(pf); | 319 | pushfit(pf); |
319 | mirror([0,1,0]) teardrop(d=filament_guide_d,h=gearbox_d,center=true); | 320 | mirror([0,0,1]) { |
321 | translate([0,0,-epsilon]) | ||
322 | teardrop(d=filament_guide_d,h=pf_guidelen+epsilon,angle=225); | ||
323 | nl = 3.5; /* TODO: */ | ||
324 | translate([0,0,pf_guidelen-1]) | ||
325 | teardrop(d=filament_path_d,h=nl+2,angle=-225); | ||
326 | fh = (filament_guide_d-filament_path_d)/2; | ||
327 | union() { | ||
328 | translate([0,0,pf_guidelen+nl]) | ||
329 | cylinder(d1=filament_path_d,d2=filament_guide_d,h=fh,$fn=fnd*filament_guide_d); | ||
330 | translate([0,0,pf_guidelen+nl+fh-epsilon]) | ||
331 | teardrop(d=filament_guide_d,h=gearbox_d/2,angle=225); | ||
332 | } | ||
333 | } | ||
320 | }//rotate translate rotate translate rotate translate | 334 | }//rotate translate rotate translate rotate translate |
321 | // pulley | 335 | // pulley |
322 | cylinder(d=pulley_d+pulley_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); | 336 | cylinder(d=pulley_d+pulley_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); |
323 | // leverspace | 337 | // leverspace |
324 | hull() for(x=[0,gearbox_d]) | 338 | hull() for(x=[0,gearbox_d]) |
325 | rotate([0,0,45]) | 339 | rotate([0,0,45]) |
326 | translate([x,0,ls_z-ls_h/2]) | 340 | translate([x,0,ls_z-ls_h/2]) |
327 | cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); | 341 | cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); |
328 | 342 | ||
329 | // idler clearance | 343 | // idler clearance |
330 | a=cos(45)*(pulley_d+idler_d)/2; | 344 | a=cos(45)*(pulley_d+idler_d)/2; |
331 | b=mount_d/2-a; | 345 | b=mount_d/2-a; |
332 | x=sqrt(pow(a,2)+pow(b,2)); | 346 | x=sqrt(pow(a,2)+pow(b,2)); |
333 | translate([mount_d/2,0,ls_z]) | 347 | translate([mount_d/2,0,ls_z]) |
334 | intersection() { | 348 | intersection() { |
335 | r = x+idler_d/2+idler_clearance; | 349 | r = x+idler_d/2+idler_clearance; |
336 | cylinder(r=r,h=ls_h,center=true); | 350 | cylinder(r=r,h=ls_h,center=true); |
337 | translate([-r-1,0,-ls_h/2-1]) cube(size=[2*r+2,r+1,ls_h+2]); | 351 | translate([-r-1,0,-ls_h/2-1]) cube(size=[2*r+2,r+1,ls_h+2]); |
338 | } | 352 | } |
339 | 353 | ||
340 | // back side cutout | 354 | // back side cutout |
341 | // XXX: this is somewhat ugly and potentially bugged, | 355 | // XXX: this is somewhat ugly and potentially bugged, |
342 | // but I want to sleep. | 356 | // but I want to sleep. |
343 | a0_ = atan( | 357 | a0_ = atan( |
344 | (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2) | 358 | (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2) |
345 | / | 359 | / |
346 | ( | 360 | ( |
347 | pulley_d/2+filament_offset- | 361 | pulley_d/2+filament_offset- |
348 | (pf_d(pf)+2*pf_shell)/2/cos(30) | 362 | (pf_d(pf)+2*pf_shell)/2/cos(30) |
349 | ) | 363 | ) |
350 | ); | 364 | ); |
351 | a0 = -135 + ( (a0_>0) ? a0_ : 180+a0_ ); | 365 | a0 = -135 + ( (a0_>0) ? a0_ : 180+a0_ ); |