機箱箱體製造設計重點:散熱配置、板材厚度與加工方式

Published on: | Last updated:

重點一句話

老實說,搞一個機箱箱體,真的不只是把鐵皮彎一彎、鎖起來就好。一個好的設計,是在散熱、強度、成本跟加工難度之間,找到那個最巧妙的平衡點。很多人只看外觀炫不炫,但魔鬼其實都藏在這些看不到的細節裡。

大家都在談散熱,但好像都漏了最根本的東西

我看了很多文章跟討論,大部分都在講風扇要怎麼裝、風道要前進後出還是下進上出。 這些當然都沒錯,但好像都預設你已經有一咖「完美的箱子」。但問題是,如果一開始的板材選錯、加工方式沒考慮到,你那個完美的風道設計根本就做不出來,或是做出來的成本會高到嚇死人。

就像很多人在聊電競機殼,外觀一個比一個酷炫,各種玻璃側透、RGB燈效。 但很少有人從工廠的角度去講,為什麼伺服器機箱大部分都長得那麼樸實無華? 因為那背後考慮的是完全不一樣的東西:結構穩定性、大批量生產的良率、還有最重要的,在塞滿發熱怪獸的機櫃裡,怎麼穩定地散熱幾萬個小時。 所以,今天我想從更源頭的地方,也就是「製造」的角度,來聊聊設計一個機箱到底要注意什麼。

到底怎麼做?從選料到加工的思路

好,那我們就一步一步來拆解。我自己是覺得,順序很重要,通常是先想散熱佈局,這會決定你的開孔位置跟大小;然後根據強度和成本需求選板材;最後才是決定用什麼加工方式最划算。

第一步:散熱,不只是風扇裝越多越好

散熱真的不是單純的數學題,不是風扇CFM(風量)數字越大就越好。風道規劃才是靈魂。 一般來說,消費級的桌機可能還能玩玩花式風道,像是很流行的垂直風道(煙囪效應)。 但在工業或伺服器應用上,最常見、也最可靠的還是前進後出的水平風道。 這樣才能確保在整排機櫃裡,每一台伺服器的散熱氣流不會互相干擾。

這邊有個坑,很多人會忽略「風壓」。如果你的機箱前面板開孔很密,或者有裝防塵網,那風壓不夠的風扇,就算風量再大,風也根本吹不進去。所以設計開孔率的時候,就要把風扇的規格一起考慮進來。

另外,國際大廠像 Dell 的伺服器設計,就很值得參考。 他們會在機箱內部用很多導流罩(Air Shroud),把氣流精準地引導到 CPU、記憶體這些高熱區域,而不是讓風在機箱裡亂竄。 這就是一種更精細的設計思維,每一絲氣流都不能浪費。

伺服器機箱內部氣流導引示意
伺服器機箱內部氣流導引示意

第二步:板材厚度與材質,錢都花在這裡

選板材就是一場成本、重量、強度跟防鏽能力的大亂鬥。 沒有哪一種是完美的,只有最適合你產品的。一般來說,厚度會用 `t` 來表示,例如 `t=1.0` 就是 1.0mm 厚。

我整理了一個簡單的比較表,這樣看比較清楚:

材質 俗稱/代號 個人點評 適合用在哪?
冷軋鋼板 SPCC 最基本的鐵板,表面平滑,但沒處理的話超容易生鏽。通常都要烤漆或電鍍。 需要烤漆的內構件、不直接接觸外部環境的零件。
電鍍鋅鋼板 SECC 可以想成是化了妝的SPCC,表面有一層薄薄的鋅,有點防鏽能力,而且很好烤漆。 很多電腦機殼都用這個。缺點是切断面和沖孔邊緣沒保護,還是會鏽。 大部分的消費級電子產品機殼,像PC機殼。
熱浸鍍鋅鋼板 SGCC 防鏽能力比SECC強很多,因為鋅層比較厚。 表面會有特殊的鋅花紋路,沒那麼好看,但很耐用。黃仁勳說的「有夠水」的伺服器,很多就是用它。 伺服器、工業設備、戶外機箱,或是洗衣機、冷氣室外機這種對耐用度要求很高的地方。
鋁合金 AL (e.g., 5052) 優點就是輕、散熱好、質感棒。但就是貴,而且材質比較軟,加工沒弄好容易刮傷或變形。 搞陽極處理之後,那個質感真的沒話說。 高階音響、Mac Pro那種追求極致外觀的產品,或是需要輕量化的設備。

板材厚度的選擇,通常 `0.8mm` 到 `1.2mm` 是一般機殼最常見的範圍。低於 `0.8mm` 的話,機殼會感覺很軟、沒質感,甚至會因為風扇運轉而產生共振噪音。超過 `1.2mm` 雖然堅固,但重量和成本都會直線上升,而且加工也更費力。

不同鍍鋅鋼板的表面紋理差異
不同鍍鋅鋼板的表面紋理差異

第三步:加工方式,決定你的設計能不能實現

選好材料,就要想怎麼把它變成你要的形狀。最主流的就是板金加工,主要有幾種方法:

  • 雷射切割 (Laser Cutting):精度超高,什麼奇形怪狀的孔都能切。 很適合用在打樣、小批量生產,或是有很多複雜曲線的設計上。缺點就是,跟傳統沖床比起來,大量生產時速度比較慢、成本也高一點。
  • NCT 沖床 (Numerical Control Turret Punch Press):你可以想像成一個有很多標準形狀模具的巨大轉盤,靠電腦控制快速沖壓出圓孔、方孔、散熱孔等等。 如果你的設計都是用標準孔洞,那NCT的速度非常快,成本也低,超級適合大量生產。但如果要開特殊形狀,就要另外開模,那又是一筆費用。
  • 折床 (Bending):把切好的平板,按照設計圖的角度折起來,變成有立體結構的箱體。這一步很考驗師傅的經驗,角度、順序都要對,不然尺寸就會跑掉。

所以你看,設計的時候就要想好。如果我設計了一個超酷的網孔圖案,但它不是NCT標準模具可以沖出來的,那工廠就只能用雷射切割慢慢跑,報價單上的數字可能就會讓你倒抽一口氣。

當國際標準遇上台灣在地製造

聊到製造,就不能不提國際大廠跟台灣在地工廠的差異。像Dell這種國際品牌,他們的機箱設計非常模組化、標準化。 很多地方都用卡扣、免工具安裝的設計,這是為了方便全球的大規模生產和後續維護。 他們的設計文件非常完善,公差要求極為嚴格,一切都是為了「可複製性」。

但反過來看,台灣有很多很厲害的中小型客製化板金廠或機殼廠。 他們的優勢在於「彈性」。 可能你只有幾十台、幾百台的需求,或是你的設計有一些比較特殊的想法,他們都有辦法幫你實現。他們不像大廠有那麼多繁瑣的流程,可以直接跟工程師溝通修改,打樣速度也快。 這種少量多樣、高彈性的服務,正是台灣製造的強項。 所以,如果你的案子是標準規格、量非常大,找大廠的供應鏈體系可能比較適合;但如果是客製化、小批量的產品,台灣在地的工廠絕對是很有競爭力的選擇。

高階鋁製機箱與標準鋼製機箱的外觀質感對比
高階鋁製機箱與標準鋼製機箱的外觀質感對比

現實的骨感:那些設計時沒想到的鳥事

理論上都規劃好了,但實際生產總會冒出一堆問題。我自己就遇過,設計圖上一個折彎看起來很簡單,結果工廠說他們的折刀不夠長,或是跟旁邊的結構干涉到,根本折不出來,最後只能改設計。

還有就是成本。例如,你為了好看,選了不鏽鋼髮絲紋的板材,結果發現這種板材有方向性,工廠排版時如果沒對齊紋路方向,做出來的成品東一塊西一塊,質感全毀。但如果要對齊,就會浪費很多板材,成本又上去了。這些都是在畫圖時很難體會到,但卻是製造端每天都在面對的現實。

所以,一個好的機構設計師,腦子裡不只要有CAD軟體,還要有一間虛擬工廠,隨時模擬這個東西到底能不能被「合理地」製造出來。不然設計再漂亮,都只是紙上談兵。

聊了這麼多,其實就是想分享一下,一個看似簡單的「鐵盒子」,背後牽涉到的學問比想像中多得多。下次在挑選機殼,或甚至自己有機會設計產品時,除了外觀,或許可以多想一下這些藏在細節裡的東西。

最後,想問問大家,如果你是DIY組裝電腦,你個人會把預算優先花在散熱效能上,還是更在意外觀、板材質感跟靜音效果?在下面留言聊聊你的看法吧!

🎁 解鎖本篇限定Google外掛

輕鬆搞定機箱設計小工具:散熱&板材&加工方式一鍵記錄懶人包!

你是不是每次規劃新機箱,散熱配置、板材厚度、加工方式都亂成一團?之前我就老是被同事追問:欸上次那個設計板厚幾mm?雷射還是沖壓?結果我翻了半天郵件和紙本草稿超崩潰!現在我有法寶啦~只要用 Google Sheet+這套工具,不管是散熱孔位置還是板材厚度規格,一輸入就能自動統整還能回頭查歷史紀錄,根本就是工程師的好朋友!

直接複製這段程式,馬上讓表單超有料!

這個工具讓你一邊填規格一邊記錄設計歷程,還能統計常用的板材厚度跟加工方式,超適合工程團隊或個人專案。


// === 機箱設計小幫手:散熱、板材、加工一把抓 ===

function doGet(e) {
  var html = [];
  html.push('<html><head>');
  html.push('<style>body{font-family:sans-serif;}');
  html.push('.row{margin:8px 0;}');
  html.push('label{width:110px;display:inline-block;}');
  html.push('input,select{margin-right:12px;}');
  html.push('.btn{padding:5px 14px;background:#337ab7;color:#fff;'
    + 'border:none;border-radius:4px;cursor:pointer;}');
  html.push('table{margin-top:18px;width:100%;border-collapse:collapse;}');
  html.push('th,td{border:1px solid #ddd;padding:6px;text-align:center;}');
  html.push('th{background:#f1f1f1;}');
  html.push('</style></head>');
  html.push('<body>');
  html.push('<h3>機箱設計重點懶人表單</h3>');
  html.push('<form id="mainForm">');
  // 輸入欄位
  html.push('<div class="row">'
    + '<label>設計名稱:</label>'
    + '<input name="name" required></div>');
  html.push('<div class="row">'
    + '<label>散熱配置:</label>'
    + '<select name="cooling">'
    + '<option>上進下出</option>'
    + '<option>前進後出</option>'
    + '<option>雙側流動</option>'
    + '<option>被動式對流</option>'
    + '</select></div>');
  html.push('<div class="row">'
    + '<label>板材厚度:</label>'
    + '<input name="thickness" type="number" min="0.5" max="5" step="0.1" '
    + 'placeholder="mm" required><span>mm</span></div>');
  html.push('<div class="row">'
    + '<label>加工方式:</label>'
    + '<select name="process">'
    + '<option>沖壓</option>'
    + '<option>雷射</option>'
    + '<option>CNC</option>'
    + '<option>折彎</option>'
    + '</select></div>');
  html.push('<div class="row">'
    + '<label>備註:</label>'
    + '<input name="note" style="width:220px;"></div>');
  html.push('<button type="button" class="btn" '
    + 'onclick="submitForm()">儲存紀錄</button>');
  html.push('</form>');
  html.push('<hr><h4>歷史紀錄</h4>');
  html.push('<div id="records">載入中...</div>');
  html.push('<hr><div id="stats"></div>');
  // Script
  html.push('<script>');
  html.push('function submitForm(){');
  html.push('var fd = document.getElementById("mainForm");');
  html.push('var data = {};');
  html.push('for(var i=0;i<fd.elements.length;i++){');
  html.push('var el=fd.elements[i];if(el.name)data[el.name]=el.value;}');
  html.push('google.script.run.withSuccessHandler(refreshAll).addRecord(data);}');
  html.push('function refreshAll(){refreshRecords();refreshStats();}');
  html.push('function refreshRecords(){');
  html.push('google.script.run.withSuccessHandler(function(res){');
  html.push('document.getElementById("records").innerHTML = res;});');
  html.push('}');
  html.push('function refreshStats(){');
  html.push('google.script.run.withSuccessHandler(function(txt){');
  html.push('document.getElementById("stats").innerHTML = txt;});}');
  html.push('window.onload=function(){refreshAll();}');
  html.push('</script>');
  html.push('</body></html>');
  return HtmlService.createHtmlOutput(html.join(''));
}

// 新增一筆紀錄進 Google Sheet
function addRecord(data){
  var sheet = getSheet_();
  var arr = [new Date(), data.name, data.cooling, data.thickness, 
    data.process, data.note];
  sheet.appendRow(arr);
}

// 讀取歷史紀錄 (最近 10 筆)
function getRecords_(){
  var sheet = getSheet_();
  var vals = sheet.getDataRange().getValues();
  var len = vals.length;
  var html = ['<table><tr>'
    +'<th>日期</th><th>名稱</th><th>散熱</th>'
    +'<th>厚度</th><th>加工</th><th>備註</th></tr>'];
  for(var i=Math.max(1,len-10);i<len;i++){
    html.push('<tr>');
    for(var j=0;j<6;j++) html.push('<td>'+vals[i][j]+'</td>');
    html.push('</tr>');
  }
  html.push('</table>');
  return html.join('');
}

// 統計板材厚度與加工方式出現次數
function getStats_(){
  var sheet = getSheet_();
  var vals = sheet.getDataRange().getValues();
  var thickCnt={}, procCnt={};
  for(var i=1;i<vals.length;i++){
    var t=vals[i][3], p=vals[i][4];
    thickCnt[t]= (thickCnt[t]||0)+1;
    procCnt[p]= (procCnt[p]||0)+1;
  }
  var html = [];
  html.push('<h4>板材厚度統計(mm)</h4>');
  html.push('<ul>');
  for(var k in thickCnt)
    html.push('<li>'+k+':'+thickCnt[k]+' 次</li>');
  html.push('</ul><h4>加工方式統計</h4><ul>');
  for(var k in procCnt)
    html.push('<li>'+k+':'+procCnt[k]+' 次</li>');
  html.push('</ul>');
  return html.join('');
}

// 提供給前端呼叫的封裝
function getSheet_(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('設計紀錄');
  if(!sheet){
    sheet = ss.insertSheet('設計紀錄');
    sheet.appendRow(['時間','名稱','散熱','厚度','加工','備註']);
  }
  return sheet;
}
function getRecords(){ return getRecords_(); }
function getStats(){ return getStats_(); }

只要 6 步驟,超懶人部署教學!

別擔心,跟著做一定成!我第一次玩也怕搞錯,後來熟了就很順~

  1. 打開 Apps Script 編輯器
    先在 Google 試算表開新檔,再點上方「擴充功能」→「Apps Script」
    新頁面會自動跳出 Apps Script 編輯器。
    ⚠️ 我之前在公司帳號用,直接卡住,被 IT 擋掉了!公司有鎖權限就回家用~
  2. 清空全部,把程式貼進去
    按 Ctrl+A 全選 → 刪除 → 再 Ctrl+V 貼上上面的程式碼
    白色區域一次貼好,不要留舊的 function。
    ⚠️ 一定要整段全貼,不然會一直報錯找不到 function!
  3. 記得先存檔
    點磁碟片圖示(左上工具列),或者按 Ctrl+S
    第一次會問你專案名稱,隨便輸入一個就好,不影響功能
    ⚠️ 沒存檔就部署會出現奇怪的紅字,上次我就傻傻重新弄一次!
  4. 部署成網頁應用程式
    點右上藍色「部署」→「新增部署作業」
    彈出設定畫面,跟著做:
    1. 點齒輪選「網頁應用程式」
    2. 執行身分選「我」
    3. 誰可以存取選「任何人」
    4. 再點「部署」
    ⚠️ 「誰可以存取」一定要「任何人」!我有朋友忘了,自己能用但同事都開不起來!
  5. 處理授權畫面
    依流程點下去授權,很快就會跳出警告
    看到紅色「Google 尚未驗證這個應用程式」不用怕
    點「進階」→「前往 XXX(不安全)」→「允許」
    ⚠️ 我第一次看到紅色大警告真的嚇到,不是病毒啦,只是自己寫的程式沒送審!
  6. 複製網址,馬上使用
    部署完成會給一個網址,複製那串 https://script.google.com/...
    貼到瀏覽器就能看到機箱設計紀錄表啦!
    ⚠️ 有改程式記得要重新部署,不然永遠只看到舊版本。我就被這個坑過三次(哭)
⚠️ 關於紅色授權警告:不用怕,這超常見!
只要是你自己寫的 Apps Script 都會被 Google 警告「尚未驗證」,這是預防陌生人惡意程式啦!因為你不是從 Marketplace 下載,也沒送 Google 官方審核,所以才會出現紅色畫面。只要你確定程式是自己貼的,照「進階」→「前往(不安全)」→「允許」就沒問題,我每次都這樣過關的,真的沒事!

實戰故事,這樣用超方便!

像我之前幫客戶做伺服器機箱,每次打樣都會小改版,散熱方向和板厚都會調,設計歷史超難對。後來用這工具,團隊每人填一筆,不只每次改版細節超清楚,還能一眼看出大家最愛用哪個板材厚度,連供應商問加工方式統計時,我也是一秒截圖給他。

另一個實際案例:有同事手滑選錯加工方式,隔天想查歷史資料,直接開這個表一看紀錄,比在群組裡吵半天還快,省超多時間!搞設計的朋友,這種自動化記錄真的必備啊!

Related to this topic:

Comments