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. I ficar comentari

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 
(MSG, canviar broca T03=1,40)
M06 T03 (1.4000 )
G01 Z0.0000 F254.00 
M0 (force pause)
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).

NOTA. Per tal de què realment funcioni, he hagut de ficar M0 (forçar una pausa, equivalent al botó de pausa), per tal de reposicionar la broca. De fet, quan torno a fer M06 T03, com que no hi ha un canvi de broca, no serveix de res (almennys amb LinuxCNC, com que no hi ha canvi de broca, no fa cap pausa).

NOTA. Puc ficar comentaris aclaridors que es mostraran per pantalla, com ara:

(MSG, canviar broca T03=1,40)

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.

El Text, per tal de què surti definit en el milling, ha d'estar com a vector.

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

NOTA. En una prova posteriori, els fitxers de bottom queden en l'eix negatiu de les X, i això ho canvia tot. Veure més avall la 3a prova de capa doble, amb auto-level. 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

Level Compensation. Gcode Ripper

En aquest video es fa el level compensation utilitzant només eines lliures:

Milling a PCB with level compensation. The board is first probed (sorry, not shown on the video) and then all milling coordinates are offset along Z axis to compensate for board warping. The process uses only free tools:

PCB design - Eagle (freeware version):

The gcode is generated from layout designed in eagle using pcbgcode eagle plugin:

The gcode is modified to include probing procedure and warp compensation with gcode ripper:

And finally, the machine is controlled by a PC running linuxcnc:

Controlo totes les parts excepte fer el test de continuïtat (probee) i la compensació amb Gcode Ripper.

Per tant, la clau està en entendre bé l'eina Gcode Ripper, que pot fer el auto-probe i el Z-level compensation (entre d'altres coses)

$ cd G-Code_Ripper-0.14_src/
$ python g-code_ripper-014.py

General Settings: mm

Opció auto-probe

Quan selecciono la propietat auto-probe, a la dreta em surt les propietats que puc configurar de auto-probe. Es tracta d'escollir una matriu de punts, per exemple 10x10.

Opció Save Gcode File - Probe only. Es genera el fitxer probe_points.txt en la carpeta dels fitxers de configuració de LinuxCNC. Per ex, matriu_pikeyd.bot.etch_probe_only. És una matriu de punts, per exemple:

( G-Code Modified by G-Code Ripper                        )
( by Scorch - 2017 www.scorchworks.com                    )
G21   (set units to mm)
G90
(G Code)
(PROBEOPEN probe_points.txt)
G0 Z0.250
G0 X0.000Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
G0 X7.590Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
G0 X15.181Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
G0 X22.771Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
G0 X30.361Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
G0 X37.952Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
G0 X45.542Y0.000
G38.2 Z-0.500 F5.0
G0 Z0.250
...
(PROBECLOSE probe_points.txt)
...

El codi G38 és el de probe, que vol dir que el probe anirà de Z=0.250 fins a Z=-0.250, però s'aturarà quan hi hagi contacte, i es gravarà la informació al fitxer probe_points.txt.

G38.2 - G38.5 Probing

G38.2 - probe toward workpiece, stop on contact, signal error if failure
G38.3 - probe toward workpiece, stop on contact
G38.4 - probe away from workpiece, stop on loss of contact, signal error if failure
G38.5 - probe away from workpiece, stop on loss of contact

You will not be able to use a probe move until your machine has been set up to provide a probe input signal. The probe input signal must be connected to motion.probe-input in a .hal file. G38.x uses motion.probe-input to determine when the probe has made (or lost) contact. TRUE for probe contact closed (touching), FALSE for probe contact open.

La idea és que aleshores he de generar el fitxer de probe (Save G-Code File-Probe Only) amb el LinuxCNC i es genera el fitxer probe_points.txt, fent tot el procés de probe, fent el test de continuïtat. Tornem al GCode Ripper, obrim el fitxer probe_points.txt (Read Probe Data File), i aleshores es combina amb el G-Code original, obtenint un G-Code ajustat, que podem salvar (Save G-Code File-Adjusted). Aleshores ja podem anar al LinuxCNC i executar el fitxer ajustat.

Tot aquest procés es pot fer més ràpid amb l'opció Save G-Code File-Probe & Cut, doncs la idea és que es genera un fitxer parametritzat.

Mod de la màquina per fer auto-probe

dfdf
Cnc3040 probe.png
Cnc3040 probe2.png

Aquí hi ha un video d'un que fa probe en una màquina CNC4060 similar a la meva.

I Aquí també està explicat:

Expliquem el procés d'implementar l'entrada probe en la CNC3040T.

Primer de tot obrim la font d'alimentació-controladora, i efectivament tenim una entrada probe, que està lliure (veure la foto). La idea és ficar dos cables, que en curt-circuitar-los, entrarem el senyal de probe a la cotroladora. Igual que es fa amb la senyal de ESTOP. Per tant, quedarà tot molt senzill, i no he de seguir l'esquema elèctric del diagrama que he agafat d'un tutorial, sinó que senzillament amb un curtcircuit ja n'hi ha prou.

Tornem a executar el Stepconf wizzard. A part de l'entrada de probe, també vull configurar l'entrada de estop, doncs el botó de estop encara no l'havia configurat. Sembla ser que és un estàndar que el pin de estop és el 10, i el pin de probe és el 15. En la pantalla d'assignació dels pins faig aquesta assignació, i el fitxer de configuració quedarà de la següent manera:

3040t.hal
# Generated by stepconf at Tue Jun 17 18:52:45 2014
...
net estop-ext       <= parport.0.pin-10-in
net probe-in        <= parport.0.pin-15-in-not

-no significa que l'entrada és inversa (he hagut de fer un check en aquesta opció

Comprovo que el botó de STOP ara ja funciona. Per comprovar que el probe també funciona he d'agafar un fitxer .ngc, i amb el GCode-Ripper definir una matriu per fer probes. Executo amb LinuxCNC aquest fitxer, i efectivament ja puc comprovar (de moment manualment, curt-circuitant els dos cables), que el senyal de probe funciona, impedint que el spindle apreti la superfície. I efectivament es genera el fitxer de punts (dins del directori de configuració del LinuxCNC (allà on està la configuració de la 3040), que té el següent format:

0.000000 0.000000 0.069860 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.590000 0.000000 0.166511 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.181000 0.000000 0.164679 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
22.771000 0.000000 0.177916 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
30.361000 0.000000 0.156022 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
37.952000 0.000000 0.197063 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
45.542000 0.000000 0.176168 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

Aleshores amb el Gcode Ripper carrego aquest fitxer de punts, i es genera el fitxer modified, on s'han incorporat les compensacions oportunes en l'eix Z.

Ara només falta fer els cables més llargs per treure'ls de la font i portar-los fins al llit, i ficar pinces de cocodril. Una pinça haurà d'anar a la broca (quan es faci l'auto-level no cal que giri la broca, no hem de foradar res). L'altra pinça ha d'anar a la placa de coure, o bé ficar un punt e soldadura.

Video

Tercera prova PCB de doble cara. Carpeta Prova_CNC_2_capes

Pcb 2cares prova.png

De fet, el programador EEPROM és d'una sola cara, però com que es generen els fitxers de drill tant en el top com en el bottom, em pot ajudar per practicar.

El problema ve de què els fitxers generats de bottom estan en l'eix negatiu de les X, i per tant, s'ha de fer un work offset, amb el valor correcte.

Per saber quin work offset de les X s'haurà de fer, és important ficar un forat a (0,0), i un altre forat en la diagonal oposada, que representi la (X,Y) més gran que totes. També faré els altres dos punts, de manera què em queda el treball totalment emmarcat en aquests 4 punts. Aquests punts són importants perquè seran la referència per quan hagi de canviar de cara (on posaré els pius). Aquests forats els he de distingir de tots els altres, per tant escolliré una broca diferent, per exemple de 1mm. En el board, selecciono el forat i he de poder escollir el diàm=1mm.

En el pcb-gcode , genero els 4 fitxers (top-bottom, etch-drill), el bottom SENSE MIRROR. (Tots els fitxers generats que estan al voltant dels 900 bytes els podem eliminar). Si anem ara al LinuxCNC, veurem que bottom-etch i bottom-drill estan a l'eix negatiu de les X. La gràcia està en què bottom-drill té unes dimensions que van de X=0 fins a (per ex) X=-54.6, i per tant, dóna l'amplada total de la placa, i aquest valor de 54.6 és important perquè serà el work offset. En realitat el valor de l'offset no serà l'amplada de la placa, sinó la part de la placa que queda en l'eix negatiu de les X. Per exemple, si la placa va de x=12.5 fins a x=-134.4, el offset serà de 134.4.

NO:

Ara fem el work offset en els dos fitxers de bottom:

Posarem després del G90 (absolute positionning):

G10 L2 P1 X54.6 Y0 Z0

on P1 = G54, que és el codi de work offset bàsic

Ara si anem al LinuxCNC, veurem que els dos fitxers de bottom estan ben posicionats. Però el problema és el g-code_ripper, que no accepta els codis L.

MILLORA. Fer el mateix sense la instrucció G10 L2. Warning: L Codes are not supported ( G-Code File Line: 30 ) (TBD)

SOLUCIÓ: existeix la utilitat grecode amb la què fàcilment podem fer un shift en l'eix de les X:

$ ./grecode -shift 54.6 0 tests/testcode.ngc -o tests/out.ngc
$ ./grecode -shift 54.6 0 /home/joan/eagle/prova_CNC_2_capes/prova_cnc_2_capes.bot.etch.ngc -o /home/joan/eagle/prova_CNC_2_capes/prova_cnc_2_capes.bot.etch_shifted.ngc

I d'aquesta manera ja tenim els dos fitxers bot-etch i bot-drill en l'eix positiu de les X. Següent pas: auto-probe.

És el moment de ficar la placa a la base, i fixar-la bé amb cinta aÏllant. Fem només un forat fora de la zona de treball, que servirà per ficar un tornillo petit, on ficarem la pinça de cocodril de l'auto-probe. No fem més forats que aquest.

NOTA. No cal fer un forat per ficar un tornillo per aguantar la pinça, si estic disposat a aguantar la pinça amb la mà sobre la placa.

Obrim top-etch amb el g-code-ripper, i fem el auto-probe. Generem el top-etch-modified. Escollim el (0,0). Aquest origen ja no el podrem tocar fins que no acabem el treball. I ja podem fresar aquest fitxer.

Després de fer el milling del top, abans de girar la placa he de fer els 4 forats de referència. Per fer-ho, obro el top-drill, i el netejo per tal de fer només els 4 forats de les cantonades. És fàcil perquè estan identificats amb M06 T03 (1.000):

(Unit of measure: mm)
( 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.000mm 0.0394in | 0.0000in | 0.0000in |       0 )
( T04 | 1.016mm 0.0400in | 0.0000in | 0.0000in |       0 )
(Metric Mode)
G21
(Absolute Coordinates)
G90
M05
G00 Z25.0000 
M06 T03 (1.0000 )
G01 Z0.0000 F254.00 
M06 T03 (1.0000 )
G00 Z2.5400 
M03
G04 P3.000000
(canviem Z-1.75 per Z-6.00)
G82 X0.0000 Y0.0000 Z-6.00 F254.00 R2.5400 P1.000000
G82 X0.0000 Y52.0700 
G82 X54.6100 Y0.0000 
G82 X54.6100 Y52.0700 
M05
T01 
G00 Z12.7000 
M05
M02

Fixem-nos que els forats els faig més fondos (per exemple 10mm, per foradar la fusta de sota i poder ficar uns pius de referència.

MILLORA. Si els pius de referència no són prou fondos, no podré centrar bé la placa. Això és el que m'ha passat en la primera prova. En la segona prova he fet servir la broca de 2mm, i filferro de 2mm. No queda prou ajustat. Fer servir una broca de menys diàmetre i un filferro de menys diàmetre, i que ajustin bé. (TBD)

La resta de forats els faré des del bottom. S'han generat els 4 forats de referència. És el moment de treure la cinta aïllant, girar la placa sobre l'eix de les Y (puc netejar el que tinc, però recordar de NO fer-ho amb paper), i buscar la coincidència dels 4 pius. Tornar a ficar cinta aïllant.

Tornem a fer el auto-probe del bottom-etching. Fem el bottom-etching.

MILLORA: el que no té cap sentit és fer tot el etching i el drilling del bottom, per comprovar, quan hem acabat del tot, que ens hem equivocat ajustant els pius (que no hauria de passar). Però per seguretat, el que es proposa és generar el fitxer del bot-drilling dels 4 punts, però en comptes de foradar, quedar-se a la superfície, Només per assegurar-nos de què l'ajustament és el correcte. Si no fos el cas no passar res, perquè encara no hem fet res en la cara del bottom. Tornem a treure la placa, la tornem a ajustar. És a dir, no fem el etchng ni drilling si no estem segurs de què està ben ajustat. Això suposarà un bon estalvi de temps i maldecaps.

I ara fem el bottom-drilling. Ens hem de fixar amb la fondària, asssegurar-se de què atravessem la placa (1.55mm ± 0.15).

MILLORA. He fet el auto-probe del bottom, i per tant tinc el fitxer de compensació. Per tant, puc obtenir la versió modified. Això és important, perquè si no ho faig bé em puc quedar amb els forats a la meitat (el que m'ha passat a la primera prova). Una altra prova és mirar el fitxer de compensació, i mirar quin és el delta-z màxim que he de compensar. He fet el modified del bottom-drill, i el LinuxCNC no el carrega, dóna un error. No passa res, he de ser conscient de quin és el offset màxim i corregir manualment el bottom-drill. A més, en el bottom-drill he d'eliminar els 4 pius de referència. En principi no tindria per què ser, però m'he trobat que si no està ajustat perfecte, quan faig un forat sobre un altre forat ha fet torsió la broca i s'ha trencat. Per tantm el bottom-drill el copiaré i modificaré en el fitxer bottom-drill-modificat.

Per acabar, faltaria tallar la placa. El més pràctic, a diferència del què s'explica més amunt, és ficar una broca de 2mm i fer un tall manual controlant el botons de eix x,y i Z amb un moviment continu. Amb dues passades a 0,5 i 1mm n'hi ha prou.

El programador EEPROM de fet és un projecte d'una sola cara. Però he de controlar bé aquesta tècnica per fer la placa del mini-computer amb un Z80, que és de doble capa i més superfície. Per això he fet un petit projecte només per experimentar amb les plaques de doble cara: prova_cnc_2_cares.

Resum protocol. Fitxers involucrats

Amb negreta indico els fitxers que interessen

fitxers originals: (elimino els fitxers que estan al voltant dels 900 bytes)


Faig el shift dels dos fitxers de bottom

faig el auto-probe del top-etch, i modifico manualment el top-drill per tal de fer els 4 forats de referència. Faig el top-etch modificat i el top-drill modificat:

Giro la placa, faig el auto-probe del bot-etch. Faig el bot-etch modificat. Modifico manualment el bot-drill_shifted_comprovacio i el bot-drill_shifted_modificat

Diàmetre dels drills, tools a utilitzar

NOTA: interessant l'opció del Eagle: Tools > Drill Legend

Donat un projecte, puc obtenir el llistat de parts:

File > Export > Partlist

Exported from prova_cnc_2_capes.brd at 14/6/17 22:56
EAGLE Version 7.7.0 Copyright (c) 1988-2016 CadSoft
Assembly variant: 

Part     Value          Package  Library          Position (mm)         Orientation

IC1      24AA02P        DIL8     microchip-update (16.51 15.24)         R270
IC2      24AA02P        DIL8     microchip-update (34.29 15.24)         R270
IC3      24AA02P        DIL8     microchip-update (34.29 31.75)         R270
JP1                     1X06     pinhead          (12.7 43.18)          R0
JP2                     1X06     pinhead          (5.08 29.21)          R270
R1                      0204/5   resistor         (19.05 38.1)          R90
R2                      0204/5   resistor         (16.51 38.1)          R270
R3                      0204/5   resistor         (11.43 35.56)         R270

Per saber el diàmetre del drill que utilitzen, obrim library > open > pinhead > 1X06 (doble click)

Puc utilitzar Info o Show. Seleccionem el pad, i mirant properties, veiem que el drill és de 0,04 (inch)

Component drill sizes depend on the manufacturer's datasheets and they are dimensioned richly in Eagle, e.g. a DIP-package has pins of 0.6096mm while Eagle sets a drill size of 0.8192mm - which is large enough to put in the IC pin and throw a parcel through the remainder of the drill.

Per tant, és normal que hi hagi un cert marge, no ha de coincidir exactament el diàmetre del pin amb el diàmetre del drill.

When drilling your PCBs a minimum of drill bits is required. Provided your drill motor runs fairly balanced (no lateral play greater than 0.01mm) you can use drill bits of 0.6mm. For ICs (DIP package) use 0.8mm. (Using machined IC sockets a drill size of 0.6mm is more than generous.) The same drill size can be used for 250mW resistors and low capacitance electrolytic caps.

Diodes, especially 1N400X require drill sizes varying between 0.9 and 1.1mm depending on the manufacturer.

Power resistors require a drill size of 1.2mm.

Taking the most important drill sizes into account you don't have to change the package of parts for just one drill size.

(It makes no sense to use a 1mm drill for a part having 0.6mm pin diameter. It just makes soldering more difficult!)

Your assortment of drill bits should at least contain 0.6, 0.8, 1.0, 1.2 diameter tools.

Com es comenta a http://www.resistorguide.com/resistor-sizes-and-packages/, allò habitual en les resistències és:

En el fitxer bot.drill es generen les següents tools:

(Unit of measure: mm)
( Tool|       Size       |  Min Sub |  Max Sub |   Count )
( T01 | 3.200mm 0.1260in | 0.0000in | 0.0000in |       0 ) -> aquests són els forats (holes), que és diferent dels drills, doncs no està associat a components.
( T02 | 0.813mm 0.0320in | 0.0000in | 0.0000in |       0 )
( T03 | 1.016mm 0.0400in | 0.0000in | 0.0000in |       0 )

El tema que vull solucionar és que en el pinhead vull soldar directament uns cables, i vull fer els forats amb suficient diàmetre. Per tant, he de localitzar quina és l'eina que farà els pinheads: és la T03, però jo no cal que la faci de 1.016 (1mm), sinó que la puc ajustar al diàmetre dels meus cables.

NOTA. Quan canvio la broca s'ha de reposicionar el Home Axis Z, i aixó està explicat a:


creat per Joan Quintana Compte, febrer 2014, novembre 2016, maig 2017

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