Es gibt keine großartigen Einzelpersonen, sondern nur großartige Teams. Durch die Zusammenarbeit des Teams konnte das PCB-CAM-Automatisierungsprojekt der ersten Stufe für Netzbearbeitung und Handhabung von Bohrern ist fertig. Als Nächstes können wir uns mit dem PCB-Regelwerk befassen. Hier spreche ich über die Bohrungskompensation in der Leiterplattenentwicklung. Als Entwickler in der Leiterplattenentwicklung sollten Sie wissen, was das ist und warum es funktioniert. Im Folgenden erläutere ich die wichtigsten Punkte zur Bohrerkompensation.
1. Warum kompensieren wir die Bohrergrößen?
Die Lochgrößen in den vom Kunden angegebenen PCB-Dateien bedeuten in der Regel die endgültig Lochgröße. Bei der Herstellung von Leiterplatten werden die Löcher mit Kupfer beschichtet (oder die Löcher erhalten eine Oberflächenbehandlung wie HASL, ENIG, OSP usw.). Dadurch wird das Loch kleiner. Um sicherzustellen, dass die endgültige Bohrungsgröße den Anforderungen entspricht, korrigiert der CAM-Schritt die Bohrungsgröße. Dies ist die Bohrerkompensation.
Ein echtes Beispiel:
Endgültige Lochgröße: 1,00 mm. Oberflächengüte: ENIG (Nickeldicke 2,54 µm, Golddicke 0,0254 µm). Befolgen Sie die IPC-Klasse II, und die durchschnittliche Dicke der Kupferbeschichtung beträgt 20 µm. Wenn wir 0,10 mm als Kompensationswert, wählt das CAM-Team einen 1,10 mm Bohrer.

2. Wie machen wir den Bohrerausgleich?
Zunächst sollten Sie sich über die drei wichtigsten Parameter für den Bohrerausgleich im Klaren sein:
(1) Schrittweite des Bohrers,
(2) Ausgleichswert,
(3) Step-up-Schwelle (Vorlaufwert).
Diese drei bestimmen, wie die Entschädigung anzuwenden ist.
1) Schrittweite des Bohrers
Dies hängt von den Bohrern ab, die das Unternehmen kauft. Die branchenübliche Schrittweite beträgt 50 µm. Typische Bohrergrößen reichen von 0,10 mm zu 6,35 mm. Der übliche kleinste Schritt zwischen den Bohrern ist 0,05 mm. Die Bohrerbibliothek hat also Größen wie 0,10 mm, 0,15 mm, 0,20 mm, 0,25 mm, und so weiter.
2) Ausgleichswert
Das Prozessteam legt die Vergütungsregeln auf der Grundlage der Testergebnisse des Unternehmens fest. Die Kompensationswerte variieren in der Branche nicht sehr stark. Gemeinsame Regeln:
-
Bretter mit HASL (Sprühdose): 0,15 mm ausgleichen.
-
Bretter ohne HASL (ENIG, chemisches Zinn, OSP, usw.): 0,10 mm ausgleichen.
3) Step-up-Schwelle (Vorlaufwert)
Das Prozessteam legt auch die Strategie für die Auswahl des Bohrers fest, ähnlich wie bei einer Rundungsregel. Zum Beispiel, wenn das Inkrement 20 µm, wenn der Rest nach Division durch das Inkrement ≥ 20 µm, wird auf 50 µm aufgerundet, andernfalls wird die kleinere Größe beibehalten.
Beispiel:
Endgültige Lochgröße = 1,025 mm, Entschädigung = 0,10 mm, so kompensierte Größe = 1,125 mm. Aber es gibt keine 1,125 mm in der Bibliothek bohren. Verwenden Sie die Step-up-Regel. Der Rest von 1,125 mm im Vergleich zum Schritt von 0,05 mm ist 25 µm. Seit 25 µm > 20 µm, runden Sie um 50 µm auf und wählen Sie eine 1,15 mm bohren.
Beispiele für tatsächliche Bohrvergütungen
Angenommen: Bohrinkrement = 50 µm, Aufwärtsschwelle = 20 µm
| Original-Loch | Entschädigung | Nach Entschädigung | Ganzzahliger Teil | Restbetrag | Bohrer gewählt |
|---|---|---|---|---|---|
| 1,025 mm | 0.10 | 1,125 mm | 1.10 | 0,025 mm | 1,15 mm |
| 1,016 mm | 0.10 | 1.116 mm | 1.10 | 0,016 mm | 1,10 mm |
So berechnen Sie die gewählte Bohrergröße
Zerlegen Sie die kompensierte Lochgröße in einen ganzzahligen Teil und einen Restteil unter Verwendung des Bohrinkrements:
Nehmen Sie 1,125 mm als Beispiel:
1,125 / 0,05 = 22,5 → Boden zu 22 → ganzer Teil = 22 × 0,05 = 1,10 mm.
Rest = 1,125 % 0,05 = 0,025 mm.
Vergleichen Sie dann den Restwert mit dem Schwellenwert für die Erhöhung (z. B. 20 µm):
-
Wenn Rest > Schwellenwert, Bohrergröße = ganzer Teil + 0,05 mm.
-
Wenn Rest ≤ Schwellenwert, Bohrergröße = ganzer Teil + 0,00 mm.
Zusammenfassung über den Schwellenwert für die Heraufstufung
Wenn das Bohrinkrement 50 µm, ist der Schwellenwert für den Step-up kritisch. Sie führt eine zweite Korrektur der kompensierten Bohrergröße durch. Sie entscheidet, ob sie “erhöht” wird oder “bleibt”. Eine Änderung dieses Schwellenwerts ändert direkt die gewählte Bohrergröße.
Weitere Beispiele (Bohrschrittweite = 50 µm):
| Original-Loch | Entschädigung | Nach comp. | Integer | Restbetrag | Step-up-Schwelle | Bohrer |
|---|---|---|---|---|---|---|
| 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 |
Persönliche Meinung zur Festlegung der Aufstockungsschwelle
Vor- und Nachteile: Wenn das endgültige Loch nach dem Ausgleich etwas größer ist, kann das Teil zumindest eingefügt werden. Wenn das Loch zu klein ist, kann das Teil nicht eingefügt werden. Daher setzen wir den Schwellenwert für die Vergrößerung normalerweise auf 20 µm anstelle von 25 µm. Die genaue Auswahl sollte auf den jeweiligen Prozess und den Vergütungswert abgestimmt sein.
Kombiniert mit dem Ausgleichswert: Für Platten mit HASL, bei denen die Kompensation 0,15 mm, In diesem Fall “überkompensieren” Sie bereits ein wenig, und die endgültigen Löcher sind tendenziell etwas zu groß. In diesem Fall ist ein Step-up-Schwellenwert von 25 µm kann auch funktionieren. Wähle den Bohrer nach der Regel “am nächsten” aus.
3. Wie kann man sicherstellen, dass die endgültige Lochgröße nach der Kompensation den Anforderungen entspricht?
Methode 1: Spezialbohrer kaufen
Standard-Bohrerschrittweite ist 50 µm (0,05 mm Schritte wie 1,00, 1,05, 1,10, 1,15 mm). Bei einer PTH-Toleranz von ±3 mil kann ein 50-µm-Bohrersatz die Toleranz abdecken. Wenn die Toleranz kleiner ist, müssen spezielle Bohrer verwendet werden.
Beispiel 1 - Vergleichen Sie die Abstufungen von 50 µm und 25 µm:
Ursprüngliches Loch = 0,922 mm, Entschädigung = 0,10 mm, kompensierte Größe = 1,022 mm.
| Original | Entschädigung | Kompensiert | Inkrement | Bohrer gewählt |
|---|---|---|---|---|
| 0.922 | 0.10 | 1.022 | 0,05 (50 µm) | 1.05 |
| 0.922 | 0.10 | 1.022 | 0,025 (25 µm) | 1.025 |
Abweichung: 1,050 - 1,022 = 0,028 mm; 1,025 - 1,022 = 0,003 mm. Die kleinere Differenz ist besser, also 1,025 mm (Schrittweite 25 µm) ist besser.
Beispiel 2 - 50 µm vs. Spezialbohrer:
Ursprüngliches Loch = 0,611 mm, Entschädigung = 0,10 mm, kompensiert = 0,711 mm.
| Original | Entschädigung | Kompensiert | Inkrement / Typ | Bohrer gewählt |
|---|---|---|---|---|
| 0.611 | 0.10 | 0.711 | 0,05 (50 µm) | 0.70 |
| 0.611 | 0.10 | 0.711 | Spezialbohrer | 0.711 |
Abweichung: 0,700 - 0,711 = -0,011 mm; 0,711 - 0,711 = 0,000 mm. Je kleiner die Differenz, desto besser. Also die 0,711 mm Spezialbohrer ist am besten.
Methode 2: Verbesserung von Verfahren und Ausrüstung
-
Fügen Sie einen zweiten Plattierungsschritt hinzu, um ungleichmäßige Dicken aufgrund der Musterverteilung zu reduzieren.
-
Verwenden Sie das Negativ-Fotodirektätzen und plattieren Sie die gesamte Leiterplatte, um ungleichmäßige Kupferstärken zu reduzieren.
-
Verringern Sie die Stromdichte (typisch sind 19 ASF); eine etwas geringere Stromdichte kann die Gleichmäßigkeit der Beschichtung verbessern, verlängert aber die Beschichtungszeit.
-
Wechseln Sie zu einer horizontalen Beschichtungslinie. Vertikale Galvanisierungslinien führen bei Löchern mit hohem Aspektverhältnis häufig zu dickerem Kupfer am Lochrand und dünnerem Kupfer in der Lochmitte. Eine horizontale Linie kann dieses Problem verringern.
Methode 3: Verbesserung der CAM-Strategien
-
Bei Löchern in isolierten Kupferbereichen ist eine zusätzliche Kompensationsstufe anzuwenden. Isolierte Bereiche haben weniger Kupfer, so dass sie während des Galvanisierens eine höhere lokale Stromdichte und eine größere Kupferdicke erhalten; die zusätzliche Kompensation gleicht dies aus.
-
Bei Entwürfen mit dichten Leiterbahnen auf einer Seite und spärlichen auf der anderen (z. B. bei einer Stromversorgungsplatine) legen Sie die spärliche Seite nach innen und die dichte Seite nach außen und verwenden die umgekehrte Panelisierung. Bei der Panelisierung werden die Bereiche in der Nähe der Leiterplattenkante mit einer höheren Stromdichte und einer dickeren Beschichtung versehen. Die umgekehrte Beplankung trägt zu einer gleichmäßigen Verteilung der Beschichtung bei.
-
Wenn die Kupferflächen OBEN und UNTEN sehr unterschiedlich sind, sollten Sie eine positive/negative (Yin-Yang) Verkleidung verwenden. Je dicker die Leiterplatte und je mehr Kupfer, desto schlimmer der Effekt; die Yin-Yang-Verkleidung hilft, die Kupferverteilung auszugleichen.
-
Fügen Sie bei isolierten Löchern in der Nähe der Leiterplattenkante oder der Steckplätze Kupfer-“Pick-up”-Bereiche oder Kupferpads in der Nähe der Kante oder des Steckplatzes hinzu. Isolierte Löcher können eine zu große Schichtdicke erhalten und zu klein werden; zusätzliches Kupfer in ihrer Nähe reduziert die lokale Stromdichte und gleicht die Schichtdicke aus.
4. Wie hoch ist der Ausgleichsbedarf und wie wird er ermittelt?
Die Kompensationswerte stammen aus Prozesstests. Nachfolgend finden Sie eine Reihe von gemessenen Änderungen der Lochgröße nach verschiedenen Schritten (Daten aus einem Bericht):
Prozessablauf: Mechanisches Bohren → Tauchkupfer → Galvanik → Musterübertragung → Ätzen → AOI → Nassfilm → HASL
Prozessparameter:
-
Bohrer: Bohrergröße 0,95 mm, 3 Mal nachschärfen/nachschleifen, Bohrerausgleich 0,15 mm;
-
Beschichtung: Kupferdicke ≥ 18 µm, Durchschnitt ≥ 20 µm;
-
HASL: Endgültiger Lochbedarf 0,80 mm, Toleranz ±0,08 mm (3 mil);
-
Test: 10 Platten, eckbeschnitten, Plattendicke 2,0 mm.
Lochgröße ändert sich schrittweise
1) Nach dem Bohren - gemessene Lochgrößen
-
Insgesamt 1920 geprüfte Löcher (10 Platten mit je 384 Löchern). Probe: 200 Löcher (20 pro Panel). Bereich der Löcher: 0,93-0,94 mm, Durchschnitt 0,931 mm.
(Dann eine lange Liste von Stichprobenwerten, meist 0,93 oder 0,94.)
2) Nach der strukturierten Beschichtung - Kupferdicke
-
Für jede Platte sind 10 Löcher zu prüfen. Bereich der Kupferdicke 18-31 µm, Treffen ≥18 µm und Durchschnitt ≥20 µm.
(Dann viele Werte für die Kupferdicke.)
3) Nach der strukturierten Beschichtung - Lochgröße
-
Insgesamt 1920 Löcher, Probe 200. Bereich der Löcher: 0,84-0,88 mm, Durchschnitt 0,858 mm.
(Dann viele Beispielwerte, meist 0,85-0,88.)
4) Nach HASL - Lochgröße
-
Insgesamt 1920 Löcher, Probe 200. Bereich der Löcher: 0,82-0,86 mm, Durchschnitt 0,836 mm.
(Dann viele Beispielwerte.)
Zusammenfassung des Tests
| Schritt | Bereich Löcher | Durchschnittliches Loch |
|---|---|---|
| Nach dem Bohren | 0,93-0,94 mm | 0,931 mm |
| Nach der Verkupferung | 0,84-0,88 mm | 0,858 mm |
| Nach HASL | 0,82-0,86 mm | 0,836 mm |
Schlussfolgerung: Bei HASL-Platten ist der Bohrungsausgleich von 0,15 mm ist eine “Überkompensation” und führt dazu, dass die endgültigen Löcher größer sind. Der beste Kompensationswert in diesem Test ist 0,125 mm.
5. Implementierung des Bohrkompensationscodes (Regeln)
-
Ausgleichszahlungen und Aufstockungsregeln
| Aspekt | Fertiges Loch | Oberflächengüte | Dicke der Platte | Step-up-Schwelle | Wenn Durchgangskupfer < 26 µm | 26-37 µm | 37-47 µm | 47-67 µm | 67-86 µm |
|---|---|---|---|---|---|---|---|---|---|
| Dickenverhältnis < 12:1 | ≤ 1,90 mm | HASL (verbleit oder bleifrei) | ≥ 3,5 mm | 0.01952 | 5 Millionen | 6 mil | 7 mil | 8 mil | 9 mil |
| Dickenverhältnis < 12:1 | ≤ 1,90 mm | HASL (verbleit oder bleifrei) | < 3,5 mm | 0.01952 | 4,5 Millionen | 5,5 Millionen | 6,5 Millionen | 7,5 Millionen | 8,5 Millionen |
| Dickenverhältnis < 12:1 | ≤ 1,90 mm | Andere Veredelungen | / | 0.01952 | 4 mil | 5 Millionen | 6 mil | 7 mil | 8 mil |
| Dickenverhältnis < 12:1 | > 1,90 mm | HASL | / | 0.0246 | 5,5 Millionen | 6,5 Millionen | 7,5 Millionen | 8,5 Millionen | 9,5 Millionen |
| Dickenverhältnis < 12:1 | > 1,90 mm | Andere Veredelungen | / | 0.01952 | 4,5 Millionen | 5,5 Millionen | 6,5 Millionen | 7,5 Millionen | 8,5 Millionen |
| Verhältnis der Dicke ≥ 12:1 | alle Löcher | HASL | / | 0.0246 | 5,5 Millionen | 6,5 Millionen | 7,5 Millionen | 8,5 Millionen | 9,5 Millionen |
| Verhältnis der Dicke ≥ 12:1 | alle Löcher | Andere Veredelungen | / | 0.01952 | 5 Millionen | 6 mil | 7 mil | 8 mil | 9 mil |
-
Spezielle Bohrergrößen (wenn die Toleranz < 3 mil ist, verwenden Sie spezielle Bohrer oder 25 µm Schrittweite, verwenden Sie die nächstliegende Bohrerlinie)
List ContainDrillToolList = new List();
ContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });
3. Bohrer Ausgleichscode
///
/// Berechnet den Bohrerdurchmesser basierend auf den Parametern der Bohrerkompensation
///
///Basisinformationen des Bohrwerkzeugs
///Bohrerkompensationsparameter
///Spezialliste für Bohrerdurchmesser
///Rückgabe 1, wenn die Berechnung erfolgreich war
public static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List ContainDrillToolList)
{
if (ContainDrillToolList == null) ContainDrillToolList = new List();
gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();
switch (ToolInfo.type)
{
Fall "über":
UpParamHole = UpParam.Via;
break;
Fall "Platte":
UpParamHole = UpParam.Pth;
break;
Fall "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) //Wenn das Schrittintervall 50μm beträgt, keine Spezialbohrer verwenden
{
ContainDrillToolList = new List();
UpLevel = UpParamHole.UpLevel;
}
sonst
{
UpLevel = UpParam.DrillLevel * 0.5; //Bohrer um die Hälfte des Schrittintervalls auswählen
}
double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5; //Mittelwert der oberen und unteren Toleranz
int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) / DrillSlotLevel)); //Bohrschrittanzahl
double DrillsizeInt = DrillLevelCount * DrillSlotLevel; //Abrundung auf den nächsten Bohrschritt
double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;//Rest der Bohrergröße nach Schrittteilung
double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;//Bestimmen, ob der Rest aufgerundet werden soll
//Prüfen, ob spezielle Bohrer enthalten sind
int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt / DrillSlotLevel)) == DrillLevelCount);
if (ContainDrillIndex > -1)
{
double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;//Rest der speziellen Bohrergröße nach Schrittteilung
if (DrillsizeFloat > UpLevel) // z.B. 38 > 20
{
double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); //z.B. 40-50
double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //z.B. 40-38
DrillSizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;
}
else //if (ContainDrillFloat < UpLevel)
{
double diff1 = Math.Abs(DrillsizeFloat - 0); //z.B. 12-0
double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //z.B. 12-16
DrillsizeLevel = (diff1 UpParamHole.UpLevel) ? DrillSlotLevel : 0;//Bestimmen, ob der Rest aufgerundet werden soll
ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;
}
sonst
{
DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) / 10) * 10; // Abrunden auf die nächsten 10μm
ToolInfo.slot_len = DrillsizeInt;
}
ToolInfo.drill_size += UpParam.SlotEndNumber; // Suffix-Nummer für Schlitzbohrer-Segmentierung hinzufügen
}
ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();
return 1;
}
public class gToolUpParam
{
///
/// Kompensationsparameter für VIA-Löcher (in μm)
///
public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();
///
/// Kompensationsparameter für PTH (Plated Through Hole) (in μm)
///
public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();
///
/// Kompensationsparameter für NPTH (Non-Plated Through Hole) (in μm)
///
public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();
///
/// Schrittweite für runde Bohrungen (in μm)
///
public double DrillLevel { get; set; } = 50;
///
/// Schrittweite für Langlochbohrungen (in μm)
///
public double SlotLevel { get; set; } = 50;
///
/// Suffixnummer für Schlitzbohrer-Segmentierung
///
public int SlotEndNumber { get; set; } = 0;
///
/// Zusätzlicher Kompensationswert für die Schlitzlänge (in μm)
///
public double SlotLengthUp { get; set; } = 0;
///
/// Ob die Schlitzlänge auf das Schrittintervall gerundet werden soll.
///
public bool isSlotUpLevel { get; set; } = false;
}
public class gToolUpParamHole
{
///
/// Kompensationswert (in μm)
///
public double UpVal { get; set; } = 100;
///
/// Schrittintervallschwelle für das Aufrunden (in μm)
///
public double UpLevel { get; set; } = 25;
///
/// Obere Toleranz (in μm)
///
public double Max_Tol { get; set; } = 76;
///
/// Untere Toleranz (in μm)
///
public double Min_Tol { get; set; } = 76;
}
///
/// Mod_tool: Bohrwerkzeug-Attributmodell
///
public class Mod_tool
{
public int num { get; set; }
public string type { get; set; } // Bohrungstyp: via/plate(nplate)
public string form { get; set; } // Lochform: rund/Schlitz
public double finish_size { get; set; } // Fertige Lochgröße (in μm)
public double drill_size { get; set; } // Größe des Bohrers (in μm)
public double max_tol { get; set; } // Obere Toleranz (in μm)
public double min_tol { get; set; } // Untere Toleranz (in μm)
public double slot_len { get; set; } // Schlitzlänge (in μm)
public string bit { get; set; } // Bohrergröße (in mm, formatierter String)
}
6. Warum beeinflusst die Plattendicke die Bohrkompensation?
Auch ich habe das anfangs nicht verstanden. Der Hauptgrund ist die hohe Verhältnis Dicke/Durchmesser (Plattendicke geteilt durch Lochdurchmesser). Bei einem hohen Verhältnis ist das Kupfer in der Lochmitte dünner und das Kupfer am Lochrand dicker. Zur Berechnung des Verhältnisses von Dicke zu Durchmesser benötigen Sie den Wert der Plattendicke. Die Plattendicke fließt also in die Regeln für die Bohrkompensation ein. Bei Löchern mit hohem Verhältnis von Dicke zu Durchmesser ist der Ausgleich größer.




