위대한 개인은 없고 위대한 팀만 있습니다. 팀이 협력하여 1단계 PCB CAM 자동화 프로젝트는 다음과 같이 진행되었습니다. 순 처리 그리고 드릴 처리 가 완료되었습니다. 다음으로 PCB 규칙 엔진으로 넘어가 보겠습니다. 여기서는 PCB 엔지니어링의 드릴 보정에 대해 설명합니다. PCB 엔지니어링 개발자는 이 기능이 무엇이고 왜 작동하는지 알아야 합니다. 아래에서 드릴 보정에 대한 핵심 사항을 공유합니다.
1. 드릴 크기를 보상하는 이유는 무엇인가요?
고객이 제공하는 PCB 파일에 있는 구멍 크기는 일반적으로 final 구멍 크기. PCB 생산 과정에서 구멍 내부에 구리가 도금됩니다(또는 구멍에 HASL, ENIG, OSP 등의 표면 마감이 적용됨). 이렇게 하면 구멍이 작아집니다. 최종 구멍 크기가 요구 사항을 충족하는지 확인하기 위해 CAM 단계에서 드릴 크기를 보정합니다. 이것이 드릴 보정입니다.
실제 사례:
최종 구멍 크기: 1.00 mm. 표면 마감: ENIG (니켈 두께 2.54 µm, 금 두께 0.0254 µm). IPC 클래스 II를 따르며 평균 도금 구리 두께는 다음과 같습니다. 20 µm. 를 사용하는 경우 0.10 mm 를 보상 값으로 선택하면 CAM 팀이 1.10 mm 드릴 비트.

2. 드릴 보상은 어떻게 하나요?
먼저, 드릴 보상을 위한 세 가지 주요 매개 변수를 명확히 파악해야 합니다:
(1) 드릴 비트 증분,
(2) 보상 가치,
(3) 스텝업 임계값(사전 값).
이 세 가지가 보상 적용 방법을 결정합니다.
1) 드릴 비트 증분
이는 회사가 구매하는 드릴 비트에 따라 다릅니다. 업계 공통 증분은 다음과 같습니다. 50 µm. 일반적인 드릴 크기는 다음과 같습니다. 0.10 mm 에 6.35mm. 드릴 비트 사이의 일반적인 최소 단계는 0.05 mm. 따라서 드릴 라이브러리에는 다음과 같은 크기가 있습니다. 0.10밀리미터, 0.15밀리미터, 0.20밀리미터, 0.25밀리미터, 등입니다.
2) 보상 가치
프로세스 팀은 공장 테스트 결과를 바탕으로 보상 규칙을 설정합니다. 보상 값은 업계에 따라 크게 다르지 않습니다. 일반적인 규칙:
-
HASL이 있는 보드 (스프레이 주석): 0.15mm 보정.
-
HASL이 없는 보드 (ENIG, 침지 주석, OSP 등): 0.10 mm 보정.
3) 스텝업 임계값(사전값)
프로세스 팀은 반올림 규칙과 유사하게 드릴 비트를 선택하는 전략도 설정합니다. 예를 들어 증분이 다음과 같은 경우 20 µm, 로 나눈 후 나머지가 증분으로 나눈 값인 경우 ≥ 20 µm, 를 입력하면 50µm를 반올림하고, 그렇지 않으면 더 낮은 크기를 유지합니다.
예시:
최종 구멍 크기 = 1.025 mm, 보상 = 0.10 mm, 이므로 보정된 크기 = 1.125mm. 하지만 1.125mm 라이브러리에서 드릴합니다. 스텝업 규칙을 사용합니다. 0.05mm 스텝과 비교했을 때 나머지 1.125mm는 다음과 같습니다. 25 µm. 이후 25µm > 20µm, 를 50µm로 반올림하고 1.15 mm 드릴.
실제 드릴 보상 사례
가정: 드릴 증분 = 50 µm, 스텝업 임계값 = 20 µm
| 원래 구멍 | 보상 | 보상 후 | 정수 부분 | 나머지 | 선택한 드릴 |
|---|---|---|---|---|---|
| 1.025 mm | 0.10 | 1.125mm | 1.10 | 0.025 mm | 1.15 mm |
| 1.016 mm | 0.10 | 1.116 mm | 1.10 | 0.016 mm | 1.10 mm |
선택한 드릴 크기를 계산하는 방법
드릴 증분을 사용하여 보정된 구멍 크기를 정수 부분과 나머지 부분으로 나눕니다:
Take 1.125mm 를 예로 들 수 있습니다:
1.125 / 0.05 = 22.5 → 바닥에서 22까지 → 정수 부분 = 22 × 0.05 = 1.10 mm.
나머지 = 1.125 % 0.05 = 0.025 mm.
그런 다음 나머지를 스텝업 임계값(예: 20µm)과 비교합니다:
-
나머지가 임계값을 초과하는 경우 드릴 크기 = 정수 부분 + 0.05mm입니다.
-
나머지가 임계값 이하인 경우 드릴 크기 = 정수 부분 + 0.00mm입니다.
스텝업 임계값에 대한 요약
드릴 증분값이 50 µm, 를 사용하면 스텝업 임계값이 중요합니다. 보정된 드릴 크기의 두 번째 보정을 수행합니다. “스텝업” 또는 “유지” 여부를 결정합니다. 이 임계값을 변경하면 선택한 드릴 크기가 직접 변경됩니다.
더 많은 예제(드릴 증분 = 50µm):
| 원래 구멍 | 보상 | 컴파일 후. | 정수 | 나머지 | 스텝업 임계값 | 드릴 |
|---|---|---|---|---|---|---|
| 1.022 mm | 0.1 | 1.122 mm | 1.10 | 0.022 mm | 0.02 | 1.15 mm |
| 1.022 mm | 0.1 | 1.122 mm | 1.10 | 0.022 mm | 0.025 | 1.10 mm |
스텝업 임계값 설정에 대한 개인적인 견해
장단점: 보정 후 최종 구멍이 조금 더 크면 적어도 부품을 삽입할 수 있습니다. 구멍이 너무 작으면 부품을 삽입할 수 없습니다. 따라서 일반적으로 스텝업 임계값을 다음과 같이 설정합니다. 20 µm 대신 25 µm. 정확한 선택은 각 프로세스 및 보상 값과 일치해야 합니다.
보상 가치와 결합: 보상이 다음과 같은 HASL이 있는 보드의 경우 0.15 mm, 를 사용하면 이미 약간 “과도하게 보정”되어 최종 구멍이 약간 커지는 경향이 있습니다. 이 경우 스텝업 임계값을 25 µm 도 사용할 수 있습니다. 드릴을 선택할 때 “가장 가까운” 규칙을 사용합니다.
3. 보정 후 최종 구멍 크기가 요구 사항을 충족하는지 확인하는 방법은 무엇인가요?
방법 1: 특수 드릴 비트 구매
표준 드릴 증분은 다음과 같습니다. 50 µm (1.00, 1.05, 1.10, 1.15mm와 같은 0.05mm 단계). PTH 공차가 ±3밀리인 경우 50마이크로미터 드릴 세트로 공차를 커버할 수 있습니다. 공차가 이보다 작으면 특수 드릴 비트를 사용하세요.
예제 1 - 50µm와 25µm 단위로 비교하세요:
원래 구멍 = 0.922 mm, 보상 = 0.10 mm, 보정 크기 = 1.022 mm.
| 원본 | 보상 | 보상 | 증분 | 선택한 드릴 |
|---|---|---|---|---|
| 0.922 | 0.10 | 1.022 | 0.05 (50 µm) | 1.05 |
| 0.922 | 0.10 | 1.022 | 0.025(25µm) | 1.025 |
차이: 1.050 - 1.022 = 0.028mm; 1.025 - 1.022 = 0.003mm. 차이가 작을수록 좋습니다. 1.025 mm (25µm 단위)가 더 좋습니다.
예 2 - 50µm 대 특수 드릴:
원래 구멍 = 0.611 mm, 보상 = 0.10 mm, 보상 = 0.711 mm.
| 원본 | 보상 | 보상 | 증분 / 유형 | 선택한 드릴 |
|---|---|---|---|---|
| 0.611 | 0.10 | 0.711 | 0.05 (50 µm) | 0.70 |
| 0.611 | 0.10 | 0.711 | 특수 드릴 | 0.711 |
차이: 0.700 - 0.711 = -0.011mm; 0.711 - 0.711 = 0.000mm. 차이가 작을수록 좋습니다. 따라서 0.711mm 특수 드릴 가 가장 좋습니다.
방법 2: 프로세스 및 장비 개선
-
두 번째 보드 도금 단계를 추가하여 패턴 분포로 인한 두께 불균일을 줄입니다.
-
네거티브 포토 다이렉트 에칭을 사용하고 전체 기판을 도금하여 고르지 않은 구리 두께를 줄입니다.
-
전류 밀도를 약간 낮추면 도금 균일도는 향상되지만 도금 시간이 길어집니다(일반적으로 19 ASF).
-
수평 도금 라인으로 업그레이드합니다. 수직 도금 라인은 종종 고종횡비 구멍을 위해 구멍 가장자리에는 더 두꺼운 구리를, 구멍 중심에는 더 얇은 구리를 제공합니다. 수평 라인을 사용하면 이러한 문제를 줄일 수 있습니다.
방법 3: CAM 전략 개선
-
절연된 구리 영역의 구멍에 대해서는 증분 보정을 한 번 더 적용합니다. 절연된 영역에는 구리가 적기 때문에 도금하는 동안 국부 전류 밀도가 높아지고 구리 두께가 늘어나지만 추가 보정을 통해 이를 상쇄할 수 있습니다.
-
한쪽은 트레이스가 조밀하고 다른 쪽은 희박한 디자인(예: 파워 보드)의 경우, 희박한 쪽을 안쪽으로, 조밀한 쪽을 바깥쪽으로 배치하고 역방향 패널화를 사용합니다. 패널 도금 시 기판 가장자리 근처의 영역은 더 높은 전류 밀도와 더 두꺼운 도금을 얻습니다. 역 패널화는 도금 분포의 균형을 맞추는 데 도움이 됩니다.
-
상단과 하단의 구리 면적이 많이 다른 경우 양극/음극(음양) 패널을 사용합니다. 구리 면적이 고르지 않으면 “벨-입” 비아가 발생하고 보드가 두꺼울수록, 구리가 많을수록 효과가 떨어지므로 음양 패널링은 구리 분포의 균형을 맞추는 데 도움이 됩니다.
-
보드 가장자리 또는 슬롯 근처의 절연 영역 구멍의 경우, 가장자리 또는 슬롯 근처에 구리 “픽업” 영역 또는 구리 패드를 추가합니다. 절연된 구멍은 도금 두께가 너무 많아져 너무 작아질 수 있으며, 구멍 근처에 구리를 추가하면 국부 전류 밀도가 감소하고 도금의 균형이 맞춰집니다.
4. 얼마나 많은 보상이 필요하며 어떻게 산정되나요?
보정 값은 프로세스 테스트에서 나온 것입니다. 아래는 다양한 단계를 거친 후 측정된 구멍 크기 변화의 한 세트입니다(보고서의 데이터):
프로세스 흐름: 기계식 드릴링 → 침지 구리 → 전기도금 → 패턴 전사 → 에칭 → AOI → 습식 필름 → HASL
프로세스 매개변수:
-
드릴: 드릴 비트 크기 0.95mm, 재연마/연삭 3회, 드릴 보정 0.15mm;
-
도금: 구리 두께 ≥ 18µm, 평균 ≥ 20µm;
-
HASL: 최종 구멍 요구 사항 0.80mm, 허용 오차 ±0.08mm(3밀리);
-
테스트: 패널 10개, 모서리 다듬기, 보드 두께 2.0mm.
단계별 구멍 크기 변경
1) 드릴링 후 - 측정된 구멍 크기
-
총 1920개 홀 테스트(패널 10개, 각 384개 홀). 샘플: 200개 홀(패널당 20개). 홀 범위: 0.93-0.94 mm, 평균 0.931 mm.
(그 다음에는 대부분 0.93 또는 0.94의 긴 샘플링된 값 목록이 표시됩니다.)
2) 패턴 도금 후 - 구리 두께
-
각 패널에 대해 10개의 구멍을 테스트합니다. 구리 두께 범위 18-31 µm, 18µm 이상, 평균 20µm 이상을 충족합니다.
(그런 다음 많은 샘플 구리 두께 값)
3) 패턴 도금 후 - 구멍 크기
-
총 1920개 홀, 샘플 200개. 홀 범위: 0.84-0.88 mm, 평균 0.858 mm.
(그 후 많은 샘플 값, 대부분 0.85-0.88입니다.)
4) HASL 이후 - 구멍 크기
-
총 1920개 홀, 샘플 200개. 홀 범위: 0.82-0.86 mm, 평균 0.836 mm.
(그 다음에는 많은 샘플 값이 있습니다.)
테스트 요약
| 단계 | 홀 범위 | 평균 구멍 |
|---|---|---|
| 드릴링 후 | 0.93-0.94 mm | 0.931 mm |
| 구리 도금 후 | 0.84-0.88 mm | 0.858 mm |
| HASL 이후 | 0.82-0.86 mm | 0.836 mm |
결론: HASL 보드의 경우 드릴 보상은 다음과 같습니다. 0.15 mm 는 “과잉 보정”이며 최종 구멍이 더 커집니다. 이 테스트에서 가장 좋은 보정 값은 0.125mm.
5. 드릴 보상 코드 구현(규칙)
-
보상 및 스텝업 규칙
| Aspect | 완성된 구멍 | 표면 마감 | 보드 두께 | 스텝업 임계값 | 구리를 통해 26µm 미만인 경우 | 26-37 µm | 37-47 µm | 47-67 µm | 67-86 µm |
|---|---|---|---|---|---|---|---|---|---|
| 두께 비율 < 12:1 | ≤ 1.90mm | HASL(납 또는 무연) | ≥ 3.5mm | 0.01952 | 5백만 | 6 mil | 7 mil | 8백만 | 9백만 |
| 두께 비율 < 12:1 | ≤ 1.90mm | HASL(납 또는 무연) | < 3.5mm 미만 | 0.01952 | 450만 달러 | 550만 달러 | 6.5 mil | 7.5 mil | 850만 달러 |
| 두께 비율 < 12:1 | ≤ 1.90mm | 기타 마감 | / | 0.01952 | 4 mil | 5백만 | 6 mil | 7 mil | 8백만 |
| 두께 비율 < 12:1 | > 1.90mm 이상 | HASL | / | 0.0246 | 550만 달러 | 6.5 mil | 7.5 mil | 850만 달러 | 9.5백만 |
| 두께 비율 < 12:1 | > 1.90mm 이상 | 기타 마감 | / | 0.01952 | 450만 달러 | 550만 달러 | 6.5 mil | 7.5 mil | 850만 달러 |
| 두께 비율 ≥ 12:1 | 모든 구멍 | HASL | / | 0.0246 | 550만 달러 | 6.5 mil | 7.5 mil | 850만 달러 | 9.5백만 |
| 두께 비율 ≥ 12:1 | 모든 구멍 | 기타 마감 | / | 0.01952 | 5백만 | 6 mil | 7 mil | 8백만 | 9백만 |
-
특수 드릴 크기(공차가 3밀리 미만인 경우, 특수 드릴 사용 또는 25µm 단위로 가장 가까운 드릴 규칙 사용)
List ContainDrillToolList = new List();
ContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });
3. 드릴 보상 코드
///
/// 드릴 보정 파라미터를 기반으로 드릴 비트 직경 계산
///
///드릴 도구 기본 정보
///드릴 보정 파라미터
///특수 드릴 비트 직경 목록
///계산에 성공하면 1을 반환합니다
{
if (ContainDrillToolList == null) ContainDrillToolList = new List();
gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();
스위치 (ToolInfo.type)
{
케이스 "경유":
UpParamHole = UpParam.Via;
break;
case "plate":
UpParamHole = UpParam.Pth;
break;
case "nplate":
UpParamHole = UpParam.Npth;
break;
}
ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);
ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);
if (ToolInfo.finish_size 49) //단계 간격이 50μm인 경우, 특수 드릴 비트를 사용하지 마십시오.
{
ContainDrillToolList = new List();
UpLevel = UpParamHole.UpLevel;
}
else
{
UpLevel = UpParam.DrillLevel * 0.5; //S단계 간격의 절반만큼 드릴 비트 선택
}
double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5; //상한 및 하한 허용오차 평균
int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) / DrillSlotLevel)); //Drill 단계 수
double DrillsizeInt = DrillLevelCount * DrillSlotLevel; //가장 가까운 드릴 단계로 반내림
double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;//스텝 분할 후 나머지 드릴 크기
double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;//남은 부분을 반올림할지 여부 결정
//특수 드릴 비트 포함 여부 확인
int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt / DrillSlotLevel)) == DrillLevelCount);
if (ContainDrillIndex > -1)
{
double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;//스텝 분할 후 특수 드릴 비트 크기의 나머지
if (DrillsizeFloat > UpLevel) // 예: 38 > 20
{
double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); //예: 40-50
double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //예: 40-38
DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;
}
else //if (ContainDrillFloat < UpLevel)
{
double diff1 = Math.Abs(DrillsizeFloat - 0); //예: 12-0
double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //예: 12-16
DrillsizeLevel = (diff1 UpParamHole.UpLevel) ? DrillSlotLevel : 0;//나머지 반올림 여부 결정
ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;
}
else
{
DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) / 10) * 10; // 가장 가까운 10μm로 반내림
ToolInfo.slot_len = DrillsizeInt;
}
ToolInfo.drill_size += UpParam.SlotEndNumber; // 슬롯 드릴 비트 세분화를 위한 접미사 번호 추가
}
ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();
반환 1;
}
public class gToolUpParam
{
///
/// VIA 홀에 대한 보정 파라미터 (μm 단위)
///
public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();
///
/// PTH(도금 관통 홀)에 대한 보정 파라미터 (μm 단위)
///
public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();
///
/// NPTH(비-플레이트 스루홀)에 대한 보정 파라미터(μm) (단위: µm)
///
public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();
///
/// 원형 드릴 구멍의 스텝 간격 (μm)
///
public double DrillLevel { get; set; } = 50;
///
/// 슬롯 드릴 구멍의 단계 간격 (단위: μm)
///
public double SlotLevel { get; set; } = 50;
///
/// 슬롯 드릴 비트 세분화를 위한 접미사 번호
///
public int SlotEndNumber { get; set; } = 0;
///
/// 슬롯 길이에 대한 추가 보정 값 (μm 단위)
///
public double SlotLengthUp { get; set; } = 0;
///
/// 슬롯 길이를 스텝 간격으로 반올림할지 여부
///
public bool isSlotUpLevel { get; set; } = false;
}
public class gToolUpParamHole
{
///
/// 보정 값 (μm 단위)
///
public double UpVal { get; set; } = 100;
///
/// 반올림을 위한 스텝 간격 임계값 (단위: μm)
///
public double UpLevel { get; set; } = 25;
///
/// 상한 허용 오차 (μm)
///
public double Max_Tol { get; set; } = 76;
///
/// 하한 허용오차 (μm)
///
public double Min_Tol { get; set; } = 76;
}
///
/// Mod_tool: 드릴 도구 어트리뷰트 모델
///
public class Mod_tool
{
public int num { get; set; }
public string type { get; set; } // 구멍 유형: via/plate(nplate)
public string shape { get; set; } // 구멍 모양: 원형/슬롯
public double finish_size { get; set; } // 완성된 구멍 크기 (μm)
public double drill_size { get; set; } // 드릴 비트 크기 (μm)
public double max_tol { get; set; } // 상한 공차 (단위: μm)
public double min_tol { get; set; } // 하한 공차 (단위: μm)
public double slot_len { get; set; } // 슬롯 길이 (μm)
public string bit { get; set; } // 드릴 비트 크기 (mm, 형식화된 문자열)
}
6. 보드 두께가 드릴 보정에 영향을 미치는 이유는 무엇인가요?
저도 처음에는 이해하지 못했습니다. 주된 이유는 높은 두께 대 직경 비율 (기판 두께를 홀 지름으로 나눈 값). 이 비율이 높을수록 구멍 중앙의 구리는 얇아지고 구멍 가장자리의 구리는 두꺼워집니다. 두께 대 직경 비율을 계산하려면 기판 두께 값이 필요합니다. 따라서 기판 두께는 드릴 보정 규칙에 포함됩니다. 두께 대 직경이 큰 구멍의 경우 보정 값이 더 커집니다.




