Cronaca dei miei primi esperimenti di CNC

Da raspibo.
Jump to navigation Jump to search

I miei primi 10 giorni con una macchina CNC in casa.

Venerdi' 25 luglio mi hanno consegnato la mia Power Wasp. In questo diario vi racconto i primi esperimenti, grattacapi, fallimenti e, ovviamente, successi.

Il primo problema e' stato l'interfacciamento. La Wasp comunica tramite una itnerfaccia seriale emulata su USB a 250Kbaud. E' una velocita' non standard! Per motivi storici le velocita' standard sono multipli di 1200. La velocita' piu' vicina e' 230400, ma ovviamente se il computer spedisce dati a 230400 e la Wasp si aspetta treni di impulsi a 250000 i due vedono solo schifezze.

Nel kernel Linux esiste la possibilita' di settare velocita' non standard per le seriali su USB tramite i tag di ioctl TCGETS2 e TCSETS2 ma purtroppo non sembra che gli sviluppatori della libreria C si siano ancora degnati di inserire tutti i tag nei file header opportuni.

Mi sono rimboccato le maniche e, un po' googlando in giro, un po' scrivendo codice, ho vinto le prime due battaglie con il codice.

Il primo programma che ho fatto funzionare e' printrun (il comando e' pronterface).

Per farlo funzionare ho dovuto patchare la libreria python per l'accesso alle seriali. Ho applicato questa patch (che ho trovato su Sourceforge) al file /usr/share/pyshared/serial. (Se avete distribuzioni diverse da Debian pyserial potrebbe essere installato in altra dir.)

A questo punto pronterface e' felice e chiacchiera con la Wasp.

Con il programma Cura e pronterface si possono ora stampare oggettini presi dalla rete. Thingiverse e' un catalogo di oggetti, molti con licenza CC.

Oggetti1.jpg Oggetti2.jpg

Si vedono gli errori che man mano ho fatto.... Lesbo (a sinistra in verde) ha gli strati troppo ravvicinati e magari temperatura un po' alta... ci sono quindi alcuni filamenti di troppo e la punta della testa e' un po' "colata". Il doppio Pegaso alato al centro ha spessore dell'involucro troppo sottile infatti si notano "falle". Il cane e' quello venuto meglio. Sono rimasto stupito che la stampante sia riuscita anche a stampare il muso che e' completamente a sbalzo.

Poi mi sono divertito con la fresa...

Qui il problema della comunicazione seriale e' stato piu' duro da risolvere e ho messo a dura prova le mie doti di "debugger"... Il programma per il dialogo con la stampante che funziona bene per controllare la fresa o altri strumenti e' Repetier Host (software libero: licenza Apache).

Questi "bravi ragazzi" hanno scritto il software in Mono, e mi e' toccato patchare mono perche' potesse funzionare... Magari poi troviamo un modo piu' semplice per "convincere Mono" a usare le seriali a 250Kbaud, qui vi spiego come ho fatto io... e sta funzionando!

Passo 1: ho preso i sorgenti di mono, in Debian:

  apt-get source mono

Passo 2: ho patchato il file support/serial.c con [File:support_serial_c.patch questa patch] (che ho scritto io "portando" la patch che funziona in Python, traducendola in C per la gerarchia dei sorgenti mono).

Passo 3: compilare (senza installare) mono:

  ./configure
  make

andate a prendere un caffe', uno spuntino o guardate un intero film a seconda della potenza del vostro processore.

Passo 4: installare solo la libreria di supporto posix modificata

 cp support/.libs/libMonoPosixHelper.so /usr/local/lib/

(potete poi pulire (make clean) o anche "cestinare" i sorgenti di mono).

A questo punto se /usr/local/lib e' nel LD_LIBRARY_PATH (path di ricerca delle librerie), repetier host funziona gia'.

Se non volete cambiare il path di ricerca delle librerie potete lanciare repetier con un LD_PRELOAD

 LD_PRELOAD=/usr/local/lib/libMonoPosixHelper.so repetierHost

(potete fare un alias o uno script per lanciare repetier host).