reform2-heatsink_generic.scad (1889B)
1 // for MNT Reform 2.0 R-2 2 3 x1 = 6+8; 4 y1 = 4; 5 6 x2 = x1+23; 7 y2 = y1+10; 8 9 x3 = x2+12.75; 10 y3 = y2+60; 11 12 sink_width = 75; 13 sink_height = 4; // original heatsink: 5mm. rpi cm4 chip is approx. 1.4mm higher than original imx8mq. 14 sink_depth = 25+y3+1.45; 15 16 fins_y = 20.5; 17 fin_width = sink_width+2; 18 fin_thickness = 2; 19 fin_spacing = 3; 20 fin_depth = sink_height-1.5; 21 22 module screw_hole(x,y,height) { 23 shh=3; 24 translate([x,y,height]) cylinder(h=shh, r=5/2, center = true, $fn=40); 25 translate([x,y,height/2]) cylinder(h=height+1, r=2.2/2, center = true, $fn=20); 26 } 27 28 difference() { 29 union() { 30 difference() { 31 cube([sink_width,sink_depth,sink_height]); 32 33 screw_hole(x1,y1,sink_height); 34 screw_hole(x2,y1,sink_height); 35 screw_hole(x3,y2,sink_height); 36 screw_hole(x3,y3,sink_height); 37 38 for (i = [-4 : -2]) { 39 translate([-1,fins_y+i*fin_spacing,sink_height-fin_depth]) cube([fin_width-(sink_width-x3+5),fin_thickness,fin_depth+1]); 40 } 41 42 for (i = [-4 : -2]) { 43 translate([(x3+4),fins_y+i*fin_spacing,sink_height-fin_depth]) cube([fin_width,fin_thickness,fin_depth+1]); 44 } 45 46 for (i = [-1 : 16]) { 47 translate([-1,fins_y+i*fin_spacing,sink_height-fin_depth]) cube([fin_width,fin_thickness,fin_depth+1]); 48 } 49 50 for (i = [17 : 18]) { 51 translate([-1,fins_y+i*fin_spacing,sink_height-fin_depth]) cube([fin_width-(sink_width-x3+5),fin_thickness,fin_depth+1]); 52 } 53 54 for (i = [17 : 18]) { 55 translate([(x3+4),fins_y+i*fin_spacing,sink_height-fin_depth]) cube([fin_width,fin_thickness,fin_depth+1]); 56 } 57 58 for (i = [19 : 25]) { 59 translate([-1,fins_y+i*fin_spacing,sink_height-fin_depth]) cube([fin_width,fin_thickness,fin_depth+1]); 60 } 61 62 translate([sink_width-13.6, 1 , sink_height+0.5]) linear_extrude(height = 2, center = true, convexity = 10) scale(0.16) import(file = "mnt.svg"); 63 64 } 65 } 66 67 translate([sink_width-3,sink_depth-6,-1]) cube([3+1, 6+1, sink_height+2]); 68 }