| 1 | // challenge-bot |
| 2 | // GNU AGPLv3 (or later at your option) |
| 3 | // project available at these locations: |
| 4 | // https://gitorious.org/ozzloy/challenge-bot |
| 5 | // https://github.com/waynegramlich/challenge-bot |
| 6 | |
| 7 | $fn = 100; |
| 8 | |
| 9 | module ball_screws(){ |
| 10 | between = 14.732; // 0.580 inches |
| 11 | screw_radius = 2.286/2; // 0.090 inches |
| 12 | screw_length = 8; // i eyeballed this |
| 13 | translate([between/2, 0, 0]) cylinder(h = screw_length, r = screw_radius); |
| 14 | translate([-between/2, 0, 0]) cylinder(h = screw_length, r = screw_radius);} |
| 15 | |
| 16 | module caster_flange(){ |
| 17 | // i eyeballed this too, it's (0.580/5) inches, times 2 to be stronger |
| 18 | height = 2.9464 * 2; |
| 19 | width = 20.32; // 0.800 inches |
| 20 | between = 14.732; //0.580 inches |
| 21 | side_radius = (width - between)/2; |
| 22 | hull(){ |
| 23 | cylinder(h = height, r = between/2); |
| 24 | translate([between/2, 0, 0]) cylinder(h = height, r = side_radius); |
| 25 | translate([-between/2, 0, 0]) cylinder(h = height, r = side_radius);}} |
| 26 | |
| 27 | module hexagon(size, height){ |
| 28 | boxWidth = size/1.75; |
| 29 | for (r = [-60, 0, 60]) rotate([0,0,r]) cube([boxWidth, size, height], true);} |
| 30 | |
| 31 | module nuts(){ |
| 32 | height = 1.6; // from calipers |
| 33 | overall_width = 20.32; // 0.800 inches |
| 34 | between = 14.732; // 0.580 inches |
| 35 | short_side_nut = 4.7; // from calipers |
| 36 | translate([between/2, 0, height/2]) hexagon(4.7, height); |
| 37 | translate([-between/2, 0, height/2]) hexagon(4.7, height);} |
| 38 | |
| 39 | module ziptie(){ |
| 40 | ziptie_width = 4.7625; // 3/16 inch |
| 41 | ziptie_height = 3; // i'm guessing |
| 42 | standoff_radius = 14.732; // 0.580 inches |
| 43 | translate([-standoff_radius/2, -ziptie_width/2, 0]) |
| 44 | cube([standoff_radius, ziptie_width, ziptie_height]);} |
| 45 | |
| 46 | module caster_standoff(){ |
| 47 | height = 43; |
| 48 | caster_radius = 14.732/2; |
| 49 | caster_flange_height = 2.9464 * 2; |
| 50 | difference(){ |
| 51 | union(){ |
| 52 | cylinder(h = height, r = caster_radius); |
| 53 | caster_flange();} |
| 54 | translate([0, 0, -.1]) scale([1, 1, 1.1]) ball_screws(); |
| 55 | translate([0, 0, caster_flange_height]) nuts(); |
| 56 | translate([0, 0, height * 3 / 4]) scale([1.1, 1, 1]) ziptie(); |
| 57 | rotate([0, 0, 90]) translate([0, 0, height * 1 / 2]) scale([1.1, 1, 1]) |
| 58 | ziptie();}} |
| 59 | |
| 60 | caster_standoff(); |