-rw-r--r-- | another.scad | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/another.scad b/another.scad index 74b7ffa..78d4320 100644 --- a/another.scad +++ b/another.scad | |||
@@ -43,24 +43,25 @@ module the_extruder( | |||
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 | 50 | ||
51 | // empty spaces | 51 | // empty spaces |
52 | idler_travel = 3, // how far should idler travel when pressed | 52 | idler_travel = 3, // how far should idler travel when pressed |
53 | idler_clearance=1, | 53 | idler_clearance=1, |
54 | pulley_d_clearance=2, | 54 | pulley_d_clearance=2, |
55 | pulley_small_d_clearance=0.5, | ||
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 | st_split_w_tolerance = .3, | 66 | st_split_w_tolerance = .3, |
66 | 67 | ||
@@ -318,58 +319,49 @@ module the_extruder( | |||
318 | cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); | 319 | cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); |
319 | }//for | 320 | }//for |
320 | // pushfit | 321 | // pushfit |
321 | pf_offset = mount_d/sqrt(2)/2+mount_screw_d; | 322 | pf_offset = mount_d/sqrt(2)/2+mount_screw_d; |
322 | translate([0,0,filament_elevation]) | 323 | translate([0,0,filament_elevation]) |
323 | rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) | 324 | rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) |
324 | rotate([-90,0,0]) | 325 | rotate([-90,0,0]) |
325 | translate([0,0,pf_offset]) | 326 | translate([0,0,pf_offset]) |
326 | rotate([0,0,180]) { | 327 | rotate([0,0,180]) { |
327 | pushfit(pf); | 328 | pushfit(pf); |
328 | mirror([0,0,1]) { | 329 | mirror([0,0,1]) { |
329 | fh = 1.5* (filament_guide_d-filament_path_d)/2; | 330 | fh = 1.5* (filament_guide_d-filament_path_d)/2; |
330 | fo = pf_offset-(idler_d+idler_clearance)/2-fh; | 331 | fo = pf_offset -filament_path_d /*(idler_d+idler_clearance)/2*/-fh; |
331 | translate([0,0,-1]) teardrop(d=filament_guide_d,h=fo-extrusion_width+1,angle=225); | 332 | translate([0,0,-1]) teardrop(d=filament_guide_d,h=fo/2,angle=225); |
332 | translate([0,0,-1]) teardrop(d=filament_path_d,h=gearbox_d/2+1,angle=-225); | 333 | translate([0,0,-1]) teardrop(d=filament_path_d,h=gearbox_d/2+1,angle=-225); |
333 | translate([0,0,fo+epsilon]) | 334 | translate([0,0,fo+epsilon]) |
334 | cylinder(d1=filament_path_d,d2=filament_guide_d,h=fh,$fn=fnd*filament_guide_d); | 335 | cylinder(d1=filament_path_d,d2=filament_guide_d,h=fh,$fn=fnd*filament_guide_d); |
335 | }//mirror | 336 | }//mirror |
336 | }//rotate translate rotate translate rotate translate | 337 | }//rotate translate rotate translate rotate translate |
337 | // pulley | 338 | // pulley |
338 | cylinder(d=pulley_d+pulley_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); | 339 | cylinder(d=pulley_d+pulley_small_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); |
339 | 340 | cylinder(d=pulley_d+pulley_d_clearance,ls_z-max(idler_h,filament_guide_d)/2,$fn=fnd*(pulley_d+pulley_d_clearance)); | |
340 | // leverspace | ||
341 | hull() for(x=[0,gearbox_d]) | ||
342 | rotate([0,0,45]) | ||
343 | translate([x,0,ls_z-ls_h/2]) | ||
344 | cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); | ||
345 | |||
346 | // idler clearance | ||
347 | a=cos(45)*(pulley_d+idler_d)/2; | ||
348 | b=mount_d/2-a; | ||
349 | x=sqrt(pow(a,2)+pow(b,2)); | ||
350 | translate([mount_d/2,0,ls_z]) | ||
351 | intersection() { | ||
352 | r = x+idler_d/2+idler_clearance; | ||
353 | cylinder(r=r,h=ls_h,center=true); | ||
354 | translate([-r-1,0,-ls_h/2-1]) cube(size=[2*r+2,r+1,ls_h+2]); | ||
355 | } | ||
356 | 341 | ||
357 | rotate([0,0,-45]) | ||
358 | translate([0,0,ls_z-ls_h/2]) | ||
359 | cube(size=[gearbox_d,gearbox_d,lever_thickness+lever_v_clearance]); | ||
360 | translate([0,0,ls_z-ls_h/2]) { | 342 | translate([0,0,ls_z-ls_h/2]) { |
361 | translate([mount_screwhead_d/2,0,0]) | 343 | // idler travel |
362 | mirror([0,1,0]) | 344 | translate([mount_d/2,0,0]) |
363 | cube(size=[gearbox_d,gearbox_d/2+1,lever_thickness+lever_v_clearance]); | 345 | rotate([0,0,45]) |
346 | rotate_extrude(angle=90,$fn=fnr*(shortwing+(idler_d+idler_clearance)/2)) | ||
347 | square([shortwing+(idler_d+idler_clearance)/2,ls_h]); | ||
348 | // idler itself | ||
349 | place_idler() | ||
350 | cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); | ||
351 | // lever space | ||
352 | echo(atan(1-2*fsw/gearbox_d)); | ||
353 | rotate([0,0,45]) | ||
354 | rotate_extrude(angle=-135+max(atan(2*fsw/gearbox_d-1),atan(gearbox_d/mount_d-1))) | ||
355 | square([gearbox_d/2+1,ls_h]); | ||
364 | } | 356 | } |
365 | 357 | ||
366 | // back side cutout | 358 | // back side cutout |
367 | // XXX: this is somewhat ugly and potentially bugged, | 359 | // XXX: this is somewhat ugly and potentially bugged, |
368 | // but I want to sleep. | 360 | // but I want to sleep. |
369 | a0_ = atan( | 361 | a0_ = atan( |
370 | (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2) | 362 | (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2) |
371 | / | 363 | / |
372 | ( | 364 | ( |
373 | pulley_d/2+filament_offset- | 365 | pulley_d/2+filament_offset- |
374 | (pf_d(pf)+2*pf_shell)/2/cos(30) | 366 | (pf_d(pf)+2*pf_shell)/2/cos(30) |
375 | ) | 367 | ) |