Controllare motori passo a passo con Arduino

Ho deciso di scrivere questo articolo perché, trovandomi nella necessità di sviluppare un progetto che utilizza motori passo a passo, ho riscontrato che le guide disponibili in rete sono spesso lacunose o di difficile comprensione.

Come funziona un motore passo a passo?

Introdurrò in linea generale il principio di funzionamento, per gli aspetti matematico-fisici rimando alla mia tesi di laurea; è importante avere ben chiaro il funzionamento, in modo da capire come è meglio programmare Arduino. Wikipedia scrive: i motori passo-passo sono motori che, a differenza di tutti gli altri, hanno come scopo quello di mantenere fermo l’albero in una posizione di equilibrio: se alimentati si limitano infatti a bloccarsi in una ben precisa posizione angolare. Solo indirettamente è possibile ottenerne la rotazione: occorre inviare al motore una serie di impulsi di corrente, secondo un’opportuna sequenza, in modo tale da far spostare, per scatti successivi, la posizione di equilibrio. È così possibile far ruotare l’albero nella posizione e alla velocità voluta semplicemente contando gli impulsi ed impostando la loro frequenza, visto che le posizioni di equilibrio dell’albero sono determinate meccanicamente con estrema precisione.

L’elettromagnete in alto (1) viene eccitato, attraendo il dente più vicino di un attrezzo a forma di rotore metallico. Con il dente allineato all’elettromagnete 1, inizierà la rotazione verso l’elettromagnete 2.

Fase 1 motore passo

Fase 2 motore

 

 

 

 

 

 

L’elettromagnete in alto (1) viene spento e viene eccitato l’elettromagnete a destra (2), tirando il dente successivo leggermente verso destra. Questo processo produce una rotazione di 3.6° in questo esempio.

Fase 3 motore

fase 4 motore

 

 

 

 

 

 

L’elettromagnete a sinistra (4) viene eccitato, si ha un’altra rotazione di 3.6°. Quando l’elettromagnete in alto (1) sarà di nuovo eccitato, i denti del rocchetto dovranno ruotare nella posizione successiva; poiché vi sono 25 denti, occorrono 100 passi per realizzare una rotazione completa.

Unipolare o Bipolare?

Negli shop online trovate la possibilità di acquistare motori bipolari (generalmente a 4 fili) e motori unipolari (a 8 fili). La differenza consiste che mentre nel bipolare i magneti 1-3 e i magneti 2-4 condividono la stessa linea di alimentazione, negli unipolari le linee di alimentazione sono distinte per ogni magnete. I più diffusi sono i bipolari, perché richiedono dei sistemi di controllo più semplici, ma se avete a disposizione un unipolare, basta accoppiare opportunamente i fili di alimentazione ed otterrete un bipolare. La guida prenderà come esempio i motori bipolari.

Il driver

Per far muovere il motore è necessario dotarsi di un driver, un circuito che fornisce le tensioni e le correnti necessarie; ce ne sono diversi, ma conviene prendere quelli più evoluti, che hanno una logica integrata e sopratutto la possibilità del controllo in micropasso. Per chi volesse approfondire a livello di integrato, rimando al  Blog di Mauro Alfieri.

Il driver che utilizzerò io è PiBot Stepper Motor Driver Rev2.2; i collegamenti e le istruzioni per questo driver sono praticamente identiche per la maggior parte dei dispositivi recuperabili in commercio.

Analizziamo i collegamenti:

Prima di tutto serve individuare le fasi del motore, ed anche qui rimando al Blog di Mauro Alfieri. Una volta individuate le fasi le colleghiamo al driver secondo lo schema elettrico (ATTENZIONE, i colori dei cavi dipendo spesso dalla fantasia del produttore, quindi controllate sempre le fasi come da guida):

input-and-outputAll’ingresso di input 1A (o 1B) colleghiamo l’alimentazione per il motore; ricordatevi che più è alta la tensione di alimentazione (ovviamente entro i limiti segnati dal produttore) e più performante sarà il vostro motore. Ora passiamo ai collegamenti lato Arduino (in basso a destra):

  1. en: significa enable. Quando a questo ingresso c’è una tensione alta (3,3 – 5 V) il motore è alimentato. Questo non significa che si muove, ma che sta tenendo la posizione; viene generata una “coppia di tenuta” e se noi proviamo a muovere con le mani l’asse del motore, noteremo che opporrà resistenza. Se togliamo l’alimentazione il motore gira a vuoto; ovviamente nelle fasi di rotazione, su enable ci deve essere la tensione di attivazione.
  2. dir: significa direzione. Quando c’è una tensione il motore gira in un senso, quando non c’è gira nel senso opposto.
  3. clk: significa clock. Qui c’è il cuore per mettere in rotazione il motore. Infatti ogni qualvolta arriva uno stato logico alto, il motore avanzerà di un passo; a seguire ci deve essere uno stato logico basso. Quindi con la sequenza alto-basso facciamo avanzare il motore; è facile dedurre che maggiore è la frequenza con cui avviene questa sequenza e maggiore sarà la velocità di rotazione.
  4. gnd: massa

Colleghiamo ad Arduino

Il terminale di Enable se vogliamo possiamo collegarlo direttamente ai 5V di Arduino; ovviamente così facendo il motore sarà sempre in tensione. Nel caso invece vogliamo spegnere ed accendere il motore, lo colleghiamo ad un uscita digitale; dir e clk li colleghiamo ad un uscita digitale a nostro piacimento.

Programmiamo Arduino (il brutto codice):

ho scritto brutto codice, perché è quello che più frequentemente di trova nel web. Non è per nulla ottimizzato per controllare un motore passo-passo, ma funziona ed è didatticamente valido:

int DIR = 2;
int CLK = 3;
int EN = 4;
 
void setup() {
	pinMode(DIR, OUTPUT);
	pinMode(CLK, OUTPUT);
	pinMode(EN, OUTPUT);
}
 
void loop()
{
	digitalWrite(EN,HIGH);
	digitalWrite(DIR,HIGH);
        delay(50);
	for ( int i=0; i<200; i++) 
	{ 
	  stepGo(); delay(10); 
	}
	digitalWrite(DIR,LOW);
	for ( int i=0; i<200; i++) 
	{ 
	  stepGo(); delay(10); 
	}
	digitalWrite(EN,LOW);	
}
 
void stepGo() {
        digitalWrite(CLK, HIGH);
        delayMicroseconds(100);
        digitalWrite(CLK, LOW);
        delayMicroseconds(100);
}

Come sempre abbiamo dichiarato i pin di uscita ed indicizzati, analizziamo il voip loop()

digitalWrite(EN,HIGH);
digitalWrite(DIR,HIGH);

con la prima linea alimentiamo il motore, mentre con la seconda definiamo il senso di rotazione.

for ( int i=0; i<200; i++) 
 { 
  stepGo(); delay(10); 
 }

qui inizia un semplice ciclo che richiama la funzione stelGo() che ora vediamo:

void stepGo() {
 digitalWrite(CLK, HIGH);
 delayMicroseconds(100);
 digitalWrite(CLK, LOW);
 delayMicroseconds(100);
}

qui viene generata la sequenza alto-basso che fa avanzare di un passo alla volta il motore. Il delayMicroseconds() tra uno stato logico alto e basso è necessario per dare fisicamente al motore il tempo di avanzare, se non ci fosse, il motore inizierebbe a fischiare con aggiunta di rumori inquietanti. Ovviamente variando l’intervallo variamo la velocità di rotazione; più il delay è basso e più veloci si va.

Perché brutto codice? Per la presenza del delay(); tenete presente che in modalità full-step (passo intero, in fondo all’articolo spiego il micropasso), nella maggior parte degli attuatori in commercio ci vogliono 200 passi per fare un giro completo. Il delay() ha l’effetto di bloccare qualsiasi altra funzione della scheda arduino, in pratica rimane in “sospeso” finché non è trascorsa la pausa. Capite bene che se oltre al motori avete collegati sensori, pannelli LCD o altro, vi ritrovate con la scheda ferma anche per diversi secondi durante l’avanzamento del motore il che è una cosa da evitare.

Un codice buono:

int DIR = 2;
int CLK = 3;
int EN = 4;

boolean motorStatus = false;
unsigned long onDuration = 100;
unsigned long offDuration = 100;
unsigned long NextToggle = micros() + offDuration;
 
void setup() {
	pinMode(DIR, OUTPUT);
	pinMode(CLK, OUTPUT);
	pinMode(EN, OUTPUT);
} 
void loop()
{
	digitalWrite(EN,HIGH);
	digitalWrite(DIR,HIGH);
    delay(50);
	for ( int i=0; i<200; i++) 
	{ 
          if (micros() > NextToggle) 
          {
		stepGo(CLK);
          }
	}
	digitalWrite(DIR,LOW);
	
        for ( int i=0; i<200; i++) 
        {
	  if (micros() > NextToggle) 
          {
		stepGo(CLK);
          }
        }
	digitalWrite(EN,LOW);	
}
 
void stepGo(int CLK){
motorStatus = !motorStatus;
digitalWrite(CLK,motorStatus);
if (motorStatus)
{
NextToggle = micros() + onDuration;
}
else
{
NextToggle = micros() + offDuration;
}
}

Rispetto al precedente ho aggiunto qualche variabile:

boolean motorStatus = false;
unsigned long onDuration = 100;
unsigned long offDuration = 100;
unsigned long NextToggle = micros() + offDuration;

micros() restituisce il valore in microsecondi del tempo trascorso dall’accensione della scheda Arduino.

All’interno dei cicli for è comparso:

if (micros() > NextToggle)

mentre la funzione è cambiata in:

void stepGo(int CLK){
motorStatus = !motorStatus;
digitalWrite(CLK,motorStatus);
if (motorStatus)
{
NextToggle = micros() + onDuration;
}
else
{
NextToggle = micros() + offDuration;
}
}

Il principio di funzionamento è abbastanza semplice. Viene salvato nella variabile NextToggle il tempo trascorso dall’accensione della scheda più un valore definito. Ad ogni ciclo di loop il valore restituito da micros() ovviamente aumenta, finché non diventa maggiore di NextToggle, attivando la chiamata alla funzione.

In void stepGo la prima operazione eseguita è un cambio di livello logico rispetto al precedente (ricordate la sequenza alto-basso necessaria per l’avanzamento?), e si ha la scrittura di questo nel pin di CLK (digitalWrite(CLK,motorStatus;). L’if serve solo a poter definire un tempo differente tra il livello logico alto ed il livello logico basso, andando comunque ad implementare il valore di NextToggle. Quindi la funzione si risolve e si torna in loop dove reinizia il ciclo.

Con questo codice riusciamo a definire un tempo per il livello logico alto e per quello basso, senza dover utilizzare il delay().

Il codice migliore:

il controllo dei motori passo è una delle cose più interessanti da fare con Arduino e quindi non è tardato molto prima che qualcuno scrivesse una libreria dedicata, che si chiama Stepper e la troviamo tra gli esempi.

#include <Stepper.h>

int DIR = 2;
int CLK = 3;
int EN = 4;
int steps = 1;
int velocita = 1500;
 
 Stepper stepGo(steps, DIR, CLK);
 
void setup() {
	pinMode(DIR, OUTPUT);
	pinMode(CLK, OUTPUT);
	pinMode(EN, OUTPUT);
} 
void loop()
{
	digitalWrite(EN,HIGH);
	digitalWrite(DIR,HIGH);
        stepGo.setSpeed(velocita);
        delay(50);
	for ( int i=0; i<200; i++) 
	{ 
        stepGo.step(steps);
	}
	digitalWrite(DIR,LOW);
	
        steps=-1;
        for ( int i=0; i<200; i++) 
        {
       stepGo.step(steps);
        }
	digitalWrite(EN,LOW);	
}

questa libreria ha diverse modalità di funzionamento, io analizzo quello concorde agli esempi precedenti:

Stepper stepGo(steps, DIR, CLK);

abbiamo definito la funzione stepGo, che riceve 3 input:

  1. il numero di passi che deve fare ogni volta che viene chiamata;
  2. il pin su cui è collegato il Dir del nostro driver;
  3. il pin su cui è collegato il CLK del nostro driver.

Si imposta la velocità:

 stepGo.setSpeed(velocita);

Quindi ogni qualvolta viene richiamata la funzione, viene fatto avanzare il motore di un numero definito di passi:

stepGo.step(steps);

Per poter far andare il motore in senso inverso basta definire un numero di passi negativo:

steps=-1;

Rispetto ai codici analizzati prima, questa libreria è decisamente più versatile e sopratutto si possono controllare più motori con la stessa funzione, inserendo semplicemente tre parametri.

Questa è una piccola introduzione al controllo dei motori passo a passo; ci sono ancora parecchie cose da apprendere, come l’accelerazione (non si può pretendere che il motore parta fin da subito alla velocità massima) o il controllo in retroazione per il conteggio dei giri.

Il micropasso:

fino ad ora abbiamo ipotizzato di alimentare le fasi una alla volta in sequenza, però se noi alimentassimo contemporaneamente due fasi, l’asse del motore di metterebbe in una posizione intermedia. In questo modo con la sequenza di alimentazione A, A-B, B, abbiamo raddoppiato il numero di passi necessari al motore per fare un giro completo. Questa configurazione si chiama Half-Step

Se inoltre iniziassimo ad alimentare la fase A con frazioni di corrente della fase B, aumenteremo ancora il numero di fasi, da qui controllo in micropasso. Per questo motivo i motori passo a passo stanno avendo un enorme diffusione, perché con un opportuna elettronica si aumenta la precisione di spostamento, mantenendo (più o meno) la coppia erogata, senza riduttori meccanici.Ovviamente per micropassi elevati, servono notevoli capacità di calcolo e frequenze di lavoro.

 

VN:F [1.9.22_1171]
Rating: 9.9/10 (8 votes cast)
VN:F [1.9.22_1171]
Rating: +3 (from 9 votes)

Adron Technology Gezapp: Drone + Stampa 3D + lotta biologica alla Piralide

Adron Technology è un azienda di Udine che ha sviluppato uno dei primi droni “contadini”: hanno dotato il velivolo di un dispenser che rilascia sul terreno a coordinate ben precise e preimpostate (il tutto controllato da GPS), delle capsule di cellulosa contenenti uova di Trichogramma, insetto che stermina la Piralide secondo il principio della lotta biologica.drone-3

Per sviluppare il progetto, come oramai è consuetudine per chi fa ricerca, si sono dotati di una stampante 3D, con la quale hanno potuto realizzare tutti i prototipi di studio e di test. Oltre ad abbattere i tempi di prototipazione ed i costi, grazie alle geometrie realizzabili con le stampanti 3D, sono riusciti a ridurre di molto i pesi, consentendo una maggior autonomia di volo.

Sono state anche sviluppate delle soluzioni che permettono il monitoraggio delle coltivazioni tramite l’equipaggiamento di specifici sensori. Attualmente stanno partecipando al Premio “UpStart Paolo Traci”, e per chi volesse dare il proprio contributo tramite un voto, basta cliccare il seguente link.

 

VN:F [1.9.22_1171]
Rating: 9.3/10 (6 votes cast)
VN:F [1.9.22_1171]
Rating: +2 (from 2 votes)

Zortrax M200, la stampante per le PMI

La Zortrax M200 è una stampante a tecnologia FDM di produzione polacca che sta rapidamente conquistando le scene nel panorama della prototipazione 3D; ho avuto la possibilità di usarla e testarla negli ultimi tre mesi potendone valutare potenzialità e limiti.

IMBALLAGGIO

La macchina arriva in un ottimo imballaggio fatto su misura; appena aperto si trovano subito le istruzioni per estrarla senza danni dalla scatola, e già qui si denota una certa cura nel dettaglio. Tutte le componenti e i meccanismi sono bloccati ed hanno la propria sede; nel pacco troviamo anche una bobina di Z-ABS ed uno starter-kit con tutto il necessario per iniziare a stampare (spatola, bisturi, taglierino, pinze, tronchesine, etc.).

StarterKit Zortrax

PRIMA IMPRESSIONE

Lo chassis in alluminio nero ha un design elegante ed essenziale e fin da subito da un idea di robustezza; sul frontale in basso a destra c’è un minimale pannello LCD con encoder per il controllo della stampante, mentre sul retro ci sono i fori per l’innesto del porta bobina e del relativo tubicino convogliatore all’estrusore.

Zortrax

LA MECCANICA

L’idea generale è di robustezza e precisione; la movimentazione dell’asse Z è affidata ad una barra a ricircolo di sfere, mentre la base d’appoggio del piano di stampa è composta da una solida struttura in alluminio che scorre tramite 4 manicotti a ricircolo su barre rettificate da 12mm.

Gli assi X e Y sono composti da due guide lineari (generalmente in commercio si trova una guida per asse) con conseguente diminuzione dei momenti torcenti del gruppo estrusore e delle vibrazioni alle alte velocità. Nel complesso ci sono 8 barre rettificate con doppi cuscinetti per asse di movimento; il che la rende una tra le stampanti più solide per la fascia di prezzo su cui si colloca.

Gli azionamenti sono affidati a cinghie Gates GT2, che scorrono su pulegge in alluminio opportunamente fissate al telaio.

La stampante è dotata di un unico estrusore.

Meccanica zortrax

IL PIANO DI STAMPA

Questo elemento merita un approfondimento a parte; innanzitutto il fissaggio alla base avviene tramite dei comodi magneti ed i collegamenti elettrici sono con dei pratici molex non invertibili. La regolazione della bolla avviene tramite tre viti con molla (due posteriori ed una anteriore), ma per ovviare ai classici movimenti oscillatori del piano a cui siamo abituati, gli ingegneri Zortax hanno inserito 4 punti guida, che impediscono traslazioni, specialmente durante la fase di stampa.

Il piano è scaldato e microforato; quest’ultimo elemento all’inizio mi aveva lasciato parecchio perplesso (specialmente conoscendo i risultati di stampanti che usavano la stessa soluzione), dato che implica l’utilizzo del raft con conseguente rischio di imperfezioni sul modello se non addirittura rotture nella fase di rimozione. Naturalmente questa soluzione evita di trasformare la nostra officina/ufficio in un salone parrucchiera, oppure di andare alla ricerca dell’introvabile e costoso kapton o bluetape.

LIVELLAMENTO DEL PIANO

La macchina prevede un sistema di calibrazione elettronico semi-automatico; dal pannello LCD si avvia l’autocalibrazione e non appena scaldati piano ed estrusore, provvede a rilevare le quote dei quattro angoli, comunicando all’operatore se avvitare o svitare una delle tre viti di regolazione. Per una corretta calibrazione ci si impiega anche un quarto d’ora, ma questo tempo sarà ricompensato in seguito da stampe perfette e che non si staccano. Quindi si possono mandare in soffitta spessimetri e fogli di carta vari. Grazie alla struttura estremamente robusta, nell’arco di due mesi di lavoro intensivo, solo in un occasione ho dovuto rifare la calibrazione.

SOFTWARE

Si chiama Z-SUITE ed un software proprietario; definirlo essenziale è riduttivo: per me è stato uno shock non avere a disposizione tutti quei parametri che di solito su Cura o Slic3r imposto. Memore di software altrettanto essenziali, non mi attendevo una elevata qualità di stampa. Fondamentalmente ho sei parametri nel pannello base: altezza layer (minimo 90 micron), materiale (lista di quella fornita dal produttore), infill, supporti e controllo velocità ventole; nel pannello “advanced” posso eventualmente compensare la dimensione dei fori e dei perimetri esterni, oltre che a variare il numero di layer di top e bottom.

Caricato il nostro :STL, possiamo procedere con le classiche modifiche come rotazione, scala, e sposta; una volta ultimato lo slicing ci viene data un anteprima grafica del G-Code. Possiamo visualizzare il codice layer per layer (come su repetier) e inserire ove necessario della pause-stampa, che verranno visualizzare graficamente con una colorazione rossa (utili ad esempio per inserire componenti nel modello, oppure cambiare filo) Il G-Code lo si salva nella classica SD che poi si inserisce nella macchina: non c’è  un controllo diretto da computer, ma è previsto in futuro l’implementazione del wifi per l’invio dei file e lo start di stampa.

FILAMENTO

La Zortrax lavora principalmente ABS che viene fornito dall’azienda produttrice; già questa limitazione mi aveva messo in agitazione. Questo materiale è la bestia nera delle stampanti semiprofessionali che non hanno la camera a temperatura controllata (sebbene si possano acquistare a parte delle paratie laterali anti-vento); già temevo warping, distaccamenti dal piano di stampa e delaminazioni.

Ed invece tutto questo, con mia incredulità non è successo! Infatti la combinazione di piano scaldato e microforatura crea un impressionante aderenza del modello in fase di realizzazione. Ovviamente ci si aspetta poi di doversi dotare di scalpello per rimuovere l’oggetto dal piano e successivamente il raft, ma anche qui con mia meraviglia, una volta raffreddato, tutto si stacca senza problemi e senza lasciare residui sia sul piano che sul modello.

Siccome non ci sono encoder nelle bobine, ho fatto anche dei test con ABS “non proprietari” e con i materiali “FiloAlfa” mi sono trovato decisamente bene, oltre ad avere una rifinitura superficiale dei pezzi, leggermente migliore rispetto allo Z-ABS.

MA ALLA FINE COME STAMPA?

Una meraviglia! All’inizio ero pieno di pregiudizi (piano forato, ABS, software proprietario, etc), ma mi sono rapidamente ricreduto.
Si vede subito che la stampante è stata ingegnerizzata da mani esperte ed è sicuramente decisivo l’utilizzo di un software ottimizzato per quella specifica meccanica; le geometrie del raft permettano una perfetta adesione durante la lavorazione, ma anche una semplice rimozione poi. I supporti generati sono funzionali e semplici da rimuovere; purtroppo con piani ad angolature molto elevate (70-80 gradi) la stampa non è perfetta, ma sui piani paralleli al piano di stampa (90 gradi), la lavorazione risulta liscia e priva di imperfezioni.
Ho provato a stampare modelli anche estremamente complessi, come arcate dentarie, scheletrati ed anelli, ed ho ottenuto dei risultati buoni per dei modelli valutativi; ho fatto anche delle prove di accoppiamento ed i componenti scorrevano perfettamente senza bisogno di carta vetrata e smussature varie.

CONCLUSIONI

È la stampante ideale per la PMI, ma anche per la grande industria; i costi contenuti, la facilità reperibilità del materiale di consumo, il software intuitivo e sopratutto l’elevata qualità del prodotto finito la rendono il macchinario ideale per chi non vuole avere problemi nel realizzare i propri prototipi o anche delle piccole-medie serie.

Al momento è una delle migliori stampanti con cui abbia mai lavorato ed in molti casi gli oggetti stampati hanno una rifinitura superficiale uguale, se non addirittura migliore, degli analoghi realizzati con macchinari professionali.

Rivenditore Italiano

20150526_104635Cricchetto

VN:F [1.9.22_1171]
Rating: 9.2/10 (6 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 3 votes)

Slic3r 1.2.5 experimental is out!

Il nostro instancabile Alessandro ha appena rilasciato la versione 1.2.5 di Slic3r!

Moltissime le novità tra le quali la possibilità di ruotare i pezzi lungo tutti gli assi, un anteprima 3d fighissima degli STL e molto altro ancora! Grazie Ale!

VN:F [1.9.22_1171]
Rating: 8.6/10 (9 votes cast)
VN:F [1.9.22_1171]
Rating: +2 (from 4 votes)

Miniguida per la Roland SRM-20

Recentemente è stata messa in commercio da Roland una piccola fresatrice, la SRM-20 che fa parte del brand “MonoFab” e può essere acquistata in combinato con la stampante DLP ARM-10.

La CNC è decisamente più robusta della iModela e presumo che sia anche più prestante (purtroppo non ho avuto modo di fare delle prove comparative).

Purtroppo, ad ora, la macchina è sprovvista di una documentazione chiara e completa che accompagni l’utente meno esperto nei primi esperimenti di fresatura; infatti oltre alle FAQ presenti nel sito (o nel software di supporto online) ed ai manuali presenti in alcuni software, non ho trovato molto altro e da qui la stesura del presente articolo.

Premetto che Filippo Sessa del FabLab di Napoli mi ha dato due indicazioni che sono state fondamentali per ottenere i primi risultati decenti. Inoltre tralascio tutta la parte inerente al fissaggio del mandrino e della punta (abbastanza intuitivo) ed all’installazione del software. Come materiale ho usato il chemical wood che mi è stato fornito insieme alla macchina, attaccato al piatto di stampa col biadesivo, quindi ho realizzato uno scavo ad unica faccia senza distacco del pezzo dal supporto. Per la stampa a due facce con relativo utilizzo di spine e piano sacrificale scriverò un articolo dedicato.

I due software che ho usato sono il VPanel for SRM-20, che controlla direttamente la macchina (movimenti, accensione mandrino, etc) ed il Modella Player 4 che crea i percorsi della fresa.

Cominciamo ad importare il nostro file in formato .STL in Modella Player 4. La prima operazione da eseguire è quella di piallatura, che consiste nel creare un piano perfettamente parallelo a quello di lavoro (nel mio caso non sarebbe servito, visto che uso un panetto di materiale perfettamente squadrato), il che ci permette di utilizzare materiali non perfettamente a squadra (pezzi di legno, plastica, etc.).

Quindi clicchiamo sull’icona di “Nuovo Processo” e selezioniamo “Piallatura” e poi AvantiModella Player piallatura Nella schermata successiva lasciamo così come la troviamo ed andiamo Avanti:

2

Nella schermata “Creazione nuovo processo” selezioniamo la tipologia di punta. Le frese Roland sono marchiate con un codice di riferimento, che purtroppo non compare dal menù a tendina (consiglio agli sviluppatori di inserire il database delle punte fornite da Roland e compatibili con la macchina). Quindi dobbiamo sapere che punta stiamo utilizzando (squadrata, semisferica, a cono) e impostiamo i parametri nelle varie sezioni. (una descrizione delle punte la trovate qui e qui)

3

Nella schermata che segue dobbiamo impostare l’area di lavoro. Il software, sulla base di alcuni parametri settabili dall’utente, va a definire automaticamente un area di fresatura. Siccome l’operazione che stiamo andando ad eseguire è la piallatura della superficie, conviene impostare un area maggiore in modo tale da uniformare tutta la tavola. Quindi selezionare “Area specifica” e impostiamo i valori negli appositi campi:

4Nella scheda che segue lasciamo i valori preimpostati su “Scansione linee” X e andiamo avanti:5Ora diamo un nome alla lavorazione e diamo Fine:

7Quello che ci comparirà nella vista 3D è un anteprima delle traiettorie che la SRM-20 andrà ad eseguire, mentre sulla scheda di destra verrà elencato il processo appena elaborato:

8Ora andiamo ad aggiungere il processo di sbozzatura, che consiste nel rimuovere la maggior quantità di materiale possibile con una punta dal diametro grosso (3 mm per esempio) per poi procedere con una punta di rifinitura (1 mm a testa sferica). Quindi ricominciamo aggiungendo un “Nuovo Processo” di “Sbozzatura”. Eseguiamo gli stessi passi fino alla scheda per l’impostazione dell’area di lavoro, che rispetto a prima è variata. Lasciamo le impostazioni su “tutto”:9

Come prima andiamo avanti fino alla fine, ottenendo l’aggiunta del processo alla lista di lavoro e l’anteprima 3D delle traiettorie:10

Ci resta solo la finitura. Rispetto a prima dobbiamo solo ricordarci di cambiare la dimensione e la tipologia di punta e nella scheda “Tipo di percorso”, selezionare “Linee di contorno Up Cut” e flaggare la voce “Pitch ottimizzato”:11

Ora procediamo con l’esportare i file di taglio, cliccando in basso a destra sull’icona “Taglia”. Mettiamo la spunta alla voce Output su file e diamo un percorso di salvataggio:12

Adesso apriamo il programma “V-panel” e utilizzando le frecce direzionali presenti al centro della finestra, spostiamo la punta più o meno al centro del nostro materiale da lavorare:20141125_174430

ed ora clicchiamo sul bottone X/Y nel menù “Set Origin Point” andando a definire l’origine delle coordinate di lavoro:15

Calibrazione di Z

Proseguiamo con Z. Abbassiamo la punta fino ad un mm dalla superficie dell’oggetto, poi svitiamo il grano che tiene la punta in modo che cada sul materiale ed infine stringiamo di nuovo il grano:20141125_102055

20141125_082119

Nel V-panel settiamo l’origine di Z:

16Siamo pronti per fresare! Clicchiamo su “Cut”, selezioniamo il file di piallatura e clicchiamo su Output; la SRM-20 inizierà a lavorare e nello specifico andrà a uniformare la superficie del materiale di lavoro.

Ultimata la piallatura, dobbiamo ricalibrare l’asse Z (vedere Calibrazione di Z), però dobbiamo posizionare la punta in un angolo del nostro materiale che non sarà interessato dalla fresatura. Io ho scelto per comodità l’angolo in basso a destra e l’ho segnato con una matita.

Ora la CNC rimuoverà la maggior quantità di materiale possibile, in modo da procedere con più efficacia con la rifinitura.

Ultimata la sbozzatura, dobbiamo cambiare la punta di lavoro (magari aspirate i trucioli che si sono formati nell’area di lavoro). Quindi rieseguiamo la procedura di calibrazione dell’asse Z, apriamo il file di lavoro e lanciamo la fresata. Ed ecco il risultato:

20141125_160013

Se volete vedere la SRM-20 in funzione, potete trovarla presso SoNi.srl in via Enrico Fermi 69 a Tavagnacco, Udine

VN:F [1.9.22_1171]
Rating: 8.5/10 (12 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 5 votes)