2017-03-08 14:31:50 +00:00
include < pcb_simple.scad >
2017-02-03 20:50:17 +00:00
include < v4_bracket.scad >
2017-03-08 14:31:50 +00:00
include < clip.scad >
2016-11-25 09:27:41 +00:00
module pin ( ) {
for ( a = [ 0 : 3 ] ) {
color ( "gold" ) translate ( [ 0 , - a * 2.54 , - ( 3 + 1.27 ) / 2 + 1.27 ] ) cube ( [ 0.64 , 0.64 , 3 + 1.27 ] , true ) ;
color ( "gold" ) translate ( [ ( 6 + 2.54 + 1.5 ) / 2 - 0.64 / 4 , - a * 2.54 , 1.27 ] ) cube ( [ 6 + 2.54 + 1.5 + 0.64 / 2 , 0.64 , 0.64 ] , true ) ;
}
color ( [ 0.2 , 0.2 , 0.2 ] ) translate ( [ 2.54 / 2 , - 4 * 2.54 + 2.54 / 2 , 0 ] ) cube ( [ 2.54 , 4 * 2.54 , 2.54 ] ) ;
}
module f4 ( ) {
difference ( ) {
union ( ) {
translate ( [ - 198 , 103.75 , 0 ] ) pcb ( ) ;
translate ( [ - 198 , 103.75 , 0 ] ) place ( ) ;
}
color ( "green" ) translate ( [ 10 , 0 , - 70 ] ) rotate ( [ 0 , 0 , 180 ] ) cube ( [ 120 , 100 , 80 ] ) ;
}
translate ( [ - 198 , 103.75 , 0 ] ) translate ( [ 147.000000 , - 99.750000 , 1.60000 ] ) rotate ( [ 0 , 0 , 270.000000 ] ) pin ( ) ;
}
module f3 ( ) {
rotate ( [ 180 , 0 , 0 ] ) translate ( [ 0 , 0 , - pcb_height - 8 ] ) difference ( ) {
union ( ) {
translate ( [ - 198 , 103.75 , 0 ] ) pcb ( ) ;
translate ( [ - 198 , 103.75 , 0 ] ) place ( ) ;
}
color ( "green" ) translate ( [ - 110 , 0 , - 70 ] ) cube ( [ 120 , 100 , 80 ] ) ;
}
}
module spacer ( l ) {
difference ( ) {
color ( [ 0.3 , 0.3 , 0.3 ] ) cylinder ( $fn = 20 , r = 3 , h = l ) ;
translate ( [ 0 , 0 , - 1 ] ) color ( "grey" ) cylinder ( $fn = 20 , r = 1.5 , h = l + 2 ) ;
}
}
module m3 ( l ) {
translate ( [ 0 , 0 , - l ] ) color ( "darkgrey" ) cylinder ( $fn = 20 , r = 1.5 , h = l ) ;
difference ( ) {
color ( "darkgrey" ) cylinder ( $fn = 20 , r = 2.5 , h = 2 ) ;
color ( "darkgrey" ) translate ( [ 0 , 0 , 0.5 ] ) cylinder ( $fn = 20 , r = 1.3 , h = 1.6 ) ;
}
}
2017-03-08 14:31:50 +00:00
module corner ( r , l ) {
difference ( ) {
color ( "grey" ) cube ( [ r , r , l ] ) ;
translate ( [ r , r , - 1 ] ) color ( "grey" ) cylinder ( r = r , h = l + 2 ) ;
}
}
2016-11-25 09:27:41 +00:00
2017-03-08 14:31:50 +00:00
module corner2 ( r , l ) {
color ( "grey" ) linear_extrude ( height = l , convexity = 10 , twist = 0 ) polygon ( points = [ [ r , 0 ] , [ 0 , - r / 5 ] , [ - r / 5 , 0 ] , [ 0 , r ] , [ r , 0 ] ] ) ;
}
2016-11-25 09:27:41 +00:00
2017-03-08 14:31:50 +00:00
module cover ( ) {
$fn = 40 ;
2017-03-08 14:34:02 +00:00
wall_t = 1.3 ;
2017-03-08 14:31:50 +00:00
space = 0.5 ;
fan_t = 10.5 ;
fan_h = 12 ;
fan_l = 45 ;
fan_m3_l = 37 ;
heatsink_m3_l = 36 ;
heatsink_m3_h = - 2.5 ;
heatsink_l = 94 ;
heatsink_w = 46 ;
heatsink_h = 5 ;
pcb_t = 1.6 ;
f3_h = 8 + heatsink_h ;
f4_h = 2.5 + pcb_t + f3_h ;
f4_l = 52.25 ;
f4_y = 4.75 + 2.54 / 2 ;
f4_x = 2 ;
f4_t = 100 ;
rj45_h = 1.25 ;
rj45_l = 16.5 * 3 ;
rj45_t = 13.5 ;
akl220_h = 11 ;
akl220_l = 1.26 ;
akl220_p = 5.08 ;
akl182_h = 7 ;
akl182_l = 1.6 ;
akl182_p = 3.5 ;
corner_r = 3 ;
difference ( ) {
union ( ) {
difference ( ) {
translate ( [ - wall_t , - wall_t , 0 ] ) color ( "grey" ) cube ( [ heatsink_l + fan_t + wall_t * 2 , heatsink_w + wall_t * 2 , f4_h + f4_l + wall_t ] ) ;
color ( "grey" ) translate ( [ 0 , 0 , - 1 ] ) cube ( [ heatsink_l + fan_t , heatsink_w , f4_h + f4_l + 1 ] ) ;
translate ( [ 0 , 0 , - 1 ] ) corner2 ( 2 , heatsink_h + 1 ) ;
translate ( [ 0 , heatsink_w , - 1 ] ) rotate ( [ 0 , 0 , - 90 ] ) corner2 ( 2 , heatsink_h + 1 ) ;
translate ( [ heatsink_l + fan_t , heatsink_w , - 1 ] ) rotate ( [ 0 , 0 , 180 ] ) corner2 ( 2 , heatsink_h + fan_h + 1 ) ;
translate ( [ heatsink_l + fan_t , 0 , - 1 ] ) rotate ( [ 0 , 0 , 90 ] ) corner2 ( 2 , heatsink_h + fan_h + 1 ) ;
}
translate ( [ 0 , 0 , f4_h + 11 ] ) rotate ( [ 0 , 0 , 0 ] ) corner ( corner_r , f4_l - 11 ) ;
translate ( [ heatsink_l + fan_t , heatsink_w , f4_h ] ) rotate ( [ 0 , 0 , 180 ] ) corner ( corner_r , f4_l ) ;
translate ( [ heatsink_l + fan_t , 0 , f4_h ] ) rotate ( [ 0 , 0 , 90 ] ) corner ( corner_r , f4_l ) ;
translate ( [ 0 , heatsink_w , f4_h + 5 ] ) rotate ( [ 0 , 0 , - 90 ] ) corner ( corner_r , f4_l - 5 ) ;
translate ( [ 0 , 0 , f4_h + f4_l ] ) rotate ( [ - 90 , 0 , 0 ] ) corner ( corner_r , heatsink_w ) ;
translate ( [ heatsink_l + fan_t , heatsink_w , f4_h + f4_l ] ) rotate ( [ - 90 , 0 , 180 ] ) corner ( corner_r , heatsink_w ) ;
translate ( [ 0 , 0 , f4_h + f4_l ] ) rotate ( [ 0 , 90 , 0 ] ) corner ( corner_r , heatsink_l + fan_t ) ;
translate ( [ heatsink_l + fan_t , heatsink_w , f4_h + f4_l ] ) rotate ( [ 180 , 90 , 0 ] ) corner ( corner_r , heatsink_l + fan_t ) ;
}
color ( "grey" ) translate ( [ f4_x , f4_y - space , f4_h ] ) cube ( [ f4_t , pcb_t + space * 2 , f4_l ] ) ;
color ( "grey" ) translate ( [ heatsink_l + fan_t - wall_t , heatsink_w / 2 , heatsink_h + fan_h - fan_l / 2 ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 22 , h = wall_t * 3 ) ; // fan
color ( "grey" ) translate ( [ heatsink_l + fan_t - wall_t , heatsink_w / 2 - fan_m3_l / 2 , heatsink_h + fan_h - fan_l / 2 + fan_m3_l / 2 ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 1.75 , h = wall_t * 3 ) ; // front m3
color ( "grey" ) translate ( [ heatsink_l + fan_t - wall_t , heatsink_w / 2 + fan_m3_l / 2 , heatsink_h + fan_h - fan_l / 2 + fan_m3_l / 2 ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 1.75 , h = wall_t * 3 ) ; // front m3
color ( "grey" ) translate ( [ heatsink_l + fan_t - wall_t , f4_y + pcb_t - space , heatsink_h + fan_h + rj45_h - space ] ) cube ( [ wall_t * 3 , rj45_t + space * 2 , rj45_l + space * 2 ] ) ; // rj45
color ( "grey" ) translate ( [ - wall_t * 2 , 0 , f3_h + pcb_t - space ] ) cube ( [ wall_t * 3 , akl220_l + akl220_p * 3 + akl220_l + akl220_p * 2 + space , akl220_h + space * 2 ] ) ; // uvw + hv
color ( "grey" ) translate ( [ - wall_t * 2 , 37 - space , f3_h + pcb_t - space ] ) cube ( [ wall_t * 3 , akl182_l + akl182_p * 2 + space * 2 , akl182_h + space * 2 ] ) ; // mot temp
color ( "grey" ) translate ( [ - wall_t * 2 , f4_y + pcb_t - space , f4_h + 17 - space ] ) cube ( [ wall_t * 3 , akl182_h + space * 2 , akl182_l * 2 + akl182_p * 8 + space * 2 + 0.4 ] ) ; // 24v + out
color ( "grey" ) translate ( [ - wall_t * 2 , heatsink_w / 2 - heatsink_m3_l / 2 , heatsink_h + heatsink_m3_h ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 1.75 , h = wall_t * 3 ) ; // back m3
color ( "grey" ) translate ( [ - wall_t * 2 , heatsink_w / 2 + heatsink_m3_l / 2 , heatsink_h + heatsink_m3_h ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 1.75 , h = wall_t * 3 ) ; // back m3
color ( "grey" ) translate ( [ 9 , f4_y + pcb_t - space , f4_h + f4_l - wall_t ] ) cube ( [ akl182_l * 2 + akl182_p * 8 + space * 2 + 0.4 , akl182_h + space * 2 , wall_t * 3 ] ) ; // cmd + in
color ( "grey" ) translate ( [ 9 + 31 - space , f4_y + pcb_t - space , f4_h + f4_l - wall_t ] ) cube ( [ 2.54 * 6 + space * 6 , 2.54 * 2 + space * 2 , wall_t * 3 ] ) ; // io
color ( "grey" ) translate ( [ 9 + 51.5 - space , f4_y - 2.5 - space , 68 ] ) union ( ) {
translate ( [ 2.5 / 2 + space , 0 , 0 ] ) cube ( [ 8 - 2.5 , 2.5 + space * 2 , wall_t * 3 ] ) ;
translate ( [ 2.5 / 2 + space , 2.5 / 2 + space , 0 ] ) cylinder ( r = 2.5 / 2 + space , h = wall_t * 3 ) ;
translate ( [ 8 - 2.5 / 2 + space , 2.5 / 2 + space , 0 ] ) cylinder ( r = 2.5 / 2 + space , h = wall_t * 3 ) ;
} ; // usb
color ( "grey" ) translate ( [ - wall_t * 2 , 5 + 1 * 6 , 7 ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 2 , h = wall_t * 3 ) ;
color ( "grey" ) translate ( [ - wall_t * 2 , 5 + 5 * 6 , 7 ] ) rotate ( [ 0 , 90 , 0 ] ) cylinder ( r = 2 , h = wall_t * 3 ) ;
color ( "grey" ) translate ( [ - wall_t * 2 , 5 + 1 * 6 , - 2 ] ) cube ( [ wall_t * 3 , 24 , 11 ] ) ;
color ( "grey" ) translate ( [ - wall_t * 2 , 5 + 1 * 6 - 2 , - 2 ] ) cube ( [ wall_t * 3 , 28 , 9 ] ) ;
//for(i = [1:6]){
// color("grey") translate([-1, 4, 28 + i * 6]) rotate([0, 90, 0]) cylinder(r = 2, h = 3);
//}
color ( "grey" ) translate ( [ heatsink_l + fan_t - wall_t , f4_y + pcb_t - space , 0 ] ) cube ( [ wall_t * 3 , rj45_t + space * 2 , f4_h + rj45_h ] ) ; // rj45 slot
color ( "grey" ) translate ( [ 37 , heatsink_w - wall_t , 47 ] ) rotate ( [ - 90 , 0 , 0 ] ) cylinder ( r = 1.75 , h = wall_t * 3 ) ;
}
translate ( [ heatsink_l + fan_t - 2 , f4_y - wall_t + pcb_t - space , fan_h + heatsink_h + space ] ) color ( "grey" ) cube ( [ 2 , wall_t , f4_l ] ) ;
translate ( [ heatsink_l + fan_t - 7 , f4_y + pcb_t + rj45_t + space , fan_h + heatsink_h ] ) color ( "grey" ) cube ( [ 7 , wall_t , f4_l ] ) ;
translate ( [ heatsink_l + fan_t - 15.5 - space , f4_y + pcb_t + rj45_t + space , f4_h + f4_l - 7 ] ) color ( "grey" ) cube ( [ 10 , wall_t , 7 ] ) ;
translate ( [ heatsink_l + fan_t - 15.5 - space - wall_t , f4_y + pcb_t + space + akl182_h , f4_h + f4_l - 7 ] ) color ( "grey" ) cube ( [ wall_t , f4_y + pcb_t + rj45_t + space + wall_t - ( f4_y + pcb_t + space + akl182_h ) , 7 ] ) ;
translate ( [ 0 , f4_y + pcb_t - wall_t - space , f4_h + 9 ] ) color ( "grey" ) cube ( [ 2 - space , wall_t , f4_l - 9 ] ) ;
translate ( [ 0 , f4_y + pcb_t + space + akl182_h , f4_h + 9 ] ) color ( "grey" ) cube ( [ 7 , wall_t , f4_l - 9 ] ) ;
translate ( [ 0 , f4_y + pcb_t + space + akl182_h , f4_h + f4_l - 7 ] ) color ( "grey" ) cube ( [ heatsink_l + fan_t - 15.5 - space , wall_t , 7 ] ) ;
color ( "grey" ) translate ( [ 37 , heatsink_w - 7 , 47 + 3 + space ] ) cube ( [ wall_t , 7 , f4_h + f4_l - 47 - 3 - space ] ) ;
color ( "grey" ) translate ( [ 37 , f4_y + pcb_t + space + akl182_h , f4_h + f4_l - 7 ] ) cube ( [ wall_t , heatsink_w - ( f4_y + pcb_t + space + akl182_h ) , 7 ] ) ;
//translate([100, 48, 50]) color("grey") rotate([90, 0, 180]) linear_extrude(height = 0.6) text("STMBL 4.0", font = "Liberation Sans", size = 13);
}
translate ( [ - 88 , 0 , - 5 ] ) cover ( ) ;
translate ( [ 14 , 4.75 + 1.27 + pcb_height , 45 - 33 - pcb_height ] ) rotate ( [ 90 , 0 , 0 ] ) f4 ( ) ;
translate ( [ - 51 , 46 + 1.5 , 42 ] ) rotate ( [ - 90 , 0 , 0 ] ) m3 ( 6 ) ;
f3 ( ) ; translate ( [ 6 , 0 , - 33 ] ) rotate ( [ 0 , 0 , 90 ] ) heatsink ( ) ;
translate ( [ 6 , 0.5 , 45 - 33 ] ) rotate ( [ 0 , 90 , 0 ] ) fan ( ) ;
2016-11-25 09:27:41 +00:00
2017-03-08 14:31:50 +00:00
translate ( [ 16.5 , 4.5 , 4 - 33 ] ) rotate ( [ 0 , 90 , 0 ] ) m3 ( 15 ) ;
translate ( [ 16.5 , 4.5 + 37 , 4 - 33 ] ) rotate ( [ 0 , 90 , 0 ] ) m3 ( 15 ) ;
translate ( [ 16.5 + 1.3 , 4.5 , 4 + 37 - 33 ] ) rotate ( [ 0 , 90 , 0 ] ) m3 ( 10 ) ;
translate ( [ 16.5 + 1.3 , 4.5 + 37 , 4 + 37 - 33 ] ) rotate ( [ 0 , 90 , 0 ] ) m3 ( 10 ) ;
2016-11-25 09:27:41 +00:00
// translate([6, 20, 33]) spacer(8);
// translate([6 + 36, 20, 33]) spacer(8);
// translate([6, 20, 33 + 8 + pcb_hight]) m3(15);
// translate([6 + 36, 20, 33 + 8 + pcb_hight]) m3(15);
translate ( [ - 81 , 33 , 8 + pcb_height ] ) m3 ( 15 ) ;
translate ( [ - 21 , 33 , 8 + pcb_height ] ) m3 ( 15 ) ;
translate ( [ - 52.5 , 5 , 8 + pcb_height ] ) m3 ( 15 ) ;
translate ( [ - 81 , 33 , 5.7 ] ) spacer ( 2.3 ) ;
translate ( [ - 21 , 33 , 5.7 ] ) spacer ( 2.3 ) ;
translate ( [ - 52.5 , 5 , 0 ] ) spacer ( 8 ) ; //translate([1 + 8, 1, 96 + 4]) io();
//translate([1, 10, 33 + 8]) cover();
2016-12-07 15:10:16 +00:00
translate ( [ - 89 , 5 , - 2 ] ) rotate ( [ 0 , - 90 , 0 ] ) m3 ( 5 ) ;
translate ( [ - 89 , 5 + 36 , - 2 ] ) rotate ( [ 0 , - 90 , 0 ] ) m3 ( 5 ) ;
2017-02-03 20:50:17 +00:00
translate ( [ - 70.5 + 27 + 6 , 32 , 42 ] ) rotate ( [ 0 , 0 , 180 ] ) bracket2 ( ) ;
translate ( [ - 52.5 , 7.5 - 1.6 , 42 ] ) rotate ( [ 90 , 0 , 0 ] ) m3 ( 6 ) ;
2017-03-08 14:31:50 +00:00
translate ( [ - 25 , 0.5 , - 34 ] ) rotate ( [ 0 , 0 , 90 ] ) clip ( ) ;
translate ( [ - 41 , 0.5 + 4 , - 35 ] ) rotate ( [ 180 , 0 , 0 ] ) m3 ( 6 ) ;
2017-03-08 14:34:02 +00:00
translate ( [ - 41 , 0.5 + 4 + 37 , - 35 ] ) rotate ( [ 180 , 0 , 0 ] ) m3 ( 6 ) ;