Fer plaques PCB amb màquina CNC

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Referències

Exemple:

Important aquest enllaç:

La idea és treballar amb el Eagle Cadsoft, i estudiar el procediment per generar el fitxer g-code que utilitzarà una màquina CNC (TBD).

1a sessió (descoberta)

Instal.lació Eagle Cadsoft febrer 2014:

Descarrego pcbgcode:

La documentació està en la carpeta doc/, i hi ha un tutorial molt clar de com instal.lar pcbgcode a Eagle 6

Funciona bé, s'ha de llegir amb calma la documentació. El mateix projecte té un viewer a la carpeta viewer/application.linux:

$ ./viewer ~/eagle-6.5.0/projects/examples/ltspice/3518-eagle.bot.drill.tap

També hi ha un applet.

Setup. Script de setup

Fins que no importo el resultat al LinuxCNC no sabré si el resultat és correcte. Coses que s'han de fer:

Cas pràctic: joystick_pimame

Aquesta primera prova ha de servir per l'aprenentatge de com es pot crear una placa PCB fiable amb CNC. La placa que es construeix es correspon a un controlador de joystick i botons amb interfície USB, que s'utilitza en el projecte PiMAME i que està explicat a:

Ficar text en la placa

Com diu el fitxer pcbgcode.pdf (important llegir), el Generate Milling fa referència a les wires que he dibuixat en la capa Milling; i el Generate Text fa referència als texts que he escrit en la capa Milling. Per tant el fucionament és el correcte, i s'ha d'utiltizar la capa Milling per fer el fresat de text i tot el que vulgui. Concretament, el fresat per tallar la placa.

Com tallar la placa

Doncs seria molt fàcil pel que acabem de veure. Es tracta de dibuixar a l'entorn del circuit una wire en la capa Milling. En la cofiguració del pcb_gcode he de marcar Generate Milling, el depth per defecte està definit a 0,254mm (0,1), però es pot canviar. La idea seria marcar bé amb un tall i poder acabar de trencar la placa amb la mà.

Com fer els forats dels tornillos

Doncs senzillament en el board escollir el Hole amb el diàmetre adequat i col.locar.los. La definició dels forats en el fitxer de gcode està en el fitxer .top.drill.tap, igual que els forats de drilling dels components. Per tant, està en el mateix fitxer els forats dels components i el forat dels tornillos. (en els diferents Viewer no es veu el fitxer de drill, però sí que es genera). Els forats dels tornillos s'afegeixen al final de tot, després dels forats de components. Ho veiem en un exemple:

...
G82 X81.2800 Y21.5900 
G82 X81.2800 Y24.1300 
G82 X81.2800 Y26.6700 
G82 X81.2800 Y29.2100 
M05
G00 Z25.4000 
M06 T03 (1.4000 )
G01 Z0.0000 F254.00 
M06 T03 (1.4000 )
G00 Z2.5400 
M03
G04 P3.000000
G82 X43.1800 Y66.0400 Z-0.8128 F254.00 R2.5400 P1.000000
G82 X43.1800 Y16.5100 
G82 X86.3600 Y66.0400 
G82 X86.3600 Y16.5100 
T01 
G00 Z12.7000 
M05
M02

El primer forat (dalt-esquerra) l'he posat en la posició (43.18 , 66.04). Els primers G82 es correspon als últims forats de components. Després ve el G01 Z0.0000 F254.00 que sigifica aixecar el router 1. Després vénen els 4 G82 que es correspon als 4 forats (el primer efectivament té la posició (43.18 , 66.04)).

Més coses:

M06 T03 (1.4000 )

M06 sigifica operator pause, de manera que el router va a la posició on està definit el canvi de broca i l'operador pot canviar la broca. Això està definit en el fitxer emc.pp, perquè he definit el profile EMC:

string OPERATOR_PAUSE = "M06 ";

Aleshores puc canviar a la broca T03, que entre parèntesi (comentari) t'especifica que és de 1.4mm o el que sigui. Evidentment, aquest valor és el que s'ha definit en el tamany del forat en el board.

En el pcb_gcode hi ha una referència al diàmetre de les broques: Etching tool size. Això és necessari per generar el Viewer i veure com quedaran les pistes. De totes maneres, els diàmetres estan definits en el Eagle (dimensions del forat dels components i dels holes). El pcb_gcode agafa el brd i les regles definides en el disseny, i genera els fitxers gcode. En els fitxers queda definit el canvi de broca.

Opció Do tool change with zero step

Do tool change with zero step after moving to the tool change position and pausing for the operator to change the bit, the Z axis will move to Z0.000 and pause. This allows the operator to adjust the bit length to touch the surface of the PCB. Note that the tool should initially be set high into the spindle so that it won’t dig into the PCB when it moves to Z0.

La idea és senzilla. Després del canvi de broca el router va a la posició z=0, i aleshores puc tornar a ajustar la broca per tal de què tot just toqui la superfície.

G00 Z25.4000 
M06 T03 (1.4000 )
G01 Z0.0000 F254.00 
M06 T03 (1.4000 )
G00 Z2.5400 

Efectivament, veig un posicionament ràpid del router (G00), canvi de broca (M06), posicionament a z=0 (G01 Z0.0000 F254.00 ), un altre canvi de broca (M06) per reposicionar la broca, i torna a pujar el router a z=2.54 (G00).

Important: Utilitzar el Eagle DRC, clearance

El DRC (Design Rule Check) són les regles que imposem al board per tal d'assegurar-nos de què la qualitat serò bona i no tindrem problemes. Bàsicament el que ens interessa és la clearance (separacions). En el board anem a Tools > DRC > Clearance, i per defecte està ficat el valor de 0.2032mm. En el document pcbgcode.pdf es parla d'un valor recomanat de 25mil = 0.025 = 0.635mm, que és tres vegades més del que teníem. (Poso aquest valor en totes les opcions). Si poso aquest valor i faig un check del DRC automàticament veig que hi ha molts errors, i de fet són difícils de solucionar perquè si entre dos pins del xip vull fer passar una pista, cosa que sovint s'ha de fer, automàticament dóna un error. Un valor de compromís podria ser el de 0.4mm.

En el Viewer també es pot veure amb el codi de colors marró-vermell-taronja-groc de les diferents passades si una separació serà prou bona. Si veig el color groc és que hi ha prou separació. Si veig el color taronja és que no hi ha hagut prou separació (que no vol dir que hi hagi pont).

És qüestió de fer proves amb diverses variables (la posició dels components, diferents valors de clearance, i també buscar unes broques bones i primes). També després del check puc fer ajustos manuals que disminueixi el número d'errors. Al final, el que compta és el know-how i obtenir a partir de l'experiència uns resultats fiables i repetitius, de manera que el temps de desenvolupament disminueixi.

Com aprofitar al màxim l'espai

Layout v1.jpg
Layout v2.jpg
Layout v3.jpg
Layout v4.jpg
Layout v5.jpg

Les plaques que tinc són de 20x15 cm (200x150mm), i la versió freeware del Eagle CAD són 100x80mm.

La idea és aprofitar al màxim les plaques de coure. Per exemple, en el cas concret de la primera prova que estic fent amb el projecte joystick_pimme, vull mirar si puc ficar-copiar 4 dels meus projectes en un layout de 100x75mm. D'aquesta manera teòricament puc aconseguir 16 layouts amb una sola placa de 200x150mm.

El procediment seria el següent. Parteixo de l'esquemàtic, i converteixo a layout (amb dimensions 100x80. El primer que hauré de fer és fer una wire vertical a 5mm, de manera que em queda un layout de 100x75mm, i dividir també amb wire el que em queda en 4 trossos. Els wires han d'estar en la capa 46: milling, pel que s'ha comentat abans.

El primer que he de fer, important, és en el board definir el Grid (View > Grid) amb precisió de 1mm (millor 0.5mm) i visualitzar-lo. També és important versionar el projecte. Això és tan senzill com copiar la carpeta i per exemple renombrar-la a _v2.

El procediment és una mica il.lògic, però bàsicament així funciona. Parteixo de l'esquemàtic, i tinc el board tancat (important. Si tinc el bord obert, qua vulgui copiar el board no funcionarà). Selecciono tot l'esquemàtic i el duplico amb paste. Aleshores miro el ERC i torno a aprovar les regles que ja estaven aprovades i que tornen a sortir perquè he duplicat els nodes. (sembla ser que això és necessari).

Ara NO he de fer el switch to board, sinó que el que he de fer és obrir directament el board (doble click). Important. I ara ja sí que puc seleccionar el board i fer un copy-paste (a la manera del Eagle). I puc fer-ho quatre vegades de manera que els col.loco en les quatre caselles que he definit. Ara ja puc llençar el pcb_gcode i es generen els diferents fitxers.

La idea de fer-ho d'aquesta manera no només és per aprofitar al màxim el material (reducció de costos), sinó també reducció de temps. Per exemple, en el fitxer de drill hi ha tres canvis de broca. I són tres canvis de broca, no pas 12 canvis.

Sample Rack File

Aquest fitxer que puc generar (mirar el pdf) té en compte la permissivitat en el diàmetre dels forats. Per exemple el meu board té dos tipus de components quant a diàmtre del forat, i després els holes. Això implicaria tres broques. Si vull utilitzar una sola broca (i evitar-me les pauses en la generació dels forats), he d'utiltizar un rack file que en les especificacions min i max inclogui les diferents opcions. Per ex:

tool drill_size minimum  maximum  length
T01  0.500 mm   0.000 in 0.025 in 1.5 in

Procediment abans, durant i despreś

Com es comenta a http://pcbgcode.com/,

Mirar també flux soldante amb resina de colofonia i alcohol isopropílic que està explicat a una altra banda. Els flux soldants serveixen tant per a millorar la soldadura com per protegir la placa.

Primera prova: matriu_pikeyd. pcb-gcode setup

Estic tenint bastants problemes en entendre com puc cnaviar l'origen de coordenades de la màquina i de la peça. El millor perquè no hi hagi desplaçament des de l'origen fins on vull fer el PCB és recordar que quan faig el posicionament dels components en el board, l'origen 0,0 està avall i a l'esquerra (el costum era que situava els components a dalt, i precisament he de situar els components com més avall millor).

Hi ha l'opció spot drill holes, que per defecte està marcada, i al principi m'ha despistat. La idea és que després de fer el milling, en el mateix fitxer, marcar amb un punt (per defecte -0.2794mm) allà on aniran els forats. En principi no cal marcar aquesta opció si tinc la certesa de què els forats aniran allà on toca.

Els valors per defecte de isolation són:

Isolation:
Single pass: no checked
Minimum: 0.0254mm
Maximum: 0.508mm
Step size: 0.127mm

Fixem-nos que 0.508 = 0.127*4, la qual cosa vol dir que es fan 4+1 passades, cada vegada separant més les pistes adjacents. Després de fer la primera prova, veig que aquest és un valor massa gran, ho provaré amb 2+1 passades. De fet, després de la primera passada no hi ha contace elècttric, per tant el tall de la broca en la primera passada és efectiu (faig servir una broca de 20graus, acabada d'estrenar). Si marco single pass, només es faria una passada. Ho he provat i la isolació és bona. Per tant ho faig amb només dues passades (1+1):

Isolation:
Single pass: no checked
Minimum: 0.0254mm
Maximum: 0.127mm (són dues passades)
Step size: 0.127mm

(potser el Minimum hauria de ficar 0.254 en comptes de 0.0254).

Drilling

Com que el meu default Drill Rack File està buit, no en tinc, es sobreentén que no en vull utilitzar cap, i aleshores els valors d'aquesta taula no tenen efecte. Però jo he de saber quin és l'ordre del drilling. En la mati_pikeyd tinc tres tipus de forats: per les resistències; per on he de passar el cable; i per als tornillos. Per a les resistències em va bé la broca de codi rosa; per als cables la següent; i per als tornillos una de ben grossa (?).

La taula de broques que s'utilizen i que genera el G-Code és:

( Tool|       Size       |  Min Sub |  Max Sub |   Count )
( T01 | 0.600mm 0.0236in | 0.0000in | 0.0000in |       0 )
( T02 | 0.813mm 0.0320in | 0.0000in | 0.0000in |       0 )
( T03 | 1.016mm 0.0400in | 0.0000in | 0.0000in |       0 )

Primer comencem per la T01 que són els 4 forats:

M06 T01 (0.6000 )
G01 Z0.0000 F254.00 
M06 T01 (0.6000 )
G00 Z2.5400 
M03
G04 P3.000000
G82 X3.8100 Y77.4700 Z-1.7500 F254.00 R2.5400 P1.000000
G82 X71.1200 Y44.4500 
G82 X72.3900 Y77.4700 
G82 X2.5400 Y44.4500 

després vénen les resistències, que són 94 forats (i efectivamen hi ha 94 línies en el G-Code), i finalment els cables que són 48 forats.

Recordem que s'utiliza 2 vegades el M06 (canvi de broca) perquè d'aquesta manera puc reposiciónar la broca a Z=0. En el primer M06 no he d'apretar la broca! Però compte! Això no és ben bé així. Quan canvio de broca, per ex de T2 a T3, és quan em surt el missatge que he de canviar de broca i s'espera a què ho hagi fet. Quan faig per segon cop el M06 T01, com que veu que la broca és la mateixa, no em dóna opció a canviar o reposicionar la broca un cop he baixat a Z=0. Aleshores com es reposiciona la broca? Doncs no cal fer-hio, perquè les broques que he comprat tenen una referència de colors amb un tros de plàstic que deu ser estàndar. El que he de fer és ficar cap a dins la broca fins que el plàstic toqui. Una altra cosa és que faci servir broques sense aquesta referència, ja sigui per drilling o per milling.

(tool change at 12.7000 15.2400 40.0000 )
...
G00 Z40.0000 

no cal que el tool change sigui a 4cm, perquè com que tinc una fusta gruixuda, em passo de l'eix Z. Per culpa d'això he trencat una broca. Canvio a Z25

Milling. Text (en el Top i Bot) i contorns (Top i Bot)

Vull posar Text en el top, i vull fer un milling del contorn que em permeti separar amb els dits la placa.

Com diu en les instruccions (http://www.johnjohnson.info/wp-content/uploads/2013/05/pcbgcode.pdf), el Text s'ha de posar en la capa de Milling. En el setup del pcb-gcode està marcat per defecte el Generate Text amb una profunditat per defecte de -0.127mm.

Per fer el milling per on vull tallar la placa, no faig servir Dimension, sinó que ho faré amb un wire en la capa de milling. Així puc controlar el gruix. La profunditat la controlo en el setup amb Generate Milling > Depth, per defecte -0.254mm. Com que la placa és de 1,55mm, suposo que he de fer més profunditat, s'haurà de mirar un valor que em permeti trencar la placa amb els dits (TBD). No confondre aquest valor amb el Etching Tool Size (0.1778mm), que és el valor del etching de les pistes.

El Text es genera per defecte en el top. Com fer que és generi en el Bottom? Doncs molt fàcil: en el board, cliquem en les propietats (botó dret), i s'ha de marcar Mirror. Mirron significarà que el Text sortirà en el Bottom en comptes de en el Top.

En canvi, el Milling del contorn es genera tant en un fitxer de Top com en un fitxer de Bot. Per tant, si gravo tots dos és 0,254x2 = 0,508, que encara queda lluny del 1,55 del gruix de la placa.

Segona prova: matriu_pikeyd. PCB de doble cara

El pikeyd no és de doble cara, però vull practicar, i vull gravar unes lletres en el top, i vull tallar la placa amb un solc. matriu_pikeyd.bot.mill.ngc

En el Eagle defineixo el contorn que tallaré amb Wire sobre la capa 46 (Milling). Això fa que es generi en el pcb-gcode els fitxers bot.mill i top.mill. A mi només m'interessa el bot.mill. El codi generat és:

(Metric Mode)
G21
(Absolute Coordinates)
G90
G00 X0.0000 Y0.0000 
M03
G04 P3.000000
G00 Z2.5400 
G00 X0.0000 Y34.2900 
G01 Z-0.2540 F254.00 
G01 X0.0000 Y0.0000 F508.00 
G01 X72.3900 Y0.0000 
G01 X72.3900 Y34.2900 
G01 X0.0000 Y34.2900 
G00 Z12.7000 
M05
M02

que com es veu comença a (0,0), i amb una profunditat de Z=-0,254, va a (72.39,0), (72.39, 34.29) i finalment (0,34.29).

La idea és que fent una petita modificació d'aquest fitxer obtinc dos fitxers: un per fer els forats de referència quan faci PCB de doble capa; i un altre per tallar amb una bona broca la placa i poder serparar el meu PCB de la placa mare.

Protocol

Per fer una placa amb capa doble (ja sigui perquè hi ha pistes a les dues capes, o perquè vull fer milling (escriure text) en la capa de sobre, seguiré els següents passos.

  1. posar la placa sobre el llit i fixar-la bé amb cinta.
  2. fem els 4 forats de referència, amb el diàmetre adequat, tal com s'explica més avall.
  3. fem el etching, el drilling i el milling del bottom.
  4. Girem la placa (sobre l'eix y). Posem els pius per fer bé la referència, i posem el tape. Treiem els pius.
  5. Fem el top: eching, milling, text
  6. Tallem la placa amb l'altre fitxer que hem generat manualment (veure més avall).

Ftixer matriu_pikeyd_drill_referencia.ngc

Primer faig un canvi de broca, i després aniré als 4 punts de referència per foradar. Finalment, vaig a l'origen, deixant la broca aixecada. No he de foradar a 1.75, que són els drills normals, sinó més fondo, perquè he de foradar la fusta, i així podré ficar uns pius de referència. Foradaré per exemple a 3.50.

(Metric Mode)
G21
(Absolute Coordinates)
G90
M05
G00 Z25.0000 
G00 X12.7000 Y15.2400 
M06 T01 (canviar la broca per fer els 4 punts de referencia. No apretar la broca)
G01 Z0.0000 F254.00 
M06 T02 (Ajustar bé el 0 de la broca. Apretar la broca)
G00 Z2.5400
M03
G04 P3.000000 (esperem 3 segons)
G82 X0.00 Y0.00 Z-3.5000 F254.00 R2.5400 P1.000000
G82 X72.39 Y0.00 
G82 X72.39 Y34.29 
G82 0.00 Y34.29
M05
G00 Z25.0000 
G00 X0.0000 Y0.0000 
M02

Aquests forats foradan la placa PCB i la fusta del llit, de manera que quan doni la volta podré ficar uns pius de referència.

Fitxer matriu_pikeyd_tallar_pcb.ngc (per fer el solc)

La Copper Clad Laminate Circuit Boards FR2 PCB Single Side és de 1,55mm (1.55mm ± 0.15). Faré tres passades per tallar la placa. Una a -0.47, una altra a -0.94mm, i una altra a -1.4 amb una broca de flauta una mica gruixuda.

(Metric Mode)
G21
(Absolute Coordinates)
G90
M05
G00 Z25.0000 
G00 X12.7000 Y15.2400 
M06 T01 (canviar la broca per fer el solc. No apretar la broca)
G01 Z0.0000 F254.00 
M06 T02 (Ajustar bé el 0 de la broca. Apretar la broca)
G00 Z2.5400
M03
G04 P3.000000 (esperem 3 segons)
G00 Z2.5400 
G00 X0.0000 Y0.0000
(1a passada)
G01 Z-0.4700 F254.00
G01 X72.39 Y0.00 F254.00
G01 X72.39 Y34.29 F254.00
G01 X0.00 Y34.29 F254.00
G01 X0.00 Y0.00 F254.00
(2a passada)
G01 Z-0.9400 F254.00
G01 X72.39 Y0.00 F254.00
G01 X72.39 Y34.29 F254.00
G01 X0.00 Y34.29 F254.00
G01 X0.00 Y0.00 F254.00
(3a passada)
G01 Z-1.4000 F254.00
G01 X72.39 Y0.00 F254.00
G01 X72.39 Y34.29 F254.00
G01 X0.00 Y34.29 F254.00
G01 X0.00 Y0.00 F254.00
(final)
M05
G00 Z25.0000 
G00 X0.0000 Y0.0000 
M02

creat per Joan Quintana Compte, febrer 2014, novembre 2016

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines