Sunteți pe pagina 1din 35

Lancenigo di Villorba TREVISO

CORSO SERALE
AREA DI PROGETTO ANNO SCOLASTICO 2006/2007

Allievo: NASATO GIANNI


Tutor: prof. ITALO ZANIOL, MARCO FALAVIGNA

MACCHINA A CONTROLLO NUMERICO


GESTITA DA MICROCONTROLLORE

INDICE

INTRODUZIONE

pag. 3

SCHEMA A BLOCCHI DEL SISTEMA

pag. 4

ANALISI DELLO SCHEMA A BLOCCHI E DEI PRINCIPALI COMPONENTI

pag. 4/9

SCHEMA ELETTRICO DEL CIRCUITO DI CONTROLLO

pag. 10/11

PIC 16F877 della Microchip

SOFTWARE PER LA SIMULAZIONE DELLA SCHEDA DI CONTROLLO


( Proteus ver.9.4)

pag. 11/12

SOFTWARE PER IL CONTROLLO NUMERICO ( KellyCam versione free)

pag. 13/14

SOFTWARE PER DISEGNO CAD 2D 3D ( AlphaCam )

pag. 15/16

SOFTWARE UTILIZZATO PER LA PROGETTAZIONE HARDWARE


(Eagle 2D/3D)

pag. 16/17

Vista della scheda di controllo in 3D realizzata con Eagle

SOFTWARE PROGETTATO IN LIGUAGGIO ASSEMBLY


(spiegazione delle principali routine)

pag. 17/26

DOCUMENTAZIONE FOTOGRAFICA E VIDEO

pag. 26/29

CONSIDERAZIONI FINALI (ed esempi di lavorazioni)

pag. 29/30

PRINCIPALI ISTRUZIONI E METODOLOGIE PER ESEGUIRE


LA FORATURA DI CIRCUITI STAMPATI

pag. 31/34

Introduzione
A conclusione del corso di studi presso lITIS M. PLANCK di Lancenigo (TV), ho
pensato di realizzare un progetto che consentisse di unire le conoscenze acquisite
sui microprocessori al controllo delle macchine utensili utilizzate per la lavorazione
di diversi materiali ( materiali teneri e in particolare legno ) e la realizzazione di
circuiti stampati ( asportazione rame mediante fresa e foratura ).
Utilizzando il microcontrollore PIC16F877A, opportunamente interfacciato con tre
motori e altre periferiche di controllo e comando, ho progettato una macchina
(pantografo) a livello hobbistico che, mediante il controllo di tre assi X-Y-Z,
realizza un sistema di controllo ampiamente utilizzato in campo industriale e che
comunemente chiamato CNC.
CNC labbreviazione di Computer Numeric Control, ossia una macchina per
lavorazioni meccaniche, vedi tornio, fresa ecc., che viene comandata da un
computer per eseguire delle lavorazioni ad un pezzo.
Con un programma CAD (vedi Autocad), viene disegnato il particolare da
realizzare, poi con un programma CAM (vedi KCAM) viene generato il
programma usato dal controllo CNC.
Una macchina a CNC di tipo hobbistico, come questa realizzata,
generalmente costituita dalle seguenti parti:

Computer
programmi CAD, CAM ed interpreti vari.
Programma di controllo CNC
file in formato Gcode del pezzo o lavorazione da eseguire
controllo elettronico del CNC (Stepper drivers)
gruppo alimentazione del controllo elettronico.
motori passo passo (step motor)
fresa che esegue le lavorazioni

Meccanica della macchina a controllo numerico

Schema a blocchi del sistema e sua descrizione


Lo schema a blocchi del sistema quello rappresentato in figura.

 Il computer pu essere un qualsiasi Personal Computer con sistema operativo DOS


Windows LINUX MAC su cui possa girare del software capace di gestire la
macchina a CNC in tempo reale fornendo opportuni segnali di controllo utilizzando per
questa applicazione la porta parallela. La comunicazione potrebbe avvenire anche
tramite porta seriale RS232 oppure USB. Nel computer deve essere installato:
 un pacchetto applicativo CAD 3D che consente di disegnare il pezzo da ottenere a
lavorazione finita.
 Un pacchetto applicativo CAM che traduce il file di disegno CAD in un programma
di lavorazione per la macchina a CNC.
 Il microcontrollore ha il compito di gestire gli attuatori che controllano il movimento di
tre assi ( potrebbero essere anche di pi per lavorazioni complesse ). Il movimento dei
tre assi controlla la posizione di un utensile portato in rotazione da un motore ( ad
esempio un motore in corrente continua ). Le informazioni vengono fornite al
microcontrollore dal PC tramite la porta parallela suddetta; a sua volta il
microcontrollore potrebbe inviare al PC, sempre attraverso la parallela, segnali
riguardanti lo stato di alcune periferiche ( fine corsa, tastatori, pulsanti di emergenza
ecc. ). Riassumendo le periferiche interfacciate al microcontrollore sono:
 La porta parallela per ricevere segnali di controllo dal PC
 Una tastiera per posizionare manualmente lutensile
 tre driver per il pilotaggio dei motori
 un driver per pilotare il motore che porta in rotazione lutensile
 dei led di segnalazione
 un pulsante di emergenza (reset)
Nella scheda presente anche uno strip per la programmazione in circuit del
microcontrollore.

Analisi delle periferiche


La porta parallela
Questa interfaccia verso il PC, anche se oramai in disuso, ben si presta alla mia
applicazione.
Questa porta, infatti, dispone di un numero di I/O adeguati ed inoltre la velocit di
trasmissione delle informazioni soddisfa lesigenza di una applicazione real time.
In figura 1 mostrata la piedinatura della porta (connettore femmina ): le linee in
giallo sono uscite, quelle in celeste ingressi e quelle verdi la massa.
In figura 2 sono indicati i nomi delle varie linee che sono derivati dalla iniziale
applicazione di questa porta per il controllo di stampanti.
Fig. 1

fig. 2

In tabella riportato lindirizzo di ciascun bit con il relativo indirizzo di porta.


I nomi indicati in grassetto sono segnali in logica negata.

Tramite i segnali di uscita della porta parallela, il PC invia al processore i comandi


per i motori che controllano i movimenti dei tre assi.
Per ogni asse vengono utilizzati due segnali: uno controlla la direzione dello
spostamento ( direction ), mentre laltro (clock) lo spostamento di un passo.
Un ulteriore segnale serve a controllare il motore che aziona lutensile.
In definitiva il microcontrollore dovr interpretare questi segnali e comandare
fisicamente le interfacce dei motori.
La tastiera
Tenuto conto che il tastierino costituito da una matrice di righe e colonne sui cui
incroci si trova un pulsante che mette in collegamento una riga con una colonna,
la lettura di tale periferica pu essere fatta portando a livello basso una colonna (
o una riga ) e fare la scansione ( lettura ) delle righe ( colonne ). Quando un
tasto, che si trova sulla colonna suddetta, viene azionato, la riga corrispondente a
questo tasto si trova a livello basso e come tale pu essere letta.
Configurando le colonne come ingressi e le righe come uscite, con opportuna
scansione, si pu stabilire il tasto azionato.
In fase di lettura della tastiera anche opportuno
utilizzare del software che consente di eliminare i
rimbalzi dei contatti. La logica da seguire la
seguente:
a) quando viene riconosciuto un livello basso
su uno degli ingressi, si chiama una routine
di ritardo di 20ms che consente di ignorare
lo stato della periferica finch vengono
eliminati i rimbalzi.
6

b) Trascorso tale tempo, si attende che il tasto venga rilasciato ( si testa se


lingresso viene portato a livello alto ).
c) Riconosciuto questo evento si richiama la routine di ritardo e si prosegue
con le successive istruzioni del programma.
I motori passo-passo
Per lazionamento dei tre assi sono stati utilizzati dei motori passo-passo.
Essi presentano vantaggi e svantaggi rispetto ad altri tipi di attuatori.
Vantaggi:
 Non richiedono un sistema di retroazione che controlli la posizione dellasse
 La logica di comando puramente digitale e in genere mediante
microprocessore
 La posizione facilmente deducibile dal software di controllo
 A motore fermo il rotore pu essere bloccato
Svantaggi:
 La coppia disponibile limitata a valori bassi
 Qualora la coppia frenante sia maggiore di quella motrice viene persa la
posizione dellasse
 Allaumentare della velocit la coppia motrice diminuisce

Principio di funzionamento di un
motore passo-passo
Si prende in considerazione un motore passopasso
bipolare
costituito
da
quattro
avvolgimenti Ph1, Ph2, Ph3, Ph4 disposti
sullo statore a 90 luno dallaltro avvolti su
quattro espansioni polari.
Sul
rotore

presente
un
magnete
permanente.

Per comprendere il principio di funzionamento possibile ricondursi alla seguente


schematizzazione costituita dal magnete e dalle 4 bobine.
Iniziamo ad alimentare le due bobine in verticale. Il
solenoide in alto affaccia il polo S alla calamita mentre il
solenoide in basso mostra il proprio polo N. Poli opposti si
attraggono, perci il magnete si porter con il polo N in
alto ed il S in basso.

Successivamente alimentiamo le due bobine poste in


orizzontale. Anche questi solenoidi sono collegati in serie. Il
magnete "vedr" il polo S a destra ed il N a sinistra, e si

porter in questa posizione compiendo un


quarto di giro in senso orario.

Proviamo ora ad alimentare le due bobine verticali ma


invertendo la polarit della batteria rispetto al primo caso:
la corrente circola in senso inverso, il polo S ora in basso e
quello N in alto. Il magnete ruota di un altro quarto di giro
in senso orario, attirata dai poli opposti. La situazione
simmetrica rispetto al primo passo.

Infine alimentiamo ancora le due bobine orizzontali, con polarit


rovesciata rispetto al secondo caso. Il magnete ruota di un
ulteriore quarto di giro, per avvicinare il proprio polo N al polo S
che ora si trova a sinistra, ed il proprio polo S al polo N che ora
a destra.

La sequenza prosegue ricominciando dal passo 1: cos facendo il rotore torner


alla posizione iniziale e avr compiuto un giro intero.
Questo uno dei tanti modi di alimentazione degli avvolgimenti che comunque
aiutano a comprendere come funziona un motore passo-passo.

Driver per motori passo-passo


Da quanto visto sul funzionamento dei motori passo-passo, il modo pi semplice
per pilotarli quello di utilizzare quattro amplificatori binari che controllano la
conduzione delle fasi.
Tali amplificatori si realizzano con BJT oppure mosfet.
Poich i motori assorbono correnti piuttosto elevate ( in genere maggiori di
500mA ) opportuno, se si utilizzano dei BJT, far riferimento a dei transistori
Darlington caratterizzati da un guadagno statico di corrente piuttosto elevato che
limita la corrente di pilotaggio a pochi mA.
Nel progetto sono stati utilizzati dei transistori BDX53.

Transistor BDX53C

Categoria
hFE
Lc max (A)
Modello
Pd max.
Vceo max.

transistor bipolari
750 min
8,0
NPN Darlington
60,00W
100,0 V

TRANSISTOR BJT (bipolar junction transistor)


E idealmente costituito due giunzioni PN realizzate su un wafer di silicio.
E un dispositivo tripolare cio a tre terminali.
C: Collettore
B: Base
E: Emettitore

 EQUAZIONI IN REGIONE ATTIVA :


IE = IC + IB
IC = hFE IB
IE = IB hFE + IB = IB (hFE + 1)
IE IC

 POLARIZZAZIONE DEL BJT


Per far funzionare il transistore come interruttore, necessario che, con segnale
di ingresso basso, esso si trovi in interdizione mentre, con livello alto, in
saturazione. Se Vi minore della tensione di soglia ( circa 1V per un darlington )
il BJT interdetto in quanto IB=0. Con livello alto, si dimensiona RB in modo che
9

IB sia maggiore di IC/hFE di un 20 30%. Nel nostro caso i motori assorbono circa 1
ampere, per cui risulta RB = 470 ohm.
Lo svantaggio maggiore di pilotare le fasi con questa tecnica, consiste nel fatto
che la corrente di eccitazione di fase non sale istantaneamente al valore massimo
quando il transistore si porta in conduzione, ma bens con legge esponenziale che
dipende dalla costante di tempo del circuito di eccitazione.
Per questo motivo la velocit di rotazione deve essere limitata in quanto la coppia
motrice cala allaumentare della velocit.
Ci sono varie tecniche che consentono di fronteggiare questo problema.
La pi vantaggiosa consiste nellalimentare le fasi con una tensione maggiore di
quella nominale in modo da ridurre il tempo in cui la corrente arriva a regime. Una
volta raggiunto tale valore, si diseccita la bobina; la corrente continua a circolare
nella fase grazie ai diodi di ricircolo in parallelo alla bobina.
Quando la corrente scende al di sotto di un certo valore, si torna ad eccitare la
bobina. Tale tecnica, denominata PWM, consente di raggiungere ottimi risultati
con costi, per, sicuramente maggiori.
Esistono svariati circuiti integrati che consentono il controllo del motore nel modo
indicato: i pi famosi sono la coppia LM297-298.
Tuttavia la soluzione adottata consente un risparmio economico di circa
venticinque euro anche se le prestazioni sono inferiori.

Schema elettrico scheda di controllo basata su


PIC 16F877A

10

disposizione dei componenti


M
o
r
s
e
t
t
i
e
r
e
Collegamento
utensile

c
o
l
l
e
g
a
m
e
n
t
o
m
o
t
o
r
i
Alimentazione
Pin collegamento tastierino

Connettore 25 poli LPT

Pin collegamento
programmatore on board.

Il pic 16F877





Il PIC = Peripheral Interface Controller (Controllore di


periferiche programmabile) , in ultima analisi, un
microcomputer.
Dispone di:
 8k di flash memory (area memoria programma)

368 byte di ram
 256 byte di memoria non volatile
 Tutte le istruzioni, ad eccezione di quelle di
salto, utilizzano 1 ciclo macchina che
corrisponde a 4 periodi di clock
 pu lavorare con un clock fino 20 Mhz
 ha fino a 14 sorgenti di interrupt (da periferiche
interne e/o esterne)
possibile annidare fino ad 8 chiamate a subroutine in quanto lo Stack ha una
profondit pari a 8
Ha un architettura RISC che significa : Reduced Instruction Set Computing, cio
pu essere programmato con un numero limitato di istruzioni ( 35 )
Supporta la ICSP : In Serial Circuit Programming cio la possibilit di
programmarlo senza togliere il chip dalla scheda

Le periferiche interne sono:


3 Timer (Timer0 8 bit, Timer1 16 bit e Timer2 8 bit)
2 moduli CCP capture, compare e pwm

11

8 ingressi analogici con conversione a 10 bit


porta seriale sincrona/asincrona
porta I2c
porta di comunicazione parallela (PSP)
diversi pin di i/o distribuiti su 5 porte (Porta, Portb, Portc, Portd, Porte)

Ambiente di sviluppo del Software per


simulazione e programmazione del
microcontrollore (Proteus ver.9.4)
Per la progettazione del software stato utilizzato il programma MPLAB IDE v7.50.
Per quanto concerne la simulazione, ho utilizzato il programma PROTEUS VER9.4 che
risulta ottimale in quanto consente di analizzare adeguatamente il funzionamento del
software che gira nel PIC e di metterlo a punto in tempi brevi.
Questo programma mi ha dato sicuramente grandi soddisfazioni e risultati.
Il modo di utilizzo stato da parte mia istintivo e autodidatta; la simulazione si basa sui
seguenti punti:
si costruisce lo schema elettrico utilizzando i componenti in libreria. Nel mio caso ho
utilizzato il PIC16F877, un ingresso gestito da parallela ,un tastierino , una serie di
diodi led, dodici transistor NPN Darlington BDX53C e componenti di supporto.
Si crea il software in linguaggio Assembler, per il controllo degli ingressi e delle uscite
del microcontrollore. Si genera il file eseguibile o codice oggetto con estensione HEX (
quello che dovrebbe essere caricato nel PIC )
Si carica il file HEX sul PIC virtuale di Proteus.
Negli ingressi della porta parallela cio il PORTA, ho simulato un segnale di clock con
frequenza 20 Hz
Si procede con la simulazione
Di seguito, in fig.4, riportato lo schema elettrico realizzato e il listato dei componenti
(fig.5) generato da PROTEUS.

12

Fig. 5

13

Software CAM per la gestione, via porta


parallela, dei file GC,DXF,LPT
(Kellyware KCam v4.0.22)

View CNC control


Questa funzione apre la finestra di controllo
CNC. La finestra del controllo CNC, permette il
controllo dei movimenti manuali e automatici
degli assi. Insieme alle informazioni specifiche
sulle caratteristiche dei movimenti.

Keyboard Jog Controls


Quando questa finestra aperta, la pressione
dei tasti freccia sul tastierino numerico del PC
( scroll lock attivo ) movimenter gli assi;
questi si sposteranno solo quando i tasti
saranno abbassati; non appena verranno
rilasciati il movimento verr arrestato.

14

View Parallel port I/O display


Questa funzione apre la finestra di
visualizzazione della porta di I/O, dove
rappresentato lo stato corrente della logica
sui PIN della porta parallela.
Questa schermata pu essere utile per
diagnosticare problemi di comunicazione I/O.

Table setup Parameters.


Si apre con questa la tabella di
impostazione. Da qui possibile
settare
la
redazione
dei
parametri di tabella CNC.
Es.
- Unit di misura (millimetri o
pollici)
-Numero di passi per unit di
misura richiesti per azionare un
asse.
-Lunghezza massima di un asse.
-Profondit dellasse Z in modo
spostamento
o
in
modo
lavorazione.
-Inversione
del
sistema
di
coordinate dei motori.
-Posizione di origine.

PIN setup Port


Maschera per il settaggio
dei
pin
della
porta
parallela. Deve esserci
una
corrispondenza
logica con lhardware ed
il software progettato per
la scheda di controllo dei
motori e del mandrino.

15

Software per disegno 2D-3D ALPHACAM


Questo software, in pratica, un CAD 3D con particolarit CAM.
Si pu disegnare qualsiasi oggetto comprese scritte 2D-3D. Rispetto ad altri CAD
necessario specificare le sezioni del pezzo da lavorare (specifica dimensioni
materiale), decidere le varie caratteristiche di taglio, cio, utensile usato,
direzione da prendere (interna o esterna alla linea), profondit di lavorazione,
faccia o volume di taglio.
Grazie, poi, ad un post processor generico, il disegno, completo delle sue
lavorazioni, viene salvato come file GC ( gcode) con tutte le coordinate negli assi
cartesiani X Y Z.
Simulazione 3D lavorazione pezzo.

Schermata iniziale di AVANZATO 3D 3 ASSI Pantografo:

16

Limmagine successiva rappresenta il disegno iniziale della struttura della


macchina ( pantografo ), appunto progettata con questo CAD; successivamente
i profili sono stati convertiti come taglio utensile nel formato GC (g code)

Software utilizzato per realizzare schema


elettrico e sbrogliato ( Eagle 4.11 )
Con il pacchetto applicativo Eagle V. 4.11 stata progettata la
parte hardware della scheda di controllo vale a dire schema
elettrico e master per la realizzazione degli stampati.
Questi passaggi sono stati eseguiti in laboratorio di TDP durante
lanno scolastico.

Schermata principale:

17

Board.

Schematic:

Il software in linguaggio Assembler progettato


con MPLAB V. 7.50
Assegnazione di variabili e localizzazioni memorie:
;***************** PANTOGRAFO *************************
list p=PIC16f877
__config ( _CP_OFF & _DEBUG_OFF & _WDT_OFF & _XT_OSC & _CPD_OFF &
_BODEN_OFF & _WRT_ENABLE_OFF & _LVP_OFF )
#include <p16f877.inc>
#define
XPORT
#define
YPORT
#define
ZPORT

PORTD
PORTC
PORTC

18

#define
#define
#define

RELE
INPUTPORT
RELEPORT

PORTD,0
PORTA
PORTE,0

#define
#define
#define
#define

XF1
XF2
XF3
XF4

4
5
6
7

#define
#define
#define
#define

YF1
YF2
YF3
YF4

7
4
5
6

#define
#define
#define
#define

ZF1
ZF2
ZF3
ZF4

2
3
0
1

#define
#define
#define

XBIT
YBIT
ZBIT

0
1
2

#define
#define
#define

XDIR
YDIR
ZDIR

3
4
5

#define
cblock

STEPMASK
0X20

0X03
; dallindirizzo 0X20 si definiscono le varie label.

;ASSEGNAZIONE DI UN NOME
;SIMBOLICO ALLE FASI DEI MOTORI
;
;QUESTA TECNICA PERMETTE DI
;SPECIFICARE QUALE FASE ECCITARE
;SENZA DOVER OGNI VOLTA
;RICORDARE LUSCITA (PORTx,x)

MS
SAVE_W
SAVE_S
CONTX
CONTY
CONTZ
CONTX1
CONTY1
CONTZ1
PORTAI
CONT
COUNTER1
COUNTER2
NEWSAMPLE
OLDSAMPLE
XSTEPCOUNTER
YSTEPCOUNTER
ZSTEPCOUNTER
DUMMYPORT
endc

19

Configurazione dei registri speciali del PIC


MOVLW
MOVWF

B'00000001'
OPTION_REG

MOVLW
B'01011100'
MOVWF
TRISB
CLRF
TRISE
CLRF
TRISC
CLRF
TRISD
MOVLW
B'00000111'
MOVWF
ADCON1
CLRF
TRISA
MOVLW
0XFF
MOVWF
TRISA
MOVLW
B'00000011'
MOVWF
TRISE
BCF
STATUS,5
;*******************
CLRF
NEWSAMPLE
CLRF
OLDSAMPLE
CLRF
XSTEPCOUNTER
CLRF
YSTEPCOUNTER
CLRF
ZSTEPCOUNTER
;*******************
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF

PORTB
PORTC
PORTD
CONTX
CONTY
CONTZ
CONTX1
CONTY1
CONTZ1
CONT

MOVLW
MOVWF

B'10100000'
INTCON

;PRESCALE PER QUARZO 4 Mhz


;ASSEGNA PRESCALE A TMR0 - CONFIGURA
; PRESCALER
;CONFIGURA PORTB PER TASTIERINO

;PORTC OUT
;PORTD OUT
;CONFIGURA ADCON1 PER INGRESSI DIGITALI
;DEL PORTA
;CONFIGURA PORTA COME INGRESSI DIGIT.
;PORTE,0 e 1 COME INGRESSI
;BANCO 0
;INIZIALIZZAZIONE DELLE VARIABILI

;MOTORI X, Y OFF
;RELE' OFF MOTORE Z OFF DIODI ON

;AZZERA CONTATORI PASSI

;ABILITA INTERRUPT

Routine di Test:
in questa
parte di
programma
si rimane in
attesa della
pressione di
un pulsante
del
tastierino
per poter
passare alla
20

modalit manuale, cio il movimento degli assi tramite tastiera, oppure alla
modalit automatica, assegnando Il controllo alla porta parallela:
La scansione del tastierino collegato al PORTB, viene eseguita in maniera
semplice. Il sistema di test pone inizialmente sempre a zero il bit meno
significativo che controlla luscita di un diodo led (PORTB,0), mentre i bit
rimanenti controllano la tastiera. Poniamo a valore alto tutti i bit tranne quello
corrispondente alla colonna da testare. Successivamente si esegue un test per
controllare se una riga viene portata bassa.In questo caso viene chiamata la
routine POSIZIONA1. Si continua finch non viene premuto uno dei due tasti
scelti per il passaggio alla lavorazione automatica.

;*******************************
TESTA
BCF
PORTD,1
BCF
PORTD,2
;ACCENDE DIODI E SPEGNE RELE
BCF
PORTD,3
BCF
PORTB,0
BCF
PORTE,2
PORTB,5

PORTB,0 DIODO LED

TESTA1
MOVLW
MOVWF
BTFSS
CALL

B'11011110' ;SCANSIONE COLONNA 3 (PORTB,5)


PORTB
PORTB,6
;PREMUTO #?
POSIZIONA1 ;POSIZIONAMENTO MANUALE ASSI

MOVLW
MOVWF
BTFSS
CALL
GOTO

B'11111100' ;SCANSIONE COLONNA 1 (PORTB,1)


PORTB
PORTB,6
;PREMUTO *?
scanningLoop;LAVORAZIONE AUTOMATICA
TESTA1
:RITORNA A FARE IL TEST SENZA VARIARE
;LA CONFIGURAZIONE DIODI E RELE

Routine posiziona:
con la pressione di un tasto si chiamano le routine per leccitazione delle fasi
dei motori.
Questa parte di programma non si differenzia da quella spigata in precedenza;
il test viene eseguito incrociando il controllo tra colonne e righe del tastierino.

21

;********************ROUTINE POSIZIONA********************
POSIZIONA1
BSF
PORTE,2
;attiva segnalatore

POSIZIONA

XYZ

ON

OFF

VAI
CALL
BSF
BSF
BSF

BTFSC
GOTO
BTFSS
GOTO
BTFSC
GOTO
GOTO
BCF
BCF
GOTO
BSF
BSF

MS20
PORTD,1
PORTD,2
PORTD,3

PORTE,1
VAI
PORTE,1
XYZ
PORTE,2
ON
OFF
PORTE,2
PORTD,0
VAI
PORTE,2
PORTD,0

;SERIE DI TEST PER ATTIVAZIONE


;RELE ,IN D0 ,CON PULSANTE IN E1 E
;RISPETTIVA ACCENSIONE LED IN E2

;SPEGNE DIODI

MOVLW
MOVWF

B'01111110'
PORTB

;SCANSIONE COLONNA 2

BTFSS
CALL
BTFSS
CALL
BTFSS
CALL
BTFSS
CALL

PORTB,3
SX_Z
PORTB,6
DX_Z
PORTB,2
DX_Y
PORTB,4
SX_Y

;PREMUTO 5?
;CHIAMATA MOVIMENTO
;PREMUTO 0?
;CHIAMATA MOVIMENTO
;PREMUTO 2?
;CHIAMATA MOVIMENTO
;PREMUTO 8?
;CHIAMATA MOVIMENTO

MOVLW
MOVWF

B'11011110'
PORTB

;SCANSIONE COLONNA 3
;

BTFSS
CALL
BTFSS
CALL
BTFSS
CALL

PORTB,2
XY
PORTB,3
DX_X
PORTB,4
YX1

;PREMUTO 3?
; CHIAMATA MOVIMENTO IN X-Y
;PREMUTO 6?
;CHIAMATA MOVIMENTO IN X
;PREMUTO 9?
; CHIAMATA MOVIMENTO IN X-Y

MOVLW
MOVWF
BTFSS

B'11111100'
PORTB
PORTB,2

;SCANSIONE COLONNA 1
;
;PREMUTO 1?

22

IN Z
IN Z
IN Y
IN Y

CALL
BTFSS
CALL
BTFSS
CALL

YX
PORTB,3
SX_X
PORTB,4
XY1

MOVLW
MOVWF
BTFSC
GOTO
RETURN

B'11111101'
PORTB
PORTB,6
POSIZIONA

; CHIAMATA MOVIMENTO IN X-Y


;PREMUTO 4?
; CHIAMATA MOVIMENTO IN Y
;PREMUTO 7?
;
;SCANSIONE COLONNA 1
;

Routine eccitazione fasi motore


Come spiegato, il controllo del motore avviene eccitando le fasi secondo una
certa sequenza.
Si eccitano a rotazione le fasi in modo tale che il magnete interno compia uno
spostamento di un passo (1,8 ) nella direzione desiderata.
Nel mio caso le fasi sono state eccitate a due per volta in modo da aumentare
la coppia motrice, cosa particolarmente gradita per lazionamento degli assi X,
Y.

Una tipologia particolare di motore passo-passo utilizzabile sia in


configurazione unipolare che bipolare, e quella a 6 fili. Nella figura questo tipo
di motore stato schematizzato con le quattro fasi racchiuse nel rettangolo
tratteggiato.

Passo Ph1 Ph3 Ph2 Ph4


1

La coppia disponibile, con eccitazione a due fasi per volta, circa 1,4
volte maggiore di quella ottenuta con una sola fase attiva alla volta:
infatti sul rotore agiscono due forze tra loro perpendicolari che producono
una risultante con modulo 1.4 volte maggiore rispetto alle componenti
assiali.
Il consumo di potenza e quindi anche il riscaldamento del motore
raddoppiano. Questo fatto potrebbe creare problemi in alcuni motori non
adatti a questo tipo di pilotaggio.

23

Di seguito mostrata la routine spostamento: Leccitazione dei motori


a due fasi per volta.

;********** ROUTINE SPOSTA ASSE Z VERSO ALTO ***************


SX_Z
BCF
PORTD,1
;ACCENDI DIODO
INCF
CONTZ
MOVLW
4
;CONTROLLA POSIZIONE
SUBWF
CONTZ,0
; MOTORE
BTFSS
STATUS,2
GOTO
SZ1
CLRF
CONTZ
BCF
PORTC,2
;UN PASSO
BSF
PORTC,0
;LE DUE FASI ECCITATE
BSF
PORTC,1
RETURN

SZ1

MOVLW
SUBWF
BTFSS
GOTO
BCF
BSF
BSF

1
CONTZ,0
STATUS,2
SZ2
PORTC,1
PORTC,0
PORTC,3

;UN PASSO

RETURN
SZ2

SZ3

MOVLW
SUBWF
BTFSS
GOTO
BCF
BSF
BSF
RETURN

2
CONTZ,0
STATUS,2
SZ3
PORTC,0
PORTC,2
PORTC,3

BCF
BSF
BSF
RETURN

PORTC,3
PORTC,1
PORTC,2

;UN PASSO

;UN PASSO

Sicuramente la parte di programma pi importante riguarda la lettura e


lelaborazione dei segnali provenienti dalla porta parallela. Come detto in
precedenza il controllo di ogni asse utilizza 2 linee:
 Direzione asse
 Clock ovvero il segnale che controlla lavanzamento di un passo dei motori.
Lhardware prevede che i segnali provenienti dalla parallela siano leggibili sul
porto A del PIC ad eccezione del segnale che controlla lo stato del motore porta
utensile posto nel porto E.
24

Di seguito analizzata una parte della routine che interpreta tali segnali e
controlla la posizione dei tre motori e del rel che aziona il motore porta utensile.
;********** ROUTINE LAVORAZIONE PEZZO *******************
scanningLoop
BTFSC RELEPORT
;CONTROLLA SE ATTIVARE RELE
BCF RELE
BTFSS RELEPORT
BSF RELE
BTFSC RELEPORT
BCF PORTE,2
BTFSS RELEPORT
BSF PORTE,2

;ATTIVA DISATTIVA SEGNALATORE

Questo blocco di istruzioni sufficientemente semplice; viene testato lo stato


dellingresso RELEPORT cos dichiarato:
#define

RELEPORT

PORTE,0

Lo stato del bit zero del porto E, viene praticamente copiato nel bit zero del porto
D che controlla lo stato dellutensile.
La variabile rel stata cos dichiarata:
#define

RELE

PORTD,0

Il seguente blocco di istruzioni controlla se deve essere aggiornata la posizione


dell asse X secondo la seguente logica:
1. viene letto il porto A e salvato nella variabile NEWSAMPLE
2. viene testato il bit che fornisce il segnale di clock relativo allo stato passato
dellasse X ( precedente ciclo di lettura ) memorizzato in OLDSAMPLE.
a. Se questo bit a 1 lo stato dellasse non deve essere modificato in
quanto se il nuovo stato 1 significa che in corso la temporizzazione
relativa allesecuzione di un passo se il nuovo stato zero lo stato
dellasse non deve cambiare
b. Se 0 bisogna controllare lo stato presente. Se lo stato presente 0
non richiesto il cambiamento di stato dellasse, se 1 si deve
aggiornare la posizione chiamando in causa la routine UPDATEX .
movf PORTA,W
;MEMORIZZA STATO PRESENTE MOTORI
movwf NEWSAMPLE
btfsc OLDSAMPLE,XBIT ;CONTROLLA STATO PASSATO DEL MOTORE X; SE OFF
;CONTROLLA NUOVO STATO
goto noStepX
;SE ON NON INTERVENIRE LASCIA FASI ECCITATE
BTFSC NEWSAMPLE,XBIT ;CONTROLLA NUOVO STATO MOTORE ASSE X
CALL UPDATEX
;SE A 1 CHIAMA ROUTINE CHE CONTROLLA DIREZIONE E MUOVE
;DI UN PASSO
noStepX
btfsc OLDSAMPLE,YBIT ;IDEM ASSEY
GOTO noStepY
BTFSC NEWSAMPLE,YBIT
CALL UPDATEY
noStepY

Al termine di questa routine viene aggiornato lo stato passato degli assi


trasferendo in OLDSAMPLE il contenuto di NEWSAMPLE.
25

MOVF NEWSAMPLE,W
MOVWF OLDSAMPLE
GOTO

;AGGIORNA STATO DEI MOTORI


;LO STATO PRESENTE DIVENTA STATO PASSATO PER NUOVA
;SCANSIONE

scanningLoop

La routine UPDATEX movimenta il motore relativo allasse X secondo questa


logica:
1. viene controllata la direzione testando il bit 3 del porto A: a seconda dello
stato di tale bit viene aggiornato lo stato del puntatore ( incrementato o
decrementato di 1 ) che consente di recuperare dalla tabella XSTEPTASBLE i
livelli logici con cui pilotare le fasi del motore X. Poich i puntatori
potrebbero assumere dei valori negativi ( ad esempio se inizialmente il
valore del puntatore fosse 0 ed esso fosse decrementato per puntare al dato
in posizione 3 della tabella, assumendo invece il valore 0xFF ) bisogna
correggere tale situazione azzerando tutti i bit non significativi che
potrebbero portarci fuori tabella. La variabile STEPMASK, inizializzata col
valore 0x03, una maschera che, tramite una istruzione di AND logico,
consente di azzerare tutti i bit del puntatore ad esclusione dei due meno
significativi che servono ad accedere ai dati di tabella.
2. letto da tabella lo stato dei transistori che pilotano le fasi del motore, si
presenta il problema di modificare solo lo stato delle uscite che controllano il
motore dellasse X lasciando inalterate le altre. Il motore y, ad esempio,
viene comandato dalle uscite 4,5,6,7 del porto C mentre le altre quattro
comandano le fasi del motore Z. Dunque, se si vuole aggiornare, ad
esempio, lo stato delle fasi del motore Y, si devono lasciare inalterate le
uscite che controllano le fasi del motore Z e agire solo sulle uscite che
controllano il motore Y. Ci possibile utilizzando opportune istruzioni
logiche che, tramite delle maschere, agiscono selettivamente su uno o pi
bit di una parola. Nella fattispecie, il valore recuperato da tabella viene:
a. salvato in una locazione di supporto ( DUMMYPORT )
b. viene caricata in accumulatore una maschera che contiene degli 0 nei
bit corrispondenti alle uscite che controllano il motore. Utilizzando tale
maschera si esegue un AND con i contenuti del porto che controlla il
motore ( il risultato salvato in accumulatore ). Resta cos
memorizzato lo stato dei bit che non devono essere modificati.
c. Viene fatto lOR tra DUMMYPORT ( nuovo stato delle fasi del motore )
con i risultati della precedente elaborazione ( bit che non devono
essere modificati ). Il valore ottenuto pu essere trasferito nel porto
desiderato.
Le considerazioni sviluppate per il controllo dellasse X valgono anche per il
controllo degli altri assi.

UPDATEX
BTFSS OLDSAMPLE,XDIR
INCF XSTEPCOUNTER,F

;MOVIMENTAZIONE MOTORE X
;CONTROLLA DIREZIONE ASSE X
;SE 0 INCREMENTA PUNTATORE TABELLA

26

BTFSC OLDSAMPLE,XDIR
DECF XSTEPCOUNTER,F
MOVF XSTEPCOUNTER,W
ANDLW STEPMASK

CALL XSTEPTABLE

;SE 1 DECREMENTA PUNTATORE


;MASCHERA RISULTATO PER I SOLI 2 BIT MENO
;SIGNIFICATIVI
;SE AD ESEMPIO XSTEPCOUNTER ERA 0 PRIMA DEL DECREMENTO
;ESSO DIVENTA 0XFF DOPO DECREMENTO E SI ANDREBBE FUORI
;TABELLA
;RECUPERA NUOVO STATO FASI MOTORE X

OUTTOXSTEPPORT
MOVWF DUMMYPORT
;SALVALO
MOVLW~( 1<<XF1 | 1<<XF2 | 1<<XF3 | 1<<XF4 );INVIA SUL PORTO CHE CONTROLLA
;MOTORE
ANDWF XPORT,W
;LASCIANDO INALTERATI I BIT NON INTERESSATI
IORWF DUMMYPORT,W
;CIOE 00001111 & PORTD = 0000XXXX
MOVWF XPORT
;OOOOXXXX | XF4XF3XF2XF1OOOO = XF4XF3XF2XF1XXXX
RETURN

Alcune foto della meccanica


La parte meccanica stata realizzata in legno multistrato da
22mm, verniciato color grigio. Le guide sono in acciaio con
cuscinetti a ricircolo di sfere. Il movimento degli assi avviene con
vite senza fine.

Particolare taglio dei pezzi di costruzione ( legno multistrato)

27

Struttura in legno multistrato da 22 mm

Utensile

Guide acciaio da 16/22

Angolo per posizionamento fisso punto 0 (90)

28

Dettaglio scheda e comandi manuali


Interruttore manuale utensile

Alimentatore 13.8 V, 8 A picco-picco

Regolatore giri utensile

Presa unica per collegamento


motori

Hardware principale di controllo

Tastierino per movimenti in


manuale
Connettore porta PARALLELA

Pulsante per pilotare rel


(utensile) in modalit
manuale

Particolare angolo
posizionamento punto o ,
e sistema di fissaggio pezzo

29

 Conclusioni
Per concludere posso dire che questo progetto sviluppato nel corso
dell'ultimo anno scolastico, mi ha dato grandi soddisfazioni in quanto
sono riuscito, con la collaborazione degli insegnanti di TDP (Zaniol Italo)
e sistemi (Falavigna Marco), a realizzare una macchina che riesce ad
unire varie discipline tecniche cio elettronica, informatica, meccanica
nonch tecnologiche ( conoscenza dei materiali ).
Sottolineo che le scienze meccaniche ed elettroniche viaggiano oramai
insieme; avere una meccanica professionale, con spostamenti precisi al
centesimo di mm, non sarebbe possibile senza un controllo elettronico
realizzato con sistemi basati su microprocessore.
La macchina a controllo numerico realizzata, consente di ottenere ottimi
risultati per la realizzazione di basso rilievi in legno o plastica e risulta
soprattutto ideale per l'incisione e foratura di schede in vetronite (
circuiti stampati).

Una lavorazione 3D implica un tempo di esecuzione molto lungo. Per


eseguire, ad esempio, la figura in rilievo qui evidenziata, servono
dalle cinque alle sette ore a seconda dellutensile usato( da 2-3 mm).

Lavorazione su legno

Immagine in scala di grigi

Lincisione ITIS MAXPLANCK impegna la macchina per circa 35 minuti

30

Per la foratura di un circuito stampato si ha una lavorazione veloce e


precisa

Di seguito vengono spiegati i


passi principali per lesecuzione
della foratura di un circuito
stampato.

FORATURA BASETTA SU SBROGLIATO ESEGUITO DA


EAGLE:

Nella schermata board, selezionare


VIAS, Drills e Holes,

31

e rendere visibili solo PAD,

Drills
Holes

Dal men file selezionare RUN e alla schermata successiva aprire il file
dxf.ulp e scegliere dove salvare il file generato. C:\documenti\......

Conversione del file dxf in formato G CODE per la lavorazione con software
KCAM
In ALPHACAM men file  input CAD, caricare il file salvato prima con
EAGLE

32

Input CAD

Per la configurazione usata su Kcam si costretti ad impostare un livello di


scala = 0.1 vedi figura

Selezionare SCALA
, TUTTO, fattore di
scala 0.1

Selezionare ora lutensile oppure


modificarne uno a seconda delle proprie esigenze ( es.:DIAMETRO 0.075
Cm)

33

Passo successivo, foratura

Di quanto si deve alzare Z


per gli spostamenti (es. 0.2
Cm)

Profondit del foro (es.:- 0.3 Cm)

Men file  Scelta Post  Post..Proces.. GENERICO  8600 mc sycam.arp Ok


Men file  Output NC salvare con nome, il file verr salvato con
lestensione ANC,questo perch non c un post proccessor adatto (es.:
fori.ANC), bisogner rinominare il file in un secondo momento con
estensione *.GC

34

Lavorazione pezzo Con il software KCAM.


Men file  Open G Code file

Caricare il file generato con ALPHACAM e rinominato. (fori.GC). Il tempo per


la visualizzazione dipender dalla grandezza del file e potr essere di alcuni
minuti.

35

S-ar putea să vă placă și