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;
+
+sonar_binder_clip_holder_height = 2;
+
+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 - sonar_radius - wall_thickness,
+ -holder_radius]) {
+ square(holder_diameter); } } }
+
+module sonar_holder_2d(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); } }
+
+module binder_clip_holder_2d(binder_clip_holder_length,
+ screw_radius,
+ holder_radius){
+ difference() {
+ square([binder_clip_holder_length, holder_radius * 2]);
+ translate([binder_clip_holder_length - holder_radius, holder_radius]) {
+ circle(screw_radius); } } }
+
+module sonar_binder_clip_holder_2d(sonar_radius,
+ between_sonar_centers,
+ between_sonar_centers_variation,
+ wall_thickness) {
+ sonar_holder_2d(sonar_radius,
+ between_sonar_centers,
+ between_sonar_centers_variation,
+ wall_thickness);
+ holder_radius = sonar_radius + wall_thickness;
+ binder_clip_holder_length = 2 * holder_radius;
+ translate([between_sonar_centers + holder_radius, -holder_radius]){
+ binder_clip_holder_2d(binder_clip_holder_length,
+ screw_radius,
+ holder_radius); } }
+
module sonar_binder_clip_holder(sonar_radius,
- between_sonar_centers) {
- circle(sonar_radius);
- translate([between_sonar_centers, 0]) {
- circle(sonar_radius); } }
+ between_sonar_centers,
+ between_sonar_centers_variation,
+ wall_thickness,
+ sonar_binder_clip_holder_height) {
+ linear_extrude(height = sonar_binder_clip_holder_height) {
+ sonar_binder_clip_holder_2d(sonar_radius,
+ between_sonar_centers,
+ between_sonar_centers_variation,
+ wall_thickness); } }
+
+module binder_clip_holder(binder_clip_holder_length,
+ screw_radius,
+ holder_radius,
+ binder_clip_holder_height) {
+ linear_extrude(height = binder_clip_holder_height) {
+ binder_clip_holder_2d(binder_clip_holder_length,
+ screw_radius,
+ holder_radius); } }
/*
This file is part of challenge-bot.