Neexistují skvělí jednotlivci, pouze skvělé týmy. Díky spolupráci týmu se podařilo realizovat projekt automatizace PCB CAM v první fázi pro manipulace se sítí a manipulace s vrtákem je hotovo. Poté můžeme přejít k mechanismu pravidel pro desky plošných spojů. Zde hovořím o kompenzaci vrtání v konstrukci plošných spojů. Jako vývojáři v oblasti PCB inženýrství byste měli vědět, co to je a proč to funguje. Níže se s vámi podělím o klíčové body týkající se kompenzace vrtání.
1. Proč kompenzujeme velikosti vrtáků?
Rozměry otvorů v souborech desek plošných spojů, které zadává zákazník, obvykle znamenají. finální velikost otvoru. Při výrobě desek plošných spojů je uvnitř otvorů nanesena měď (nebo jsou otvory povrchově upraveny, např. HASL, ENIG, OSP atd.). Tím se otvor zmenší. Aby se zajistilo, že konečná velikost otvoru odpovídá požadavku, v kroku CAM se velikost vrtáku opraví. Jedná se o kompenzaci vrtání.
Skutečný příklad:
Konečná velikost otvoru: 1,00 mm. Povrchová úprava: ENIG (tloušťka niklu 2,54 µm, tloušťka zlata 0,0254 µm). Dodržujte třídu IPC II a průměrná tloušťka pokovené mědi je 20 µm. Pokud použijeme 0,10 mm jako hodnotu kompenzace, tým CAM vybere hodnotu 1,10 mm vrták.

2. Jak provádíme kompenzaci vrtání?
Nejprve si ujasněte tři klíčové parametry pro kompenzaci vrtání:
(1) Přírůstek vrtáku,
(2) Hodnota kompenzace,
(3) Prahová hodnota Step-up (předstihová hodnota).
Tyto tři faktory určují způsob uplatnění kompenzace.
1) Přírůstek vrtáku
To závisí na vrtácích, které společnost nakupuje. Běžný přírůstek v odvětví je 50 µm. Typické velikosti vrtáků se pohybují od 0,10 mm na 6,35 mm. Obvyklý nejmenší krok mezi vrtáky je 0,05 mm. Knihovna vrtáků má tedy velikosti jako 0,10 mm, 0,15 mm, 0,20 mm, 0,25 mm, a tak dále.
2) Hodnota kompenzace
Procesní tým stanoví pravidla kompenzace na základě výsledků továrních testů. Hodnoty kompenzace se v jednotlivých odvětvích příliš neliší. Společná pravidla:
-
Desky s HASL (plechovka ve spreji): kompenzovat 0,15 mm.
-
Desky bez HASL (ENIG, ponorný cín, OSP atd.): kompenzovat 0,10 mm.
3) Prahová hodnota Step-up (zálohová hodnota)
Procesní tým také nastavuje strategii výběru vrtáku, podobně jako pravidlo zaokrouhlování. Například když je přírůstek 20 µm, jestliže zbytek po dělení přírůstkem je ≥ 20 µm, zaokrouhlíte na 50 µm nahoru; jinak ponecháte nižší velikost.
Příklad:
Konečná velikost otvoru = 1,025 mm, kompenzace = 0,10 mm, takže kompenzovaná velikost = 1,125 mm. Ale neexistuje žádný 1,125 mm vrták v knihovně. Použijte pravidlo step-up. Zbytek 1,125 mm v porovnání s krokem 0,05 mm je 25 µm. Protože 25 µm > 20 µm, zaokrouhlete nahoru o 50 µm a zvolte a 1,15 mm vrták.
Příklady skutečných kompenzací za vrtání
Předpokládejme: přírůstek vrtáku = 50 µm, prahová hodnota zvýšení = 20 µm
| Původní otvor | Odškodnění | Po kompenzaci | Celočíselná část | Zbytek | Vybraný vrták |
|---|---|---|---|---|---|
| 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 |
Jak vypočítat zvolenou velikost vrtáku
Pomocí přírůstku vrtáku rozdělte kompenzovanou velikost otvoru na celočíselnou část a zbytkovou část:
Vezměte si 1,125 mm jako příklad:
1,125 / 0,05 = 22,5 → od podlahy do 22 → celočíselný díl = 22 × 0,05 = 1,10 mm.
Zbytek = 1,125 % 0,05 = 0,025 mm.
Poté porovnejte zbytek s prahovou hodnotou zvýšení (například 20 µm):
-
Pokud je zbytek > mezní hodnota, velikost vrtáku = celá část + 0,05 mm.
-
Je-li zbytek ≤ mezní hodnota, velikost vrtáku = celočíselný díl + 0,00 mm.
Shrnutí o prahové hodnotě step-up
Když je přírůstek vrtáku 50 µm, je rozhodující prahová hodnota zvýšení. Provádí druhou korekci kompenzované velikosti vrtáku. Rozhoduje o tom, zda se má “zvýšit”, nebo “zůstat”. Změna tohoto prahu přímo mění zvolenou velikost vrtáku.
Další příklady (přírůstek vrtáku = 50 µm):
| Původní otvor | Odškodnění | Po komp. | Celé číslo | Zbytek | Prahová hodnota Step-up | Vrták |
|---|---|---|---|---|---|---|
| 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 |
Osobní názor na stanovení prahové hodnoty navýšení
Výhody a nevýhody: Pokud je po vyrovnání konečný otvor o něco větší, lze díl alespoň vložit. Pokud je otvor příliš malý, díl nelze vložit. Proto obvykle nastavujeme práh pro zvýšení na hodnotu 20 µm místo 25 µm. Přesná volba by měla odpovídat každému procesu a hodnotě kompenzace.
V kombinaci s hodnotou kompenzace: U desek s HASL, kde je kompenzace 0,15 mm, již trochu “překompenzujete” a konečné otvory bývají mírně velké. V takovém případě je prahová hodnota kroku 25 µm může také fungovat. Při výběru vrtáku se řiďte pravidlem “nejbližší”.
3. Jak zajistit, aby konečná velikost otvoru po kompenzaci splňovala požadavky?
Metoda 1: Zakoupení speciálních vrtáků
Standardní přírůstek vrtáku je 50 µm (po 0,05 mm, např. 1,00, 1,05, 1,10, 1,15 mm). Při toleranci PTH ±3 milimetry lze toleranci pokrýt sadou vrtáků 50 µm. Pokud je tolerance menší, použijte speciální vrtáky.
Příklad 1 - Srovnejte 50 µm oproti 25 µm přírůstkům:
Původní otvor = 0,922 mm, kompenzace = 0,10 mm, kompenzovaná velikost = 1,022 mm.
| Originál | Odškodnění | Kompenzace | Přírůstek | Vybraný vrták |
|---|---|---|---|---|
| 0.922 | 0.10 | 1.022 | 0,05 (50 µm) | 1.05 |
| 0.922 | 0.10 | 1.022 | 0,025 (25 µm) | 1.025 |
Rozdíl: 1,050 - 1,022 = 0,028 mm; 1,025 - 1,022 = 0,003 mm. Menší rozdíl je lepší, takže 1,025 mm (přírůstek 25 µm) je lepší.
Příklad 2 - 50 µm oproti speciálnímu vrtáku:
Původní otvor = 0,611 mm, kompenzace = 0,10 mm, kompenzováno = 0,711 mm.
| Originál | Odškodnění | Kompenzace | Přírůstek / typ | Vybraný vrták |
|---|---|---|---|---|
| 0.611 | 0.10 | 0.711 | 0,05 (50 µm) | 0.70 |
| 0.611 | 0.10 | 0.711 | Speciální cvičení | 0.711 |
Rozdíl: 0,700 - 0,711 = -0,011 mm; 0,711 - 0,711 = 0,000 mm. Menší rozdíl je lepší. Takže Speciální vrták 0,711 mm je nejlepší.
Metoda 2: Zlepšení procesu a vybavení
-
Přidejte druhý krok pokovení desky, abyste snížili nerovnoměrnou tloušťku z rozložení vzoru.
-
Použijte přímé leptání negativních fotografií a celou desku pokryjte deskou, abyste snížili nerovnoměrnou tloušťku mědi.
-
Snižte proudovou hustotu (typicky 19 ASF); mírně nižší proudová hustota může zlepšit rovnoměrnost pokovování, ale prodlouží dobu pokovování.
-
Upgrade na horizontální pokovovací linku. Svislé pokovovací linky často poskytují silnější měď na okraji otvoru a tenčí měď ve středu otvoru pro otvory s vysokým poměrem stran. Vodorovná linka může tento problém omezit.
Metoda 3: Zlepšení strategií CAM
-
U otvorů v izolovaných měděných oblastech použijte kompenzaci o jeden přírůstek navíc. Izolované oblasti mají méně mědi, takže při pokovování se v nich zvyšuje lokální proudová hustota a tloušťka mědi; kompenzace navíc to vyrovnává.
-
U návrhů s hustými stopami na jedné straně a řídkými na druhé (například napájecí deska) umístěte řídkou stranu dovnitř a hustou stranu ven a použijte obrácenou panelizaci. Při panelování se v oblastech blízko okraje desky dosáhne vyšší proudové hustoty a silnějšího pokovení. Obrácená paneláž pomáhá vyrovnat rozložení pokovení.
-
Pokud se měděná plocha nahoře a dole hodně liší, použijte pozitivní/negativní (jin-jang) obložení. Nerovnoměrná plocha mědi způsobuje “zvonovitá” průchodka; čím tlustší deska a čím více mědi, tím horší je tento efekt; jin-jang panelování pomáhá vyrovnat rozložení mědi.
-
U otvorů s izolovanou oblastí v blízkosti okraje desky nebo slotů přidejte měděné “sběrné” oblasti nebo měděné podložky v blízkosti okraje nebo slotu. Izolované otvory mohou získat příliš velkou tloušťku pokovení a stát se příliš malými; další měď v jejich blízkosti snižuje lokální proudovou hustotu a vyrovnává pokovení.
4. Jaká je potřeba kompenzace a jak se odvozuje?
Kompenzační hodnoty pocházejí z procesních testů. Níže je uvedena jedna sada naměřených změn velikosti otvoru po různých krocích (údaje ze zprávy):
Průběh procesu: mechanické vrtání → ponorná měď → galvanické pokovování → přenos vzoru → leptání → AOI → mokrá vrstva → HASL
Parametry procesu:
-
Vrták: velikost vrtáku 0,95 mm, 3krát přebrousit, vyrovnání vrtáku 0,15 mm;
-
Pokovení: tloušťka mědi ≥ 18 µm, průměrně ≥ 20 µm;
-
HASL: požadavek na konečný otvor 0,80 mm, tolerance ±0,08 mm (3 mil);
-
Zkouška: 10 desek, rohové ořezané, tloušťka desky 2,0 mm.
Změny velikosti otvorů po krocích
1) Po vrtání - změřené velikosti otvorů
-
Celkem 1920 testovaných otvorů (10 panelů, každý 384 otvorů). Vzorek: 200 otvorů (20 na panel). Rozsah otvorů: 0,93-0,94 mm, průměr 0,931 mm.
(Pak následuje dlouhý seznam vybraných hodnot, většinou 0,93 nebo 0,94.)
2) Po vzorovaném pokovení - tloušťka mědi
-
Pro každý panel vyzkoušejte 10 otvorů. Rozsah tloušťky mědi 18-31 µm, setkání ≥18 µm a průměr ≥20 µm.
(Pak mnoho hodnot tloušťky vzorku mědi.)
3) Po vzorovaném pokovení - velikost otvoru
-
Celkem 1920 vrtů, 200 vzorků. Rozsah vrtů: 0,84-0,88 mm, průměr 0,858 mm.
(Pak mnoho hodnot vzorků, většinou 0,85-0,88.)
4) Po HASL - velikost otvoru
-
Celkem 1920 vrtů, 200 vzorků. Rozsah vrtů: 0,82-0,86 mm, průměr 0,836 mm.
(Pak mnoho vzorových hodnot.)
Shrnutí testu
| Krok | Rozsah otvorů | Průměrný otvor |
|---|---|---|
| Po vyvrtání | 0,93-0,94 mm | 0,931 mm |
| Po pokovení mědí | 0,84-0,88 mm | 0,858 mm |
| Po HASL | 0,82-0,86 mm | 0,836 mm |
Závěr: U desek HASL je kompenzace vrtání 0,15 mm je “nadměrná kompenzace” a způsobuje, že konečné otvory jsou větší. Nejlepší hodnota kompenzace v tomto testu je 0,125 mm.
5. Implementace kompenzačního kódu vrtáku (pravidla)
-
Pravidla pro kompenzaci a navýšení
| Aspekt | Hotový otvor | Povrchová úprava | Tloušťka desky | Prahová hodnota Step-up | Pokud je průchozí měď < 26 µm | 26-37 µm | 37-47 µm | 47-67 µm | 67-86 µm |
|---|---|---|---|---|---|---|---|---|---|
| poměr tloušťky < 12:1 | ≤ 1,90 mm | HASL (olovnaté nebo bezolovnaté) | ≥ 3,5 mm | 0.01952 | 5 mil. | 6 mil. | 7 mil. | 8 mil. | 9 mil. |
| poměr tloušťky < 12:1 | ≤ 1,90 mm | HASL (olovnaté nebo bezolovnaté) | < 3,5 mm | 0.01952 | 4,5 milionu | 5,5 milionu | 6,5 milionu | 7,5 milionu | 8,5 milionu |
| poměr tloušťky < 12:1 | ≤ 1,90 mm | Ostatní povrchové úpravy | / | 0.01952 | 4 mil. | 5 mil. | 6 mil. | 7 mil. | 8 mil. |
| poměr tloušťky < 12:1 | > 1,90 mm | HASL | / | 0.0246 | 5,5 milionu | 6,5 milionu | 7,5 milionu | 8,5 milionu | 9,5 milionu |
| poměr tloušťky < 12:1 | > 1,90 mm | Ostatní povrchové úpravy | / | 0.01952 | 4,5 milionu | 5,5 milionu | 6,5 milionu | 7,5 milionu | 8,5 milionu |
| poměr tloušťky ≥ 12:1 | všechny otvory | HASL | / | 0.0246 | 5,5 milionu | 6,5 milionu | 7,5 milionu | 8,5 milionu | 9,5 milionu |
| poměr tloušťky ≥ 12:1 | všechny otvory | Ostatní povrchové úpravy | / | 0.01952 | 5 mil. | 6 mil. | 7 mil. | 8 mil. | 9 mil. |
-
Speciální velikosti vrtáků (pokud je tolerance < 3 mil, použijte speciální vrtáky nebo přírůstek 25 µm, použijte nejbližší vrtací pravidlo).
List ContainDrillToolList = new List();
ContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });
3. Kód kompenzace vrtání
///
/// Výpočet průměru vrtáku na základě parametrů kompenzace vrtání.
///
///Základní informace o vrtacím nástroji
///Parametry kompenzace vrtáku
///Speciální seznam průměrů vrtáků
///Vrátí 1, pokud je výpočet úspěšný
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)
{
case "via":
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) //Když je interval kroků 50μm, nepoužívejte speciální vrtáky
{
ContainDrillToolList = new List();
UpLevel = UpParamHole.UpLevel;
}
else
{
UpLevel = UpParam.DrillLevel * 0,5; /Výběr vrtáku o polovinu intervalu kroku
}
double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0,5; //Průměr horní a dolní tolerance
int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) / DrillSlotLevel)); //Počet kroků vrtání
double DrillsizeInt = DrillLevelCount * DrillSlotLevel; //Zkrácení na nejbližší vrtací krok
double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;//Zbytek velikosti vrtáku po dělení kroku
double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;//Určení, zda se zbytek zaokrouhlí nahoru
//Kontrola, zda jsou zahrnuty speciální vrtáky
int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt / DrillSlotLevel)) == DrillLevelCount);
if (ContainDrillIndex > -1)
{
double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;//Zbytek speciální velikosti vrtáku po dělení kroků
if (DrillsizeFloat > UpLevel) // např. 38 > 20
{
double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); //např. 40-50
double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //např. 40-38
DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;
}
else //if (ContainDrillFloat < UpLevel)
{
double diff1 = Math.Abs(DrillsizeFloat - 0); //např. 12-0
double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //např. 12-16
DrillsizeLevel = (diff1 UpParamHole.UpLevel) ? DrillSlotLevel : 0;//Určení, zda se zbytek zaokrouhlí nahoru
ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;
}
jinak
{
DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) / 10) * 10; // Zaokrouhlit dolů na nejbližších 10 μm.
ToolInfo.slot_len = DrillsizeInt;
}
ToolInfo.drilll_size += UpParam.SlotEndNumber; // Přidejte přídavné číslo pro segmentaci vrtáku do drážky.
}
ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();
return 1;
}
public class gToolUpParam
{
///
/// Kompenzační parametry pro otvory VIA (v μm)
///
public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();
///
/// Kompenzační parametry pro PTH (Plated Through Hole) (v μm)
///
public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();
///
/// Kompenzační parametry pro NPTH (Non-Plated Through Hole) (v μm)
///
public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();
///
/// Interval kroku pro kruhové vrtáky (v μm)
///
public double DrillLevel { get; set; } = 50;
///
/// Interval kroku pro drážkové vrtáky (v μm)
///
public double SlotLevel { get; set; } = 50;
///
/// Přídavné číslo pro segmentaci drážkových vrtáků
///
public int SlotEndNumber { get; set; } = 0;
///
/// Dodatečná kompenzační hodnota pro délku drážky (v μm)
///
public double SlotLengthUp { get; set; } = 0;
///
/// Zda se má délka slotu zaokrouhlovat na krokový interval.
///
public bool isSlotUpLevel { get; set; } = false;
}
public class gToolUpParamHole
{
///
/// Hodnota kompenzace (v μm)
///
public double UpVal { get; set; } = 100;
///
/// Práh krokového intervalu pro zaokrouhlování nahoru (v μm)
///
public double UpLevel { get; set; } = 25;
///
/// Horní tolerance (v μm)
///
public double Max_Tol { get; set; } = 76;
///
/// Dolní tolerance (v μm)
///
public double Min_Tol { get; set; } = 76;
}
///
/// Mod_tool: Model atributu vrtacího nástroje
///
public class Mod_tool
{
public int num { get; set; }
public string type { get; set; } // Hole type: via/plate(nplate)
public string shape { get; set; } // Tvar otvoru: kulatý/drážka
public double finish_size { get; set; } // Velikost hotového otvoru (v μm)
public double drill_size { get; set; } // Velikost vrtáku (v μm)
public double max_tol { get; set; } // Horní tolerance (v μm)
public double min_tol { get; set; } // Dolní tolerance (v μm)
public double slot_len { get; set; } // Délka slotu (v μm)
public string bit { get; set; } // Velikost vrtáku (v mm, formátovaný řetězec)
}
6. Proč má tloušťka desky vliv na kompenzaci vrtání?
Ani já jsem to zpočátku nechápal. Hlavním důvodem je vysoká poměr tloušťky k průměru (tloušťka desky dělená průměrem otvoru). Při vysokém poměru je měď ve středu otvoru tenčí a měď na okraji otvoru silnější. K výpočtu poměru tloušťky k průměru potřebujete hodnotu tloušťky desky. Tloušťka desky tedy vstupuje do pravidel pro kompenzaci vrtání. U otvorů s vysokým poměrem tloušťky k průměru je kompenzace větší.




