Arxiu de la categoria: CNC

Prototip PCB de doble cara amb CNC

Aquests dies he estat perfeccionant com fer un prototipus de PCB amb la fresadora CNC.

Abans que res he hagut d’implementar el auto-probe per tal de compensar l’anivellament superficial de la placa on vull fresar. Aquest projecte requereix la màxima precisió. El tema del auto-probe va ser especialment ràpid i fàcil de fer, cosa rara doncs les coses fàcils normalment es compliquen de forma inesperada… Està documentat a [1].

Un cop l’auto-probe està funcionant, ja puc mirar de fer les plaques de doble cara. El principal repte està en girar la placa i que els forats en una capa i en l’altre coincideixin exactament. Com es veu a la foto, això s’ha aconseguit bastant bé, i la bona notícia és que hi ha marge per centrar bé els forats en la capa top (doncs en la foto es veu que els forats no estan exactament centrats). Tot està ben documentat en l’enllaç [2]

Ara que ja tinc el procés bastant clar, ja puc afrontar un petit projecte que requereix una placa de doble cara. Consisteix en muntar un mini-ordinador, amb finalitat purament acadèmica, amb un microprocessador Z80 [3]. Però abans de fer-lo, primer vindrà el programador de EEPROM [4], doncs a l’ordinador li hauré de carregar un programa en una EEPROM. No sé si tot plegat ho tindré enllestit abans de vacances.

En el passat havia fet plaques amb el mètode UV i amb el mètode de la planxa. Val a dir que sempre he tingut dificultats vàries en aconsegur plaques amb qualitat òptima. Ara, amb la CNC, estic buscant una manera ràpida de fer prototipus. En bona manera crec que ho he aconseguit. Ara bé, el procés, tot i que satisfactori, és més lent del que em pensava.

Joc del Simon. Extraescolar de Robòtica al Balmes

Ja hem acabat l’extraescolar de Robòtica al Balmes. Aquest any hem programat el joc del Simon amb una Raspberry Pi. Tota la documentació (i la programació didàctica) està a la wiki [1].

Durant aquestes 13 sessions hem anat treballant sobre diferents temes, que ens portaven a l’objectiu final de fer un prototipus de Simon:

  • Hem programat el script amb Python, viatjant per les diferents versions a mida que necessitàvem incorporar noves funcionalitats.
  • Hem connectat botons i LEDs als pins GPIO de la RPi.
  • Hem vist com, utilitzant transistors, podem disparar des dels pins GPIO senyals de 12V per encendre tires de LEDs blancs.
  • Hem discutit sobre l’alimentació de tot el sistema, i alternatives.
  • Hem discutit sobre com produir el so i la seva amplificació.
  • Hem dissenyat el moble final, utilitzant eines de fabricació digital com l’impressora 3D i la fresadora CNC.

Al final ha sigut un curs molt multidisciplinar, hem tocat moltes coses, tot i que per manca de temps, coneixements i d’infraestructura, moltes coses les ha implementat el professor i les ha mostrat a classe. Però al final l’experiència ha sigut enriquidora per tots.

El resultat final es pot veure a la foto i en aquest video:

Referències:

CNC: Del dxf al G-Code. Optimització de camins

El workflow del CNC consta de tres passos:

  1. Disseny del model o peça. Es fa amb software de CAD, com per exemple LibreCAD, i el format de sortida estàndar és dxf
  2. Generar el G-Code (del que va aquest article). Necessites un programa que sàpiga llegir el format dxf (on estan definides línies, arcs, polilínies, splines, etc.) i generi el codi (G-code) que entenen les fresadores CNC.
  3. El software que sap interpretar el G-Code i sap enviar les comandes a la màquina CNC a través del port paral·lel. Per exemple, LinuxCNC o EMC.

De tota aquesta tool chain el procés més complicat és el segon. Concretament l’optimització dels camins que farà la màquina CNC té molta importància en el resultat final.

Anem a veure-ho amb un exemple senzill i entenedor. Estem utilitzant el dxf2gcode, i realment va molt bé. Està escrit en Python. Té una interfície gràfica, però el millor és que també es pot executar en mode consola. Davant d’un problema que he tingut i que ja està resolt, vaig buscar una alternativa. M’he trobat amb el projecte dxf2G (els noms no són molt originals, ja veieu), que està escrit en llenguatge C, són 3000 línies de codi, i s’executa en línia de comandes.

El segon és un projecte senzill que funciona molt bé per petits projectes, i que és interessant estudiar el codi. Mirant què fa i com ho fa, es troba a faltar que no separa les capes del dxf (normalment es treballa amb capes perquè associem les capes a un canvi d’eina, per treballar amb diferents diàmetres de broca), i sobretot l’optimització de camins, que seria la part difícil d’implementar (es fan tesis doctorals sobre aquesta matèria).

Ho veiem amb un exemple de dibuixar una línia amb profunditat de 3mm, fent dues passades de 1,5mm. La manera correcta, com ho fa el dxf2gcode és fer una passada a 1,5mm, foradar fins a 3mm, i desfer el camí fins a tornar a l’inici de la recta. El tros de G-Code que genera el dxf2gcode és:

(*** LAYER: 0 ***)
T1 M6
S6000


(* SHAPE Nr: 0 *)
G0 X 0.000 Y 0.000
M3 M8
G0 Z 3.000
F150
G1 Z -1.500
F400
G1 X 60.000 Y 0.000
F150
G1 Z -3.000
F400
G1 X 0.000 Y 0.000
F150
G1 Z 3.000
G0 Z 15.000
M9 M5

En canvi, el dxf2G fa la implementació fàcil i costosa en temps: anem a l’origen de la recta; foradem a -1,5; fem la passada de la recta; pujem fins a 6mm per no tocar la peça; tornem a l’origen de la recta; foradem fins a -3mm; tornem a repassar la recta fresant a -3mm.

G0 X0.000000 Y0.000000
G0 Z3.000000
G1 Z0
G1 Z-1.500000
G1 X60.000000 Y0.000000
G0 Z6.000000
G0 X0.000000 Y0.000000
G0 Z3.000000
G1 Z-3.000000
G1 X60.000000 Y0.000000
G0 Z6.000000

Total, el segon codi pot trigar el doble de temps que el primer. I és que implementar algorismes d’optimització de camins (toolpath optimization en anglès) no és cosa fàcil.

Portàtil de fa 13 anys amb port paral·lel

Ja estic decidit a aconseguir una màquina CNC. Segurament serà la 3040T. Han passat dos anys des que volia construir-me la màquina CNC, o sigui que al final decideixo tirar pel dret.

He repassat tots els apunts que tenia de fa dos anys, torno a mirar el projecte LinuxCNC, i veig que les coses no han canviat molt. El port paral·lel (LPT, connector DB25) continua sent necessari. Per comunicar-se amb màquines CNC el port USB no és una opció fiable, no per la velocitat, sinó per la latència i precisió en l’enviament de pulsos. Evidentment avui dia existeixen solucions basades en Raspberry Pi o Arduino, però no són solucions estàndar en el sentit de què es pugui connectar qualsevol màquina CNC. A més, si utilitzes una Raspberry Pi com a controladora, igualment necessites un ordinador per dissenyar les peces.

Tenia una torre preparada amb LinuxCNC, de fa 2 anys, però buscant una solució més confortable, he pensat en un portàtil amb port paral·lel. A l’institut en tenim uns quants al taller per desmuntar, i n’he provat un, que ha complert les expectatives. He instal·lat LUbuntu 12.04, LinuxCNC, LibreCAD i dxf2gcode, sense especials problemes. És un Pentium III a 1,6GHz i 1GB de RAM, i compleix prou bé les expectatives, encara que una mica lent, clar. Quan pugui el conectaré als drivers i motors pas a pas que tinc per comprovar que tot funciona correctament.