Om PCB-borekompensation

About PCB Drill Compensation

Der findes ingen gode individer, kun gode teams. Med et team, der arbejder sammen, kan første fase af PCB CAM-automatiseringsprojektet for Nettohåndtering og håndtering af bor er færdig. Dernæst kan vi gå videre til PCB-regelsættet. Her taler jeg om borekompensation i PCB-teknik. Som PCB-teknisk udvikler bør du vide, hvad det er, og hvorfor det virker. Jeg deler de vigtigste punkter om borekompensation nedenfor.


1. Hvorfor kompenserer vi for borestørrelser?

Hulstørrelserne i PCB-filerne, som kunden giver, betyder normalt endelig Hullernes størrelse. Under printkortproduktionen bliver kobberet belagt inde i hullerne (eller hullerne får en overfladefinish som HASL, ENIG, OSP osv.). Dette gør hullet mindre. For at sikre, at den endelige hulstørrelse opfylder kravene, korrigerer CAM-trinnet borestørrelsen. Dette er borekompensation.

Et rigtigt eksempel:
Endelig hulstørrelse: 1,00 mm. Overfladefinish: ENIG (nikkeltykkelse 2,54 µm, guldtykkelse 0,0254 µm). Følg IPC klasse II, og den gennemsnitlige tykkelse af belagt kobber er 20 µm. Hvis vi bruger 0,10 mm som kompensationsværdi, vil CAM-teamet vælge en 1,10 mm borekrone.

Real example


2. Hvordan laver vi borekompensation?

Først skal du gøre dig klart, hvad de tre vigtigste parametre for borekompensation er:
(1) Forøgelse af borekrone,
(2) Kompensationsværdi,
(3) Step-up-tærskel (forhåndsværdi).
Disse tre bestemmer, hvordan kompensationen skal anvendes.

1) Forøgelse af borekronen

Det afhænger af de bor, virksomheden køber. Den almindelige stigning i branchen er 50 µm. Typiske borestørrelser spænder fra 0,10 mm til 6,35 mm. Det sædvanlige mindste trin mellem bor er 0,05 mm. Så borebiblioteket har størrelser som 0,10 mm, 0,15 mm, 0,20 mm, 0,25 mm, og så videre.

2) Kompensationsværdi

Procesteamet fastsætter kompensationsreglerne baseret på fabrikkens testresultater. Kompensationsværdierne varierer ikke meget på tværs af branchen. Fælles regler:

  • Plader med HASL (spraydåse): kompensere 0,15 mm.

  • Plader uden HASL (ENIG, nedsænket tin, OSP osv.): kompensere 0,10 mm.

3) Step-up-tærskel (forhåndsværdi)

Procesteamet fastlægger også strategien for valg af borekrone, svarende til en afrundingsregel. For eksempel, når inkrementet er 20 µm, hvis resten efter at have divideret med stigningen er ≥ 20 µm, runder man 50 µm op; ellers beholder man den lavere størrelse.

Et eksempel:
Endelig størrelse på hullet = 1,025 mm, kompensation = 0,10 mm, så kompenseret størrelse = 1,125 mm. Men der er ingen 1,125 mm bor i biblioteket. Brug step-up-reglen. Resten af 1,125 mm sammenlignet med trinnet på 0,05 mm er 25 µm. Siden 25 µm > 20 µm, rund op med 50 µm og vælg en 1,15 mm øvelse.


Eksempler på faktisk borekompensation

Antag: boretrin = 50 µm, optrapningstærskel = 20 µm

Oprindeligt hul Kompensation Efter kompensation Heltalsdel Resterende Boret er valgt
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

Sådan beregner du den valgte borestørrelse

Opdel den kompenserede hulstørrelse i en heltalsdel og en restdel ved hjælp af boreforøgelsen:

Tag 1,125 mm som et eksempel:
1,125 / 0,05 = 22,5 → gulv til 22 → heltalsdel = 22 × 0,05 = 1,10 mm.
Resterende = 1,125 % 0,05 =. 0,025 mm.

Sammenlign derefter resten med optrapningstærsklen (f.eks. 20 µm):

  • Hvis rest > tærskelværdi, borestørrelse = heltalsdel + 0,05 mm.

  • Hvis rest ≤ tærskelværdi, borestørrelse = heltalsdel + 0,00 mm.


Resumé om step-up-tærsklen

Når boretrinnet er 50 µm, er step-up-tærsklen kritisk. Den udfører endnu en korrektion af den kompenserede borestørrelse. Den afgør, om der skal “steppes op” eller “forblive”. Ændring af denne tærskel ændrer direkte den valgte borestørrelse.

Flere eksempler (boretrin = 50 µm):

Oprindeligt hul Kompensation Efter komp. Heltal Resterende Step-up-tærskel Bor
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

Personligt syn på fastsættelse af optrapningstærsklen

Fordele og ulemper: Hvis det endelige hul er lidt større efter kompensationen, kan delen i det mindste sættes i. Hvis hullet er for lille, kan delen ikke indsættes. Så vi sætter normalt step-up-tærsklen til 20 µm i stedet for 25 µm. Det nøjagtige valg skal matche hver proces og kompensationsværdi.

Kombineret med kompensationsværdi: For tavler med HASL, hvor kompensationen er 0,15 mm, så “overkompenserer” man allerede en smule, og de endelige huller har en tendens til at være lidt store. I det tilfælde kan en step-up-tærskel på 25 µm kan også fungere. Brug “nærmeste”-reglen, når du vælger boret.


3. Hvordan sikrer man, at den endelige hulstørrelse opfylder kravene efter kompensation?

Metode 1: Køb specielle bor

Standard boretrin er 50 µm (0,05 mm trin som 1,00, 1,05, 1,10, 1,15 mm). Med en PTH-tolerance på ±3 mil kan et 50 µm boresæt dække tolerancen. Hvis tolerancen er mindre end det, skal du bruge specialbor.

Eksempel 1 - Sammenlign 50 µm og 25 µm trin:
Oprindeligt hul = 0,922 mm, kompensation = 0,10 mm, kompenseret størrelse = 1,022 mm.

Original Kompensation Kompenseret Tilvækst Boret er valgt
0.922 0.10 1.022 0,05 (50 µm) 1.05
0.922 0.10 1.022 0,025 (25 µm) 1.025

Forskel: 1,050 - 1,022 = 0,028 mm; 1,025 - 1,022 = 0,003 mm. Den mindste forskel er bedre, så 1,025 mm (25 µm trin) er bedre.

Eksempel 2 - 50 µm i forhold til specialbor:
Oprindeligt hul = 0,611 mm, kompensation = 0,10 mm, kompenseret = 0,711 mm.

Original Kompensation Kompenseret Inkrement / Type Boret er valgt
0.611 0.10 0.711 0,05 (50 µm) 0.70
0.611 0.10 0.711 Særlig øvelse 0.711

Forskel: 0,700 - 0,711 = -0,011 mm; 0,711 - 0,711 = 0,000 mm. Jo mindre forskel, jo bedre. Så den 0,711 mm specialbor er bedst.

Metode 2: Forbedre proces og udstyr

  • Tilføj et ekstra pladebelægningstrin for at reducere ujævn tykkelse fra mønsterfordeling.

  • Brug direkte ætsning med negativt foto og plade hele kortet for at reducere ujævn kobbertykkelse.

  • Sænk strømtætheden (typisk 19 ASF); en lidt lavere strømtæthed kan forbedre pletteringens ensartethed, men vil forlænge pletteringstiden.

  • Opgrader til en vandret pletteringslinje. Lodrette pletteringslinjer giver ofte tykkere kobber ved hulkanten og tyndere kobber i midten af hullet ved huller med højt aspektforhold. En vandret linje kan reducere det problem.

Metode 3: Forbedre CAM-strategier

  • For huller i isolerede kobberområder skal du anvende en ekstra trinvis kompensation. Isolerede områder har mindre kobber, så under plettering får de højere lokal strømtæthed og mere kobbertykkelse; ekstra kompensation udligner det.

  • Ved design med tætte spor på den ene side og tynde på den anden (f.eks. et strømkort) skal du placere den tynde side indad og den tætte side udad og bruge omvendt panelisering. Under panelplettering får områder nær printkanten højere strømtæthed og tykkere plettering. Reversed panelization hjælper med at afbalancere pletteringsfordelingen.

  • Når TOP- og BOTTOM-kobberarealet er meget forskelligt, skal du bruge positive/negative (yin-yang) paneler. Ujævnt kobberareal forårsager “bell-mouth”-vias; jo tykkere print og jo mere kobber, jo værre er effekten; yin-yang-paneler hjælper med at afbalancere kobberfordelingen.

  • Ved huller med isolerede områder nær printkanten eller åbninger skal der tilføjes “opsamlingsområder” af kobber eller kobberpuder nær kanten eller åbningen. Isolerede huller kan få for stor pletteringstykkelse og blive for små; ekstra kobber i nærheden af dem reducerer den lokale strømtæthed og afbalancerer pletteringen.


4. Hvor meget kompensation er der brug for, og hvordan opnås den?

Kompensationsværdier kommer fra procestests. Nedenfor ses et sæt målte ændringer i hulstørrelse efter forskellige trin (data fra en rapport):

Procesforløb: mekanisk boring → nedsænkning af kobber → galvanisering → mønsteroverførsel → ætsning → AOI → vådfilm → HASL

Procesparametre:

  • Bor: borestørrelse 0,95 mm, skærpes/slibes 3 gange, borekompensation 0,15 mm;

  • Plettering: kobbertykkelse ≥ 18 µm, gennemsnit ≥ 20 µm;

  • HASL: krav til det endelige hul 0,80 mm, tolerance ±0,08 mm (3 mil);

  • Test: 10 paneler, hjørnebeskåret, pladetykkelse 2,0 mm.

Hulstørrelsen ændres trinvis

1) Efter boring - Målte hulstørrelser

  • I alt 1920 testede huller (10 paneler, 384 huller hver). Prøve: 200 huller (20 pr. panel). Hullernes rækkevidde: 0,93-0,94 mm, gennemsnit 0,931 mm.
    (Derefter en lang liste med udvalgte værdier, for det meste 0,93 eller 0,94).

2) Efter mønstret plettering - kobbertykkelse

  • Test 10 huller for hvert panel. Område for kobbertykkelse 18-31 µm, møde ≥18 µm og gennemsnit ≥20 µm.
    (Derefter mange prøveværdier for kobbertykkelse).

3) Efter mønstret plettering - hulstørrelse

  • I alt 1920 huller, prøve 200. Hullernes rækkevidde: 0,84-0,88 mm, gennemsnit 0,858 mm.
    (Derefter mange prøveværdier, for det meste 0,85-0,88).

4) Efter HASL - hulstørrelse

  • I alt 1920 huller, prøve 200. Hullernes rækkevidde: 0,82-0,86 mm, gennemsnit 0,836 mm.
    (Derefter mange prøveværdier.)

Resumé af test

Trin Hullets rækkevidde Gennemsnitligt hul
Efter boring 0,93-0,94 mm 0,931 mm
Efter kobberbelægning 0,84-0,88 mm 0,858 mm
Efter HASL 0,82-0,86 mm 0,836 mm

Konklusion: For HASL-plader er borekompensationen på 0,15 mm er en “overkompensation” og får de endelige huller til at blive større. Den bedste kompensationsværdi i denne test er 0,125 mm.


5. Implementering af kode for borekompensation (regler)

  1. Regler for kompensation og step-up

Aspekt Færdigt hul Overfladefinish Pladens tykkelse Step-up-tærskel Hvis via kobber < 26 µm 26-37 µm 37-47 µm 47-67 µm 67-86 µm
Tykkelsesforhold < 12:1 ≤ 1,90 mm HASL (blyholdig eller blyfri) ≥ 3,5 mm 0.01952 5 mil 6 mil 7 mil 8 mil 9 mil
Tykkelsesforhold < 12:1 ≤ 1,90 mm HASL (blyholdig eller blyfri) < 3,5 mm 0.01952 4,5 mil 5,5 mil 6,5 mil 7,5 millioner 8,5 mil
Tykkelsesforhold < 12:1 ≤ 1,90 mm Andre finishes / 0.01952 4 mil 5 mil 6 mil 7 mil 8 mil
Tykkelsesforhold < 12:1 > 1,90 mm HASL / 0.0246 5,5 mil 6,5 mil 7,5 millioner 8,5 mil 9,5 millioner
Tykkelsesforhold < 12:1 > 1,90 mm Andre finishes / 0.01952 4,5 mil 5,5 mil 6,5 mil 7,5 millioner 8,5 mil
Tykkelsesforhold ≥ 12:1 alle huller HASL / 0.0246 5,5 mil 6,5 mil 7,5 millioner 8,5 mil 9,5 millioner
Tykkelsesforhold ≥ 12:1 alle huller Andre finishes / 0.01952 5 mil 6 mil 7 mil 8 mil 9 mil
  1. Særlige borestørrelser (hvis tolerance < 3 mil, brug særlige bor eller 25 µm trin, brug nærmeste boreregel)

				
					List ContainDrillToolList = new List();
ContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });
				
			

3. Kode for borekompensation

				
					///
/// Beregn borekronediameteren baseret på borekompensationsparametre
///
///Boreværktøjets grundlæggende oplysninger
///Parametre for borekompensation
///Speciel liste over borediametre
///Returnerer 1, hvis beregningen er vellykket.
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)
    {
        tilfælde "via":
            UpParamHole = UpParam.Via;
            break;
        tilfælde "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) //Når trinintervallet er 50 μm, må du ikke bruge specialbor
    {
        ContainDrillToolList = new List();
        UpLevel = UpParamHole.UpLevel;
    }
    ellers
    {
        UpLevel = UpParam.DrillLevel * 0,5; //Vælg bor med halvdelen af trinintervallet
    }

    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0,5; //Gennemsnit af den øvre og nedre tolerance
    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) / DrillSlotLevel)); //antal boretrin
    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; //Round down to the nearest drill step
    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;//Remainder af borestørrelse efter trininddeling
    double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;/Bestem, om resten skal rundes op

    //Kontroller, om særlige bor er inkluderet
    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt / DrillSlotLevel)) == DrillLevelCount);
    if (ContainDrillIndex > -1)
    {
        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;//Rest af specialborestørrelse efter trinopdeling
        if (DrillsizeFloat > UpLevel) // f.eks. 38 > 20
        {
            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); //f.eks. 40-50
            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //f.eks. 40-38
            DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;
        }
        else //if (ContainDrillFloat < UpLevel)
        {
            double diff1 = Math.Abs(DrillsizeFloat - 0); //f.eks. 12-0
            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //f.eks. 12-16
            DrillsizeLevel = (diff1  UpParamHole.UpLevel) ? DrillSlotLevel : 0;/Bestem, om resten skal rundes op
            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;
        }
        ellers
        {
            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) / 10) * 10; // Rund ned til nærmeste 10 μm
            ToolInfo.slot_len = DrillsizeInt;
        }
        ToolInfo.drill_size += UpParam.SlotEndNumber; // Tilføj suffixnummer for segmentering af slotboring
    }
    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();
    return 1;
}

offentlig klasse gToolUpParam
{
    /// 
    /// Kompensationsparametre for VIA-huller (i μm)
    /// 
    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();
    /// 
    /// Kompensationsparametre for PTH (Plated Through Hole) (i μm)
    /// 
    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();
    /// 
    /// Kompensationsparametre for NPTH (Non-Plated Through Hole) (i μm)
    /// 
    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();
    /// 
    /// Trininterval for runde borehuller (i μm)
    /// 
    public double DrillLevel { get; set; } = 50;
    /// 
    /// Trininterval for spalteboringer (i μm)
    /// 
    public double SlotLevel { get; set; } = 50;
    /// 
    /// Suffixnummer til segmentering af spalteborebit
    /// 
    public int SlotEndNumber { get; set; } = 0;
    /// 
    /// Ekstra kompensationsværdi for slidsenes længde (i μm)
    /// 
    public double SlotLengthUp { get; set; } = 0;
    /// 
    /// Om slotlængden skal afrundes til trininterval
    /// 
    public bool isSlotUpLevel { get; set; } = false;
}

offentlig klasse gToolUpParamHole
{
    /// 
    /// Kompensationsværdi (i μm)
    /// 
    public double UpVal { get; set; } = 100;
    /// 
    /// Tærskel for trininterval for afrunding opad (i μm)
    /// 
    public double UpLevel { get; set; } = 25;
    /// 
    /// Øvre tolerance (i μm)
    /// 
    public double Max_Tol { get; set; } = 76;
    /// 
    /// Nedre tolerance (i μm)
    /// 
    public double Min_Tol { get; set; } = 76;
}

///
/// Mod_tool: Attributmodel for boreværktøj
///
offentlig klasse Mod_tool
{
    public int num { get; set; }
    public string type { get; set; } // Hultype: via/plade(nplade)
    public string shape { get; set; } // Hulform: rund/slot
    public double finish_size { get; set; } // Størrelse på færdigt hul (i μm)
    public double drill_size { get; set; } // Borets størrelse (i μm)
    public double max_tol { get; set; } // Øvre tolerance (i μm)
    public double min_tol { get; set; } // Nedre tolerance (i μm)
    public double slot_len { get; set; } // Slotlængde (i μm)
    public string bit { get; set; } // Borestørrelse (i mm, formateret streng)
}
				
			

6. Hvorfor påvirker pladetykkelsen borekompensationen?

Jeg forstod det heller ikke i starten. Hovedårsagen er den høje forhold mellem tykkelse og diameter (pladetykkelse divideret med huldiameter). Et højt forhold gør kobberet i midten af hullet tyndere og kobberet i kanten af hullet tykkere. For at beregne forholdet mellem tykkelse og diameter skal du bruge værdien for pladetykkelsen. Så pladetykkelsen indgår i reglerne for borekompensation. For huller med stor tykkelse i forhold til diameteren er kompensationen større.

Efterlad en kommentar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Rul til toppen