reform

MNT Reform: Open Source Portable Computer
Log (Feed) | Files | Refs (Tags) | README

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 }