]> www.fi.muni.cz Git - things.git/blobdiff - servo-tube-holder.scad
switch holder.scad
[things.git] / servo-tube-holder.scad
index 34b0ae100dbeda30c431c8437dc001d30802951c..64ea5f54b42422930c2269842157b6eb2b05ba16 100644 (file)
@@ -2,46 +2,72 @@ eps = 0.01;
 infty = 200;
 
 wall = 1.5;
-thin_wall = 1.0;
+thin_wall = 0.6;
 
-fuse_tube_d = 8.0;
-clip_w = 5;
+fuse_tube_d = 8.0 + 0.5;
+tube_xoff = wall - 0.5;
+
+clip_w = 6;
 
 slot_w = 3;
 
-servo_l = 22.5;
+// 9g servo
+servo_l = 23.0;
 servo_w = 12.5;
 
-beam_w = fuse_tube_d/2 + wall;
 
-translate([0, -clip_w, 0])
-       fuse_clip();
-translate([0, servo_l, 0])
-       fuse_clip();
+beam_w = fuse_tube_d/2 + wall - tube_xoff;
+beam_h = fuse_tube_d/2 + wall;
+
+cable_w = 2.0;
+cable_l = 5.0;
+
 
 difference() {
        union() {
                // servo frame
                translate([-wall, -servo_l/2-clip_w, 0])
-                       cube([servo_w + 2*wall, servo_l + 2*clip_w, wall]);
+                       cube([servo_w + 2*wall, servo_l + 2*clip_w, thin_wall]);
+               // servo frame supports
+               for (y = [-1, 1])
+               scale([1, y, 1])
+               translate([0, servo_l/2 + clip_w - wall, 0])
+               hull() {
+                       cube([servo_w/2 + cable_l/2, wall, thin_wall]);
+                       cube([eps, wall, beam_h]);
+               }
                // main beam
                translate([-beam_w, -servo_l/2-clip_w, 0])
-                       cube([beam_w, servo_l + 2*clip_w, beam_w]);
+                       cube([beam_w, servo_l + 2*clip_w, fuse_tube_d/2+wall]);
                // clips
-               for (y = [-1, 1]) scale([1, y, 1])
-               translate([-fuse_tube_d - 2*wall, servo_l/2, 0])
-                       cube([fuse_tube_d + 2*wall, clip_w, fuse_tube_d + 2*wall]);
+               for (y = [-1, 1])
+               scale([1, y, 1])
+               translate([0, servo_l/2, 0]) 
+               hull() {
+                       // bottom cube
+                       translate([-0.75*fuse_tube_d - 2*wall + tube_xoff, 0, 0])
+                               cube([0.75*fuse_tube_d + 2*wall, clip_w, fuse_tube_d/2 + wall + eps]);
+                       // cylinder
+                       translate([-fuse_tube_d/2 - wall + tube_xoff, 0, fuse_tube_d/2 + wall])
+                       rotate([-90, 0, 0])
+                               cylinder(r = fuse_tube_d/2 + wall, h = clip_w);
+               }
+                       
                        
        }
        // hole for servo
        translate([0, -servo_l/2, -eps])
                cube([servo_w, servo_l, wall + 2*eps]);
        // fuse tube
-       translate([-fuse_tube_d/2-wall, servo_l/2+clip_w+eps, fuse_tube_d/2+wall])
+       translate([-fuse_tube_d/2-wall + tube_xoff, servo_l/2+clip_w+eps, fuse_tube_d/2+wall])
                        rotate([90, 0, 0])
                        cylinder(r = fuse_tube_d/2, h = servo_l +2*clip_w + 2*eps);
        // fuse tube slot
-       translate([-fuse_tube_d/2-wall-slot_w/2, -servo_l/2-clip_w-eps, fuse_tube_d/2+wall])
+       translate([-fuse_tube_d/2-wall-slot_w/2 + tube_xoff, -servo_l/2-clip_w-eps, fuse_tube_d/2+wall])
                cube([slot_w, servo_l + 2*clip_w + 2*eps, fuse_tube_d/2+wall+eps]);
+       // cable hole
+       for (y = [-1, 1]) scale ([1, y, 1])
+               translate([servo_w/2-cable_l/2, servo_l/2-eps, -eps])
+                       cube([cable_l, cable_w + eps, wall + 2*eps]);
 }