Come fare un circuito stampato con Inkscape e una fresatrice cnc

Diciamo subito che si tratta di realizzare dei circuiti stampati per prototipi di circuiti non troppo complicati, per circuiti con molti componenti e produzione in serie ovviamente la scelta obbligate è quella di usare un CAD specifico.

Ma nel caso in cui si debba montare al volo un circuito costituito da pochi componenti la soluzione è o usare la basetta millefori oppure usare una basetta ramata sulla quale appoggiare i componenti.

La basetta ramata è ideale per costruire circuiti che lavorano a radiofrequenza, vantaggio dovuto principalmente all’ampia area di massa, lo svantaggio è che i piedini dei componenti che non vanno a massa devono rimanere sospesi facendo attenzione che non tocchino lo strato di rame sottostante.
Per evitare ciò bisognerebbe creare delle isole sul rame sulle quali collegare tra loro i piedini che altrimenti sarebbero sospesi in aria.

Dopo aver realizzato qualche circuito con le isole fatte a mano con un trapanino e una fresa, mi sono chiesto se potevo fare di meglio, disegnando il percorso con Inkscape e fresando la basetta con la piccola MF70 modificata cnc.
Il problema maggiore di questo approccio è che non esiste un software specifico per questa applicazione, per cui ho dovuto scriverlo da 0 o quasi.

In pratica si tratta di convertire un layer di un file SVG prodotto da Inkscape in comandi gcode, per far questo ho scritto un interprete minimale che converte le forme e le linee SVG in percorsi, la difficoltà maggiore devo dire che è stata quella di implementare gli archi e le curve di Bezier, delle quali però non potevo fare a meno perchè uno stampato con le curve è più bello di uno tutto squadrato ( anche l’occhio vuole la sua parte).
Alla fine è venuto fuori un codice usabile che sto utilizzando con soddisfazione e che ho deciso di condividere con voi che mi leggete.
Ecco uno dei circuiti realizzati con questa tecnica, si tratta di un triplicatore di frequenza da 40 a 120 Mhz che serve come oscillatore locale (LO) di un mixer di un convertitore di frequenza che sto cercando di realizzare… in realtà questo sw è un sottoprodotto del progetto del convertitore.

“oscillatore 120 Mhz”,”pcb-oscillatore-120mhz”=>”Oscillatore 120Mhz montato su pcb”,”frequency-tripler” => “Triplicatore di frequenza”) as $img=>$desc) {?>

” title=”” src=”http://fabrizio.zellini.org/wp-content/uploads/2012/05/.jpg” resize=”300x200c” />

Il codice è scritto in Python, non usa particolari librerie, è stato testato su Ubuntu 10.04.

Una volta copiati i 2 sorgenti python in una cartella, il programma che genera il gcode a partire dal file svg è svg2gcode.py, il nome del layer che contiene il path della fresa è “path”, gli altri layer possono essere usati per metterci i componenti e i collegamenti.

Per generare il gcode a partire dal file svg il comando è “./svg2gcode.py “.

Su Inkscape le unità di misura vanno settate in millimetri, la posizione (0,0) del foglio coincide con la posizione (0,0) del gcode.

Il gcode prevede che la posizione home dell’asse Z sia a una profondità tale da incidere la basetta.

“toolpath su inkscape”,”emc2″=>”Toolpath su emc2″) as $img=>$desc) {?>

” title=”” src=”http://fabrizio.zellini.org/wp-content/uploads/2012/05/.png” resize=”300x200c” />

Trovate il SW qui.

Una menzione particolare agli ottimi progetti CairoSVG e canvg, alcune parti del loro codice mi hanno fatto risparmiare molto tempo nella scrittura del parser.

Riferimenti

  • No Related Post