summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad44
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 )