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