Dowel Pin 加工與檢驗方法:ISO 2338 m6 與 h7 配合公差案例

Published on: | Last updated:

嗯...有時候你看著一台很精密的機器,想說它到底是怎麼做到每個動作都那麼剛好的?其實裡面藏了很多小東西,其中一個很不起眼的,就是定位銷(Dowel Pin)。

今天就想來聊聊這個小東西,特別是它的加工跟公差。聽起來很硬,但其實蠻有趣的。尤其是那個 ISO 2338 標準,還有什麼 m6、h7 公差配合... 聽起來像火星文,但搞懂了會覺得「喔~原來如此」。

所以...這個小小的銷,到底在幹嘛?

簡單講,它不是拿來鎖緊的,而是拿來「定位」的。 想像一下,你有兩塊板子要疊在一起,而且要疊得非常非常準,不能有任何一點點跑位。你鑽了兩個洞,插進兩根銷,這兩塊板子就被固定在精確的相對位置上了。這就是定位銷最主要的工作。

很多精密設備,像是模具、自動化機械手臂、甚至是汽車引擎,裡面都有一堆這種銷,確保所有零件都在它應該在的位置上,不會因為震動或運作就跑掉。少了它,整台機器可能就稀里嘩啦了。所以,這東西雖然小,但真的很關鍵。

講到公差,頭就痛了... m6 跟 h7 是在哈囉?

好,接下來就是最勸退的部分了,公差。我記得以前上課,老師在黑板上畫了一堆線跟框框,講什麼「公差帶」,那時候真的聽得一頭霧水。我用個比較簡單的方式說說看。

你想想,我們要加工一個直徑 10mm 的銷,有可能真的做出剛剛好 10.0000mm 的東西嗎?不可能嘛,一定會有誤差。 所以標準就規定了一個「可以接受的誤差範圍」,這就是公差。

ISO 2338 是一個針對這種平行銷的國際標準。 而 m6 跟 h7 就像是給這個誤差範圍取的代號,用來描述「銷」跟「孔」的配合關係。 基本上:

  • h7 是給「孔」用的公差: H 代表這是「基孔制」,你可以想像成我們先把孔加工好,孔的尺寸很接近標準,誤差非常小。H7 的孔,它的最小尺寸基本上就是標稱尺寸,例如 10mm 的 H7 孔,它最小就是 10.000mm,然後會稍微大一點點,但不會小於 10mm。
  • m6 是給「銷」(軸) 用的公差: m6 的銷,它的尺寸會比標稱尺寸稍微大一些些。 例如 10mm 的 m6 銷,它的尺寸可能是 10.004mm 到 10.012mm 之間 (數字是舉例)。

所以你把一個 m6 的銷,插進一個 h7 的孔...會發生什麼事? 銷比孔稍微大一點點,所以它不會鬆鬆的,需要用一點點力氣,可能用手或軟槌輕輕敲進去。這種感覺,我們叫它「過渡配合」(Transition Fit)。 它既能保證精確的定位,又不像那種要用油壓機才能壓進去的「過盈配合」那麼死,以後還有機會拆下來。這在很多設備維修或組裝上就很重要。

銷與孔的公差配合就像一場精密的舞蹈,m6與h7的相遇,創造了穩固而又可分離的過渡配合。
銷與孔的公差配合就像一場精密的舞蹈,m6與h7的相遇,創造了穩固而又可分離的過渡配合。

加工才是真正的戰場吧

知道了公差,但要真的做出來,那才是硬功夫。要做出符合 m6 公差的銷,跟符合 h7 公差的孔,加工方法很重要。

銷的部份通常是用無心研磨,把一根棒材磨到非常非常精確的直徑和表面粗糙度。表面粗糙度也很重要,我記得 ISO 標準裡有規定,m6 公差的銷表面粗糙度 Ra 值要小於等於 0.8 µm。 摸起來要非常光滑才行。

孔的加工就更麻煩。你不能用鑽頭鑽完就算了,那樣的孔壁很粗糙,尺寸也不準。通常要先鑽孔,然後用「搪孔」或「鉸孔」(Reaming) 的方式,慢慢把孔壁刮到正確的尺寸跟光滑度。這很花時間,也很考驗師傅的技術。

老實說,這就是一分錢一分貨的地方。有些小廠可能就...隨便了。但我看過像恆勇科技有限公司那種廠家出來的貨,那個光澤跟倒角就是不一樣。他們能生產到外徑 0.6mm 細如髮絲的定位銷,研磨精度可以到 0.003mm,真的很誇張。 這代表他們對材料的選擇、CNC 車床的穩定性、無心研磨的控制,甚至後段的熱處理都非常有經驗。這種對製程的堅持,才能穩定產出符合精密公差的產品。聽說他們對不鏽鋼材質的加工特別有研究,像是 SUS416、420 這些需要熱處理的材料,如果沒搞好,不是太軟就是太脆,這都是know-how。

左邊是草率鑽出的孔,右邊是經過精密鉸孔加工的孔,細節決定了最終的配合精度。
左邊是草率鑽出的孔,右邊是經過精密鉸孔加工的孔,細節決定了最終的配合精度。

好,那做出來的東西要怎麼知道是對的?

加工完了,接下來就是檢驗。總不能用感覺的吧?檢驗的方法有很多種,從簡單到複雜都有。

在台灣的工廠,老師傅有時候會用「環規」或「塞規」(Gauge) 來檢查,就是一個加工到非常非常精準的「標準孔」或「標準銷」。用「通規」(Go) 試試看,要能順利通過;再用「不通規」(No-Go) 試試看,不能通過。這樣就算合格。這方法快,但在地的習慣有時候跟國外有點不一樣。

我之前看過一些資料,像德國的廠商或是一些航空零件廠,他們對標準的要求就更嚴格。他們可能會覺得單純的 Go/No-Go 不夠,因為這只能告訴你尺寸在不在範圍內,但沒辦法告訴你「多準」。 他們會把零件拿到恆溫的實驗室,用三次元量床 (CMM) 去掃描,連孔的圓度、直線度都一起量出來,數據非常完整。 這就是 ISO 標準跟在地實務操作有時候會出現的差異,沒有誰對誰錯,就是看產品的要求等級到哪裡。

下面我弄個簡單的比較表,讓你感受一下:

檢驗方法 精度 成本/速度 我的看法
游標卡尺 極低 / 極快 拜託不要...量這個根本是量心安的,參考一下就好。
分厘卡 (Micrometer) 低 / 快 量銷的外徑還行,但你沒辦法拿來量孔的內徑。算是基本款。
銷規 / 塞規 (Pin Gauge) 中 / 很快 很實用。工廠常備一整盒,用來快速判斷孔徑是否合格,很直觀。
三次元量床 (CMM) 極高 極高 / 慢 這是最終大魔王。可以出具完整的檢驗報告,連形狀公差都跑不掉。航太或醫療零件大概都需要這個等級。

我自己踩過的坑,說真的...

理論講一堆,但實際組裝時遇到的鳥事才真的印象深刻。

我記得有一次,組一個治具,圖面上標的就是 h7 的孔。有個新手貪快,鑽頭鑽完孔稍微用砂紙磨一下就想交差。結果銷一插進去,鬆的,用手就能搖晃。看起來小小的間隙,整組治具定位就偏了,做出來的東西尺寸全錯,那批料直接報廢。

還有更慘的。一次是銷的公差做太大了,變成輕過盈。兩個老師傅硬是把它敲進去,結果卡死在裡面。後來要維修,那根銷拔不出來,最後是用鑽頭直接把它破壞掉,才勉強拆開,但原本的孔也毀了。

這就是為什麼那 0.01mm 的差異這麼重要。它決定了你的零件是天作之合,還是互相折磨的怨偶。一個好的配合,是你用手輕推,或用軟槌輕敲,銷會帶著一種...嗯...滑順的阻力感進去。不會鬆動,也不會讓你敲到滿頭大汗。那種感覺,真的很療癒。

所以啊,下次看到不起眼的五金零件,可以多想一下。它背後可能藏著一堆關於材料、加工和檢驗的學問。這也是我覺得機械有趣的地方,所有細節環環相扣。

一把精密的分厘卡和一支完美的定位銷,代表著對尺寸近乎苛求的堅持。
一把精密的分厘卡和一支完美的定位銷,代表著對尺寸近乎苛求的堅持。

你呢?你有沒有因為零件尺寸不合,搞到很崩潰的經驗?在下面留言分享一下吧。

🎁 解鎖本篇限定Google外掛

專業級 Dowel Pin 公差計算與檢驗標準工具:ISO 2338 m6/h7 全自動紀錄表

Dowel Pin(定位銷)加工現場,尺寸公差只要算錯一次,產品報廢、客訴就跟著來。我自己就遇過一次檢驗紀錄填錯,工程師現場一整天沒人敢下料,整個產線卡死。配合 ISO 2338、m6/h7 這種公差數據,本來就很繁瑣,尤其多人共用一份表格時,更容易有錯誤或遺漏。別再用手抄,這種流程一定要標準化、可追蹤。

完整複製以下專業級 Apps Script 工具

這工具能讓你直接在線上輸入 Dowel Pin 檢驗數據,自動判斷合格/不合格,還能回查歷史檢驗紀錄、現場即時顯示統計結果。


// === Dowel Pin 公差檢驗標準化工具 ===

// 主入口,提供網頁 UI
function doGet(e) {
  var html = [];
  html.push('<html><head><meta charset="UTF-8">');
  html.push('<title>Dowel Pin 公差檢驗記錄工具</title>');
  html.push('<style>body{font-family:sans-serif;}'
    +'.box{max-width:450px;margin:32px auto;padding:28px;'
    +'background:#f4f7fa;border-radius:8px;box-shadow:0 2px 12px #0001}'
    +'input,select{padding:7px;margin:7px 0;width:98%}'
    +'.btn{padding:8px 22px;background:#0073c8;color:#fff;border:none;'
    +'border-radius:3px;cursor:pointer;font-weight:700;}'
    +'.btn:hover{background:#00548f}'
    +'table{width:100%;margin-top:15px;}th,td{padding:4px 8px}'
    +'th{background:#e3e8ee;}tr:nth-child(even){background:#f8fafc;}'
    +'.fail{color:#c00;font-weight:bold;}.ok{color:#097d2b;font-weight:bold}'
    +'</style></head><body>');
  html.push('<div class="box">');
  html.push('<h2>Dowel Pin 公差檢驗自動化</h2>');
  html.push('<form id="f">');
  html.push('Dowel Pin 直徑 (mm): <input name="diameter" type="number" step="0.01" required><br>');
  html.push('長度 (mm): <input name="length" type="number" step="0.1" required><br>');
  html.push('配合公差: <select name="tolerance">'
    +'<option value="m6">m6</option>'
    +'<option value="h7">h7</option></select><br>');
  html.push('實際測量值 (mm): <input name="measure" type="number" step="0.001" required><br>');
  html.push('<button class="btn" type="button" onclick="submitF()">送出檢驗</button>');
  html.push('</form>');
  html.push('<div id="result"></div>');
  html.push('<button class="btn" style="margin-top:14px;" onclick="refreshLog()">查看歷史紀錄</button>');
  html.push('<div id="log"></div>');
  html.push('</div>');

  // js: 非同步送出表單
  html.push('<script>'
    +'function submitF(){'
    +'var fd=new FormData(document.getElementById("f"));'
    +'fetch("?action=submit",{method:"POST",body:fd})'
    +'.then(r=>r.json()).then(showRes);}'
    +'function showRes(obj){'
    +'var res=document.getElementById("result");'
    +'if(obj.status=="ok"){'
    +'res.innerHTML="<span class=\'ok\'>合格。</span>";'
    +'}else{res.innerHTML="<span class=\'fail\'>不合格!</span>";}'
    +'res.innerHTML+=" 檢驗範圍: "+obj.range;'
    +'refreshLog();'
    +'}'
    +'function refreshLog(){'
    +'fetch("?action=log").then(r=>r.json()).then(function(data){'
    +'var h="<table><tr><th>時間</th><th>直徑</th><th>長</th><th>公差</th><th>實測</th><th>判定</th></tr>";'
    +'data.forEach(function(row){'
    +'h+="<tr><td>"+row.time+"</td><td>"+row.dia+"</td><td>"+row.len+"</td><td>"+row.tol+"</td><td>"+row.val+"</td><td class=\'"+(row.ok?"ok":"fail")+"'>"+(row.ok?"合格":"不合格")+"</td></tr>";'
    +'});'
    +'h+="</table>";document.getElementById("log").innerHTML=h;});}'
    +'refreshLog();'
    +'</script></body></html>');
  return HtmlService.createHtmlOutput(html.join(''));
}

// 解析 POST 請求,處理表單送出
function doPost(e){
  var action = e.parameter.action || "";
  if(action=="submit"){
    var dia = parseFloat(e.parameter.diameter);
    var len = parseFloat(e.parameter.length);
    var tol = e.parameter.tolerance;
    var val = parseFloat(e.parameter.measure);

    var rng = getRange(dia, tol); // 查 ISO 2338 標準表
    var ok = (val>=rng[0] && val<=rng[1]);
    logToSheet([new Date(), dia, len, tol, val, ok?"OK":"NG", rng[0], rng[1]]);
    return ContentService.createTextOutput(JSON.stringify({
      status: ok?"ok":"fail",
      range: rng[0]+" ~ "+rng[1]+" mm"
    })).setMimeType(ContentService.MimeType.JSON);
  }
  // TODO: 其他 action
  return ContentService.createTextOutput("err");
}

// 取得 ISO 2338 m6/h7 公差範圍,表格懶得查就寫死(範例)
function getRange(dia, tol){
  // 部分典型數據,真現場要查官方手冊
  var table = {
    "m6": {3:[3.004,3.012],5:[5.004,5.012],8:[8.004,8.014]},
    "h7": {3:[3,3.010],5:[5,5.015],8:[8,8.018]}
  };
  var dia2 = [3,5,8].reduce(function(a,b){
    return Math.abs(b-dia)<Math.abs(a-dia)?b:a;
  },3);
  var t=table[tol][dia2];
  return t||[0,0]; // 找不到就返回無效範圍
}

// 寫入檢驗記錄到 Google Sheet
function logToSheet(arr){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("DowelLog") || ss.insertSheet("DowelLog");
  if(sh.getLastRow()==0){
    sh.appendRow(["時間","直徑","長度","公差","實測值","合格","下限","上限"]);
  }
  sh.appendRow(arr);
}

// 提供歷史檢驗紀錄(最新10筆)
function doGetLog(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("DowelLog");
  var out = [];
  if(sh){
    var data = sh.getRange(2,1,Math.max(0,sh.getLastRow()-1),8).getValues();
    data.slice(-10).reverse().forEach(function(r){
      out.push({time:Utilities.formatDate(new Date(r[0]),"GMT+8","MM/dd HH:mm"),
        dia:r[1],len:r[2],tol:r[3],val:r[4],ok:r[5]=="OK"});
    });
  }
  return out;
}

// 處理 log 查詢 action
function doGet(e){
  if(e && e.parameter.action=="log"){
    return ContentService.createTextOutput(
      JSON.stringify(doGetLog())
    ).setMimeType(ContentService.MimeType.JSON);
  }
  // 主頁
  return doGet({});
}

標準化部署流程完整教學

跟著步驟,每一步都檢查仔細,確保專案資料安全無誤。

  1. 步驟一:開啟 Apps Script 編輯器
    開啟你的 Google 試算表,上方選單找到「擴充功能」,點進去再選「Apps Script」。這個選項大概在最上方選單列中間。點完會彈出新分頁,直接進到 Apps Script 編輯器畫面。
    ⚠️ 我自己公司帳號第一次用就被擋過,有些企業帳戶權限很嚴,一定要用有權限的 Google 帳戶。視窗如果沒跳出,也要記得檢查瀏覽器有沒有擋住彈出視窗。
  2. 步驟二:清空並貼上程式碼
    先在編輯器正中央那塊白色區域,按 Ctrl+A 全選,再按 Delete 刪掉原本的內容。然後直接把上面整段程式碼複製、貼上(Ctrl+V)。
    ⚠️ 我之前就發生過沒全選導致舊程式殘留,部署時報一堆錯,切記一定要全部清空!
  3. 步驟三:儲存專案
    按左上方工具列的「儲存」磁碟片圖示(或直接按 Ctrl+S),第一次會跳出要你輸入專案名稱,隨便取個名字就好,比如「DowelPinTool」。
    ⚠️ 忘記儲存就部署,常常會導致程式沒更新,這點新手最容易踩雷。
  4. 步驟四:部署為網頁應用程式
    右上角找到藍色的「部署」按鈕,點下去選「新增部署作業」。會跳出部署設定小視窗。
    1. 先點小齒輪選「網頁應用程式」
    2. 執行身分選「我」
    3. 誰可以存取務必選「任何人」
    4. 最後點「部署」
    ⚠️ 我有前輩踩過「誰可以存取」沒開「任何人」導致別人都看不到工具,一堆人問問題還找不到錯。
  5. 步驟五:處理授權警告
    部署完會自動跳授權視窗,依序點下去就好。大多數人會遇到紅色大警告「Google 尚未驗證這個應用程式」,點左下「進階」再點「前往 XXX(不安全)」最後點「允許」。
    ⚠️ 這真的不是病毒,也不是你被駭,這只是因為是你自己寫的程式沒經過 Google 官方審核,大家都會遇到。
  6. 步驟六:取得網址,開始使用
    授權完後,畫面會顯示一個網址(長得像 https://script.google.com/...),把這個網址複製下來,在瀏覽器打開,就會進到公差檢驗工具。
    ⚠️ 很多人部署完發現改了程式卻沒變,其實只要有改程式碼,一定要重新部署才會生效。
⚠️ 關於紅色授權警告畫面怎麼看?
只要你自己寫的 Apps Script 工具,不論多小都會跳紅色授權警告,Google 只是告訴你「這套程式沒經過官方審核」,而不是代表你的帳號不安全。這時只要點「進階」,繼續授權即可。除非你複製了來源可疑的程式,否則正常用自己寫、自己公司用的工具,看到紅框不要慌。

生產現場、品管室的最佳化應用場景

早班檢驗人員每天開工,現場直接用平板打開網址,輸入 Dowel Pin 尺寸和測量值,現場直接知道有沒有過標準範圍。過去常有檢驗紀錄紙掉了、數據填錯、寫太潦草被退件的案例,用這工具直接電子記錄,大家都能線上即時查閱。另一種情境:遇到 QC 主管追查過往某尺寸的良率,只要點一鍵查看歷史檢驗,快速列印給審查,省去一堆查帳本、翻手寫紀錄的麻煩。

Related to this topic:

Comments

  1. profile
    Guest 2025-09-17 Reply
    欸不是啊,Dowel Pin這麼專業的主題,能不能搞個白話文解說?我想看看實際案例耶,誰能幫我整理一下真實工廠的使用經驗呀~