X-Git-Url: http://challenge-bot.com/repos/?p=challenge-bot;a=blobdiff_plain;f=wheel.scad;h=131caf8d5af204b1f7fc47d891bddedb5054fe61;hp=028531fd58c1d0c47eb7988bb9e8fa05be0ead18;hb=ac757602dfe7948c40c38a501386d13a93db7dd6;hpb=a059835759de12a2a20fa6038e6332c44547bdcb diff --git a/wheel.scad b/wheel.scad index 028531f..131caf8 100644 --- a/wheel.scad +++ b/wheel.scad @@ -4,27 +4,68 @@ // https://gitorious.org/ozzloy/challenge-bot // https://github.com/waynegramlich/challenge-bot +wheel_depth = 6; +wheel_radius = 68/2; + module encoder_shaft(){ - motor_shaft_big = 3.7; - motor_shaft_small = 4.8; - 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); + $fn = 30); + // 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, $fn = 30, 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, $fn = 30); + 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, $fn = 30);}} + +wheel();