1
0
Fork 0

Design chromebook upcycle wall display mount

This commit is contained in:
NGnius (Graham) 2024-11-20 21:33:02 -05:00
parent ba956a54a2
commit 55e5aafee9
5 changed files with 191 additions and 0 deletions

BIN
chromebook display L.stl Normal file

Binary file not shown.

BIN
chromebook display R.stl Normal file

Binary file not shown.

Binary file not shown.

191
chromebook display.scad Normal file
View file

@ -0,0 +1,191 @@
// 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);
}

BIN
chromebook display.stl Normal file

Binary file not shown.