Dynamixel XL330 horns: Difference between revisions

From IxD Studio
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
= XL330 horns =
OpenSCAD code
<pre>
$fn=32;
$fn=32;


Line 9: Line 4:
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet


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


module pins(r, l, t){
module pins(r, l, t){
Line 47: Line 43:
     union(){
     union(){
         translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);
         translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);
         translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);
         translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);
     }
     }
     }
     }
Line 65: Line 61:
     backArm(d, h, t);
     backArm(d, h, t);
}
}
</pre>
[[File:Xl330-horn-modular.png|thumb]]

Revision as of 12:56, 5 May 2026

$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);

}