1
0
Fork 0
3d/chromebook display.scad

191 lines
No EOL
7.8 KiB
OpenSCAD

// Chromebook screen and motherboard assembly
// length units are millimeters
screenHeight = 157;
screenHeightAndChin = 167;
screenChinHeight = screenHeightAndChin - screenHeight;
screenWidth = 267;
screenChinWidth = 188.5;
screenWidthWithNoChin = screenWidth - screenChinWidth;
screenTabsDistance = 136; // top of top tab to bottom of bottom tab
screenTabHeight = 11.49;
screenTabWidth = 4.96;
screenTabDistanceToBottom = 16.81; // from bottom-most point of tab
screenTopTabDistanceToBottom = screenTabsDistance + screenTabDistanceToBottom - screenTabHeight; // from bottom-most point of top tab
screenTopTabDistanceToTop = screenHeight - screenTabsDistance - screenTabDistanceToBottom; // from top-most point of tab
screenBezel = 4.50;
screenThickness = 2.60;
batteryWidth = 199;
batteryHeight = 84;
batteryThickness = 6;
batteryTabHeight = 16.40;
batteryTabWidth = 7.37;
batteryTabThickness = 1.55 + 0.4;
batteryTabDistanceToBottom = 25.23;
motherboardLeftHolesDistanceHeight = 95.72;
motherboardLeftHoleRadius = 2.50 / 2;
motherboardLeftHolesRealHeightDistance = motherboardLeftHolesDistanceHeight - (2 * motherboardLeftHoleRadius);
motherboardRightHoleDistanceWidth = 211;
motherboardRightHoleRadius = 3.16 / 2;
motherboardRightHoleRealWidthDistance = motherboardRightHoleDistanceWidth - motherboardRightHoleRadius;
motherboardRightHoleDistanceToBottom = 45 - motherboardRightHoleRadius;
motherboardBatteryDistanceHeight = motherboardLeftHolesRealHeightDistance - 20;
motherboardBatteryDistanceWidth = 31;
screwThreadRadius = 1.90 * 0.49;
screwSupportRadius = 4.50 / 2;
globalThickness = 2.00;
motherboardElevation = 6.00 + (globalThickness / 3);
include <ng_common/hollow_cylinder.scad>;
module motherboardMount(thickness) {
translate([screwSupportRadius, screwSupportRadius, 0])
union () {
// y-axis support bar
translate([-screwSupportRadius,-screwSupportRadius,0]) {
//#cube([screwSupportRadius * 2, motherboardLeftHolesRealHeightDistance + (2 * screwSupportRadius), thickness]);
}
// x-axis support bar
translate([-screwSupportRadius, motherboardRightHoleDistanceToBottom -screwSupportRadius, 0]) {
//#cube([motherboardRightHoleRealWidthDistance + (2 * screwSupportRadius), screwSupportRadius * 2, thickness]);
}
translate([0, 0, -motherboardElevation]) {
// bottom left hole
hollowCylinder(screwThreadRadius, screwSupportRadius, motherboardElevation);
// top left hole
translate ([0, motherboardLeftHolesRealHeightDistance, 0]) {
hollowCylinder(screwThreadRadius, screwSupportRadius, motherboardElevation);
}
// right hole
translate ([motherboardRightHoleRealWidthDistance, motherboardRightHoleDistanceToBottom, 0]) {
hollowCylinder(screwThreadRadius, screwSupportRadius, motherboardElevation);
}
}
}
}
module batteryMount(thickness) {
union() {
//#cube([batteryWidth + (2 * batteryTabWidth), thickness, thickness]);
// left side mount
translate([0,0,0]) {
cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]);
translate([0, 0, -batteryTabThickness]) {
cube([batteryTabWidth, batteryTabDistanceToBottom, batteryTabThickness + thickness]);
translate([0, 0, -thickness]) {
cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]);
}
}
}
// right side mount
translate([batteryWidth + batteryTabWidth, 0, 0]) {
cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]);
translate([0, 0, -batteryTabThickness]) {
cube([batteryTabWidth, batteryTabDistanceToBottom, batteryTabThickness + thickness]);
translate([0, 0, -thickness]) {
cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]);
}
}
}
}
}
module screenMount(thickness) {
// top bar slot
translate([screwThreadRadius, -thickness, 0]) {
cube([screenWidth / 2, thickness, screenThickness + (2 * thickness)]);
translate([0, -screenBezel, 0])
cube([screenWidth / 2, screenBezel, thickness]);
translate([0, -screenBezel, screenThickness + thickness])
cube([screenWidth / 2, screenBezel, thickness]);
}
// side slot
translate([(screenWidth / 2) + screwThreadRadius, -thickness, 0]) {
translate([0, -screenTopTabDistanceToTop, 0])
cube([thickness, screenTopTabDistanceToTop + thickness, screenThickness + (2 * thickness)]);
translate([0, screenTabDistanceToBottom + screenTabHeight - screenHeight])
cube([thickness, screenTabsDistance - (2 * screenTabHeight), screenThickness + (2 * thickness)]);
translate([0, -screenHeight, 0])
cube([thickness, screenTabDistanceToBottom, screenThickness + (2 * thickness)]);
translate([-screenBezel, -screenHeight, 0]) {
cube([screenBezel + thickness, screenHeight, thickness]);
translate([0, 0, thickness + screenThickness])
cube([screenBezel + thickness, screenHeight, thickness]);
}
}
// bottom slot
translate([(screenWidth / 2) + screwThreadRadius - (screenWidthWithNoChin / 2), -(screenHeight + (thickness * 2)), 0]) {
cube([(screenWidthWithNoChin / 2) + thickness, thickness, screenThickness + (2 * thickness)]);
cube([(screenWidthWithNoChin / 2) + thickness, screenHeight, thickness]);
translate([0, 0, screenThickness + thickness])
cube([(screenWidthWithNoChin / 2) + thickness, screenBezel, thickness]);
}
}
module screenMountR(thickness) {
hollowCylinder(screwThreadRadius, screwSupportRadius, (screenThickness + (2 * thickness)) / 2);
screenMount(thickness);
circleSupportRadius = (screenWidth / 6);
// backplate cut circle
translate([screenWidth * 0.4, -screenHeight * 0.6, 0])
difference() {
cylinder(r=circleSupportRadius, h = thickness, $fn=360);
translate([-0.01, -(circleSupportRadius + 0.01), -0.01])
cube([circleSupportRadius + 0.02, (circleSupportRadius * 2) + 0.02, thickness + 0.02]);
/*translate([-(circleSupportRadius + 0.01), -0.01, -0.01])
cube([circleSupportRadius + 0.02, (screenWidth / 2) + 0.02, thickness + 0.02]);*/
}
}
module screenMountL(thickness) {
translate([0, 0, (screenThickness + (2 * thickness)) / 2])
hollowCylinder(screwThreadRadius, screwSupportRadius, (screenThickness + (2 * thickness)) / 2);
mirror([1, 0, 0])
screenMount(thickness);
circleSupportRadius = (screenWidth / 3);
// backplate cut circle
translate([-(screenWidth / 2), 0, 0])
difference() {
cylinder(r=circleSupportRadius, h = thickness, $fn=360);
translate([-circleSupportRadius, -circleSupportRadius, -0.01])
cube([circleSupportRadius + 0.02, screenWidth + 0.02, thickness + 0.02]);
translate([0, 0, -0.01])
cube([circleSupportRadius + 0.02, circleSupportRadius + 0.02, thickness + 0.02]);
}
}
motherboardMount(globalThickness);
translate([motherboardBatteryDistanceWidth, motherboardBatteryDistanceHeight, -(globalThickness / 3)])
batteryMount(globalThickness);
/*translate([screwSupportRadius * 2, motherboardRightHoleDistanceToBottom + (screwSupportRadius * 2), 0])
#cube([motherboardBatteryDistanceWidth, motherboardLeftHolesRealHeightDistance - motherboardRightHoleDistanceToBottom, globalThickness]);*/
translate([screenWidth / 2 - globalThickness, screenHeight + globalThickness, 0]) {
screenMountR(globalThickness);
screenMountL(globalThickness);
}