X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=wheel.scad;h=87ec2865c38c456da267159bce0b19b41291c92d;hb=1d64184f60ba90676a4608319d4e17b967cd2f8c;hp=aa3d2686ddca632ccd461197b6df8f1cd28708de;hpb=bc02cd240d188c85cc1333510e63b2a2ff516bc7;p=challenge-bot diff --git a/wheel.scad b/wheel.scad index aa3d268..87ec286 100644 --- a/wheel.scad +++ b/wheel.scad @@ -4,27 +4,70 @@ // https://gitorious.org/ozzloy/challenge-bot // https://github.com/waynegramlich/challenge-bot +// use $fn = 20 while developing, 100 when about to print +// 20 will make previews fast +// 100 will make printing smooth +$fn = 20; + +wheel_depth = 6; +wheel_radius = 68/2; + module encoder_shaft(){ - motor_shaft_big = 7/2; - motor_shaft_small = 4.65; - motor_shaft_length = 7.65 / 2; + // measured with calipers, checked against the motor shaft + motor_shaft_big = 3.7; // radius, gets doubled in cylinder + motor_shaft_small = 4.8; // total length of box + motor_shaft_length = wheel_depth * 3 / 4; intersection(){ - cylinder(h = motor_shaft_length, - r = motor_shaft_big, - center = true, - $fn=100); + cylinder(h = motor_shaft_length, r = motor_shaft_big, center = true); + // x direction is multiplied by 2 because the radius of the cylinder + // goes in both directions. the extra .1 is for overlap cube([motor_shaft_big * 2.1, motor_shaft_small, motor_shaft_length], center = true);}} +module mounting_screw(){ + cylinder(h = wheel_depth * 1.1, r = 1, center = true);} + module wheel(){ - depth = 7.65; - radius = 68/2; - difference(){ - cylinder(h = depth, r = radius, center = true, $fn=100); - translate([0, 0, 7.65/4]) - scale([1, 1, 1.1]) - encoder_shaft(); - cylinder(h = depth * 1.1, r = 1, $fn = 100, center = true);}} - -translate([0, 0, 7.65/2]) wheel(); + translate([0, 0, wheel_depth / 2]){ + difference(){ + cylinder(h = wheel_depth, r = wheel_radius, center = true); + translate([0, 0, wheel_depth / 4]){ + scale([1, 1, 1.1]){ + encoder_shaft();}} + mounting_screw(); + for(i = [1 : 5]){ + rotate(i * 360/5, [0, 0, 1]){ + translate([0, 0, -0.6 * wheel_depth]) + between_spokes();}} + translate([0, 0, wheel_depth / 4]){ + difference(){ + cylinder(h = wheel_depth / 1.2, + r = 0.85 * wheel_radius, + center = true); + cylinder(h = wheel_depth / 1.2, + r = 0.23 * wheel_radius, + center = true);}}}}} + +module wheel_block(){ + cube([wheel_radius, wheel_radius, wheel_depth]);} + +module pie_slice(){ + intersection(){ + translate([0, 0, wheel_depth / 2]){ + cylinder(h = wheel_depth, + r = 0.85 * wheel_radius, + center = true);} + translate([0, wheel_radius * 0.3, 0]){ + rotate([0, 0, (360 / 5) / 2]){ + intersection(){ + wheel_block(); + rotate([0, 0, 90 - 360 / 5]) + wheel_block();}}}}} + +module between_spokes(){ + minkowski(){ + pie_slice(); + cylinder(h = wheel_depth / 2, r = 1);}} + +wheel();