dac38b58 |
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 | |
978bd219 |
7 | $fn = 60; |
8 | |
9 | // 3/16 inch in mm deck_depth = 4.7625; |
10 | // 1/4 inch in mm - a little to be a squeeze fit |
11 | deck_depth = 6.35 - 0.4; |
dac38b58 |
12 | sonar_plate_width = 20; |
13 | sonar_plate_length = 45; |
8ca271e9 |
14 | // sonar sensor measurements taken with calipers: |
15 | // 9.6 in between, 41.33 outside, 15.82 diameter |
16 | // measured diameter of 15.82 with calipers, |
17 | // but when printed ends up being too small |
18 | sonar_sensor_radius = 15.82 / 2 + 0.3; |
dac38b58 |
19 | sonar_sensor_height = 13.8; |
8ca271e9 |
20 | between_sensor_centers = 15.82 + 9.6; |
21 | |
74f8c088 |
22 | sonar_holder_length = sonar_plate_length + 10; |
23 | sonar_holder_width = sonar_plate_width + 3; |
dac38b58 |
24 | sonar_holder_depth = 3; |
8ca271e9 |
25 | |
74f8c088 |
26 | |
27 | module sensors(){ |
28 | translate([between_sensor_centers / 2, 0, 0]){ |
29 | cylinder(r = sonar_sensor_radius, h = sonar_sensor_height);} |
30 | translate([-between_sensor_centers / 2, 0, 0]){ |
31 | cylinder(r = sonar_sensor_radius, h = sonar_sensor_height);}} |
32 | |
33 | module deck_holder(){ |
34 | deck_holder_length = 25; |
35 | deck_holder_width = sonar_holder_width; |
36 | cube([deck_holder_length, deck_holder_width, sonar_holder_depth]); |
37 | translate([0, 0, sonar_holder_depth]){ |
38 | cube([deck_depth, deck_holder_width, deck_depth]); |
39 | translate([0, 0, deck_depth]){ |
40 | cube([deck_holder_length, deck_holder_width, sonar_holder_depth]);}}} |
41 | |
42 | module sonar_table_top_holder(){ |
43 | difference(){ |
44 | union(){ |
45 | cube([sonar_holder_length, sonar_holder_width, sonar_holder_depth]); |
46 | translate([sonar_holder_length, 0, 0]){ |
47 | deck_holder();}} |
48 | translate([between_sensor_centers / 2 + sonar_sensor_radius + 3, |
49 | sonar_holder_width / 2, |
50 | -1]){ |
51 | sensors();} |
52 | // cut out a bit of the circle to make it 3d printable, |
53 | // no severe overhang |
54 | translate([3 + sonar_sensor_radius, |
55 | sonar_holder_width - 3.025, |
56 | sonar_holder_depth / 2 - 0.025]){ |
57 | cube([10, 6.1, sonar_holder_depth + .1], center = true); |
58 | translate([between_sensor_centers, 0, 0]){ |
59 | cube([10, 6.1, sonar_holder_depth + .1], center = true);}}}} |
dac38b58 |
60 | |
74f8c088 |
61 | rotate([90, 0, 0]){ |
62 | sonar_table_top_holder();} |