jbod

jbod.git
git clone git://git.lenczewski.org/jbod.git
Log | Files | Refs | README

enclosure.scad (3934B)


      1 // 19-inch rack chassis details
      2 // ===========================================================================
      3 // faceplate width: 482.6mm +/- 0.4mm
      4 // chassis width: 430mm +/- 1mm
      5 //
      6 // heights: +/- 0.4mm
      7 // units | height (mm) | h1 (mm) | h2 (mm) | h3 (mm)
      8 // ------+-------------+---------+---------+--------
      9 //  1U   | 44.45       | 43.65   | -       | 21.83
     10 //  ""   | ""          | ""      | 31.75   | 5.95
     11 //  2U   | 88.90       | 88.10   | 44.45   | 21.83
     12 //  ""   | ""          | ""      | 76.20   | 5.95
     13 //  3U   | 133.35      | 132.55  | 57.15   | 37.70
     14 //  4U   | 177.80      | 177.00  | 101.60  | ""
     15 //  5U   | 222.25      | 221.45  | 146.06  | ""
     16 //  6U   | 266.70      | 265.90  | 190.50  | ""
     17 // ------+-------------+---------+---------+-------
     18 //  - height : total height in mm of given rack units (including padding)
     19 //  - h1 : total height of front panel (excluding padding)
     20 //  - h2 : distance between mounting hole centres
     21 //  - h3 : distance between lower mounting hole centre and bottom of front panel
     22 //
     23 // depths: 800/1000/1200 mm
     24 //
     25 // faceplate mounting hole styles:
     26 // castellated:
     27 //   width: 14.7mm +/- 1.2mm
     28 //   height: 6.8mm +/- 0.5mm
     29 // regular:
     30 //   total width: 13.5mm +/- 0.4mm
     31 //   oval width:  10.3mm +/- 0.4mm
     32 //   height: 6.8mm +/- 0.5mm
     33 //
     34 // overall chassis: 4U, faceplate, body, spacer, lid
     35 // faceplate:
     36 //  - mesh front, 85% porosity
     37 //  - dust filter
     38 //  - rack handles
     39 //  - castellated faceplate 4U mounting holes
     40 // rearplate:
     41 //  - two-chamber design
     42 // chamber separator wall:
     43 //  - w/d (mm): 483/800
     44 // body (bottom + sides + rear):
     45 //  - w/h/d (mm): 483/178/800
     46 //  - external rack rails
     47 //  - 1x3 + 2x2 140mm fans, w/h/d (mm): 141/141/30
     48 //  - 6x12 3.5" disk caddy slots, w/h/d (mm): 112/27/157
     49 // disk retainer wall:
     50 //  - w/d (mm): 483/800
     51 // lid:
     52 //  - tool-free (ptfe rollers and groove)
     53 //
     54 // fastners:
     55 //  - m5 flush stud
     56 //  - m5 flush nut
     57 
     58 $fn = 64;
     59 
     60 include <constants.scad>
     61 
     62 use <fasteners.scad>
     63 use <faceplate.scad>
     64 use <rearplate.scad>
     65 use <separator.scad>
     66 use <shell.scad>
     67 
     68 use <viz.scad>
     69 
     70 // ===========================================================================
     71 
     72 viz_disks = true;
     73 viz_fans = true;
     74 viz_psus = true;
     75 viz_pcbs = true;
     76 viz_io = true;
     77 
     78 // ===========================================================================
     79 
     80 cover_offset = [0, 0, chassis_height];
     81 
     82 separator_offset = [
     83 	disk_row_width(),
     84 	faceplate_thickness + fan_wall_depth,
     85 	0,
     86 ];
     87 
     88 faceplate_offset = [
     89 	-(faceplate_width - chassis_width) / 2, // center on shell
     90 	-(faceplate_thickness / 2), // account for faceplate thickness
     91 	0,
     92 ];
     93 
     94 rearplate_offset = [0, 0, 0];
     95 
     96 disk_offset = [
     97 	chassis_thickness,
     98 	chassis_thickness + fan_wall_depth,
     99 	chassis_thickness / 2 + disk_pad_height + 20,
    100 ];
    101 
    102 fan_offset = [
    103 	chassis_thickness,
    104 	chassis_thickness + fan_wall_thickness,
    105 	chassis_thickness / 2 + fan_pad_height,
    106 ];
    107 
    108 psu_offset = [
    109 	chassis_width - chassis_thickness - psu_width,
    110 	chassis_depth - chassis_thickness - psu_depth,
    111 	chassis_thickness / 2 + psu_pad_height,
    112 ];
    113 
    114 io_offset = [
    115 	chassis_width - chassis_thickness - io_width,
    116 	chassis_depth - chassis_thickness - io_depth,
    117 	chassis_thickness / 2 + psu_group_height(),
    118 ];
    119 
    120 module viz_guts(disks = true, fans = true, psus = true, io = true, pcbs = true) {
    121 }
    122 
    123 shell();
    124 
    125 //translate(cover_offset) cover();
    126 translate(faceplate_offset) rotate([90,0,0]) faceplate();
    127 translate(rearplate_offset) rotate([90,0,0]) rearplate();
    128 
    129 if (viz_disks) {
    130 	translate(disk_offset)
    131 	for (i = [0:disk_blocks-1]) {
    132 		translate([0, i * (fan_wall_depth + disk_block_depth()), 0]) 
    133 		disk_block();
    134 		disk_separator();
    135 	}
    136 }
    137 
    138 if (viz_fans) {
    139 	translate(fan_offset)
    140 	for (i = [0:fan_groups-1]) {
    141 		translate([0, i * (fan_wall_depth + disk_block_depth()), 0])
    142 		if (i == 0)
    143 			fan_group(fans=3);
    144 		else
    145 			fan_group(fans=2);
    146 	}
    147 }
    148 
    149 if (viz_psus) {
    150 	translate(psu_offset) psu_group();
    151 }
    152 
    153 if (viz_pcbs) {
    154 
    155 }
    156 
    157 if (viz_io) {
    158 	translate(io_offset) expander_io_group();
    159 }