1
0
mirror of synced 2026-01-16 00:03:59 +00:00

forgotten to commit extension for V1.0 with fan carrier

This commit is contained in:
Romain Dolbeau 2021-10-01 13:30:14 +02:00
parent 0ed24f16aa
commit f46337ac35
3 changed files with 13123 additions and 19800 deletions

View File

@ -6,8 +6,7 @@ MYSBUS_MISSING_LENGTH = 47;
SBUS_BACKPLATE_THICKNESS = 1.19;
SBUS_BACKPLATE_FULLHEIGHT = 19.64;
SBUS_BACKPLATE_PROTUSION_HEIGHT = 1.22;
SBUS_BACKPLATE_HEIGHT =
SBUS_BACKPLATE_FULLHEIGHT - SBUS_BACKPLATE_PROTUSION_HEIGHT;
SBUS_BACKPLATE_HEIGHT = SBUS_BACKPLATE_FULLHEIGHT - SBUS_BACKPLATE_PROTUSION_HEIGHT;
SBUS_BACKPLATE_PROTUSION_FROMSIDE = 13;
SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM = 1.12;
@ -16,23 +15,18 @@ SBUS_GAP_BACKPLATE = 2.54;
SBUS_BACKPLATE_TOPHOLETOTOPHOLE = 79.24;
SBUS_BACKPLATE_TOPHOLEFROMSIDE = 2.29;
SBUS_BACKPLATE_TOPHOLEFROMBOTTOM = 15.43;
SBUS_BACKPLATE_TOPHOLEFROMFULLBOTTOM =
SBUS_BACKPLATE_TOPHOLEFROMBOTTOM + SBUS_BACKPLATE_PROTUSION_HEIGHT;
SBUS_BACKPLATE_TOPHOLEFROMFULLBOTTOM = SBUS_BACKPLATE_TOPHOLEFROMBOTTOM + SBUS_BACKPLATE_PROTUSION_HEIGHT;
SBUS_BACKPLATE_HOLESTOHOLES = 78.23;
SBUS_BACKPLATE_HOLEFROMSIDE = 2.795;
SBUS_BACKPLATE_HOLEFROMFULLBOTTOM = 7.08;
SBUS_BACKPLATE_HOLEFROMBOTTOM =
SBUS_BACKPLATE_HOLEFROMFULLBOTTOM - SBUS_BACKPLATE_PROTUSION_HEIGHT;
SBUS_BACKPLATE_HOLEFROMBOTTOM = SBUS_BACKPLATE_HOLEFROMFULLBOTTOM - SBUS_BACKPLATE_PROTUSION_HEIGHT;
SBUS_BACKPLATE_WIDTH =
SBUS_BACKPLATE_TOPHOLETOTOPHOLE + 2 * SBUS_BACKPLATE_TOPHOLEFROMSIDE;
SBUS_BACKPLATE_PROTUSION_WIDTH =
SBUS_BACKPLATE_WIDTH - 2 * SBUS_BACKPLATE_PROTUSION_FROMSIDE;
SBUS_BACKPLATE_WIDTH = SBUS_BACKPLATE_TOPHOLETOTOPHOLE + 2 * SBUS_BACKPLATE_TOPHOLEFROMSIDE;
SBUS_BACKPLATE_PROTUSION_WIDTH = SBUS_BACKPLATE_WIDTH - 2 * SBUS_BACKPLATE_PROTUSION_FROMSIDE;
MY_FULL_LENGTH =
MYSBUS_MISSING_LENGTH + SBUS_GAP_BACKPLATE + SBUS_BACKPLATE_THICKNESS;
MY_FULL_LENGTH = MYSBUS_MISSING_LENGTH + SBUS_GAP_BACKPLATE + SBUS_BACKPLATE_THICKNESS;
//holes:
// 110,130.82
@ -41,170 +35,219 @@ MY_FULL_LENGTH =
// top left 97,50
// -> 13,80.82 ; 13,70.82 ; 13,32 from top left
STRUT_HEIGHT=10.01; // max 15.31
STRUT_WIDTH=3;
SMALL_STRUT_HEIGHT=5;
SMALL_STRUT_WIDTH=2;
SMALL_STRUT_LENGTH=20;
STRUT_HEIGHT = 10.01; // max 15.31
STRUT_WIDTH = 3;
SMALL_STRUT_HEIGHT = 5;
SMALL_STRUT_WIDTH = 2;
SMALL_STRUT_LENGTH = 20;
module primary() {
union ()
fan_depth=8;
fan_height=25;
fan_width=fan_height;
fan_carrier_depth=5;
fan_extra_height=3;
vertical_offset=fan_height/2-SBUS_THICKNESS/2-(SBUS_BACKPLATE_PROTUSION_HEIGHT + SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM)+fan_extra_height/2;
carrier_offset_from_backplate=8;
carrier_offset=-MY_FULL_LENGTH/2+fan_width/2+carrier_offset_from_backplate; // negative -> toward back
echo(carrier_offset);
module
primary ()
{
color ("green") cube ([SBUS_WIDTH, MY_FULL_LENGTH, SBUS_THICKNESS], center = true);
for (i =[-2:1:2]) {
translate ([i*15+2.5,0,STRUT_HEIGHT/2-0.1]) color("red") cube([STRUT_WIDTH, MY_FULL_LENGTH, STRUT_HEIGHT], center = true);
}
// translate ([SBUS_WIDTH/2-18,7+(MY_FULL_LENGTH-SMALL_STRUT_LENGTH)/2,SMALL_STRUT_HEIGHT/2]) color("red") cube([SMALL_STRUT_WIDTH, SMALL_STRUT_LENGTH, SMALL_STRUT_HEIGHT], center = true);
// translate ([-SBUS_WIDTH/2+24,7+(MY_FULL_LENGTH-SMALL_STRUT_LENGTH)/2,SMALL_STRUT_HEIGHT/2]) color("red") cube([SMALL_STRUT_WIDTH, SMALL_STRUT_LENGTH, SMALL_STRUT_HEIGHT], center = true);
translate ([0, -MY_FULL_LENGTH / 2 + SBUS_BACKPLATE_THICKNESS / 2,
SBUS_BACKPLATE_HEIGHT / 2 - SBUS_THICKNESS / 2 -
SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM])
union ()
{
union ()
{
color ("black")
cube ([SBUS_BACKPLATE_WIDTH, SBUS_BACKPLATE_THICKNESS,
SBUS_BACKPLATE_HEIGHT], center = true);
translate ([0, 0, -SBUS_BACKPLATE_PROTUSION_HEIGHT / 2])
color ("green") cube ([SBUS_WIDTH, MY_FULL_LENGTH, SBUS_THICKNESS], center = true);
if (0) for (i =[-2: 1:2]) {
translate ([i * 15 + 2.5, 0, STRUT_HEIGHT / 2 - 0.1]) color ("red") cube ([STRUT_WIDTH, MY_FULL_LENGTH, STRUT_HEIGHT], center = true);
}
//translate ([SBUS_WIDTH/2-18,7+(MY_FULL_LENGTH-SMALL_STRUT_LENGTH)/2,SMALL_STRUT_HEIGHT/2]) color("red") cube([SMALL_STRUT_WIDTH, SMALL_STRUT_LENGTH, SMALL_STRUT_HEIGHT], center = true);
//translate ([-SBUS_WIDTH/2+24,7+(MY_FULL_LENGTH-SMALL_STRUT_LENGTH)/2,SMALL_STRUT_HEIGHT/2]) color("red") cube([SMALL_STRUT_WIDTH, SMALL_STRUT_LENGTH, SMALL_STRUT_HEIGHT], center = true);
translate ([0, -MY_FULL_LENGTH / 2 + SBUS_BACKPLATE_THICKNESS / 2, SBUS_BACKPLATE_HEIGHT / 2 - SBUS_THICKNESS / 2 - SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM]) {
union ()
{
color ("black")
cube ([SBUS_BACKPLATE_PROTUSION_WIDTH, SBUS_BACKPLATE_THICKNESS,
SBUS_BACKPLATE_FULLHEIGHT], center = true);
cube ([SBUS_BACKPLATE_WIDTH, SBUS_BACKPLATE_THICKNESS, SBUS_BACKPLATE_HEIGHT], center = true);
translate ([0, 0, -SBUS_BACKPLATE_PROTUSION_HEIGHT / 2]) {
color ("black")
cube ([SBUS_BACKPLATE_PROTUSION_WIDTH, SBUS_BACKPLATE_THICKNESS, SBUS_BACKPLATE_FULLHEIGHT], center = true);
}
}
}
MY_BOARD_OVERLAP_LENGTH = 20;
MY_BACKPLATE_OVERLAP_LENGTH = 12;
MY_OVERLAP_LENGTH = MY_BOARD_OVERLAP_LENGTH + MY_BACKPLATE_OVERLAP_LENGTH;
FIXHOLE_X_OFFSET = 13;
FIXHOLE1_Y_OFFSET = 80.82;
FIXHOLE2_Y_OFFSET = 70.82;
FIXHOLE3_Y_OFFSET = 32;
FIXHOLE_RAD = 1.55;
SERIAL_HOLLOWOUT_WIDTH = 18;
SERIAL_HOLLOWOUT_LENGTH = 5;
SERIAL_HOLLOWOUT_OFFSET = 3;
JTAG_HOLLOWOUT_WIDTH = 5;
JTAG_HOLLOWOUT_LENGTH = 16;
JTAG_HOLLOWOUT_OFFSET = 6;
difference () {
translate ([0,
MY_FULL_LENGTH / 2 + MY_OVERLAP_LENGTH / 2 -
MY_BACKPLATE_OVERLAP_LENGTH, 0.00000000001 - SBUS_THICKNESS / 2 - (SBUS_BACKPLATE_PROTUSION_HEIGHT + SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM) / 2]) {
color ("blue")
cube ([SBUS_WIDTH, MY_OVERLAP_LENGTH, /*SBUS_THICKNESS */
SBUS_BACKPLATE_PROTUSION_HEIGHT + SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM], center = true);
}
union ()
{
translate ([-SBUS_WIDTH / 2 + FIXHOLE1_Y_OFFSET, MY_FULL_LENGTH / 2 + FIXHOLE_X_OFFSET, 0]) {
color ("yellow") cylinder (h = 50, r1 = FIXHOLE_RAD, r2 = FIXHOLE_RAD, center = true);
}
translate ([-SBUS_WIDTH / 2 + FIXHOLE2_Y_OFFSET, MY_FULL_LENGTH / 2 + FIXHOLE_X_OFFSET, 0]) {
color ("yellow") cylinder (h = 50, r1 = FIXHOLE_RAD, r2 = FIXHOLE_RAD, center = true);
}
translate ([-SBUS_WIDTH / 2 + FIXHOLE3_Y_OFFSET, MY_FULL_LENGTH / 2 + FIXHOLE_X_OFFSET, 0]) {
color ("yellow") cylinder (h = 50, r1 = FIXHOLE_RAD, r2 = FIXHOLE_RAD, center = true);
}
translate ([SBUS_WIDTH / 2 - SERIAL_HOLLOWOUT_WIDTH / 2 + 5, MY_FULL_LENGTH / 2 + SERIAL_HOLLOWOUT_OFFSET + SERIAL_HOLLOWOUT_LENGTH / 2, 0]) {
color ("yellow")
cube ([SERIAL_HOLLOWOUT_WIDTH + 10, SERIAL_HOLLOWOUT_LENGTH, 50], center = true);
}
translate ([-SBUS_WIDTH / 2 + JTAG_HOLLOWOUT_WIDTH / 2 + JTAG_HOLLOWOUT_OFFSET, MY_FULL_LENGTH / 2 + JTAG_HOLLOWOUT_LENGTH / 2, 0]) {
color ("yellow")
cube ([JTAG_HOLLOWOUT_WIDTH, JTAG_HOLLOWOUT_LENGTH, 50], center = true);
}
}
}
}
MY_BOARD_OVERLAP_LENGTH = 20;
MY_BACKPLATE_OVERLAP_LENGTH = 12;
MY_OVERLAP_LENGTH = MY_BOARD_OVERLAP_LENGTH + MY_BACKPLATE_OVERLAP_LENGTH;
FIXHOLE_X_OFFSET = 13;
FIXHOLE1_Y_OFFSET = 80.82;
FIXHOLE2_Y_OFFSET = 70.82;
FIXHOLE3_Y_OFFSET = 32;
FIXHOLE_RAD = 1.55;
SERIAL_HOLLOWOUT_WIDTH = 18;
SERIAL_HOLLOWOUT_LENGTH = 5;
SERIAL_HOLLOWOUT_OFFSET = 3;
JTAG_HOLLOWOUT_WIDTH = 5;
JTAG_HOLLOWOUT_LENGTH = 16;
JTAG_HOLLOWOUT_OFFSET = 6;
difference()
{
translate ([0,
MY_FULL_LENGTH / 2 + MY_OVERLAP_LENGTH / 2 -
MY_BACKPLATE_OVERLAP_LENGTH, 0.00000000001-SBUS_THICKNESS/2
-(SBUS_BACKPLATE_PROTUSION_HEIGHT+SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM)/2])
{
color ("blue") cube ([SBUS_WIDTH, MY_OVERLAP_LENGTH, /*SBUS_THICKNESS*/SBUS_BACKPLATE_PROTUSION_HEIGHT+SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM],
center = true);
}
union ()
{
translate ([-SBUS_WIDTH / 2 + FIXHOLE1_Y_OFFSET,
MY_FULL_LENGTH / 2 + FIXHOLE_X_OFFSET, 0])
{
color ("yellow") cylinder (h = 50, r1 = FIXHOLE_RAD, r2 = FIXHOLE_RAD, center = true);
}
translate ([-SBUS_WIDTH / 2 + FIXHOLE2_Y_OFFSET,
MY_FULL_LENGTH / 2 + FIXHOLE_X_OFFSET, 0])
{
color ("yellow") cylinder (h = 50, r1 = FIXHOLE_RAD, r2 = FIXHOLE_RAD, center = true);
}
translate ([-SBUS_WIDTH / 2 + FIXHOLE3_Y_OFFSET,
MY_FULL_LENGTH / 2 + FIXHOLE_X_OFFSET, 0])
{
color ("yellow") cylinder (h = 50, r1 = FIXHOLE_RAD, r2 = FIXHOLE_RAD, center = true);
}
translate ([SBUS_WIDTH / 2 - SERIAL_HOLLOWOUT_WIDTH / 2 + 5,
MY_FULL_LENGTH / 2 + SERIAL_HOLLOWOUT_OFFSET +
SERIAL_HOLLOWOUT_LENGTH / 2, 0])
{
color ("yellow")
cube ([SERIAL_HOLLOWOUT_WIDTH + 10, SERIAL_HOLLOWOUT_LENGTH, 50],
center = true);
}
translate ([-SBUS_WIDTH / 2 + JTAG_HOLLOWOUT_WIDTH / 2 +
JTAG_HOLLOWOUT_OFFSET,
MY_FULL_LENGTH / 2 + JTAG_HOLLOWOUT_LENGTH / 2, 0])
{
color ("yellow")
cube ([JTAG_HOLLOWOUT_WIDTH, JTAG_HOLLOWOUT_LENGTH, 50], center =
true);
}
}
}
}
}
module extra_holes() {
EXTRA_RAD=2;
union() {
for (i =[-8: 16:8])
module
extra_holes ()
{
EXTRA_RAD = 2;
union ()
{
for (j =[-4:1:5])
{
for (i =[-8: 16:8]) {
for (j =[-4: 1:5]) {
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = 1.5, r2 = 1.5, center = true);
}
}
for (i =[-8: 5000:8])
{
for (j =[6:1:8])
{
}
for (i =[-8: 5000:8]) {
for (j =[6: 1:8]) {
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = 1.5, r2 = 1.5, center = true);
}
}
}
for (i =[-6: 2:6])
{
for (j =[-4:1:5])
{
for (i =[-6: 2:6]) {
for (j =[-4: 1:5]) {
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = EXTRA_RAD, r2 = EXTRA_RAD, center = true);
}
}
for (i =[-7: 2:7])
{
for (j =[-4.5:1:4.5])
{
}
for (i =[-7: 2:7]) {
for (j =[-4.5: 1:4.5]) {
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = EXTRA_RAD, r2 = EXTRA_RAD, center = true);
}
}
for (i =[-4: 2:4])
{
for (j =[5: 1:8])
{
if (!((i==-2)&&(j>=7)))
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = EXTRA_RAD, r2 = EXTRA_RAD, center = true);
}
}
for (i =[-5: 2:3])
{
for (j =[5.5: 1:8.5])
{
}
for (i =[-4: 2:4]) {
for (j =[5: 1:8]) {
if (!((i == -2) && (j >= 7)))
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = EXTRA_RAD, r2 = EXTRA_RAD, center = true);
}
}
for (i =[-5: 2:3]) {
for (j =[5.5: 1:8.5]) {
translate ([i * 5, j * 5, 0])
color ("pink") cylinder (h = 50, r1 = EXTRA_RAD, r2 = EXTRA_RAD, center = true);
}
}
}
}
module
fan_25mm_carveout() {
translate([(SBUS_WIDTH-fan_depth)/2+fan_carrier_depth/2+0.4999,carrier_offset,vertical_offset]) {
color("pink") cube([fan_depth+fan_carrier_depth+1, fan_width, fan_height], center = true);
}
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
rotate([0,90,0]) color("red") cylinder(h=0.01+fan_carrier_depth,r1=(fan_width/2-1),r2=(fan_width/2-1), center=true);
}
union() {
if (0) translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
rotate([0,90,0]) color("red") cylinder(h=2+fan_carrier_depth,r1=(fan_width/2-1),r2=(fan_width/2-1), center=true);
}
translate([0,-10,-10])
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
rotate([0,90,0]) color("red") cylinder(h=2+fan_carrier_depth,r1=screw_hole_r,r2=screw_hole_r, center=true);
}
translate([0, 10,-10])
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
rotate([0,90,0]) color("red") cylinder(h=2+fan_carrier_depth,r1=screw_hole_r,r2=screw_hole_r, center=true);
}
translate([0, 10, 10])
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
rotate([0,90,0]) color("red") cylinder(h=2+fan_carrier_depth,r1=screw_hole_r,r2=screw_hole_r, center=true);
}
translate([0,-10, 10])
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
rotate([0,90,0]) color("red") cylinder(h=2+fan_carrier_depth,r1=screw_hole_r,r2=screw_hole_r, center=true);
}
}
}
screw_hole_r=1.55;
triangle_width=4;
triangle_height=12;
module
fan_25mm_support() {
union() {
// body
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth,carrier_offset,vertical_offset]) {
color("black") cube([fan_carrier_depth, fan_width+fan_extra_height, fan_height+fan_extra_height], center = true);
}
// support
translate([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth+0.5,carrier_offset-2.4,0]) {
color("purple") cube([fan_carrier_depth+5, fan_width+fan_extra_height+8, SBUS_THICKNESS], center = true);
}
// strut between the backplate and the fan carrier
translate ([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth, carrier_offset-1, (SBUS_BACKPLATE_FULLHEIGHT-5)/2-SBUS_THICKNESS/2-SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM]) color ("purple") cube ([fan_carrier_depth/2, 38,SBUS_BACKPLATE_FULLHEIGHT-5 ], center = true);
translate ([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth, carrier_offset-(fan_width+fan_extra_height)/2-triangle_width/2, triangle_height/2-SBUS_THICKNESS/2-SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM+SBUS_BACKPLATE_FULLHEIGHT-5]) rotate([0,90,0]) color("pink") translate([0,0,-fan_carrier_depth/4]) linear_extrude(height=fan_carrier_depth/2) polygon( points=[[triangle_height/2,-triangle_width/2],[-triangle_height/2,triangle_width/2],[triangle_height/2,triangle_width/2]] );
translate ([(SBUS_WIDTH-fan_carrier_depth)/2-fan_depth, carrier_offset+(fan_width+fan_extra_height)/2+triangle_width/2, triangle_height/2-SBUS_THICKNESS/2-SBUS_BACKPLATE_BOTTOM_TO_BOARD_BOTTOM+SBUS_BACKPLATE_FULLHEIGHT-5]) rotate([0,90,0]) color("pink") translate([0,0,-fan_carrier_depth/4]) linear_extrude(height=fan_carrier_depth/2) polygon( points=[[triangle_height/2,-triangle_width/2],[-triangle_height/2,-triangle_width/2],[triangle_height/2,triangle_width/2]] );
}
}
difference() {
primary();
extra_holes();
union() {
difference ()
{
primary ();
union() {
extra_holes ();
}
}
fan_25mm_support();
}
fan_25mm_carveout();
}

File diff suppressed because it is too large Load Diff