Design chromebook upcycle wall display mount
This commit is contained in:
parent
ba956a54a2
commit
55e5aafee9
5 changed files with 191 additions and 0 deletions
BIN
chromebook display L.stl
Normal file
BIN
chromebook display L.stl
Normal file
Binary file not shown.
BIN
chromebook display R.stl
Normal file
BIN
chromebook display R.stl
Normal file
Binary file not shown.
BIN
chromebook display midmount.stl
Normal file
BIN
chromebook display midmount.stl
Normal file
Binary file not shown.
191
chromebook display.scad
Normal file
191
chromebook display.scad
Normal 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
BIN
chromebook display.stl
Normal file
Binary file not shown.
Loading…
Reference in a new issue