191 lines
No EOL
7.8 KiB
OpenSCAD
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);
|
|
} |