Compare commits
18 Commits
a125d0f1a5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| d9a90190f7 | |||
| 0c68eedebe | |||
| 0ff12f7b27 | |||
| d43b6f746a | |||
| e5f475f01d | |||
| a2f4acde16 | |||
| 5d9b910e2f | |||
| bdc12079d2 | |||
| 8943ce30af | |||
| 5debc685dd | |||
| 69f7dbaea7 | |||
| e2f74cb0a4 | |||
| d5a13970dd | |||
| 2cb2fee571 | |||
| 870351239b | |||
| dabde65968 | |||
| 29ed5e8e9a | |||
| 4780ff2e4f |
BIN
rev2/3d-models/bot-dampener-left.stl
Normal file
BIN
rev2/3d-models/bot-dampener-left.stl
Normal file
Binary file not shown.
BIN
rev2/3d-models/bot-dampener-right.stl
Normal file
BIN
rev2/3d-models/bot-dampener-right.stl
Normal file
Binary file not shown.
BIN
rev2/3d-models/case-left.stl
Normal file
BIN
rev2/3d-models/case-left.stl
Normal file
Binary file not shown.
BIN
rev2/3d-models/case-right.stl
Normal file
BIN
rev2/3d-models/case-right.stl
Normal file
Binary file not shown.
BIN
rev2/3d-models/frame-left.stl
Normal file
BIN
rev2/3d-models/frame-left.stl
Normal file
Binary file not shown.
BIN
rev2/3d-models/frame-right.stl
Normal file
BIN
rev2/3d-models/frame-right.stl
Normal file
Binary file not shown.
Binary file not shown.
BIN
rev2/3d-models/top-dampener-left.stl
Normal file
BIN
rev2/3d-models/top-dampener-left.stl
Normal file
Binary file not shown.
BIN
rev2/3d-models/top-dampener-right.stl
Normal file
BIN
rev2/3d-models/top-dampener-right.stl
Normal file
Binary file not shown.
@@ -9,10 +9,11 @@ $cut = $holes/2*-1;
|
||||
$clearance = 0.2;
|
||||
$switchDistance = $width+ $space;
|
||||
|
||||
$shellWidth = 6;
|
||||
// shell width is set to double of actual shell width and results in haft of the actual value due to division by 2.
|
||||
// this needs to be fixed
|
||||
$shellWidth = 12;
|
||||
$shellHeight = 3.5 + $clearance;
|
||||
$magnetWidth = 4;
|
||||
$magnetHeight = 2;
|
||||
|
||||
|
||||
|
||||
$columns = 6;
|
||||
@@ -28,7 +29,31 @@ $dampenerHeight = 1;
|
||||
|
||||
$pcbDampenerOffset = $pcbHeight + $dampenerHeight;
|
||||
|
||||
points = [
|
||||
[0,0],
|
||||
[0, $switchDistance * $rows],
|
||||
[$switchDistance * 2, $switchDistance * $rows],
|
||||
[$switchDistance * 2, $switchDistance * $rows + $fingerStep],
|
||||
[$switchDistance * 3, $switchDistance * $rows + $fingerStep],
|
||||
[$switchDistance * 3, $switchDistance * $rows],
|
||||
[$switchDistance * 4, $switchDistance * $rows],
|
||||
[$switchDistance * 4, $switchDistance * $rows - $fingerStep],
|
||||
[$switchDistance * 6, $switchDistance * $rows - $fingerStep],
|
||||
[$switchDistance * 6, 0 - $fingerStep],
|
||||
[$switchDistance * 4, 0 - $fingerStep],
|
||||
[$switchDistance * 4, 0],
|
||||
[$switchDistance * 3, 0],
|
||||
[$switchDistance * 3, 0 + $fingerStep],
|
||||
[$switchDistance * 2, 0 + $fingerStep],
|
||||
[$switchDistance * 2, 0],
|
||||
];
|
||||
|
||||
picoUsbBody = [8, 5.66, 2.65];
|
||||
jackBody = [15,6.15,5.3];
|
||||
|
||||
|
||||
$footRadius = (6.4 + $clearance) /2;
|
||||
$footHeight = 1.8;
|
||||
module pin(){
|
||||
cylinder(h=$holes, r=1, center=false);
|
||||
}
|
||||
@@ -96,67 +121,101 @@ module leftTopDampener(){
|
||||
|
||||
|
||||
module topDampeners(){
|
||||
translate([10,0,0]){
|
||||
translate([1.5,1.5,0]){
|
||||
rightTopDampener();
|
||||
}
|
||||
translate([-10,0,0]){
|
||||
leftTopDampener();
|
||||
//translate([-10,0,0]){
|
||||
//leftTopDampener();
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
module case(){
|
||||
// Then adjust the shim, aux and pico.
|
||||
// Last add magnets, don't forget the clearance.
|
||||
$baseHeight = 6.2;
|
||||
|
||||
$magnetWidth = 4;
|
||||
$magnetRadius = ($magnetWidth / 2) + $clearance/2;
|
||||
$magnetHeight = 2 + $clearance;
|
||||
module magnets(){
|
||||
cylinder(h=$magnetHeight + $clearance, r=$magnetWidth + $clearance / 2);
|
||||
|
||||
$offset = ($shellWidth / 2 / 2) -0.8 ;
|
||||
// Set Z-origin to align with shell top
|
||||
translate([0, 0, $shellHeight -$magnetHeight]){
|
||||
translate(points[0] + [-$offset, -$offset])
|
||||
cylinder(h=$magnetHeight, r=$magnetRadius);
|
||||
translate(points[1] + [-$offset, $offset])
|
||||
cylinder(h=$magnetHeight, r=$magnetRadius);
|
||||
translate(points[8] + [$offset, $offset])
|
||||
cylinder(h=$magnetHeight, r=$magnetRadius);
|
||||
translate(points[9] + [$offset, -$offset])
|
||||
cylinder(h=$magnetHeight, r=$magnetRadius);
|
||||
}
|
||||
}
|
||||
$baseHeight = 7.6;
|
||||
module aux(){
|
||||
$topLeftOfPcbToCenterOfAux = 15.4;
|
||||
$measurementPcbPlaneToCenterOfAux = 2.8;
|
||||
$auxClearanceFromBase = $measurementPcbPlaneToCenterOfAux - $dampenerHeight;
|
||||
$auxHoleRadius = 3.15;
|
||||
$auxHoleRadius = 3.15 + $clearance *2;
|
||||
$auxHoleLength = 17 + $shellWidth/2;
|
||||
$auxCableRadius = 4.15;
|
||||
$auxCableRadius = 4.15 + $clearance *2;
|
||||
// Move to the position along the wall the aux will be
|
||||
translate([-($shellWidth/2 + $clearance),$switchDistance * $rows - $topLeftOfPcbToCenterOfAux,-$auxClearanceFromBase])
|
||||
translate([-($shellWidth/2 + $clearance),$switchDistance * $rows - $topLeftOfPcbToCenterOfAux + $clearance,-$auxClearanceFromBase])
|
||||
// Make cylinder perpendicular with the wall
|
||||
rotate([0,90,0]){
|
||||
// Aux component clearance
|
||||
cylinder(h=$auxHoleLength,r=$auxHoleRadius);
|
||||
//cylinder(h=$auxHoleLength,r=$auxHoleRadius);
|
||||
rotate([0,270,0])
|
||||
translate([$shellWidth + $clearance*2,0,0])
|
||||
cube([jackBody.x + $clearance*20, jackBody.y + $clearance*2, jackBody.z + $clearance*2], center=true);
|
||||
// Aux cable housing clearance
|
||||
cylinder(h=$shellWidth/2,r=$auxCableRadius );
|
||||
translate([0,0, -$clearance*2])
|
||||
cylinder(h=($shellWidth/2) + ($clearance * 2),r=$auxCableRadius );
|
||||
}
|
||||
// TODO: move magnets to somewhere else.
|
||||
translate([0,0,5])
|
||||
magnets();
|
||||
}
|
||||
//TODO: Continue aligning pico clearance
|
||||
module pico(){
|
||||
$topLeftEdgeOfPcbToCenterOfUsb = 23;
|
||||
$usbHoleWidth = 12;
|
||||
$usbHoleHeight = 9;
|
||||
$usbOffsetFromPcb = 4 - $pcbDampenerOffset;
|
||||
$picoPcbClearanceFromBase = 5.4 - $pcbDampenerOffset;
|
||||
$topLeftEdgeOfPcbToCenterOfUsb = 27.7;
|
||||
$usbHoleWidth = 11.15+($clearance*2);
|
||||
$usbHoleHeight = 7 + ($clearance *2);
|
||||
$usbOffsetFromPcb = 4.1 - $pcbHeight;
|
||||
$picoPcbClearanceFromBase = 5.4 - $pcbHeight;
|
||||
$picoWidth = 25;
|
||||
$picoLength = 53;
|
||||
// Move to position along the wall the usb will be
|
||||
translate([$topLeftEdgeOfPcbToCenterOfUsb - ($usbHoleWidth/2), $switchDistance * $rows, -$usbOffsetFromPcb]){
|
||||
union() {
|
||||
// Create a hole for the usb cable to go through
|
||||
cube([$usbHoleWidth,$shellWidth,$usbHoleHeight]);
|
||||
// Move inside the shell
|
||||
translate([-(($picoWidth - $usbHoleWidth)/2),$clearance - $picoLength, +$usbOffsetFromPcb - $picoPcbClearanceFromBase])
|
||||
// Make clearance downwards for the pico board
|
||||
cube([$picoWidth,$picoLength, $picoLength]);
|
||||
|
||||
}
|
||||
// Hole should be centered on the pico usb
|
||||
holeOffset = -$usbOffsetFromPcb - (($usbHoleHeight - picoUsbBody.z )/2);
|
||||
translate([
|
||||
$topLeftEdgeOfPcbToCenterOfUsb - ($usbHoleWidth/2),
|
||||
$switchDistance * $rows,
|
||||
holeOffset
|
||||
]){
|
||||
// Create a hole for the usb cable to go through
|
||||
cube([
|
||||
$usbHoleWidth,
|
||||
$shellWidth,
|
||||
$usbHoleHeight
|
||||
]);
|
||||
// Move inside the shell, nullify the usb clearance from pcb and move down according to pico clearance
|
||||
translate([
|
||||
-(($picoWidth - $usbHoleWidth)/2),
|
||||
$clearance - $picoLength,
|
||||
-holeOffset - $picoPcbClearanceFromBase
|
||||
])
|
||||
// Make clearance downwards for the pico board
|
||||
cube([
|
||||
$picoWidth,
|
||||
$picoLength,
|
||||
$picoPcbClearanceFromBase + $clearance
|
||||
]);
|
||||
}
|
||||
}
|
||||
module case(){
|
||||
// Then adjust the shim, aux and pico.
|
||||
// Last add magnets, don't forget the clearance.
|
||||
|
||||
|
||||
|
||||
|
||||
module shim(){
|
||||
$shimPoints = [
|
||||
[0 - $shellWidth / 2, - $baseHeight],
|
||||
[$switchDistance * $columns + $shellWidth/2 + $clearance, 0],
|
||||
[$switchDistance * $columns + $shellWidth/2 + $clearance, -$clearance],
|
||||
[$switchDistance * $columns + $shellWidth/2 + $clearance, - ($baseHeight + $clearance)]
|
||||
];
|
||||
// Face z/x-plane
|
||||
@@ -168,24 +227,6 @@ module case(){
|
||||
polygon($shimPoints);
|
||||
}
|
||||
module body(){
|
||||
points = [
|
||||
[0,0],
|
||||
[0, $switchDistance * $rows],
|
||||
[$switchDistance * 2, $switchDistance * $rows],
|
||||
[$switchDistance * 2, $switchDistance * $rows + $fingerStep],
|
||||
[$switchDistance * 3, $switchDistance * $rows + $fingerStep],
|
||||
[$switchDistance * 3, $switchDistance * $rows],
|
||||
[$switchDistance * 4, $switchDistance * $rows],
|
||||
[$switchDistance * 4, $switchDistance * $rows - $fingerStep],
|
||||
[$switchDistance * 6, $switchDistance * $rows - $fingerStep],
|
||||
[$switchDistance * 6, 0 - $fingerStep],
|
||||
[$switchDistance * 4, 0 - $fingerStep],
|
||||
[$switchDistance * 4, 0],
|
||||
[$switchDistance * 3, 0],
|
||||
[$switchDistance * 3, 0 + $fingerStep],
|
||||
[$switchDistance * 2, 0 + $fingerStep],
|
||||
[$switchDistance * 2, 0],
|
||||
];
|
||||
union() {
|
||||
linear_extrude($shellHeight){
|
||||
difference(){
|
||||
@@ -199,14 +240,108 @@ module case(){
|
||||
}
|
||||
}
|
||||
}
|
||||
module feet(){
|
||||
module foot() {
|
||||
cylinder(h = $footHeight, r = $footRadius, center = true);
|
||||
}
|
||||
// Inner side
|
||||
translate([0,0,$footHeight/2-$baseHeight]){
|
||||
translate([points[0].x, points[0].y, 0])
|
||||
foot();
|
||||
translate([points[1].x, points[1].y, 0])
|
||||
foot();
|
||||
}
|
||||
// Outer side
|
||||
translate([0, 0, -1]){
|
||||
translate([points[9].x, points[9].y, 0])
|
||||
foot();
|
||||
translate([points[8].x, points[8].y, 0])
|
||||
foot();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
difference(){
|
||||
body();
|
||||
shim();
|
||||
pico();
|
||||
aux();
|
||||
magnets();
|
||||
feet();
|
||||
}
|
||||
}
|
||||
module pcb() {
|
||||
picoBody = [21, 51.5, 1];
|
||||
module jack() {
|
||||
translate([0,jackBody.y/2, jackBody.z/2])
|
||||
rotate([0,90])
|
||||
cylinder(r=2, h=2.2);
|
||||
translate([2.2,0,0])
|
||||
color("#333")
|
||||
cube(jackBody);
|
||||
|
||||
}
|
||||
module pcbPico(){
|
||||
translate([0,-1.6,0])
|
||||
color("#00aa00")
|
||||
cube(picoBody);
|
||||
translate([(picoBody.x - picoUsbBody.x)/2, picoBody.y - picoUsbBody.y, -picoUsbBody.z])
|
||||
color("#666")
|
||||
cube(picoUsbBody);
|
||||
}
|
||||
translate([0,0,$dampenerHeight]) {
|
||||
color("#008800")
|
||||
linear_extrude($pcbHeight)
|
||||
polygon(points);
|
||||
translate(points[1] + [0, -12.3 - jackBody.y])
|
||||
translate([0,0,-jackBody.z])
|
||||
color("#333")
|
||||
jack();
|
||||
translate(points[1] + [27.7 - picoBody.x/2, -picoBody.y])
|
||||
translate([0,0,-picoBody.z])
|
||||
pcbPico();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
module lid(){
|
||||
difference(){
|
||||
|
||||
//topDampeners();
|
||||
case();
|
||||
translate([0,0,$shellHeight]){
|
||||
union(){
|
||||
linear_extrude($magnetHeight+0.2){
|
||||
difference(){
|
||||
offset(r=$shellWidth/2 + $clearance, chamfer=true) polygon(points);
|
||||
offset(r=$clearance) polygon(points);
|
||||
}
|
||||
}
|
||||
linear_extrude(1){
|
||||
difference(){
|
||||
offset(r=$clearance) polygon(points);
|
||||
offset(r=-1.5, chamfer=true) polygon(points);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
translate([0,0,$magnetHeight-0.1])
|
||||
magnets();
|
||||
}
|
||||
}
|
||||
module botDampener(){
|
||||
difference(){
|
||||
topDampeners();
|
||||
aux();
|
||||
translate([0,0,2])
|
||||
pico();
|
||||
}
|
||||
}
|
||||
|
||||
mirror([1,0,0]){
|
||||
*%pcb();
|
||||
*topDampeners();
|
||||
*botDampener();
|
||||
*case();
|
||||
lid();
|
||||
}
|
||||
Reference in New Issue
Block a user