Przeglądaj źródła

add first order microphone assembly, first try after one day work with openscad

Fernando Pablo Lopez-Lezcano 11 lat temu
rodzic
commit
fb04f09874
1 zmienionych plików z 90 dodań i 0 usunięć
  1. 90 0
      first_order.scad

+ 90 - 0
first_order.scad

@@ -0,0 +1,90 @@
+//
+// First Order (B-format) Ambisonics Microphone, or Bambi for short
+//
+// Copyright 2015 Fernando Lopez-Lezcano
+//
+// Code released under the GNU GPL License
+// http://www.gnu.org/licenses/gpl-3.0.en.html
+//
+// 3d models under Creative Commons Non-Commercial Share-alike, CC-NC-SA 3.0
+// http://creativecommons.org/licenses/by-nc-sa/3.0/
+
+
+// microphone capsule holder
+
+module capsule (azimuth, elevation, separation, radius, height, wall, twist) {
+	rotate([0, 0, azimuth]) {
+	rotate([0, (90 - elevation), 0]) {
+  translate([0, 0, separation]) {
+		// the capsule holder
+		difference () {
+				union () {
+					// main capsule holder
+					cylinder(r = radius + wall, h = height, $fn = 128);	
+					// ridge to stop capsule when inserted
+					translate(v = [0, 0, - (wall / 2)]) {
+						difference() {
+							cylinder(r = radius + wall, h = wall / 2, $fn = 128);
+							cylinder(r = radius - 0.4, h = wall / 2, $fn = 128);
+						}
+					}
+					// the attachment point to the other capsules
+					for (rot = [0 : 120 : 360]) {
+						rotate(a = rot + twist, v = [0, 0, 1]) {
+							translate(v = [radius + wall, 0, wall * 2]) {
+								rotate(a = 145, v = [0, 1, 0]) {
+									cube([wall * 2.5, wall * 2, separation], center=true);
+//								  cylinder(d=wall * 3, h = seaparation, center=true);
+								}
+							}
+						}
+					}
+				}
+				// the inside of the capsule holder
+				cylinder(r=radius, h=height, $fn = 128);
+				// remove the upper part of the attachment points
+				translate(v = [0, 0, height]) {
+					cylinder(r = radius + wall, h = wall);
+				}
+			};
+		}
+	}
+}
+}
+
+// vectors pointing in the directions of the four capsules
+direction1 = [1, 1, 1];
+direction2 = [-1, 1, -1];
+direction3 = [-1, -1, 1];
+direction4 = [1, -1, -1];
+
+dist = sqrt(3);
+
+// azimuths
+az1 = atan2(1, 1);
+az2 = atan2(1, -1);
+az3 = atan2(-1, -1);
+az4 = atan2(-1, 1);
+
+// elevations
+el1 = asin(1/dist);
+el2 = -asin(1/dist);
+el3 = asin(1/dist);
+el4 = -asin(1/dist);
+
+// dimensions for the EM182 electret microphone
+
+mic_radius = 5;
+mic_height = 4.5;
+
+// seaparation between capsules
+cap_sep = 6;
+
+// connect the four instances together
+capsule(az1, el1, cap_sep, mic_radius, mic_height, 1, 60);
+capsule(az2, el2, cap_sep, mic_radius, mic_height, 1, 0);
+capsule(az3, el3, cap_sep, mic_radius, mic_height, 1, 60);
+capsule(az4, el4, cap_sep, mic_radius, mic_height, 1, 0);
+
+// just one to test
+//capsule(0, -90, cap_sep, mic_radius, mic_height, 1, 0);