add extension with hole for screw
[challenge-bot] / 3d-printables / sonar-binder-clip-holder-data.scad
index 42b1d408baf4d2abc0e2ed5fdaf2c22e65ea324c..13e446570d953e21210a4bf8f9fca80517f4eb34 100644 (file)
   of it.
 */
 
-$fn = 30;
+$fn = 50;
 
 sonar_diameter_measured = 15.82;
 sonar_diameter_print_fudge = 0.5;
 sonar_diameter = sonar_diameter_measured + sonar_diameter_print_fudge;
 sonar_radius = sonar_diameter / 2;
 
-module sonar_binder_clip_holder(sonar_radius) {
-       circle(sonar_radius);
-}
+between_sonar_cans = 10.82;
+between_sonar_centers = sonar_diameter + between_sonar_cans;
+
+// the sonar cylinders are placed on the pcb at slightly different positions
+//  from one sensor to the next, so this allows for that variance.
+between_sonar_centers_variation = 2;
+
+wall_thickness = 3;
+
+screw_radius_measured = 2.8;
+screw_radius_print_fudge = 0.3;
+screw_radius = screw_radius_measured + screw_radius_print_fudge;
+
+module sonar_sensors_2d(sonar_radius,
+                        between_sonar_centers,
+                        between_sonar_centers_variation) {
+  hull(){
+    circle(sonar_radius);
+    translate([between_sonar_centers_variation, 0]){
+      circle(sonar_radius); } }
+  translate([between_sonar_centers, 0]) {
+    circle(sonar_radius); } }
+
+module sonar_holder_outline_2d(sonar_radius,
+                               between_sonar_centers,
+                               wall_thickness) {
+  holder_radius = sonar_radius + wall_thickness;
+  holder_diameter = holder_radius * 2;
+  hull() {
+    circle(holder_radius);
+    translate([between_sonar_centers, 0]) {
+      circle(holder_radius); }
+    translate([sonar_radius + between_sonar_centers, -holder_radius]) {
+      square([holder_diameter * 2, holder_diameter]); } } }
+
+module sonar_binder_clip_holder(sonar_radius,
+                                between_sonar_centers,
+                                between_sonar_centers_variation,
+                                wall_thickness) {
+  difference() {
+    sonar_holder_outline_2d(sonar_radius,
+                            between_sonar_centers,
+                            wall_thickness);
+    sonar_sensors_2d(sonar_radius,
+                     between_sonar_centers,
+                     between_sonar_centers_variation);
+    translate([sonar_radius +
+               between_sonar_centers +
+               3 * (wall_thickness + sonar_radius),
+               0,
+               0]) {
+      circle(screw_radius); } } }
 
 /*
   This file is part of challenge-bot.