From 77d2d0d6c607585d3f235a9241bd0baf07b2c12b Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 25 Mar 2022 10:59:53 +0000 Subject: in-progress openscad enclosure --- enclosure/enclosure.scad | 190 +++++++++++++++++++++++++++++++++++++++++++---- 1 file 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(); -- cgit v1.2.3