Tietoja PCB Drill Compensation -järjestelmästä

About PCB Drill Compensation

Suuria yksilöitä ei ole olemassa, vain suuria tiimejä. Kun tiimi työskentelee yhdessä, ensimmäisen vaiheen PCB CAM -automaatioprojekti on tarkoitettu nettokäsittely ja poran käsittely on tehty. Seuraavaksi voimme siirtyä piirilevyn sääntömoottoriin. Tässä puhun porakompensaatiosta piirilevytekniikassa. Piirilevytekniikan kehittäjänä sinun pitäisi tietää, mikä se on ja miksi se toimii. Jaan alla keskeiset kohdat porauksen kompensoinnista.


1. Miksi kompensoimme porakokoja?

Asiakkaan antamien PCB-tiedostojen reikäkoot tarkoittavat yleensä seuraavaa lopullinen reiän koko. Piirilevyjen valmistuksen aikana reikien sisäpuolella on kupari (tai reiät saavat pintakäsittelyn, kuten HASL, ENIG, OSP jne.). Tämä pienentää reikää. Jotta varmistetaan, että reiän lopullinen koko vastaa vaatimusta, CAM-vaiheessa korjataan porakoko. Tämä on poran kompensointi.

Todellinen esimerkki:
Lopullinen reikäkoko: 1.00 mm. Pintakäsittely: ENIG (nikkelin paksuus 2,54 µm, kullan paksuus 0,0254 µm). Noudatetaan IPC-luokkaa II, ja keskimääräinen pinnoitetun kuparin paksuus on seuraava 20 µm. Jos käytämme 0,10 mm korvausarvona, CAM-ryhmä valitsee korvausarvoksi 1,10 mm poranterä.

Real example


2. Miten teemme porauskorvauksen?

Tee ensin selväksi, mitkä ovat porauskorvauksen kolme keskeistä parametria:
(1) Poranterän lisäys,
(2) Korvausarvo,
(3) Step-up-kynnysarvo (ennakkoarvo).
Nämä kolme määräävät, miten korvausta sovelletaan.

1) Poranterän lisäys

Tämä riippuu poranteristä, joita yritys ostaa. Alalla yleisesti käytetty lisäys on 50 µm. Tyypilliset porakoot vaihtelevat välillä 0,10 mm osoitteeseen 6,35 mm. Tavallinen pienin poranterien välinen askel on 0,05 mm. Joten porauskirjastossa on kokoja kuten 0,10 mm, 0,15 mm, 0,20 mm, 0,25 mm., ja niin edelleen.

2) Korvausarvo

Prosessiryhmä asettaa korvaussäännöt tehtaan testitulosten perusteella. Korvausarvot eivät juuri vaihtele eri toimialoilla. Yhteiset säännöt:

  • HASL-levyt (spray-purkki): kompensoi 0,15 mm.

  • Levyt ilman HASL:ää (ENIG, upotustina, OSP jne.): kompensoi 0,10 mm.

3) Step-up-kynnysarvo (ennakkoarvo)

Prosessiryhmä määrittää myös strategian poranterän valintaa varten, joka muistuttaa pyöristyssääntöä. Esimerkiksi kun lisäys on 20 µm, jos jäännös, joka jää jäljelle jakamalla lisäyksellä, on seuraava ≥ 20 µm, pyöristetään 50 µm ylöspäin, muuten säilytetään pienempi koko.

Esimerkki:
Lopullinen reikäkoko = 1,025 mm, korvaus = 0,10 mm, joten kompensoitu koko = 1,125 mm. Mutta ei ole mitään 1,125 mm porata kirjastossa. Käytä step-up-sääntöä. Jäljelle jäävä 1,125 mm verrattuna 0,05 mm:n askeleeseen. 25 µm. Koska 25 µm > 20 µm, pyöristetään 50 µm:llä ylöspäin ja valitaan a 1,15 mm pora.


Esimerkkejä todellisista porauskorvauksista

Oletetaan: porauskasvu = 50 µm, nousukynnys = 20 µm

Alkuperäinen reikä Korvaus Korvauksen jälkeen Kokonaislukuosa Jäännös Valittu pora
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

Miten valittu porakoko lasketaan

Jaa kompensoitu reikäkoko kokonaislukuosaan ja jäännösosaan poran inkrementin avulla:

Ota 1,125 mm esimerkkinä:
1,125 / 0,05 = 22,5 → lattia 22 → kokonaislukuosa = 22 × 0,05 = 1,10 mm.
Jäännös = 1,125 % 0,05 = 0,025 mm.

Sen jälkeen verrataan jäännösosaa step-up-kynnysarvoon (esimerkiksi 20 µm):

  • Jos jäännös > kynnysarvo, porakoko = kokonaislukuosa + 0,05 mm.

  • Jos jäännös ≤ kynnysarvo, porakoko = kokonaislukuosa + 0,00 mm.


Yhteenveto step-up-kynnysarvosta

Kun poran lisäys on 50 µm, step-up-kynnysarvo on kriittinen. Se suorittaa kompensoidun porakoon toisen korjauksen. Se päättää, “step up” vai “stay”. Tämän kynnysarvon muuttaminen muuttaa suoraan valittua porakokoa.

Lisää esimerkkejä (porausaste = 50 µm):

Alkuperäinen reikä Korvaus Kun comp. Kokonaisluku Jäännös Step-up-kynnysarvo Pora
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

Henkilökohtainen näkemys step-up-kynnyksen asettamisesta

Hyödyt ja haitat: Jos lopullinen reikä on kompensoinnin jälkeen hieman suurempi, osa voidaan ainakin asettaa paikalleen. Jos reikä on liian pieni, osaa ei voida asettaa. Asetamme siis yleensä korotuskynnyksen arvoksi 20 µm sen sijaan, että 25 µm. Tarkan valinnan on vastattava kutakin prosessia ja korvausarvoa.

Yhdistettynä korvausarvoon: HASL-levyjen osalta, joissa korvaus on 0,15 mm, “ylikompensoit” jo hieman ja lopulliset reiät ovat yleensä hieman suuria. Tässä tapauksessa step-up-kynnysarvo on 25 µm voi myös toimia. Käytä poraa valitessasi “lähimmän” sääntöä.


3. Miten varmistetaan, että reiän lopullinen koko vastaa vaatimuksia kompensoinnin jälkeen?

Menetelmä 1: Osta erikoisporanteriä

Poran vakiolisäys on 50 µm (0,05 mm:n askelin, kuten 1,00, 1,05, 1,10, 1,15 mm). Kun PTH-toleranssi on ±3 millimetriä, 50 µm:n porasarja voi kattaa toleranssin. Jos toleranssi on tätä pienempi, on käytettävä erikoisporanteriä.

Esimerkki 1 - Vertaa 50 µm:n ja 25 µm:n askelia:
Alkuperäinen reikä = 0,922 mm, korvaus = 0,10 mm, kompensoitu koko = 1,022 mm.

Alkuperäinen Korvaus Korvattu Lisäys Valittu pora
0.922 0.10 1.022 0,05 (50 µm) 1.05
0.922 0.10 1.022 0,025 (25 µm) 1.025

Ero: 1,050 - 1,022 = 0,028 mm; 1,025 - 1,022 = 0,003 mm. Pienempi ero on parempi, joten 1,025 mm (25 µm:n porrastus) on parempi.

Esimerkki 2 - 50 µm vs. erikoispora:
Alkuperäinen reikä = 0,611 mm, korvaus = 0,10 mm, kompensoitu = 0,711 mm.

Alkuperäinen Korvaus Korvattu Lisäys / tyyppi Valittu pora
0.611 0.10 0.711 0,05 (50 µm) 0.70
0.611 0.10 0.711 Erikoispora 0.711

Ero: 0,700 - 0,711 = -0,011 mm; 0,711 - 0,711 = 0,000 mm. Pienempi ero on parempi. Joten 0,711 mm erikoispora on paras.

Menetelmä 2: Parannetaan prosessia ja laitteita

  • Lisää toinen levyn pinnoitusvaihe kuviojakaumasta johtuvan epätasaisen paksuuden vähentämiseksi.

  • Käytä negatiivista valokuvaa suorasyövytyksellä ja levytä koko levy epätasaisen kuparin paksuuden vähentämiseksi.

  • Pienennä virrantiheyttä (tyypillisesti 19 ASF); hieman pienempi virrantiheys voi parantaa pinnoituksen tasaisuutta, mutta pidentää pinnoitusaikaa.

  • Päivitä vaakasuoraan pinnoituslinjaan. Pystysuorat pinnoituslinjat antavat usein paksumman kuparin reiän reunaan ja ohuemman kuparin reiän keskelle, kun reikien kuvasuhde on suuri. Vaakasuora linja voi vähentää tätä ongelmaa.

Menetelmä 3: CAM-strategioiden parantaminen

  • Eristetyillä kuparialueilla oleviin reikiin on sovellettava yhden lisäaskeleen kompensaatiota. Eristetyillä alueilla on vähemmän kuparia, joten pinnoituksen aikana niiden paikallinen virrantiheys on suurempi ja kuparin paksuus suurempi; ylimääräinen kompensointi kompensoi tätä.

  • Jos mallissa on tiheitä jälkiä toisella puolella ja harvoja toisella puolella (esimerkiksi virtalevy), aseta harva puoli sisäänpäin ja tiheä puoli ulospäin ja käytä käänteistä panelointia. Paneelipinnoituksen aikana levyn reunan lähellä olevat alueet saavat suuremman virrantiheyden ja paksumman pinnoituksen. Käänteinen panelointi auttaa tasapainottamaan pinnoitusjakaumaa.

  • Kun kuparipinta-alat ylhäällä ja alhaalla eroavat paljon toisistaan, käytä positiivista/negatiivista (yin-yang) panelointia. Epätasainen kuparipinta-ala aiheuttaa “kellonsuu”-läpivientejä; mitä paksumpi levy ja mitä enemmän kuparia, sitä pahempi vaikutus; yin-yang-paneelointi auttaa tasapainottamaan kuparin jakautumista.

  • Jos eristetyn alueen reiät ovat lähellä levyn reunaa tai aukkoja, lisää kuparisia “poiminta”-alueita tai kuparisia tyynyjä reunan tai aukon lähelle. Eristetyt reiät voivat saada liikaa pinnoituspaksuutta ja muuttua liian pieniksi; ylimääräinen kupari niiden lähellä vähentää paikallista virrantiheyttä ja tasapainottaa pinnoitusta.


4. Kuinka paljon korvausta tarvitaan ja miten se saadaan?

Kompensaatioarvot saadaan prosessitesteistä. Alla on yksi sarja mitattuja reikäkoon muutoksia eri vaiheiden jälkeen (tiedot raportista):

Prosessin kulku: mekaaninen poraus → upotuskupari → galvanointi → kuvionsiirto → syövytys → AOI → märkäkalvo → HASL

Prosessiparametrit:

  • Porakone: poranterän koko 0,95 mm, teroitus/hionta 3 kertaa, porauskorjaus 0,15 mm;

  • Pinnoitus: kuparin paksuus ≥ 18 µm, keskimäärin ≥ 20 µm;

  • HASL: lopullinen reikävaatimus 0,80 mm, toleranssi ±0,08 mm (3 mil);

  • Testi: 10 levyä, kulmat leikattu, levyn paksuus 2,0 mm.

Reiän koko muuttuu vaiheittain

1) Porauksen jälkeen - mitatut reikäkoot

  • Yhteensä 1920 testattua reikää (10 paneelia, 384 reikää kukin). Näyte: 200 reikää (20 reikää paneelia kohti). Reikien vaihteluväli: 0,93-0,94 mm, keskiarvo 0,931 mm.
    (Sitten pitkä luettelo otosarvoja, useimmiten 0,93 tai 0,94.)

2) Kuvioidun pinnoituksen jälkeen - kuparin paksuus

  • Testaa kutakin paneelia kohti 10 reikää. Kuparin paksuusalue 18-31 µm, kokous ≥18 µm ja keskiarvo ≥20 µm.
    (Sitten monet kuparin paksuuden näytearvot.)

3) Kuvioidun pinnoituksen jälkeen - reikäkoko

  • Yhteensä 1920 reikää, näyte 200. Reikien lukumäärä: 0,84-0,88 mm, keskiarvo 0,858 mm.
    (Sitten useita näytearvoja, enimmäkseen 0,85-0,88.)

4) HASL:n jälkeen - reiän koko

  • Yhteensä 1920 reikää, näyte 200. Reikien lukumäärä: 0,82-0,86 mm, keskiarvo 0,836 mm.
    (Sitten monia näytearvoja.)

Testiyhteenveto

Vaihe Reikäalue Keskimääräinen reikä
Porauksen jälkeen 0,93-0,94 mm 0,931 mm
Kuparipinnoituksen jälkeen 0,84-0,88 mm 0,858 mm
HASL:n jälkeen 0,82-0,86 mm 0,836 mm

Johtopäätökset: HASL-levyjen osalta porauskorvaus on 0,15 mm on “ylikompensaatiota” ja aiheuttaa sen, että lopulliset reiät ovat suurempia. Paras kompensointiarvo tässä testissä on 0,125 mm.


5. Porauskorvauskoodin täytäntöönpano (säännöt)

  1. Korvauksia ja korotusta koskevat säännöt

Aspect Valmis reikä Pinnan viimeistely Levyn paksuus Step-up-kynnysarvo Jos kuparin läpivienti < 26 µm 26-37 µm 37-47 µm 47-67 µm 67-86 µm
paksuuden suhde < 12:1 ≤ 1,90 mm HASL (lyijytetty tai lyijytön) ≥ 3,5 mm 0.01952 5 miljoonaa 6 miljoonaa 7 miljoonaa 8 miljoonaa 9 miljoonaa
paksuuden suhde < 12:1 ≤ 1,90 mm HASL (lyijytetty tai lyijytön) < 3,5 mm 0.01952 4,5 milj. 5,5 mil 6,5 mil 7,5 milj. 8,5 mil
paksuuden suhde < 12:1 ≤ 1,90 mm Muut viimeistelyt / 0.01952 4 miljoonaa 5 miljoonaa 6 miljoonaa 7 miljoonaa 8 miljoonaa
paksuuden suhde < 12:1 > 1,90 mm HASL / 0.0246 5,5 mil 6,5 mil 7,5 milj. 8,5 mil 9,5 milj.
paksuuden suhde < 12:1 > 1,90 mm Muut viimeistelyt / 0.01952 4,5 milj. 5,5 mil 6,5 mil 7,5 milj. 8,5 mil
paksuuden suhde ≥ 12:1 kaikki reiät HASL / 0.0246 5,5 mil 6,5 mil 7,5 milj. 8,5 mil 9,5 milj.
paksuuden suhde ≥ 12:1 kaikki reiät Muut viimeistelyt / 0.01952 5 miljoonaa 6 miljoonaa 7 miljoonaa 8 miljoonaa 9 miljoonaa
  1. Erikoisporakoot (jos toleranssi < 3 mil, käytä erikoisporia tai 25 µm:n porausväliä, käytä lähintä porasääntöä).

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

3. Porauksen korvauskoodi

				
					///
/// Lasketaan poranterän halkaisija porauskompensaatioparametrien perusteella.
///
///Porakoneen perustiedot
///Porakompensaatioparametrit
///Erityinen poranterien halkaisijaluettelo
///Palauttaa 1, jos laskenta onnistuu
public static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List ContainDrillToolList)
{
    if (ContainDrillToolList == null) ContainDrillToolList = new List();
    gToolUpParamHole UpParamHole = uusi 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) //Kun askelmaväli on 50μm, älä käytä erikoisporanteriä.
    {
        ContainDrillToolList = new List();
        UpLevel = UpParamHole.UpLevel;
    }
    else
    {
        UpLevel = UpParam.DrillLevel * 0.5; //Valitaan poranterä puolet askelvälistä.
    }

    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5; //Keskiarvo ylemmästä ja alemmasta toleranssista.
    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) / DrillSlotLevel))); //Porausaskeleiden lukumäärä
    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; //Kierros alaspäin lähimpään porausvaiheeseen.
    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;//Porakoon jäännös porausaskeleen jakamisen jälkeen.
    double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;//Määrittää, pyöristetäänkö jäännös ylöspäin.

    //Tarkistetaan, onko mukana erikoisporanteriä.
    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt / DrillSlotLevel)) == DrillLevelCount);
    if (ContainDrillIndex > -1)
    {
        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;//Erityisen poranterän koon jäännös askeljaon jälkeen.
        if (DrillsizeFloat > UpLevel) // esim. 38 > 20
        {
            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); //esim. 40-50
            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //esim. 40-38
            DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;
        }
        else //if (ContainDrillFloat < UpLevel)
        {
            double diff1 = Math.Abs(DrillsizeFloat - 0); //esim. 12-0
            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); //esim. 12-16
            DrillsizeLevel = (diff1  UpParamHole.UpLevel) ? DrillSlotLevel : 0;//Määrittää, pyöristetäänkö jäännös ylöspäin.
            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;
        }
        else
        {
            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) / 10) * 10; // Pyöristetään alaspäin lähimpään 10μm:iin.
            ToolInfo.slot_len = DrillsizeInt;
        }
        ToolInfo.drill_size += UpParam.SlotEndNumber; // Lisätään lisänumero poranterän segmentointia varten.
    }
    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();
    return 1;
}

public class gToolUpParam
{
    /// 
    /// VIA-reikien kompensointiparametrit (μm)
    /// 
    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();
    /// 
    /// Kompensointiparametrit PTH:lle (Plated Through Hole) (μm:ssä).
    /// 
    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();
    /// 
    /// Kompensointiparametrit NPTH:lle (Non-Plated Through Hole) (μm:ssä).
    /// 
    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();
    /// 
    /// Pyöreiden porausreikien askelväli (μm)
    /// 
    public double DrillLevel { get; set; } = 50;
    /// 
    /// Porausväli uraporareikiä varten (μm)
    /// 
    public double SlotLevel { get; set; } = 50;
    /// 
    /// Suffiksin numero rakoporan poranterän segmentointia varten.
    /// 
    public int SlotEndNumber { get; set; } = 0;
    /// 
    /// Lisäkompensaatioarvo uran pituudelle (μm:nä)
    /// 
    public double SlotLengthUp { get; set; } = 0;
    /// 
    /// Pyöristetäänkö uran pituus askelväliksi.
    /// 
    public bool isSlotUpLevel { get; set; } = false;
}

public class gToolUpParamHole
{
    /// 
    /// Kompensaatioarvo (μm)
    /// 
    public double UpVal { get; set; } = 100;
    /// 
    /// Askelvälin kynnysarvo pyöristystä varten (μm:ssä).
    /// 
    public double UpLevel { get; set; } = 25;
    /// 
    /// Ylempi toleranssi (μm)
    /// 
    public double Max_Tol { get; set; } = 76;
    /// 
    /// Alempi toleranssi (μm)
    /// 
    public double Min_Tol { get; set; } = 76;
}

///
/// Mod_tool: Poraustyökalun attribuuttimalli
///
public class Mod_tool
{
    public int num { get; set; }
    public string type { get; set; } // Hole type: via/plate(nplate)
    public string shape { get; set; } // Hole shape: pyöreä/aukko
    public double finish_size { get; set; } // Valmiin reiän koko (μm)
    public double drill_size { get; set; } // Poranterän koko (μm)
    public double max_tol { get; set; } // Ylempi toleranssi (μm)
    public double min_tol { get; set; } // Alempi toleranssi (μm)
    public double slot_len { get; set; } // Aukon pituus (μm)
    public string bit { get; set; } // Poranterän koko (mm:nä, muotoiltu merkkijono)
}
				
			

6. Miksi levyn paksuus vaikuttaa porauskorvaukseen?

Minäkään en aluksi ymmärtänyt tätä. Tärkein syy on korkea paksuuden ja halkaisijan suhde (levyn paksuus jaettuna reiän halkaisijalla). Suuri suhde tekee reiän keskellä olevasta kuparista ohuemman ja reiän reunalla olevasta kuparista paksumman. Paksuuden ja halkaisijan välisen suhteen laskemiseksi tarvitaan levyn paksuuden arvo. Levyn paksuus otetaan siis mukaan porauskorjaussääntöihin. Kun reikien paksuus suhteessa halkaisijaan on suuri, kompensaatio on suurempi.

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Selaa alkuun