Dynamixel XL330 pulley: Difference between revisions

From IxD Studio
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 67: Line 67:


r = 25; // disc radius - outer
r = 25; // disc radius - outer
w = 8; // disc thickness  
w = 5.3; // disc thickness for XL330 -- adjust for different servo types
d = 3;  // inner hole radius -- inner
d = 3;  // inner hole radius -- inner
t = 4;
t = 4;
h = 2; // boundary thickness
h = 1.5; // boundary thickness


rr = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)
rr = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)

Latest revision as of 13:39, 21 May 2026

Code for OpenSCAD: https://openscad.org


$fn=32;

w = 5.3; // pulley thickness 
inner = 6; // fixed number (inner radius non-overlapping with the servo's screw)
outer = 10; // adjust this number to increase the outer radius
screw = 1;

module mounts(screw, inner, outer){
    // module for screw mounts
    union(){
        union(){
            union(){
                translate([inner,0,-2]) cylinder(outer, screw, screw);
                translate([-inner,0,-2]) cylinder(outer, screw, screw);
            }
            translate([0,inner,-2]) cylinder(outer, screw, screw);
        }
        translate([0,-inner,-2]) cylinder(outer, screw, screw);
    }
}


module disc(inner, outer){
    difference(){
        cylinder(w, outer, outer);
        cylinder(w, inner/2, inner/2);
    }
}

module pully(inner, outer, r, w){
    difference(){
        difference(){
            rotate_extrude(convexity = 10) 
                translate([outer + 2, w/2, 0]) 
                    circle(r);
            rotate_extrude(convexity = 10) 
                translate([outer + (inner/2), w/2, 0]) 
                    circle(r);
        }
        // string hanging point
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); 
    }
}

difference(){
    union(){
        pully(inner, outer, w/2, w);
        disc(inner, outer);
    }
    mounts(screw, inner, outer);
}


Pulley v2

$fn = 32;

r = 25; // disc radius - outer
w = 5.3; // disc thickness for XL330 -- adjust for different servo types
d = 3;  // inner hole radius -- inner
t = 4;
h = 1.5; // boundary thickness

rr = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)
ll = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm
tt = 2; // t=2mm, global thickness
inner = 6;

module pins(rr, ll, tt){
    /* r: radius, l: length, t: thickness */
    translate([inner,0,0]) cylinder(2*w, rr, rr);
    translate([-inner,0,0]) cylinder(2*w, rr, rr);
    translate([0,inner,0]) cylinder(2*w, rr, rr);
    translate([0,-inner,0]) cylinder(2*w, rr, rr);
}
    
module mounts(screw, inner, outer){
    // module for screw mounts
    union(){
        union(){
            union(){
                translate([3*inner,0,-2]) cylinder(outer, screw, screw);
                translate([-3*inner,0,-2]) cylinder(outer, screw, screw);
            }
            translate([0,3*inner,-2]) cylinder(outer, screw, screw);
        }
        translate([0,-3*inner,-2]) cylinder(outer, screw, screw);
    }
}


module disc(r, w, d, h){
    difference(){
        union(){
            union(){
                cylinder(w, r, r);
                translate([0, 0, w-h]) cylinder(h, r + t, r + t);
            }
            translate([0, 0, 0]) cylinder(h, r + t, r + t);
        }
        cylinder(w, 3, 3);
    }
}
//
//union(){
//    disc(r, w, d);
//    translate([0, 0, w - t]) cylinder(h, r + t, r + t);
//}
difference(){
    difference(){
        difference(){
            disc(r, w, d, h);
    //        mounts(h, d, r);
            pins(rr, ll, w);
        }
        translate([0,0,w/2]) rotate([90,0,0])  cylinder(2*r, 1, 1); // string attachment
    }
    translate([0,-1.5*w,w/2]) rotate([0,90,0]) cylinder(2*r, 1, 1); // string attachment
}

Other servo accessories

https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories