Dynamixel XL330 horns

From IxD Studio
Jump to navigation Jump to search

$fn=32;

inner = 6; // 6mm inner empty space for front hornet screw outer = 8.25; // 8.25mm outer radius of XL330 servo hornet

r = 0.7; // d=1.6mm pins on the XL330 servo hornet (inlet) l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm t = 2; // t=2mm, global thickness d = 17; // d=16mm, front/back hand distance h = 29; // h=30mm, upper hand distance fac = 1.5;

module pins(r, l, t){

   /* r: radius, l: length, t: thickness */
   translate([inner,0,t]) cylinder(l, r, r);
   translate([-inner,0,t]) cylinder(l, r, r);
   translate([0,inner,t]) cylinder(l, r, r);
   translate([0,-inner,t]) cylinder(l, r, r);
   }

module disc(thichness=t){

   difference(){
       union(){
           cylinder(t, outer, outer);
           cylinder(t, t, t);
       }
       cylinder(t, inner/2, inner/2);
       }
   }

module frontArm(d, t){

   difference(){
       translate([-outer/2, 0, 0]) cube([outer, d, t]);
       cube([2*inner,2*inner,2*t],true);
       }
   }

module upperArm(d, h, t){

   rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);
   }

module backArm(d, h, t){

   union(){
       translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);
       translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);
   }
   }

// union(){

   union(){
       union(){
           union(){
               pins(r, l, t);
               disc(t);
               }
           frontArm(d, t);
           }
       upperArm(d, h, t);
   }
   backArm(d, h, t);

}