summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2018-08-26 19:25:56 (UTC)
committer Michael Krelin <hacker@klever.net>2018-08-26 19:25:56 (UTC)
commitd19aafaa5b0def955a82f3952a3dc9e96dbca954 (patch) (unidiff)
tree71d6670906dcca8ffb552be38ddccd4e94e80286
parent1274626a6b611b2ba4d056ad402316d23d3b0b4c (diff)
downloadextrudery-d19aafaa5b0def955a82f3952a3dc9e96dbca954.zip
extrudery-d19aafaa5b0def955a82f3952a3dc9e96dbca954.tar.gz
extrudery-d19aafaa5b0def955a82f3952a3dc9e96dbca954.tar.bz2
don't support configuration without tensioning screw
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad49
1 files changed, 19 insertions, 30 deletions
diff --git a/another.scad b/another.scad
index 9ff7f6a..e6d9ca3 100644
--- a/another.scad
+++ b/another.scad
@@ -51,49 +51,48 @@ module the_extruder(
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 pulley_small_d_clearance=0.5,
56 lever_v_clearance=.7, // vertical clearance for the lever 56 lever_v_clearance=.7, // vertical clearance for the lever
57 spring_d_clearance=1, 57 spring_d_clearance=1,
58 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion 58 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion
59 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion 59 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion
60 mount_screw_d_tolerance=.4, 60 mount_screw_d_tolerance=.4,
61 idler_v_tolerance=.5, 61 idler_v_tolerance=.5,
62 knob_bore_d_tolerance=.6, 62 knob_bore_d_tolerance=.6,
63 st_nut_h_tolerance=.2, 63 st_nut_h_tolerance=.2,
64 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 */
65 st_screw_d_tolerance=.5, 65 st_screw_d_tolerance=.5,
66 st_split_w_tolerance = .3, 66 st_split_w_tolerance = .3,
67 67
68 min_z_shell = 4*layer_height, // the very minimal shell thickness along z-axis. 68 min_z_shell = 4*layer_height, // the very minimal shell thickness along z-axis.
69 min_xy_shell = 2*extrusion_width, 69 min_xy_shell = 2*extrusion_width,
70 70
71 what="lever", // lever|body|knob|springpad|* 71 what="lever", // lever|body|knob|springpad|*
72 left=false, 72 left=false,
73 vitamins = true, 73 vitamins = true,
74 bridges = true, 74 bridges = true,
75 tensioner = true,
76 debug = false 75 debug = false
77) { 76) {
78 fnd = 2*PI; fnr = 2*fnd; 77 fnd = 2*PI; fnr = 2*fnd;
79 78
80 idler_filament_offset = filament_path_d/2; // -filament_offset; 79 idler_filament_offset = filament_path_d/2; // -filament_offset;
81 lever_shell = mount_screwhead_h+0.5; 80 lever_shell = mount_screwhead_h+0.5;
82 lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); 81 lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell);
83 lsd = idler_d-idler_clearance*2; // the diameter of lever thingie 82 lsd = idler_d-idler_clearance*2; // the diameter of lever thingie
84 longwing=(mount_d+mount_screw_d+mount_screw_d_tolerance+spring_d+spring_d_clearance)/2+min_xy_shell; 83 longwing=(mount_d+mount_screw_d+mount_screw_d_tolerance+spring_d+spring_d_clearance)/2+min_xy_shell;
85 shortwing = let(a=mount_d/2,c=(pulley_d+idler_d)/2/sqrt(2)) 84 shortwing = let(a=mount_d/2,c=(pulley_d+idler_d)/2/sqrt(2))
86 sqrt(c*c+pow(a-c,2)); 85 sqrt(c*c+pow(a-c,2));
87 longwing_travel = idler_travel*longwing/shortwing; 86 longwing_travel = idler_travel*longwing/shortwing;
88 h_ = (pulley_d+idler_d)/(2*sqrt(2)); 87 h_ = (pulley_d+idler_d)/(2*sqrt(2));
89 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) ); 88 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) );
90 spring_dl = idler_travel*longwing/ri; 89 spring_dl = idler_travel*longwing/ri;
91 // finger and spring support 90 // finger and spring support
92 fsw = gearbox_d-(gearbox_d-mount_d)/2-max(spring_lc,longwing_travel+(gearbox_d-mount_d)/2); 91 fsw = gearbox_d-(gearbox_d-mount_d)/2-max(spring_lc,longwing_travel+(gearbox_d-mount_d)/2);
93 92
94 mount_min_depth = mounthole_min_depth ? mounthole_min_depth : mounthole_depth-1; 93 mount_min_depth = mounthole_min_depth ? mounthole_min_depth : mounthole_depth-1;
95 mount_max_depth = mounthole_max_depth ? mounthole_max_depth : mounthole_depth+1; 94 mount_max_depth = mounthole_max_depth ? mounthole_max_depth : mounthole_depth+1;
96 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation; 95 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation;
97 ls_z = filament_elevation; // leverspace mid-z 96 ls_z = filament_elevation; // leverspace mid-z
98 ls_h = lever_thickness+lever_v_clearance; // leverspace height 97 ls_h = lever_thickness+lever_v_clearance; // leverspace height
99 mount_depth = mount_screw_l - (ls_z+ls_h/2+min_z_shell); 98 mount_depth = mount_screw_l - (ls_z+ls_h/2+min_z_shell);
@@ -327,78 +326,68 @@ module the_extruder(
327 326
328 // back side cutout 327 // back side cutout
329 // XXX: this is somewhat ugly and potentially bugged, 328 // XXX: this is somewhat ugly and potentially bugged,
330 // but I want to sleep. 329 // but I want to sleep.
331 a0_ = atan( 330 a0_ = atan(
332 (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2) 331 (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2)
333 / 332 /
334 ( 333 (
335 pulley_d/2+filament_offset- 334 pulley_d/2+filament_offset-
336 (pf_d(pf)+2*pf_shell)/2/cos(30) 335 (pf_d(pf)+2*pf_shell)/2/cos(30)
337 ) 336 )
338 ); 337 );
339 a0 = -135 + ( (a0_>0) ? a0_ : 180+a0_ ); 338 a0 = -135 + ( (a0_>0) ? a0_ : 180+a0_ );
340 a1 = atan((longwing-lever_thickness/2)/(gearbox_d/2)); 339 a1 = atan((longwing-lever_thickness/2)/(gearbox_d/2));
341 translate([0,0,ls_z]) difference() { 340 translate([0,0,ls_z]) difference() {
342 rotate([0,0,-180+a0]) 341 rotate([0,0,-180+a0])
343 rotate_extrude(angle=a1-a0) 342 rotate_extrude(angle=a1-a0)
344 translate([0,-ls_h/2]) 343 translate([0,-ls_h/2])
345 square([sqrt(pow(gearbox_d/2,2)+pow(longwing-lever_thickness/2,2))+1, 344 square([sqrt(pow(gearbox_d/2,2)+pow(longwing-lever_thickness/2,2))+1,
346 ls_h]); 345 ls_h]);
347 translate([-mount_d/2,0,0]) 346 translate([-mount_d/2,0,0])
348 cylinder(d=gearbox_d-mount_d,h=ls_h+2,center=true,$fn=fnd*(gearbox_d-mount_d)); 347 cylinder(d=gearbox_d-mount_d,h=ls_h+2,center=true,$fn=fnd*(gearbox_d-mount_d));
349 }//difference translate 348 }//difference translate
350 349
351 //translate([-mount_d/2,-longwing,filament_elevation])
352 if(!tensioner) /* XXX: this seems to be bullshit, but it's so old, that it's historical bullshit */
353 translate([mount_d/2,-longwing,filament_elevation])
354 rotate([0,-90,0]) difference() {
355 cylinder(d=spring_d+spring_d_clearance,h=spring_lc+spring_dl,$fn=fnd*(spring_d+spring_d_clearance));
356 translate([0,0,spring_lc+spring_dl]) sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4);
357 }
358
359 // spring tensioner 350 // spring tensioner
360 translate([-gearbox_d/2,-longwing,ls_z]) rotate([0,-90,0]) { 351 translate([-gearbox_d/2,-longwing,ls_z]) rotate([0,-90,0]) {
361 if(!tensioner) finger_indent(d=lever_thickness-1,r=15); else { 352 mirror([0,0,1]) {
362 mirror([0,0,1]) { 353 translate([0,0,st_thickshell])
363 translate([0,0,st_thickshell]) 354 hull() for(o=[0,spring_d]) translate([0,-o,0])
364 hull() for(o=[0,spring_d]) translate([0,-o,0]) 355 rotate([0,0,30])
365 rotate([0,0,30]) 356 cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6);
366 cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6); 357 translate([0,0,-1]) cylinder(d=st_screw_d+st_screw_d_tolerance,h=fsw+2,$fn=fnd*(st_screw_d+st_screw_d_tolerance));
367 translate([0,0,-1]) cylinder(d=st_screw_d+st_screw_d_tolerance,h=fsw+2,$fn=fnd*(st_screw_d+st_screw_d_tolerance)); 358 bigd = spring_d+spring_d_clearance;
368 bigd = spring_d+spring_d_clearance; 359 hf = (bigd-st_screw_d-st_screw_d_tolerance)/2;
369 hf = (bigd-st_screw_d-st_screw_d_tolerance)/2; 360 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell-epsilon]) {
370 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell-epsilon]) { 361 cylinder(d1=st_screw_d+st_screw_d_tolerance,d2=bigd,
371 cylinder(d1=st_screw_d+st_screw_d_tolerance,d2=bigd, 362 h=hf+epsilon, $fn=fnd*bigd);
372 h=hf+epsilon, $fn=fnd*bigd); 363 translate([0,-(st_thinshell+st_split_w_tolerance)/2,0])
373 translate([0,-(st_thinshell+st_split_w_tolerance)/2,0]) 364 cube(size=[body_h-ls_z+1,st_thinshell+st_split_w_tolerance,fsw+1]);
374 cube(size=[body_h-ls_z+1,st_thinshell+st_split_w_tolerance,fsw+1]); 365 }//translate
375 } 366 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+hf-epsilon])
376 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+hf-epsilon]) 367 cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd);
377 cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd); 368 }//mirror
378 } 369 }//translate
379 }
380 }
381 370
382 }//difference 371 }//difference
383 372
384 }//body module 373 }//body module
385 374
386 module springpad() { 375 module springpad() {
387 smalld=st_screw_d+st_screw_d_tolerance+min_xy_shell; 376 smalld=st_screw_d+st_screw_d_tolerance+min_xy_shell;
388 bigd = spring_d+spring_d_clearance/2; 377 bigd = spring_d+spring_d_clearance/2;
389 hf = (bigd-smalld)/2; 378 hf = (bigd-smalld)/2;
390 h = hf*3.5; 379 h = hf*3.5;
391 translate([-gearbox_d/2+st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+1,-longwing,filament_elevation]) 380 translate([-gearbox_d/2+st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+1,-longwing,filament_elevation])
392 rotate([0,90,0]) difference() { 381 rotate([0,90,0]) difference() {
393 union() { 382 union() {
394 cylinder(d1=smalld,d2=bigd,h=hf,$fn=fnd*bigd); 383 cylinder(d1=smalld,d2=bigd,h=hf,$fn=fnd*bigd);
395 translate([0,0,hf-epsilon]) 384 translate([0,0,hf-epsilon])
396 cylinder(d=bigd,h=h-hf,$fn=fnd*bigd); 385 cylinder(d=bigd,h=h-hf,$fn=fnd*bigd);
397 translate([0,0,h]) 386 translate([0,0,h])
398 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); 387 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4);
399 l = body_h-ls_z; 388 l = body_h-ls_z;
400 w = st_thinshell; 389 w = st_thinshell;
401 hull() translate([0,-st_thinshell/2,0]) mirror([1,0,0]) { 390 hull() translate([0,-st_thinshell/2,0]) mirror([1,0,0]) {
402 translate([0,0,w]) 391 translate([0,0,w])
403 cube(size=[l,st_thinshell,w]); 392 cube(size=[l,st_thinshell,w]);
404 cube(size=[l-w,st_thinshell,2*w]); 393 cube(size=[l-w,st_thinshell,2*w]);
@@ -421,49 +410,49 @@ module the_extruder(
421 cube([bore_d+2,bore_d/2,knob_bore_l+4]); 410 cube([bore_d+2,bore_d/2,knob_bore_l+4]);
422 } 411 }
423 } 412 }
424 } 413 }
425 difference() { 414 difference() {
426 union() { 415 union() {
427 cylinder(d1=gearbox_d-2*ch,d2=gearbox_d,h=ch+epsilon,$fn=fnd*gearbox_d); 416 cylinder(d1=gearbox_d-2*ch,d2=gearbox_d,h=ch+epsilon,$fn=fnd*gearbox_d);
428 translate([0,0,ch]) 417 translate([0,0,ch])
429 cylinder(d=gearbox_d,h=knob_h-2*ch+epsilon,$fn=fnd*gearbox_d); 418 cylinder(d=gearbox_d,h=knob_h-2*ch+epsilon,$fn=fnd*gearbox_d);
430 translate([0,0,knob_h-ch]) 419 translate([0,0,knob_h-ch])
431 cylinder(d1=gearbox_d,d2=gearbox_d-2*ch,h=ch,$fn=fnd*gearbox_d); 420 cylinder(d1=gearbox_d,d2=gearbox_d-2*ch,h=ch,$fn=fnd*gearbox_d);
432 } 421 }
433 for(a=[0:360/knob_indents:359]) rotate([0,0,a]) 422 for(a=[0:360/knob_indents:359]) rotate([0,0,a])
434 translate([0,gearbox_d/2,-1]) 423 translate([0,gearbox_d/2,-1])
435 cylinder(d=knob_indent_d,h=knob_h+2,$fn=fnd*knob_indent_d); 424 cylinder(d=knob_indent_d,h=knob_h+2,$fn=fnd*knob_indent_d);
436 } 425 }
437 } 426 }
438 }//knob module 427 }//knob module
439 428
440 module debug() { 429 module debug() {
441 difference() { 430 difference() {
442 children(); 431 children();
443 if(debug) { 432 if(debug) {
444 // spring tensioner debug cutout 433 // spring tensioner debug cutout
445 if(tensioner) // TODO: collapse copypasted transformations 434 // TODO: collapse copypasted transformations
446 translate([-gearbox_d/2,0,0]) 435 translate([-gearbox_d/2,0,0])
447 translate([0,-longwing,ls_z]) rotate([0,-90,0]) 436 translate([0,-longwing,ls_z]) rotate([0,-90,0])
448 translate([0,-lever_thickness/2-1,-gearbox_d]) 437 translate([0,-lever_thickness/2-1,-gearbox_d])
449 cube(size=[body_h/2+1,lever_thickness/2+1,gearbox_d+2]); 438 cube(size=[body_h/2+1,lever_thickness/2+1,gearbox_d+2]);
450 // lever axis debug cutout 439 // lever axis debug cutout
451 translate([mount_d/2,0,-1]) 440 translate([mount_d/2,0,-1])
452 rotate([0,0,-45]) 441 rotate([0,0,-45])
453 cube(size=[gearbox_d-mount_d,gearbox_d-mount_d,body_h+knob_h+2]); 442 cube(size=[gearbox_d-mount_d,gearbox_d-mount_d,body_h+knob_h+2]);
454 // idler debug cutout 443 // idler debug cutout
455 translate([0,0,ls_z]) 444 translate([0,0,ls_z])
456 place_idler() 445 place_idler()
457 rotate([0,0,-45]) 446 rotate([0,0,-45])
458 translate([0,0,-lever_thickness/2-epsilon]) 447 translate([0,0,-lever_thickness/2-epsilon])
459 cube(size=[(idler_d+idler_clearance)/2,(idler_d+idler_clearance)/2, 448 cube(size=[(idler_d+idler_clearance)/2,(idler_d+idler_clearance)/2,
460 lever_thickness+2*epsilon]); 449 lever_thickness+2*epsilon]);
461 // pushfit debug cutout 450 // pushfit debug cutout
462 place_idler() 451 place_idler()
463 translate([-idler_d/2+filament_offset,0,ls_z]) 452 translate([-idler_d/2+filament_offset,0,ls_z])
464 cube(size=[gearbox_d/2,gearbox_d/2+pf_h(pf),body_h-ls_z+1]); 453 cube(size=[gearbox_d/2,gearbox_d/2+pf_h(pf),body_h-ls_z+1]);
465 }//if debug 454 }//if debug
466 }//difference 455 }//difference
467 } 456 }
468 457
469 mirrorleft() 458 mirrorleft()