aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2022-03-25 10:59:53 +0000
committerdakkar <dakkar@thenautilus.net>2022-03-25 10:59:53 +0000
commit77d2d0d6c607585d3f235a9241bd0baf07b2c12b (patch)
treef6f9c4a85a8caad6e61b04291f13de95b3f977d3
parentcalibration only needs to be done once! (diff)
downloadenv-sensor-77d2d0d6c607585d3f235a9241bd0baf07b2c12b.tar.gz
env-sensor-77d2d0d6c607585d3f235a9241bd0baf07b2c12b.tar.bz2
env-sensor-77d2d0d6c607585d3f235a9241bd0baf07b2c12b.zip
in-progress openscad enclosure
-rw-r--r--enclosure/enclosure.scad190
1 files changed, 175 insertions, 15 deletions
diff --git a/enclosure/enclosure.scad b/enclosure/enclosure.scad
index e260376..f9498cb 100644
--- a/enclosure/enclosure.scad
+++ b/enclosure/enclosure.scad
@@ -10,6 +10,33 @@
* bottom, for battery and pm sensor
*/
+WALL_THICKNESS=2;
+
+SCREW_DIAM=4;
+SCREW_PAD=1;
+
+PM_X=40.8;
+PM_Y=40.8;
+PM_Z=12.3;
+PM_CONN_Y=15.8;
+PM_CONN_Z=4;
+PM_CONN_DEPTH=7.7;
+
+BATT_X=55;
+BATT_Y=34;
+BATT_Z=11;
+
+CO_X=24;
+CO_Y=28;
+CO_Z=8;
+CO_CONN_Y=10;
+
+BOT_CABLE_WELL_X=25; // just some space for the battery & pm cables
+CABLE_HOLE_DIAM=10;
+
+BOTTOM_Z=WALL_THICKNESS + PM_Z;
+MIDDLE_Z=WALL_THICKNESS + CO_Z;
+
DISPLAY_WIN_X=51;
DISPLAY_WIN_Y=26;
DISPLAY_OFF_X=16;
@@ -18,18 +45,160 @@ DISPLAY_OFF_Y=7;
//PITCH=0.254; don't really care
BOARD_X=66.5;
BOARD_Y=36.8;
-BOARD_PIN_D=1.9;
+BOARD_SINK=2.1;
+
BOARD_PIN_OFF_X=2.5; BOARD_PIN_DIST_X=61;
BOARD_PIN_OFF_Y=2.5; BOARD_PIN_DIST_Y=32.5;
+BOARD_SUPPORT_DIAM=3;
+BOARD_SUPPORT_PIN_DIAM=1.9;
+
BOARD_OFF_X=3;
BOARD_OFF_Y=3;
TOP_LAYER_Z=10;
-TOTAL_X=100;
-TOTAL_Y=40;
-TOTAL_Z=30;
+TOTAL_X=2*WALL_THICKNESS + max(
+ PM_X + BOT_CABLE_WELL_X + BATT_X,
+ CO_X + BOARD_X
+ );
+TOTAL_Y=2*(WALL_THICKNESS*2 + SCREW_DIAM + SCREW_PAD) + PM_Y; // max(pm_y,...)
+
+module box(v) {
+ translate([0,0,v[2]/2]) cube(v,center=true);
+}
+
+module screw_hole() {
+ cylinder(h=200,d=SCREW_DIAM,center=true,$fs=0.1);
+}
+
+module screw_holes() {
+ OFF=WALL_THICKNESS + SCREW_DIAM/2 + SCREW_PAD;
+
+ translate([
+ TOTAL_X/2 - OFF,
+ TOTAL_Y/2 - OFF,
+ 0]) screw_hole();
+
+ translate([
+ -(TOTAL_X/2 - OFF),
+ TOTAL_Y/2 - OFF,
+ 0]) screw_hole();
+
+ translate([
+ TOTAL_X/2 - OFF,
+ -(TOTAL_Y/2 - OFF),
+ 0]) screw_hole();
+
+ translate([
+ -(TOTAL_X/2 - OFF),
+ -(TOTAL_Y/2 - OFF),
+ 0]) screw_hole();
+
+}
+
+module pm_sensor() {
+ box([PM_X,PM_Y,PM_Z]);
+}
+
+module bottom_cable_well() {
+ box([BOT_CABLE_WELL_X,PM_CONN_Y,PM_CONN_DEPTH]);
+}
+
+module battery() {
+ box([BATT_X,BATT_Y,BATT_Z]);
+}
+
+module cable_hole() {
+ cylinder(h=200,d=CABLE_HOLE_DIAM,center=true,$fs=0.1);
+}
+
+module co_sensor() {
+ box([CO_X,CO_Y,CO_Z]);
+}
+
+module middle_cable_well() {
+ box([
+ TOTAL_X - CO_X/2,
+ CO_CONN_Y,
+ CO_Z,
+ ]);
+}
+
+module board_well() {
+ box([ BOARD_X, BOARD_Y, CO_Z]);
+}
+
+module board_support() {
+ HEIGHT=MIDDLE_Z - WALL_THICKNESS - BOARD_SINK;
+ translate([0,0,HEIGHT/2]) union() {
+ cylinder(
+ h=HEIGHT,
+ d=BOARD_SUPPORT_DIAM,
+ center=true,$fs=0.1
+ );
+
+ translate([BOARD_SUPPORT_DIAM*0.75,BOARD_SUPPORT_DIAM*0.25,0])
+ cube([BOARD_SUPPORT_DIAM*1.5,BOARD_SUPPORT_DIAM*1.5,HEIGHT],center=true);
+ translate([BOARD_SUPPORT_DIAM*0.25,BOARD_SUPPORT_DIAM*0.75,0])
+ cube([BOARD_SUPPORT_DIAM*1.5,BOARD_SUPPORT_DIAM*1.5,HEIGHT],center=true);
+
+ translate([0,0,BOARD_SINK/2]) cylinder(
+ h=HEIGHT+BOARD_SINK,
+ d=BOARD_SUPPORT_PIN_DIAM,
+ center=true,$fs=0.1
+ );
+ }
+}
+
+module board_supports() {
+ translate([ -BOARD_X/2 + BOARD_PIN_OFF_X, -BOARD_Y/2 + BOARD_PIN_OFF_Y,0]) {
+ translate([ 0, 0, 0]) rotate([0,0,180]) board_support();
+ translate([ BOARD_PIN_DIST_X, 0, 0]) rotate([0,0,-90]) board_support();
+ translate([ 0, BOARD_PIN_DIST_Y, 0]) rotate([0,0,90]) board_support();
+ translate([ BOARD_PIN_DIST_X, BOARD_PIN_DIST_Y, 0]) board_support();
+ }
+}
+
+module bottom() {
+ PM_X_OFF=(TOTAL_X - PM_X)/2;
+
+ CABLE_X_OFF= PM_X_OFF - PM_X/2 - BOT_CABLE_WELL_X/2; // touching the PM pocket
+ CABLE_Y_OFF=-PM_Y/2 + PM_CONN_Y/2;
+ CABLE_Z_OFF=BOTTOM_Z - PM_CONN_DEPTH;
+
+ BATT_X_OFF=CABLE_X_OFF - BOT_CABLE_WELL_X/2 - BATT_X/2;
+ BATT_Z_OFF=BOTTOM_Z - BATT_Z;
+
+ difference() {
+ box([TOTAL_X, TOTAL_Y, BOTTOM_Z]);
+ screw_holes();
+ translate([PM_X_OFF, 0, WALL_THICKNESS]) pm_sensor();
+ translate([CABLE_X_OFF, CABLE_Y_OFF, CABLE_Z_OFF]) bottom_cable_well();
+ translate([BATT_X_OFF, 0, BATT_Z_OFF]) battery();
+ }
+}
+
+module middle() {
+ CABLE_HOLE_X_OFF= TOTAL_X/2 - PM_X - BOT_CABLE_WELL_X/2;
+
+ CO_X_OFF=(TOTAL_X - CO_X)/2 - WALL_THICKNESS;
+ CO_Z_OFF=MIDDLE_Z - CO_Z;
+
+ BOARD_Z_OFF=MIDDLE_Z - BOARD_SINK;
+
+ union() {
+ difference() {
+ box([TOTAL_X, TOTAL_Y, MIDDLE_Z]);
+ screw_holes();
+ translate([CABLE_HOLE_X_OFF, 0, 0]) cable_hole();
+ translate([CO_X_OFF, 0, CO_Z_OFF]) co_sensor();
+ translate([0, 0, CO_Z_OFF]) middle_cable_well();
+ translate([0,0, CO_Z_OFF]) board_well();
+ }
+ translate([0,0, CO_Z_OFF]) board_supports();
+ }
+}
module top() {
difference() {
@@ -37,18 +206,9 @@ module top() {
translate([BOARD_OFF_X, BOARD_OFF_Y, 0]) union() {
translate([DISPLAY_OFF_X, DISPLAY_OFF_Y, -1])
cube([DISPLAY_WIN_X, DISPLAY_WIN_Y, TOP_LAYER_Z*2]);
-
- // alignment pins
- translate([BOARD_PIN_OFF_X, BOARD_PIN_OFF_Y, -1])
- cylinder(d=BOARD_PIN_D,h=TOP_LAYER_Z/2);
- translate([BOARD_PIN_OFF_X+BOARD_PIN_DIST_X, BOARD_PIN_OFF_Y, -1])
- cylinder(d=BOARD_PIN_D,h=TOP_LAYER_Z/2);
- translate([BOARD_PIN_OFF_X, BOARD_PIN_OFF_Y+BOARD_PIN_DIST_Y, -1])
- cylinder(d=BOARD_PIN_D,h=TOP_LAYER_Z/2);
- translate([BOARD_PIN_OFF_X+BOARD_PIN_DIST_X, BOARD_PIN_OFF_Y+BOARD_PIN_DIST_Y, -1])
- cylinder(d=BOARD_PIN_D,h=TOP_LAYER_Z/2);
}
}
}
-top();
+//translate([0, TOTAL_Y * 1.2, 0]) bottom();
+middle();