Files

psu_case.scad
/* [Rendering options] */ // Show placeholder PCB in OpenSCAD preview show_pcb = false; // Lid mounting method lid_model = "cap"; // [cap, inner-fit] // Conditional rendering render = "case"; // [all, case, lid] /* [Dimensions] */ // Height of the PCB mounting stand-offs between the bottom of the case and the PCB standoff_height = 5; // PCB thickness pcb_thickness = 1.6; // Bottom layer thickness floor_height = 1.2; // Case wall thickness wall_thickness = 1.2; // Space between the top of the PCB and the top of the case headroom = 3.4999999999999996; /* [M3 screws] */ // Outer diameter for the insert insert_M3_diameter = 3.77; // Depth of the insert insert_M3_depth = 4.5; /* [Hidden] */ $fa=$preview ? 10 : 4; $fs=0.2; inner_height = floor_height + standoff_height + pcb_thickness + headroom; module wall (thickness, height) { linear_extrude(height, convexity=10) { difference() { offset(r=thickness) children(); children(); } } } module bottom(thickness, height) { linear_extrude(height, convexity=3) { offset(r=thickness) children(); } } module lid(thickness, height, edge) { linear_extrude(height, convexity=10) { offset(r=thickness) children(); } translate([0,0,-edge]) difference() { linear_extrude(edge, convexity=10) { offset(r=-0.2) children(); } translate([0,0, -0.5]) linear_extrude(edge+1, convexity=10) { offset(r=-1.2) children(); } } } module box(wall_thick, bottom_layers, height) { if (render == "all" || render == "case") { translate([0,0, bottom_layers]) wall(wall_thick, height) children(); bottom(wall_thick, bottom_layers) children(); } if (render == "all" || render == "lid") { translate([0, 0, height+bottom_layers+0.1]) lid(wall_thick, bottom_layers, lid_model == "inner-fit" ? headroom-2.5: bottom_layers) children(); } } module mount(drill, space, height) { translate([0,0,height/2]) difference() { cylinder(h=height, r=(space/2), center=true); cylinder(h=(height*2), r=(drill/2), center=true); translate([0, 0, height/2+0.01]) children(); } } module connector(min_x, min_y, max_x, max_y, height) { size_x = max_x - min_x; size_y = max_y - min_y; translate([(min_x + max_x)/2, (min_y + max_y)/2, height/2]) cube([size_x, size_y, height], center=true); } module ScrewHole_substract(hole_diameter, head_diameter) { translate([0,0,-10]) cylinder(15, (hole_diameter/2)+0.2, (hole_diameter/2)+0.2); } module ScrewHole(hole_diameter, head_diameter) { difference() { cylinder(1, (head_diameter/2)+0.2, (head_diameter/2)+0.2); ScrewHole_substract(hole_diameter, head_diameter); } } module Cutout_TypeC_substract() { width = 10; length = 10; height = 3.5; translate([-length/2, 0, height/2]) rotate([0,90,0]) union() { translate([0, -(width/2 - height/2), 0]) cylinder(length, height/2, height/2); translate([0, (width/2 - height/2), 0]) cylinder(length, height/2, height/2); translate([0, 0, length/2]) cube([height, width-height, length], center=true); } } module pcb() { thickness = 1.6; color("#009900") difference() { linear_extrude(thickness) { polygon(points = [[50,50], [150,50], [150,112], [50,112]]); } translate([55, 55, -1]) cylinder(thickness+2, 1.6000000000000014, 1.6000000000000014); translate([145, 55, -1]) cylinder(thickness+2, 1.6000000000000014, 1.6000000000000014); translate([145, 107, -1]) cylinder(thickness+2, 1.5999999999999943, 1.5999999999999943); translate([55, 107, -1]) cylinder(thickness+2, 1.5999999999999943, 1.5999999999999943); } } module case_outline() { polygon(points = [[48,40], [152,40], [152,122], [48,122]]); } module Insert_M3() { translate([0, 0, -insert_M3_depth]) cylinder(insert_M3_depth, insert_M3_diameter/2, insert_M3_diameter/2); translate([0, 0, -0.3]) cylinder(0.3, insert_M3_diameter/2, insert_M3_diameter/2+0.3); } rotate([render == "lid" ? 180 : 0, 0, 0]) scale([1, -1, 1]) translate([-100.0, -81.0, 0]) { pcb_top = floor_height + standoff_height + pcb_thickness; difference() { box(wall_thickness, floor_height, inner_height) { case_outline(); } // Substract: Unknown translate([52.93, 44.75, floor_height]) ScrewHole_substract(hole_diameter=3, head_diameter=7); // Substract: Unknown translate([148.32, 80.97, pcb_top]) Cutout_TypeC_substract(); // Substract: Unknown translate([147.32, 44.76, floor_height]) ScrewHole_substract(hole_diameter=3, head_diameter=7); // Substract: Unknown translate([146.86, 116.96, floor_height]) ScrewHole_substract(hole_diameter=3, head_diameter=7); // Substract: Unknown translate([52.79, 117.34, floor_height]) ScrewHole_substract(hole_diameter=3, head_diameter=7); } if (show_pcb && $preview) { translate([0, 0, floor_height + standoff_height]) pcb(); } if (render == "all" || render == "case") { // REF** [('M3', 3)] translate([55, 55, floor_height]) mount(3.2, 6.9, standoff_height) Insert_M3(); // REF** [('M3', 3)] translate([145, 55, floor_height]) mount(3.2, 6.9, standoff_height) Insert_M3(); // REF** [('M3', 3)] translate([145, 107, floor_height]) mount(3.2, 6.9, standoff_height) Insert_M3(); // REF** [('M3', 3)] translate([55, 107, floor_height]) mount(3.2, 6.9, standoff_height) Insert_M3(); // Unknown translate([52.93, 44.75, floor_height]) ScrewHole(hole_diameter=3, head_diameter=7); // Unknown translate([147.32, 44.76, floor_height]) ScrewHole(hole_diameter=3, head_diameter=7); // Unknown translate([146.86, 116.96, floor_height]) ScrewHole(hole_diameter=3, head_diameter=7); // Unknown translate([52.79, 117.34, floor_height]) ScrewHole(hole_diameter=3, head_diameter=7); } }

Annotations

photon_psu.kicad_sch
7f31b0a9
0/3 comments
Report a bug