diff --git a/chromebook display L.stl b/chromebook display L.stl new file mode 100644 index 0000000..df4136c Binary files /dev/null and b/chromebook display L.stl differ diff --git a/chromebook display R.stl b/chromebook display R.stl new file mode 100644 index 0000000..9fa4ba5 Binary files /dev/null and b/chromebook display R.stl differ diff --git a/chromebook display midmount.stl b/chromebook display midmount.stl new file mode 100644 index 0000000..0dca716 Binary files /dev/null and b/chromebook display midmount.stl differ diff --git a/chromebook display.scad b/chromebook display.scad new file mode 100644 index 0000000..e4d3e24 --- /dev/null +++ b/chromebook display.scad @@ -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 ; + +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); +} \ No newline at end of file diff --git a/chromebook display.stl b/chromebook display.stl new file mode 100644 index 0000000..bb26b75 Binary files /dev/null and b/chromebook display.stl differ