2001_02_5AZ_CONTROLLO NUMERICO DI UN

annuncio pubblicitario
CONTROLLO NUMERICO DI UN
TORNIO DI TIPO DIDATTICO
ELETTRONICA E TELECOMUNICAZIONI
AREA DI PROGETTO
TESINA PLURIDISCIPLINARE
ISTITUTO TECNICO INDUSTRIALE STATALE “ MAX PLANCK” o
LANCENIGO VILLORBA (TV)
CLASSE V A/Z
anno scolastico 2001/2002
o
CORSO SERALE
Alla realizzazione della tesina hanno partecipato
De Luca Domenico, Palù Riccardo, Crepaldi Stefano, Tosatto Mauro
1
INDICE
Breve storia del tornio utilizzato
pag. 3
Struttura e caratteristiche della macchina
pag. 4
L’idea di progetto
pag. 5
Schemi elettrici
pag. 7
Il display a cristalli liquidi
pag. 11
Il tastierino esadecimale
pag. 16
Interfaccia di potenza motori passo-passo
pag. 19
Interfaccia di potenza controllo motore mandrino pag. 22
Alimentatore
pag. 24
Analisi del software
pag. 29
Manuale d’uso
pag. 73
2
IL TORNIETTO UTILIZZATO
Tutto ebbe inizio tempo fa quando l’insegnante di TDP,Prof. Zaniol Italo, scoprì di
essere fortemente attratto da un rudimentale apparecchio di sembianze meccaniche, in
grado, grazie ad un semplice moto rotatorio, di formare oggetti circolari.
Il tornietto di dimensioni contenute, all’incirca mezzo metro di lunghezza per trenta
centimetri di larghezza, giaceva indisturbato nei sotterranei della scuola.
Di difficile funzionamento a causa del tipo di controllo utilizzato,, andava pian
piano arrugginendo per la mancata manutenzione.
Infatti per poter funzionare aveva bisogno di un laborioso procedimento di avvio
basato sulla lettura di un nastro magnetico che conteneva il programma di lavoro.
La scheda di controllo, di dimensioni ingombranti, era basata su un microprocessore
della INTEL (l’8088) che necessitava di numerosi integrati di supporto come memoria
ROM , memoria RAM, interfacce di
ingresso-uscita ( l’ 8255), timer (l’8253)
e altri componenti.
Bene, ora grazie ad un remaking, la
scheda di controllo è di dimensioni
compatte ( poco più di un decimetro
quadrato). Il cuore del sistema di
controllo è un microcontrollore, il
PIC16F877, nato nel secondo semestre
del 2000; da solo compie quasi tutte le
funzioni necessarie per far funzionare il
tornietto.
Rimesso a nuovo, è ora in grado di
compiere, con gli utensili opportuni, piccole torniture cilindriche e coniche. Nato a fini
scolastici, il tornietto ha una risoluzione di due centesimi di millimetro. Non molto se si
volessero eseguire lavori di altissima precisione. E’ dotato di motori passo-passo che
limitano la potenza
disponibile; si devono
perciò
eseguire
asportazioni di pochi
centesimi di mm per
passata su materiali
teneri.
L’ ELETTRONICA PRIMA ( panello 1200 X 900 mm )
L’ELETTRONICA DOPO ( circa 130 X 150 mm )
3
STRUTTURA E CARATTERISTICHE DELLA MACCHINA
Gli elementi essenziali che compongono il nostro tornio possono essere indicati in:
•
•
•
Un motore elettrico monofase per l’azionamento del mandrino porta pezzo;
Due motori passo-passo per l’azionamento degli assi x-y;
Quattro fine corsa che delimitano gli spostamenti degli assi
Per quanto riguarda l’azionamento degli assi x-y, si tratta di realizzare un controllo di posizione di un
asse che rappresenta una delle parti fondamentali di un controllo numerico; di norma tali controlli sono
ad anello chiuso, cioè si usa la retroazione negativa effettuata per mezzo di trasduttori di posizione
come encoder incrementale, encoder assoluto, oppure una cremagliera collegata ad un trasformatore
differenziale o ad un potenziometro di precisione, tutti indispensabili per misurare la posizione. Nel
nostro caso non si usa tale tecnica in quanto i motori sono di tipo passo-passo e la loro posizione viene
controllata tramite impulsi di comando. Ad ogni impulso il motore compie un passo ( ad esempio una
rotazione dell’asse motore di 7.5 gradi), senza alcun bisogno di collegare un trasduttore in retroazione.
A prima vista, sembrerebbe che l'utilizzo di motori passo-passo fosse vantaggioso per la semplicità del
controllo, ma nella realtà essi vengono usati solo dove le potenze meccaniche richieste sono modeste.
Nelle macchine a controllo numerico sono invece utilizzati motori in corrente continua, motori in
corrente alternata pilotati da inverter e motori brushless. Generalmente nelle macchine utensili viene
controllata anche la velocità del mandrino per avere una velocità di taglio costante.
I motori passo-passo che equipaggiano il nostro tornietto hanno un passo di 7° e 30’. Considerando
che i carrelli degli assi si spostano tramite la rotazione di una vite senza con passo di un millimetro, si
ottiene uno spostamento del carrello di 1/48 = 0.0208 mm./passo.
La scheda che abbiamo realizzato, tenuto conto della meccanica a disposizione, comprende:
•
•
•
•
•
•
un tastierino esadecimale e un display LCD per consentire all’operatore di dialogare con il
sistema operativo memorizzato nel microcontrollore
una interfaccia di potenza per controllare i motori passo-passo
una interfaccia di potenza per controllare il motore che aziona il mandrino
una interfaccia di ingresso per ricevere informazioni dai fine corsa
un led di segnalazione
un pulsante per l’arresto di emergenza della macchina
4
L’idea di progetto
La realizzazione
Il tornio didattico visto frontalmente
Elettronica di controllo
5
Il tornio didattico visto nella parte posteriore
PARTICOLARI COSTRUTTIVI DELLA SCHEDA DI CONTROLLO
IL MICROPROCESSORE PIC16F877
L’INTERFACCIA DI POTENZA
IL QUARZO PER IL CLOCK DEL MICROCONTROLLORE
LA RETE RESISTIVA Rb
6
Schemi elettrici
schema elettrico
220
V~
FINE CORA ASSI
TASTIERINO NUMERICO
INTERRUTORE
GENERALE C6
ASSE Z-
ALIMENTATORE
STABILIZZATO
+5 V
10 K Ω
ASSE Z+
+5 V
+5 V
+5 V +12 V
GND
+5 V
10 KΩ
ASSE X-
100 Ω
10 K Ω
GND +5 V
ASSE X+
+5 V
11
+5 V
+5 V
10 K Ω
8
V SS V DD RD0/RD7-RC5/RC7
OUT
interfaccia
motore
RE2
OSC1
OSC2
XTAL
RC0 RC1 RC2 RC3
4 MHz
C1
330 Ω
RA0 RA1 RA2 RA3
RESET
330 Ω
+12 V
TIP 29
C3
LED
330 Ω
+12 V
10 K Ω
D1
C2
330 Ω
TIP 29
10 K Ω
RA4
RA5
RE0
RE1
MCLR
RC4
RB0/RB7
330 Ω
+12 V
TIP 29
330 Ω
+12 V
TIP 29
330 Ω
+12 V
TIP 29
MOTORE ASSE X
330 Ω
+12 V
TIP 29
330 Ω
+12 V
TIP 29
+12 V
TIP 29
MOTORE ASSE Z
7
CIRCUITO STAMPATO LATO RAME
I.T.I.S.
"MAX PLANCK"
Classe 5° A/Z ASO 2001/2002
8
circuito stampato lato componenti
I.T.I.S.
"MAX PLANCK"
Classe 5° A/Z ASO 2001/2002
9
Out
tastiera
zoccolo collegamento
flat tastierino adesivo
+ 12 V Out motore asse Z ( nero )
Out motore asse Z ( Bianco )
TIP 29
Out motore asse Z ( Rosso )
rete resistiva
singola 330Ω
XTAL
PIC 16F877
Out motore asse X ( Nero )
Out motore asse X ( Nero )
+ 12 V -out- Motore asse X ( Nero )
TIP 29
TIP 29
+ 5 V out interfaccia motore 220 V~ ( Verde )
TIP 29
TIP 29
Tasto
STOP
LED di
funzionamento
Out
display
+ 5 V -in- alimentatore ( Blu )
Fine corsa
asse X+
Fine corsa
asse X-
Fine corsa
10
Out motore asse X ( Rosso )
TIP 29
asse Z-
Out motore asse X ( Grigio )
Fine corsa
Out motore asse Z ( Nero )
TIP 29
asse Z+
Out motore asse Z ( Grigio )
zoccolo collegamento
flat display
SCHEDA PRINCIPALE
componenti e morsetti
+ 12 V -in- alimentatore ( Nero )
TIP 29
O
Il DISPLAY A CRISTALLI LIQUIDI
Il display a cristalli liquidi permette la
percezione di simboli alfanumerici in ambienti
illuminati, ma la sua visibilità è nulla al buio. I più
comuni display sfruttano il fenomeno della
diffusione della luce e sono formati da un vetrino, a
contatto con l’esterno, con elettrodi trasparenti ed
elettricamente con-duttori che formano il carattere
al-fanumerico (ad esempio l’otto ha sette segmenti)
e da un secondo ve-trino simile al primo ma
collegato al circuito di comando; fra i due vetrini
viene posto un sottile distanziatore (10 micron ) in
modo che si formi una sottile camera (qualche centesimo di millimetro) nella quale è posto il cristallo
liquido; infine vi è uno schermo scuro assorbente la
luce. Se fra i due vetrini non vi è tensione il
cristallo liquido rimane trasparente; se invece vi è
qualche elettrodo del segno alfanumerico sot-to
tensione, allora sotto di esso si sviluppa una
turbolenza del cristallo liquido con relativa
diffusione di luce e si ha, ad esempio, una immagine bianca dell’elettrodo sotto tensione su
sfondo scuro. Il tempo di risposta di questi display
è dell’ordine della decina di millisecondi e varia
con la temperatura; la vita media è di molti anni e
dipende dalla decomposizione delle molecole
organiche dei cristalli dovuta sia all’effetto elettrico
che alla luce ultravioletta.
11
o
O Descrizione software gestione display (LCD )
II display LCD utilizzato in questo progetto e' di tipo alfanumerico cioè in grado di
visualizzare simboli numerici e alfabetici. Inoltre esso presenta il grande vantaggio di
implementare una logica di controllo delle funzioni e una logica di decodifica dei simboli da
visualizzare che vengono forniti in codice ASCII.I simboli da visualizzare vengono caricati in un'
area di memoria interna a 32 byte. Il pin outdel componente è a 16 terminali:
-8 linee per bus dati ( DBO -DB7)
-3 linee di controllo
-3 linee alimentazione
12
-2 linee per la retroilluminazione
Analisi linee di controllo:
linea RS
visualizzare
-RS = 1 il display riconosce il dato presente sul bus come simbolo da
-RS = O il display riconosce il dato presente sul bus come una istruzione
Linea E
-Un impulso L-H-L forza la lettura del dato presente sul, bus
Linea R/W
-R/W = O consente operazioni di scrittura di dati e istruzioni sull' LCD
-R/W = I consente operazioni di lettura di dati dall' LCD
Le istruzioni sono dei comandi che vengono dati al display come, ad esempio, pulisci display,
porta il cursore ad inizio riga ecc. o
o La tabella
allegata riassume il set di istruzioni del display CDL4162 a 2 righe per 16 caratteri. o
Si riportano alcuni esempi di routine utilizzate nel programma per il controllo del display.
;**********sottoprogramma configurazione LCD
configura_lcd
bcf
portc,RW
bcf
portc,RS
call ms1
movlw 0x38
;dati a 8 bits - 2 righe
call display
call display
movlw 0x0c
;display on - cursore off - blinking off
call display
movlw 6
;avanzamento cursore
call display
movlw 1
;pulisci display
call display
movlw 2
;cursore home
call display
movlw 0x40
;indirizza cgram
call display
movlw 0x80
;indirizza prima riga
call display
bsf
portc,RS
;scrivi prima riga "ITIS M. PLANCK"
call home1
;cursore inizio prima riga
movlw 'I'
call display
movlw 'T'
call display
movlw 'I'
call display
movlw 'S'
call display
movlw ' '
call display
movlw 'M'
call display
movlw 'A'
call display
movlw 'X'
call display
movlw ' '
13
call display
movlw 'P'
call display
movlw 'L'
call display
movlw 'A'
call display
movlw 'N'
call display
movlw 'C'
call display
movlw 'K'
call display
movlw ' '
call display
return
;**********sottoprogramma invio dati a display
display
movwf portd
;invia dato
bsf
portc,E
;impulso di abilitazione
bcf
portc,E
call ms1
;ritardo 1ms
return
;**********sottoprogramma comando cursore inizio seconda riga
home2 bcf
portc,RS
movlw 0xc0
;display inizio seconda riga
call display
bsf
portc,RS
return
;**********sottoprogramma comando cursore inizio prima riga
home1 bcf
portc,RS
movlw 0x80
;display inizio prima riga
call display
bsf
portc,RS
return
;**********sottoprogramma blink on
blink_on
bcf
portc,RS
;blink on
call ms1
movlw 0d
call display
bsf
portc,RS
call ms1
return
;**********sottoprogramma blink off
blink_off
bcf
portc,RS
call ms1
movlw 0c
;blink off
call display
bsf
portc,RS
call ms1
return
14
15
o
IL TASTIERINO
o
E’ stato utilizzato un economico tastierino esadecimale. Esso è costituito da una matrice di interruttori,
organizzati in righe e colonne come si vede in figura.
La pressione di un tasto equivale alla connessione fra una riga e una colonna. La rilevazione del
tasto premuto può avvenire secondo la seguente logica.
•
•
•
•
•
•
Si collegano le colonne e le righe a delle resistenze di pull up ( il portoB del PIC dispone
internamente di queste resistenze per cui non è necessario prevederle esternamente )
si configurano i pin a cui sono collegate le colonne come ingressi
si configurano i pin a cui sono collegate le righe come uscite
Si pone a livello basso una riga mentre tutte le altre sono alte
Si interrogano gli stati delle colonne. Se viene azionato un tasto che si trova all’incrocio tra
una qualsiasi colonna e la riga che si trova a livello basso, una colonna viene letta come
livello basso e quindi identifica immediatamente il tasto azionato.
La scansione viene ripetuta per tutte le righe
La rilevazione può soffrire dei rimbalzi dei contatti; per ovviare all’inconveniente si possono
introdurre dei ritardi via software che consentono di rileggere lo stato del pulsante dopo che i
rimbalzi si sono esauriti. Il tempo da noi fissato è di 20 ms. Il problema dei rimbalzi si ha anche
al rilascio del pulsante.
16
Primo piano di tastierino e display
Disegno di progetto
17
Si riporta di seguito una parte del software che consente di leggere la
tastiera. Si noti che in fase di lettura viene attivata la funzione blinking
del display che mostra i dati inseriti in modo lampeggiante.
;*************************TASTIERA************************************
tastiera
bsf
portc,RS
call blink_on
movlw b'11110111'
;riga rb3 bassa
movwf portb
btfss portb,4
;premuto 0?
goto tasto0
btfss portb,5
;premuto 4?
goto tasto4
btfss portb,6
;premuto 8?
goto tasto8
movlw b'11111011'
;riga rb2 bassa
movwf portb
btfss portb,4
;premuto 1?
goto tasto1
btfss portb,5
;premuto 5?
goto tasto5
btfss portb,6
;premuto 9?
goto tasto9
movlw b'11111101'
;riga rb1 bassa
movwf portb
btfss portb,4
;premuto 2?
goto tasto2
btfss portb,5
;premuto 6?
goto tasto6
movlw b'11111110'
;riga rb0 bassa
movwf portb
btfss portb,4
;premuto 3?
goto tasto3
btfss portb,5
;premuto 7?
goto tasto7
movlw b'11111101'
movwf portb
btfss portb,7
;premuto ESC ?
goto tasto10
goto tastiera
;se nessun tasto premuto ripeti
;*****************************************TASTI**********************
tasto0
call delay20ms
;elimina rimbalzi
lpt1
btfss portb,4
;pulsante rilasciato ?
goto lpt1
call delay20ms
;elimina rimbalzi
movlw 0
;memorizza lettura
movwf memoria
movlw '0'
;memorizza dato per display
movwf mem_dis
goto blink
18
O INTERFACCIA DI POTENZA MOTORI PASSO-PASSO
L’interfaccia è costituita da 8 transistor npn TIP29; questi transistor di potenza non sono altro
che amplificatori binari in grado di fornire la corrente richiesta ai motori passo-passo che si
aggira intorno ad un ampere. Dato che essi lavorano come interruttori, la dissipazione di
potenza è assai limitata per cui non necessitano dissipatori di calore. Per evitare di distruggere
la giunzione collettore-base dei transistori, è necessario inserire dei diodi tosatori in parallelo
alle bobine dei motori che tagliano le sovratensioni che si manifestano sulle bobine stesse
quando il transistore commuta da on ad off ( legge di Lenz ).
Particolari costruttivi
19
-
MOTORI PASSO-PASSO
-
I motori passo-passo, spesso chiamati anche step o stepper motor, sono caratterizzati nel
panorama dei motori elettrici da una serie di particolarità che ne fanno la scelta (quasi) ideale per
tutte quelle applicazioni che richiedono precisione nello spostamento angolare e nella velocità di
rotazione, quali la robotica ed i servomeccanismi in genere dove la potenza richiesta è bassa.
O I vantaggi: o
•
•
•
•
E' possibile realizzare azionamenti di precisione controllati da computer in catena aperta,
cioè senza utilizzare sensori di posizione o di velocità. Sono quindi utilizzabili con relativa
semplicità e senza richiedere particolare potenza di calcolo.
Hanno un'elevata robustezza meccanica ed elettrica: infatti non esistono contatti elettrici
striscianti e, se necessario, possono essere realizzati anche in esecuzione completamente
stagna.
E' facile far compiere all'albero piccole rotazioni angolari arbitrarie in ambedue i versi e
bloccarlo in una determinata posizione.
La velocità di rotazione può essere molto bassa anche senza l'uso di riduttori meccanici.
Di seguito vengono riportate le routine che controllano la rotazione di uno dei due motori in senso
orario e antiorario. L’azionamento avviene ad una fase per volta. L’eccitazione di una fase dura 10
millesimi di secondo per cui il motore compie 100 passi al secondo, poco più di 2 giri al secondo
(125 giri al minuto ). Se si aumentano i giri il motore rischia di perdere il passo.
;**********sottoprogramma controllo spostamento asse_dx
dx
incf assex
movlw 4
subwf assex,0
btfss status,2
goto sax
clrf assex
sax
movf assex
btfss status,2
goto dx1
bcf
porta,3
bsf
porta,0
call ms10
return
dx1
movlw 1
subwf assex,0
btfss status,2
goto dx2
20
dx2
dx3
bcf
porta,0
bsf
porta,2
call ms10
return
movlw 2
subwf assex,0
btfss status,2
goto dx3
bcf
porta,2
bsf
porta,1
call ms10
return
bcf
porta,1
bsf
porta,3
call ms10
return
;**********sottoprogramma controllo spostamento asse_sx
sx
decf assex
movlw 0xff
subwf assex,0
btfss status,2
goto sbx
movlw 3
movwf assex
sbx
movf assex
btfss status,2
goto sx1
bcf
porta,2
bsf
porta,0
call ms10
return
sx1
movlw 1
subwf assex,0
btfss status,2
goto sx2
bcf
porta,1
bsf
porta,2
call ms10
return
sx2
movlw 2
subwf assex,0
btfss status,2
goto sx3
bcf
porta,3
bsf
porta,1
call ms10
return
sx3
bcf
porta,0
bsf
porta,3
call ms10
return
21
INTERFACCIA DI POTENZA COMANDO MOTORE MANDRINO
Il motore che comanda il mandrino e’ un motore monofase alimentato a 220 V.
In un primo momento era stato deciso di comandare il motore mediante un classico relè
controllato dal PIC.
In fase di collaudo abbiamo verificato che la chiusura e l’apertura dei contatti di questo relè
causavano gravi disturbi che interferivano sull’ottimale funzionamento del sistema.
In particolare questi disturbi andavano ad influenzare il display LCD collegato al PIC tramite
piattina a 16 fili.
Presumibilmente sul segnale di controllo enable dell’LCD si avevano dei disturbi che lo
mandavano
in
tilt
non
consentendo
una
corretta
visualizzazione dei messaggi.
Abbiamo allora optato per un
interruttore statico realizzato
con un triac.
Per isolare elettricamente la
parte di potenza a 220Vca con
quella di comando a bassa
tensione, abbiamo utilizzato un
fototriac
MOC3042 che
dispone inoltre di un circuito
interno di controllo che innesca
il triac quando la tensione di
rete passa per lo zero ( 0 cross
detect ).
In questo modo e’ garantito
che l’azionamento del motore
avviene in modo “ morbido “ a partire da tensione di rete istantanea nulla garantendo così una
buona immunità alle armoniche fonte di disturbi.
E’ da sottolineare che il costruttore del MOC garantisce una tensione di isolamento tra circuito di
comando in bassa tensione e quello di potenza di 7500 Vca . La sicurezza elettrica è quindi
assicurata in modo adeguato.
Per quanto concerne il progetto di questa sezione abbiamo tenuto conto dei dati forniti dal
costruttore del MOC e dei circuiti consigliati.
Circuito stampato lato rame
22
o
MOTORE DEL MANDRINO
o
Il motore del mandrino dispone di due velocità selezionabili con un commutatore.
I) 3000 giri/min. 65 watt di potenza;
II) 5000 giri/min 95 watt di potenza;
Tramite un gruppo di rinvio si possono variare i giri del mandrino sfruttando così le due potenze
a disposizione. Il gruppo permette una variazione di velocità compresa tra 130 e 4000 giri/m come
indicato sul pannello del tornio.
selezione della velocità mandrino
Particolari del motore mandrino
23
o
ALIMENTATORE
o
Questo dispositivo ha lo scopo di alimentare i circuiti elettronici del controllo ed i motori passopasso sfruttando la tensione di rete a 220V e 50Hz. In pratica la tensione alternata inviata dalla rete
di distribuzione, viene raddrizzata e filtrata dall’alimentatore e resa in uscita continua e di valore
desiderato.
Gli alimentatori sono costituiti da 4 blocchi fondamentali come vediamo in (fig2.1), e
rispettivamente sono:
Fig 2.1
1.
2.
3.
4.
-trasformatore;
-raddrizzatore;
-filtro;
-stabilizzatore.
O
1. TRASFORMATORE
o
Il trasformatore è una macchina elettrica statica (priva di organi in movimento) che
trasferisce energia elettrica da un circuito (primario) a un altro (secondario) modificando tensione e
corrente.Il trasformatore riceve energia elettrica con una tensione V1 e una corrente I1 e la restituisce
con una tensione V2 e con una corrente I2, diverse e tali da soddisfare la relazione V1 x I1 = V2 x I2.=
P (in pratica variano i singoli parametri, ma la potenza rimane con valore costante).
Il trasformatore è costituito da un circuito magnetico chiuso, realizzato con lamierini di
ferro al silicio, e da due bobine dette primario e
secondario. Detto N1 il numero di spire del primario e
N2 quello delle spire del secondario, vale la relazione
V1/V2=N1/N2=I2/I1.Il rapporto N1/N2 si chiama
rapporto spire.Se N1 è minore di N2 il trasformatore è
detto elevatore, in caso contrario è detto abbassatore
.
Nel
caso
specifico
il
nostro
trasformatore è composto da 2 avvolgimenti
secondari che forniscono ciascuno 12 V oppure 24
V efficaci.
O
2. RADDRIZZATORE
o
Questo circuito consente di ottenere, da una
tensione sinusoidale, una tensione pulsante unipolare. Nel
nostro caso, utilizziamo un raddrizzatore a quattro diodi a
ponte di Graetz. (componete illustrato nella fig.2.1.1)
24
Fig. 2.1.1
FILTRO
La tensione pulsante, all’uscita del raddrizzatore, è formato da una componente
continua (valor medio), cui è sovrapposta una componente periodica, avente frequenza doppia di
quella di rete e chiamata tensione di ripple.
Il filtro di tipo passa-basso, detto anche di livellamento, ha il compito di rendere
costante la tensione, tutta positiva o tutta negativa. Esso è costituito da un condensatore in parallelo
al carico. Per il calcolo del filtro si deve tener conto che la frequenza delle onde raddrizzate è doppia
f = 100Hz rispetto a quella di rete ( 50 Hz ).
Stabilizzatore di tensione
E’ un circuito che ha la funzione di rendere la tensione
continua di uscita praticamente insensibile alle variazioni della tensione di
rete e del carico. In pratica riduce il ripple a livelli accettabili mediante
reiezione di almeno 30dB.
L’elemento fondamentale di uno stabilizzatore di
tensione è rappresentato da una rete di retroazione che, misurando la
tensione di uscita, modifica il proprio comportamento in modo da
compensare tali variazioni.
PROGETTO ALIMENTATORE STABILIZZATO
Dati di progetto
L’alimentatore deve fornire due tensioni una di 5 volt per alimentare il circuito di controllo e il
display LCD e l’altra di 12 volt per l’alimentazione dei motori passo-passo
Per il calcolo della corrente che deve erogare l’alimentatore abbiamo tenuto conto che:
• gli avvolgimenti dei motori passo-passo presentano una resistenza di 8 ohm per
cui a regime la corrente assorbita da ogni motore vale:
I = V / R = 12 / 8 = 1.5 A.
La potenza dissipata sarà di conseguenza 18 W.
• Per i componenti alimentati a 5 volt la potenza necessaria è stata stimata secondo questo
criterio:
Microcontrollore: 1W
Display LCD 0.5W
Resistenze di base dei BJT, resistenze limitazione corrente nel LED 0.5W
La potenza totale dissipata dal circuito di controllo risulta quindi di 2W a cui corrisponde una
corrente di 0.4A
La corrente totale che dovrà erogare l’alimentatore sarà quindi di 3.4A; abbiamo leggermente
sovradimensionato la corrente totale fissandola a 4A .
In conclusione l’alimentatore dovrà erogare 4 A massimi e dovrà fornire due tensioni di 12V e
5V.
L’alimentatore progettato è un alimentatore di tipo lineare con due
regolatori integrati:
il 7805 è utilizzato per fornire i 5 V e dovrà erogare una corrente I
MAX di 0.4 A.
Per fornire i 12 V abbiamo usato un LM 317. Poiché tale
regolatore può fornire una corrente massima di 1 A, è stato previsto
nello schema elettrico un BJT di potenza in parallelo al regolatore.
25
Trasformatore :
Il trasformatore utilizzato nel progetto ha un rapporto di trasformazione 220/12 con potenza 50W.
La corrente nominale al secondario sarà quindi di circa 4 A mentre la tensione massima sul
secondario sarà di circa 17V.
Ponte raddrizzatore:
Il ponte è stato scelto in base alla corrente media massima che dovrà erogare l’alimentatore. A
disposizione c’era un ponte con corrente media 10 A e quindi adatto alla nostra applicazione.
Filtro di livellamento:
Per dimensionare la capacità di livellamento abbiamo tenuto conto che l’ LM 317 ha una tensione di
drop out di 1.2 volt e quindi la tensione di ingresso non dovrà essere inferiore a 13.2 V. Di
conseguenza la massima tensione di ripple picco-picco non dovrà superare i :
17 –13.2 = 3.8 V
. Abbiamo fissato tale tensione a 3.5 V.
Il condensatore è stato dimensionato tenendo conto che nel semiperiodo della tensione di rete (
10ms ) esso non dovrà scaricarsi di oltre 3.5 V quando erogherà la massima corrente di circa 4A
necessaria ad alimentare i due motori passo-passo.
Quindi, tenendo conto della legge fondamentale del condensatore e ipotizzando la scarica del
condensatore a corrente costante, si ottiene:
C = I * T/Vpp = 4200 µF
Nel progetto sono stati utilizzati due condensatori elettrolitici ognuno da 2200µF.
Dimensionamento alimentatore 12V
Dimensionamento della resistenza di polarizzazione del BJT di potenza:
Si è deciso di far entrare in conduzione il BJT di potenza quando la corrente di ingresso all’LM317
raggiunge i 10 mA.
In tali ipotesi, tenuto conto che la tensione di soglia del BJT risulta di 0.55 V, abbiamo calcolato R
secondo la legge di ohm:
R = Vγ /I = 0.55 / 10mA = 55 Ω.
E’ stata utilizzata una resistenza di 68 Ω
Dimensionamento del partitore per LM317:
Poiché il regolatore di tensione LM317 fornisce in uscita una tensione di 1.25 V con il morsetto Adj
collegato a massa, è necessario utilizzare un partitore di tensione adeguato per avere i 12 V richiesti.
E’ stato previsto un trimmer per la regolazione precisa della tensione di uscita.
Analizzando i data sheets forniti dal costruttore, è consigliato di utilizzare per R1 un valore di 240Ω
; abbiamo utilizzato una resistenza di valore commerciale 220 Ω.
In tali condizioni, utilizzando la relazione fornita dal costruttore Vout = 1.25 ( 1 + R2/R1 ),
abbiamo calcolato R2 = 1890Ω.
Abbiamo suddiviso tale resistenza in una fissa di 1200 Ω e una variabile (trimmer) di 1K Ω.
Dimensionamento transistore di potenza
Il BJT di potenza utilizzato nel progetto è l’MJ 2955, cioè il complementare del più noto
2N3055.
La corrente di collettore massima che il transistore può reggere è di 15 A, quindi ben
superiore alle nostre esigenze. Abbiamo scelto questo componente in quanto a disposizione della
scuola.
Resta quindi da dimensionare il dissipatore termico.
26
Il BJT, secondo i precedenti calcoli, erogherà una corrente massima di 3Ampere con
una tensione media tra collettore ed emettitore di 3.25 volt.
La potenza massima dissipata sarà quindi di circa 10 Watt.
La resistenza termica massima del dissipatore da utilizzare sarà:
Rth = ( Tjmax –Ta ) /Pmax - Rthjc = (200 – 40 )/10 –2.5 = 13.5 °C/W.
Dimensionamento alimentatore 5V
Per quanto concerne questa sezione dell’alimentatore e’ solo necessario il
dimensionamento termico del 7805 in quanto il regolatore fornisce direttamente i 5 V richiesti
senza reti esterne.Tenuto conto che la tensione media in ingresso del regolatore e’ piuttosto alta e
vale 15.25 V ( vedi sopra ), la potenza dissipata sarà :
P = ( Vin – Vout ) * Imax = ( 15.25 –5 ) * 0.6 = 6.15 W
La resistenza termica massima del dissipatore sarà :
Rth = ( Tjmax –Ta ) /Pmax - Rthjc= (150 – 40 )/6.15 –5.5 = 12.3 °C/W
Abbiamo utilizzato un dissipatore per dispositivi di potenza con contenitore TO220
con resistenza termica 9 °C /W.
Lato componenti
27
28
ANALISI DEL SOFTWAREo
La stesura del software ha seguito i principi della programmazione top-down che
consiste nel suddividere il problema in tanti sottoproblemi la cui soluzione viene
demandata a delle routine richiamate dal programma principale o main.
In questo modo il main risulta compatto, di facile stesura e comprensione.
Il suo ruolo e’ quello di organizzare in modo logico la soluzione del problema
richiamando le subroutine piu’ opportune.
Per la soluzione di queste ultime e’ necessario concentrarsi solamente sulla soluzione di
un determinato problema ignorando cosi’ l’organizzazione logica del problema.
I sottoprogrammi sviluppati risolvono problemi come:
-
configurazione display intelligente
invio messaggi al display per il dialogo con l’utente
gestione tastierino esadecimale
gestione motori passo-passo
gestione segnali di controllo provenienti dai fine corsa
posizionamento automatico utensile
calcolo tempo esecuzione lavorazione
Inoltre quando certi moduli di programma venivano ad essere ripetuti piu’ volte
all’interno dei vari sottoprogrammi si e’ deciso di organizzarli sotto forma di routine.
Alcuni esempi possono essere:
-
temporizzazioni
invio di un carattere al display
posizionamento cursore display su riga 1 o riga2 o in posizione home
eliminazione rimbalzi sui contatti del tastierino
Per la gestione delle periferiche di ingresso si e’ utilizzata la tecnica del polling e
dell’interrupt.
In particolare per il controllo del tastierino, e dei fine corsa, si e’ utilizzato il
polling che consiste nell’interrogare ciclicamente i vari contatti.
L’interrupt e’ stato utilizzato per costruire un orologio ( real time clock ) necessario
a realizzare molteplici temporizzazioni quali il comando dei motori passo-passo, il
lampeggio del led, il controllo del display LCD ecc.
La routine di interrupt viene lanciata automaticamente ogni millisecondo cosi’ la
risoluzione dell’orologio e’ di un millisecondo.
L’interrupt e’ provocato da overflow del registro speciale timer che come noto e’ un
contatore a 8 bits. Il clock per tale timer e’ quello di sistema; la sua frequenza viene
opportunamente divisa utilizzando il prescaler interno al microcontrollore.
Per quanto riguarda il calcolo del tempo necessario alla esecuzione della
lavorazione impostata, si e’ simulato l’esecuzione della lavorazione senza comandare i
motori. Poiche’ ogni spostamento di un passo di ogni motore avviene in 10
millisecondi, e’ stato facile, con
l’uso di alcune locazioni di memoria
RAM, misurare il tempo incrementando di 10 millisecondi il tempo di esecuzione della
lavorazione ad ogni passo di ogni motore.
Il tempo totale e’ poi stato convertito in minuti e secondi e infine in BCD per poter
essere visualizzato sul display.
Per quanto riguarda la qualità del sistema operativo si può dire che questo potrebbe
essere migliorato e potenziato mediante l’introduzione di ulteriori tipi di lavorazione
meccaniche come:
29
-
lavorazione conica da dx a sx
lavorazione frontale
torniture che seguano un determinato profilo
in questo ultimo caso sarebbe necessario prevedere un collegamento di tipo seriale con
un PC cosa del resto possibile in quanto il microcontrollore e’ equipaggiato con una
USART.
Inoltre potrebbe essere migliorata anche l’interfaccia con le esigenze dell’utente
(operatore addetto alla esecuzione delle lavorazioni ).
Del resto il software utilizza circa un terzo della memoria programmi disponibile (
si veda la mappa di memoria allegata che e’ stata ricavata dal file listing ottenuto nella
compilazione).
Anche la memoria RAM utilizzata e’ limitata rispetto a quanto disponibile ed in
particolare circa 80 locazioni su 368.
Naturalmente i tempi limitati per l’esecuzione dell’area di progetto non hanno
consentito di sviluppare ulteriori funzioni e di potenziare il sistema operativo.
Sicuramente si e’ dimostrato come i microcontrollori possano essere utilizzati in
innumerevoli applicazioni compresi sistemi di controllo di media complessita’.
oY USAGE MAP ('X' = Used, '-' = Unused)
O
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
30
0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
06C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
07C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
08C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
09C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------ ---------------All other memory blocks unused.
Program Memory Words Used: 2534
Program Memory Words Free: 5658
31
CODICE SORGENTE COMPLETO
;********************************************************
;*********
**************
;********* CONTROLLO NUMERICO DI UN TORNIO **************
;*********
CL. 5A/Z
**************
;*********
A.S. 20001/2002
**************
;********************************************************
list p=16f877
;**********dichiarazione dei registri speciali banco0
tmr
equ
1
pcl
equ
2
status
equ
3
porta
equ
5
portb
equ
6
portc
equ
7
portd
equ
8
porte
equ
9
pch
equ
0x0a
intcon
equ
0x0b
;**********dichiarazione dei registri speciali banco1
opzioni
equ
1
ddra
equ
5
ddrb
equ
6
ddrc
equ
7
ddrd
equ
8
ddre
equ
9
ad
equ
0x1f
;**********dichiarazione dei registri RAM
conta
equ
0x20
stack1
equ
0x21
stack2
equ
0x22
ms
equ
0x23
ds
equ
0x24
sec
equ
0x25
assex
equ
0x26
assey
equ
0x27
centx
equ
0x28
decx
equ
0x29
unx
equ
0x2a
decimix
equ
0x30
memoria
equ
0x2b
mem_dis
equ
0x2f
decy
equ
0x32
uny
equ
0x33
decimiy
equ
0x34
centin
equ
0x35
decine
equ
0x36
unita
equ
0x37
decimi
equ
0x38
xl
equ
0x39
xh
equ
0x3a
yl
equ
0x3b
yh
equ
0x3c
x1l
equ
0x3d
x1h
equ
0x3e
COND
equ
0x3f
CONU
equ
0x40
ylC
equ
0x42
yhC
equ
0x43
contat
equ
0x44
pendl
equ
0x45
pendh
equ
0x46
32
flag
y1l
y1h
gradino
led
msl
dsl
secl
ms2
ds2
usec2
dsec2
umin2
dmin2
time
mux
mxl
mxh
myl
myh
mml
mmh
timeh
timel
mem1
mem2
mem3
mem4
em1
em2
em3
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
0x47
0x48
0x49
0x4a
0x4b
0x4c
0x4d
0x4e
0x4f
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5a
0x5b
0x5c
0x5d
0x5e
0x5f
0x60
0x61
0x62
0x63
0x64
0x65
;**********dichiarazione segnali di controllo DISPLAY
#define
RW
6
#define
RS
5
#define
E
7
;**********vettore di RESET e vettore di INTERRUPT
org
0
goto main
org
4
;**********sottoprogramma risposta interrupt timer
interrupt
movwf stack1
;salva accumulatore
swapf status,0
;salva registro di stato
movwf stack2
movlw 9
;carica timer
movwf tmr
incf ms
;aggiorna orologio
incf msl
incf ms2
movlw d'100'
subwf ms,0
btfss status,2
goto esci1
incf ds
movlw 0xa
subwf ds,0
btfss status,2
goto esci1
incf sec
esci1 movlw d'100'
subwf msl,0
btfss status,2
goto esci2
incf dsl
clrf msl
movf led
33
btfsc
bsf
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
movlw
xorwf
clrf
goto
int1 movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
movlw
xorwf
clrf
goto
int2 movlw
subwf
btfss
goto
clrf
esci2 movf
btfsc
goto
movlw
subwf
btfss
goto
incf
clrf
movlw
subwf
btfss
goto
clrf
decf
movlw
subwf
btfss
goto
movlw
movwf
movf
btfss
goto
movf
btfss
goto
movf
btfss
goto
goto
agg1 decf
movlw
subwf
btfss
goto
movlw
movwf
status,2
portc,4
1
led,0
status,2
int1
4
dsl,0
status,2
int2
0x10
portc
dsl
esci2
2
led,0
status,2
int2
2
dsl,0
status,2
int2
0x10
portc
dsl
esci2
d'5'
dsl,0
status,2
esci2
dsl
time
status,2
esci
d'100'
ms2,0
status,2
displayl
ds2
ms2
0x0a
ds2,0
status,2
displayl
ds2
usec2
0xff
usec2,0
status,2
displayl
9
usec2
dmin2,0
status,2
agg1
umin2,0
status,2
agg2
dsec2,0
status,2
agg3
displayl
dsec2
0xff
dsec2,0
status,2
displayl
5
dsec2
;controlla se min=0
34
decf
movlw
subwf
btfss
goto
movlw
movwf
decf
goto
agg2 decf
movlw
subwf
btfss
goto
decf
movlw
movwf
goto
agg3 decf
displayl
movf
btfss
goto
bcf
incf
goto
mux1 movlw
subwf
btfss
goto
movlw
movwf
incf
goto
mux22 movlw
subwf
btfss
goto
bsf
bcf
incf
goto
mux2 movlw
subwf
btfss
goto
bsf
incf
goto
mux3 movlw
subwf
btfss
goto
movf
call
movwf
bsf
bcf
incf
goto
mux6 movlw
subwf
btfss
goto
movf
call
movwf
bsf
bcf
umin2
0xff
umin2,0
status,2
displayl
9
umin2
dmin2
displayl
dsec2
0xff
dsec2,0
status,2
displayl
umin2
5
dsec2
displayl
dsec2
;visualizza tempo lavorazione
mux
status,2
mux1
portc,RS
mux
esci
1
mux,0
status,2
mux22
80
portd
mux
esci
2
mux,0
status,2
mux2
portc,E
portc,E
mux
esci
3
mux,0
status,2
mux3
portc,RS
mux
esci
4
mux,0
status,2
mux6
dmin2,0
tab
portd
portc,E
portc,E
mux
esci
5
mux,0
status,2
mux7
umin2,0
tab
portd
portc,E
portc,E
;sposta cursore
;invia dato
;impulso di abilitazione
;invia dato
;impulso di abilitazione
35
incf
goto
mux7 movlw
subwf
btfss
goto
movlw
movwf
bsf
bcf
incf
goto
mux9 movlw
subwf
btfss
goto
movf
call
movwf
bsf
bcf
incf
goto
mux12 movlw
subwf
btfss
goto
movf
call
movwf
bsf
bcf
clrf
esci
mux
esci
6
mux,0
status,2
mux9
':'
portd
portc,E
portc,E
mux
esci
7
mux,0
status,2
mux12
dsec2,0
tab
portd
portc,E
portc,E
mux
esci
8
mux,0
status,2
esci
usec2,0
tab
portd
portc,E
portc,E
mux
bcf
intcon,2
swapf stack2,0
movwf status
swapf stack1
swapf stack1,0
retfie
;invia dato
;impulso di abilitazione
;invia dato
;impulso di abilitazione
;invia dato
;impulso di abilitazione
;azzera flag interrupt
;ripristina registro di stato
;ripristina accumulatore
;**********tabella dati
tab
addwf pcl
retlw '0'
retlw '1'
retlw '2'
retlw '3'
retlw '4'
retlw '5'
retlw '6'
retlw '7'
retlw '8'
retlw '9'
;**********programma principale
main bsf
status,5
;*****configura i porti
movlw b'00110000' ;RA0-RA3 out motore 1 -- RA4 e RA5 input 2
fine corsa
movwf ddra
movlw b'11110000' ;PBH in - PBL out lettura tastiera
movwf ddrb
clrf ddrc
;RC0-RC3 out motore 2 -- RC4-RC7 out controllo
display e led
clrf ddrd
;out dati display
bcf
porte,2
;RE0 e RE1 input 2 fine corsa -- RE2 out
moc
movlw b'00000001' ;abilita pull up portb - configura prescaler
tmr0
movwf opzioni
36
movlw
movwf
bcf
bcf
clrf
clrf
bsf
clrf
clrf
bcf
bcf
bcf
bcf
bcf
movlw
movwf
movlw
movwf
call
call
call
call
movlw
movwf
clrf
clrf
inizio
call
loop movlw
movwf
btfss
goto
movlw
movwf
btfsc
goto
goto
in00 call
iniz1 movlw
movwf
movlw
movwf
nnn
btfss
goto
call
call
lp777 call
lp7
movlw
movwf
btfss
goto
movlw
movwf
btfsc
goto
lpconf
movlw
movwf
nnn1 btfss
goto
lpconf1
movwf
btfss
goto
movlw
movwf
btfsc
goto
movlw
b'00000111' ;pin portoa e portoe come i/o
ad
status,5
porte,2
;motore mandrino fermo
time
;azzera flag visualizzazione tempo
mux
;azzera puntatore multiplexing display
portc,4
;diodo on
led
porta
;motore1 off
portc,0
;motore2 off
portc,1
portc,2
portc,3
portc,E
;enable display OFF
9
;inizializza timer
tmr
b'10100000' ;abilita interrupt timer
intcon
configura_lcd
;configura lcd
enter
;premere # per continuare
ok
;controlla se premuto enter
okoff
1
;lampeggio led
led
assex
;azzera puntatori controllo motori
assey
posizionare00
b'11111101'
portb
portb,6
in00
b'11111110'
portb
portb,6
loop
iniz1
zeroxy
1
led
b'11111110'
portb
portb,6
nnn
posizionare
zero_zero
lavorazione
b'11111101'
portb
portb,6
avanti
b'11111110'
portb
portb,6
lp7
call cil_conf
b'11111110'
portb
portb,6
nnn1
movlw b'11111101'
portb
portb,6
lp9
b'11111110'
portb
portb,6
lpconf1
b'11111110'
;premuto S ?
;premuto N ?
;posizione zero per torretta
;lampeggio led
;rilasciato ?
;posiziona utensile in 0,0
;posizionamento manuale utensile
;chiedere se lavorazione conica
;premuto S ?
;premuto N ?
;rilasciato N ?
;premuto S ?
;premuto N ?
37
movwf
btfss
goto
goto
lp9
call
lp91 movlw
movwf
btfss
goto
movlw
movwf
btfss
goto
movlw
movwf
btfsc
goto
goto
lp99 call
profondita'
lp101 movlw
movwf
btfss
goto
movlw
movwf
btfsc
goto
goto
lav1 movlw
movwf
call
call
goto
avanti
lp991 movlw
movwf
btfss
goto
movlw
movwf
btfsc
goto
goto
avanti1
lp990 movlw
movwf
btfss
goto
movlw
movwf
btfsc
goto
goto
lav2 movlw
movwf
call
call
goto
nnn2
portb
portb,6
nnn2
lp777
dati_cil_lun
b'11111101'
portb
portb,6
lp99
b'11111101'
portb
portb,7
lp777
b'11111110'
portb
portb,6
lp91
lp9
dati_cil_prof
;rilasciato N ?
;richiede dati lavorazione cilindrica
;premuto S ?
;premuto ESC ?
;premuto N ?
;se confermati vai a richiedere
b'11111101'
portb
portb,6
;premuto S ?
lav1
b'11111110'
portb
portb,6
;premuto N ?
lp101
lp99
2
;lampeggio led
led
lav_corso
;messaggio per display
lav_cilindrica
;esegui lavorazione
in00
call dati_con_lun
;richiede dati conica lunghezza
b'11111101'
portb
portb,6
;premuto S ?
avanti1
b'11111110'
portb
portb,6
;premuto N ?
lp991
avanti
call dati_con_prof1
;richiedi diametro1
b'11111101'
portb
portb,6
;premuto S ?
lav2
b'11111110'
portb
portb,6
;premuto N ?
lp990
avanti1
2
;lampeggio led
led
lav_corso
;messaggio per display
lav_conica ;esegui lavorazione
in00
;************************* fine main *******************************
;**********sottoprogramma configurazione LCD
configura_lcd
bcf
portc,RW
bcf
portc,RS
call ms1
movlw 0x38
;dati a 8 bits - 2 righe
call display
38
call display
movlw 0x0c
call display
movlw 6
call display
movlw 1
call display
movlw 2
call display
movlw 0x40
call display
movlw 0x80
call display
bsf
portc,RS
call home1
movlw 'I'
call display
movlw 'T'
call display
movlw 'I'
call display
movlw 'S'
call display
movlw ' '
call display
movlw 'M'
call display
movlw 'A'
call display
movlw 'X'
call display
movlw ' '
call display
movlw 'P'
call display
movlw 'L'
call display
movlw 'A'
call display
movlw 'N'
call display
movlw 'C'
call display
movlw 'K'
call display
movlw ' '
call display
return
;display on - cursore off - blinking off
;avanzamento cursore
;pulisci display
;cursore home
;indirizza cgram
;indirizza prima riga
;scrivi prima riga
;**********sottoprogramma posizionare
posizionare
call home1
movlw 'P'
call display
movlw 'O'
call display
movlw 'S'
call display
movlw 'I'
call display
movlw 'Z'
call display
movlw 'I'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'A'
39
"ITIS M. PLANCK"
call display
movlw 'R'
call display
movlw 'E'
call display
movlw ' '
call display
movlw 'U'
call display
movlw 'T'
call display
movlw 'E'
call display
movlw 'N'
call display
call home2
movlw 'S'
call display
movlw 'I'
call display
movlw 'L'
call display
movlw 'E'
call display
movlw ' '
call display
movlw '#'
call display
movlw ' '
call display
movlw 'S'
call display
movlw 'E'
call display
movlw ' '
call display
movlw 'V'
call display
movlw 'A'
call display
movlw 'L'
call display
movlw 'I'
call display
movlw 'D'
call display
movlw 'O'
call display
return
;**********sottoprogramma che richiede tipo di lavorazione
lavorazione
call home1
movlw 'T'
call display
movlw 'O'
call display
movlw 'R'
call display
movlw 'N'
call display
movlw 'I'
call display
movlw 'T'
call display
movlw 'U'
call display
movlw 'R'
call display
40
movlw 'A'
call display
movlw ' '
call display
movlw 'C'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'I'
call display
movlw 'C'
call display
movlw 'A'
call display
call home2
movlw '('
call display
movlw 'S'
call display
movlw '/'
call display
movlw 'N'
call display
movlw ')'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
call blink_on
bcf
portc,RS
movlw 0xc4
return
;sposta cursore alla casella 4
;*********************routine conferma lavorazione cilindrica*******
cil_conf
call home1
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw 'C'
call display
movlw 'O'
call display
41
movlw 'N'
call display
movlw 'F'
call display
movlw 'E'
call display
movlw 'R'
call display
movlw 'M'
call display
movlw 'A'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
call home2
movlw 'C'
call display
movlw 'I'
call display
movlw 'L'
call display
movlw 'I'
call display
movlw 'N'
call display
movlw 'D'
call display
movlw 'R'
call display
movlw 'I'
call display
movlw 'C'
call display
movlw 'A'
call display
movlw ' '
call display
movlw '?'
call display
movlw ' '
call display
movlw 'S'
call display
movlw '/'
call display
movlw 'N'
call display
return
;**********sottoprogramma che richiede dati lavorazione cilindica
dati_cil_lun
call home1
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw '0'
42
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
bcf
call
lunghezza
movlw
call
bsf
call
call
movlw
subwf
btfsc
goto
movf
movwf
movf
display
'0'
display
'0'
display
'.'
display
'0'
display
' '
display
' '
display
' '
display
' '
display
' '
display
' '
display
home2
' '
display
' '
display
' '
display
'L'
display
'U'
display
'N'
display
'G'
display
'H'
display
'E'
display
'Z'
display
'Z'
display
'A'
display
' '
display
' '
display
' '
display
' '
display
portc,RS
ms1
;richiedi dati lunghezza
;centx,decx,unx e decimix sono i valori della
85
display
portc,RS
ms1
tastiera
10
memoria,0
status,2
dati_cil_lun
memoria,0
centx
mem_dis,0
43
call display
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_cil_lun
movf memoria,0
movwf decx
movf mem_dis,0
call display
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_cil_lun
movf memoria,0
movwf unx
movf mem_dis,0
call display
bcf
portc,RS
;SALTA PUNTO
call ms1
movlw 89
call display
bsf
portc,RS
call ms1
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_cil_lun
movf memoria,0
movwf decimix
movf mem_dis,0
call display
call conferma
;conferma dati ?
return
;**********sottoprogramma che visualizza messaggio
posizionare00
call home1
movlw 'P'
call display
movlw 'O'
call display
movlw 'S'
call display
movlw 'I'
call display
movlw 'Z'
call display
movlw 'I'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'A'
call display
movlw 'R'
call display
movlw 'E'
call display
movlw ' '
call display
movlw 'U'
call display
movlw 'T'
call display
movlw 'E'
44
call display
movlw 'N'
call display
call home2
movlw 'S'
call display
movlw 'I'
call display
movlw 'L'
call display
movlw 'E'
call display
movlw ' '
call display
movlw 'I'
call display
movlw 'N'
call display
movlw ' '
call display
movlw '0'
call display
movlw '/'
call display
movlw '0'
call display
movlw '?'
call display
movlw ' '
call display
movlw 'S'
call display
movlw '/'
call display
movlw 'N'
call display
return
;**********sottoprogramma che richiede dati lavorazione cilindica
dati_cil_prof
call home1
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw '0'
call display
movlw '0'
call display
movlw '.'
call display
movlw '0'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
45
movlw
call
movlw
call
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
bcf
call
profondita'
movlw
call
bsf
call
call
movlw
subwf
btfsc
goto
movf
movwf
movf
call
call
movlw
subwf
btfsc
goto
movf
movwf
movf
call
bcf
call
movlw
call
bsf
call
call
' '
display
' '
display
home2
' '
display
' '
display
' '
display
'P'
display
'R'
display
'O'
display
'F'
display
'O'
display
'N'
display
'D'
display
'I'
display
'T'
display
'A'
display
'`'
display
' '
display
' '
display
portc,RS
ms1
;richiedi dati lunghezza
;decy,uny e decimiy sono i valori della
86
display
portc,RS
ms1
tastiera
10
memoria,0
status,2
dati_cil_prof
memoria,0
decy
mem_dis,0
display
tastiera
10
memoria,0
status,2
dati_cil_prof
memoria,0
uny
mem_dis,0
display
portc,RS
;salta punto
ms1
89
display
portc,RS
ms1
tastiera
46
movlw 10
subwf memoria,0
btfsc status,2
goto dati_cil_prof
movf memoria,0
movwf decimiy
movf mem_dis,0
call display
call conferma
;conferma dati ?
return
;**********sottoprogramma che richiede dati lavorazione conica
lunghezza
dati_con_lun
call home1
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw '0'
call display
movlw '0'
call display
movlw '0'
call display
movlw '.'
call display
movlw '0'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
call home2
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw 'L'
call display
movlw 'U'
call display
movlw 'N'
call display
movlw 'G'
call display
movlw 'H'
call display
movlw 'E'
call display
movlw 'Z'
47
call display
movlw 'Z'
call display
movlw 'A'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
bcf
portc,RS
;richiedi dati lunghezza
call ms1
;centx,decx,unx e decimix sono i valori della
lunghezza
movlw 85
call display
bsf
portc,RS
call ms1
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_con_lun
movf memoria,0
movwf centx
movf mem_dis,0
call display
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_con_lun
movf memoria,0
movwf decx
movf mem_dis,0
call display
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_con_lun
movf memoria,0
movwf unx
movf mem_dis,0
call display
bcf
portc,RS
;salta punto
call ms1
movlw 89
call display
bsf
portc,RS
call ms1
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_con_lun
movf memoria,0
movwf decimix
movf mem_dis,0
call display
call conferma
;conferma dati ?
return
;**********sottoprogramma che richiede dati lavorazione conica angolo
dati_con_prof1
call home1
movlw ' '
call display
movlw ' '
48
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
bcf
call
movlw
call
bsf
call
call
display
' '
display
' '
display
' '
display
' '
display
' '
display
'0'
display
'0'
display
' '
display
' '
display
' '
display
' '
display
' '
display
' '
display
' '
display
home2
'C'
display
'O'
display
'N'
display
'I'
display
'C'
display
'I'
display
'T'
display
'A'
display
'`'
display
' '
display
'I'
display
'N'
display
' '
display
'%'
display
' '
display
' '
display
portc,RS
ms1
87
display
portc,RS
ms1
tastiera
;richiedi dati conicita'
;
49
movlw 10
subwf memoria,0
btfsc status,2
goto dati_con_prof1
movf memoria,0
movwf COND
movf mem_dis,0
call display
call tastiera
movlw 10
subwf memoria,0
btfsc status,2
goto dati_con_prof1
movf memoria,0
movwf CONU
movf mem_dis,0
call display
call conferma
;conferma dati ?
return
;**********sottoprogramma lavorazione in corso
lav_corso
call home1
movlw ' '
call display
movlw ' '
call display
movlw ':'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw 'T'
call display
movlw 'E'
call display
movlw 'M'
call display
movlw 'P'
call display
movlw 'O'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
call home2
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw 'L'
call display
movlw 'A'
50
call display
movlw 'V'
call display
movlw 'O'
call display
movlw 'R'
call display
movlw 'A'
call display
movlw 'Z'
call display
movlw 'I'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'E'
call display
return
;***********sottoprogramma lavorazione cilindrica
lav_cilindrica
bsf
porte,2
;motore mandrino on
call binariox
call binarioy
movf xl,0
movwf x1l
movf xh,0
movwf x1h
bcf
intcon,7
;disabilita interrupt
bsf
pch,3
;seleziona banco1 ROM
call visual_tempo
;calcola tempo lavorazione
bcf
pch,3
;seleziona banco0 ROM
bsf
intcon,7
;riabilita interrupt
incf time
;fa partire tempo
lav_ci
clrf flag
;inizio lavorazione
movf xl,0
;memorizza dati in x1
movwf x1l
movf xh,0
movwf x1h
lav_cil
movf x1l
;controlla se zero
btfsc status,2
goto lavc_x
call dy
decf x1l
;controlla se zero
goto lav_cil
lavc_x
movf x1h
btfsc status,2
goto lavc_1
call dy
decf x1h
decf x1l
goto lav_cil
lavc_1
movf yl
;controlla posizione asse y
btfsc status,2
goto lavc_y
call dx
decf yl
goto lavflag
lavc_y
movf yh
btfsc status,2
goto lav_cout
call dx
decf yh
decf yl
lavflag
incf flag
movlw 1
subwf flag,0
51
btfss status,2
goto lav_ci
movf xl,0
movwf x1l
movf xh,0
movwf x1h
lavr1 movf x1l
btfsc status,2
goto lavr2
call sy
decf x1l
goto lavr1
lavr2 movf x1h
btfsc status,2
goto lavc_1
call sy
decf x1h
decf x1l
goto lavr1
lav_cout
bcf
porte,2
call terminata
call zeroxy
return
;memorizza dati in x1
;controlla se zero
;controlla se zero
;motore off
;***********sottoprogramma lavorazione conica
lav_conica
bsf
porte,2
;motore mandrino on
call binariox
call binario_con
bcf
intcon,7
;disabilita interrupt
bsf
pch,3
;seleziona banco ROM1
call passi_m
;calcola passi assex
bcf
pch,3
;seleziona banco1 ROM
bsf
intcon,7
;riabilita interrupt
bcf
status,0
;calcola l*2/conicita'
rlf
pendl
;per calcolo lunghezza scalino
rlf
pendh
clrf gradino
;azzera risultato quoziente
movlw 8
movwf conta
mul
bcf
status,0
rlf
gradino
bcf
status,0
rlf
pendl
rlf
pendh
movf y1l,0
subwf pendh,0
btfss status,0
goto testd
movf pendh
incf gradino
testd decfsz
conta
goto mul
bcf
intcon,7
;disabilita interrupt
bsf
pch,3
;seleziona banco ROM1
call visual_tempo1
;calcola tempo lavorazione
bcf
pch,3
;seleziona banco1 ROM
bsf
intcon,7
;riabilita interrupt
incf time
;start visualizzazione tempo
in_con
movf gradino,0
movwf contat
movf xl,0
;memorizza dati per lavorazione
movwf x1l
movf xh,0
movwf x1h
lavo_c
movf x1l
;controlla se zero
btfsc status,2
goto lavoc_x
52
call sy
decfsz
contat
;aggiorna calcolo gradino
goto ccc1
goto salto_g
ccc1 decf x1l
;controlla se zero
goto lavo_c
lavoc_x
movf x1h
btfsc status,2
goto fine_con
call sy
decf x1h
decf x1l
decfsz
contat
;aggiorna calcolo gradino
goto ccc2
goto salto_g
ccc2 goto lavo_c
salto_g
call dx
movf gradino,0
subwf xl
btfsc status,0
goto ritorno
movf xh
btfsc status,2
goto fine_con
decf xh
ritorno
movf x1l
;ritorno con lavorazione
btfsc status,2
goto lavrc_x
call sy
decf x1l
;controlla se zero
goto ritorno
lavrc_x
movf x1h
btfsc status,2
goto torn
call sy
decf x1h
decf x1l
goto ritorno
torn movf xl,0
;memorizza dati in x1
movwf x1l
movf xh,0
movwf x1h
rito_v
movf x1l
;ritorno senza lavorazione
btfsc status,2
goto rito_v1
call dy
decf x1l
;controlla se zero
goto rito_v
rito_v1
movf x1h
btfsc status,2
goto in_con
call dy
decf x1h
decf x1l
goto rito_v
fine_con
bcf
porte,2
;stop motore
call terminata
call zeroxy
return
;**********sottoprogramma conversione dati in binario spostamento
assex
binariox
clrf xl
clrf xh
lpx1 movf centx
;controlla valore centinaia
btfsc status,2
;se zero passa a controllo decine
goto lpx2
53
lpx2
lpx3
lpx4
lpx5
movlw d'250'
addwf xl
btfsc status,0
incf xh
movlw d'250'
addwf xl
btfsc status,0
incf xh
movlw d'250'
addwf xl
btfsc status,0
incf xh
movlw d'250'
addwf xl
btfsc status,0
incf xh
decf centx
goto lpx1
movf decx
btfsc status,2
goto lpx3
movlw d'100'
addwf xl
btfsc status,0
incf xh
decf decx
goto lpx2
movf unx
btfsc status,2
goto lpx4
movlw d'10'
addwf xl
btfsc status,0
incf xh
decf unx
goto lpx3
movf decimix
btfsc status,2
goto lpx5
movlw 1
addwf xl
btfsc status,0
incf xh
decf decimix
goto lpx4
return
;c'e' riporto
;c'e' riporto
;c'e' riporto
;c'e' riporto
;controlla valore decine
;se zero passa a controllo unita'
;c'e' riporto
;controlla valore unita'
;se zero passa a controllo decimi
;c'e' riporto
;controlla valore decimi
;c'e' riporto
;**********sottoprogramma conversione dati in binario spostamento
assey
binarioy
clrf yl
clrf yh
lpx2y movf decy
;controlla valore decine
btfsc status,2
;se zero passa a controllo decine
goto lpx3y
movlw d'100'
addwf yl
btfsc status,0
;c'e' riporto
incf yh
decf decy
goto lpx2y
lpx3y movf uny
;controlla valore unita'
btfsc status,2
;se zero passa a controllo unita'
goto lpx4y
movlw d'10'
addwf yl
btfsc status,0
;c'e' riporto
incf yh
decf uny
54
goto lpx3y
lpx4y movf decimiy
btfsc status,2
goto lpx5y
movlw 1
addwf yl
btfsc status,0
incf yh
decf decimiy
goto lpx4y
lpx5y return
;controlla valore decimi
;c'e' riporto
;**********sottoprogramma conversione dati in binario per conica
binario_con
clrf ylC
clrf yhC
lpM3y movf COND
;controlla valore unita'
btfsc status,2
;se zero passa a controllo unita'
goto lpM4y
movlw d'10'
addwf ylC
btfsc status,0
;c'e' riporto
incf yhC
decf COND
goto lpM3y
lpM4y movf CONU
;controlla valore decimi
btfsc status,2
goto lpM5y
movlw 1
addwf ylC
btfsc status,0
;c'e' riporto
incf yhC
decf CONU
goto lpM4y
lpM5y return
;**********sottoprogramma lavorazione terminata
terminata
clrf time
;blocca visualizzazione tempo
call home1
movlw ' '
call display
movlw ' '
call display
movlw 'L'
call display
movlw 'A'
call display
movlw 'V'
call display
movlw 'O'
call display
movlw 'R'
call display
movlw 'A'
call display
movlw 'Z'
call display
movlw 'I'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'E'
call display
movlw ' '
call display
movlw ' '
55
call display
movlw ' '
call display
call home2
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw 'T'
call display
movlw 'E'
call display
movlw 'R'
call display
movlw 'M'
call display
movlw 'I'
call display
movlw 'N'
call display
movlw 'A'
call display
movlw 'T'
call display
movlw 'A'
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
movlw ' '
call display
return
;*******************routine conferma dati inseriti
conferma
call home2
movlw 'C'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'F'
call display
movlw 'E'
call display
movlw 'R'
call display
movlw 'M'
call display
movlw 'A'
call display
movlw ' '
call display
movlw '('
call display
movlw 'S'
call display
movlw '/'
call display
movlw 'N'
call display
movlw ')'
call display
56
movlw '?'
call display
movlw ' '
call display
return
;*************************TASTIERA************************************
*******
tastiera
bsf
portc,RS
call blink_on
movlw b'11110111' ;riga rb3
movwf portb
btfss portb,4
;premuto 0?
goto tasto0
btfss portb,5
;premuto 4?
goto tasto4
btfss portb,6
;premuto 8?
goto tasto8
movlw b'11111011' ;riga rb2
movwf portb
btfss portb,4
;premuto 1?
goto tasto1
btfss portb,5
;premuto 5?
goto tasto5
btfss portb,6
;premuto 9?
goto tasto9
movlw b'11111101' ;riga rb1
movwf portb
btfss portb,4
;premuto 2?
goto tasto2
btfss portb,5
;premuto 6?
goto tasto6
movlw b'11111110' ;riga rb0
movwf portb
btfss portb,4
;premuto 3?
goto tasto3
btfss portb,5
;premuto 7?
goto tasto7
movlw b'11111101'
movwf portb
btfss portb,7
;premuto ESC ?
goto tasto10
goto tastiera
;se nessun tasto premuto ripeti
;*****************************************TASTI***********************
*
tasto0
call delay20ms
;elimina rimbalzi
lpt1
btfss portb,4
;pulsante rilasciato ?
goto lpt1
call delay20ms
;elimina rimbalzi
movlw 0
;memorizza lettura
movwf memoria
movlw '0'
;memorizza dato per display
movwf mem_dis
goto blink
tasto1
call delay20ms
lpt2
btfss portb,4
goto lpt2
call delay20ms
movlw 1
movwf memoria
movlw '1'
movwf mem_dis
goto blink
tasto2
call delay20ms
lpt3
btfss portb,4
goto lpt3
call delay20ms
movlw d'2'
57
movwf
movlw
movwf
goto
tasto3
lpt4
tasto4
lpt5
tasto5
lpt6
tasto6
lpt7
tasto7
lpt8
tasto8
lpt9
tasto10
lptesc
tasto9
lpt10
memoria
'2'
mem_dis
blink
call delay20ms
btfss portb,4
goto lpt4
call delay20ms
movlw d'3'
movwf memoria
movlw '3'
movwf mem_dis
goto blink
call delay20ms
btfss portb,5
goto lpt5
call delay20ms
movlw d'4'
movwf memoria
movlw '4'
movwf mem_dis
goto blink
call delay20ms
btfss portb,5
goto lpt6
call delay20ms
movlw d'5'
movwf memoria
movlw '5'
movwf mem_dis
goto blink
call delay20ms
btfss portb,5
goto lpt7
call delay20ms
movlw d'6'
movwf memoria
movlw '6'
movwf mem_dis
goto blink
call delay20ms
btfss portb,5
goto lpt8
call delay20ms
movlw d'7'
movwf memoria
movlw '7'
movwf mem_dis
goto blink
call delay20ms
btfss portb,6
goto lpt9
call delay20ms
movlw d'8'
movwf memoria
movlw '8'
movwf mem_dis
goto blink
call delay20ms
btfss portb,7
goto lptesc
call delay20ms
movlw 10
movwf memoria
return
call delay20ms
btfss portb,6
goto lpt10
call delay20ms
58
blink
movlw d'9'
movwf memoria
movlw '9'
movwf mem_dis
call blink_off
return
;********sottoprogramma controllo tasto enter
ok
movlw b'11111110'
movwf portb
lpen btfsc portb,7
goto lpen
call delay20ms
;elimina rimbalzi
return
;********sottoprogramma controllo tasto enter rilasciato
okoff movlw b'11111110'
movwf portb
lpenr btfss portb,7
goto lpenr
call delay20ms
;elimina rimbalzi
return
;**********sottoprogramma invio dati a display
display
movwf portd
;invia dato
bsf
portc,E
;impulso di abilitazione
bcf
portc,E
call ms1
;ritardo 1ms
return
;**********sottoprogramma comando cursore inizio seconda riga
home2 bcf
portc,RS
movlw 0xc0
;display inizio seconda riga
call display
bsf
portc,RS
return
;**********sottoprogramma comando cursore inizio prima riga
home1 bcf
portc,RS
movlw 0x80
;display inizio prima riga
call display
bsf
portc,RS
return
;**********sottoprogramma blink on
blink_on
bcf
portc,RS
;blink on
call ms1
movlw 0d
call display
bsf
portc,RS
call ms1
return
;**********sottoprogramma blink off
blink_off
bcf
portc,RS
call ms1
movlw 0c
;blink off
call display
bsf
portc,RS
call ms1
return
;**********sottoprogramma scritta (#) per continuare
enter call home2
movlw '#'
call display
59
movlw ' '
call display
movlw 'P'
call display
movlw 'E'
call display
movlw 'R'
call display
movlw ' '
call display
movlw 'C'
call display
movlw 'O'
call display
movlw 'N'
call display
movlw 'T'
call display
movlw 'I'
call display
movlw 'N'
call display
movlw 'U'
call display
movlw 'A'
call display
movlw 'R'
call display
movlw 'E'
call display
return
;**********sottoprogramma ritardo 1ms
ms1
clrf ms
lp_ms movf ms
btfsc status,2
goto lp_ms
return
;**********sottoprogramma ritardo 1ms
ms10 clrf ms
lp_ms3
movlw d'10'
subwf ms,0
btfss status,2
goto lp_ms3
return
;**********sottoprogramma ritardo 20ms
delay20ms
clrf ms
lp_ms20
movlw d'20'
subwf ms,0
btfss status,2
goto lp_ms20
return
;**********sottoprogramma ritardo 100ms
ms100 clrf ms
lp_ms100
movlw d'100'
subwf ms,0
btfss status,2
goto lp_ms100
return
;**********sottoprogramma controllo spostamento asse_dx
dx
incf assex
movlw 4
subwf assex,0
btfss status,2
60
sax
dx1
dx2
dx3
goto sax
clrf assex
movf assex
btfss status,2
goto dx1
bcf
porta,3
bsf
porta,0
call ms10
return
movlw 1
subwf assex,0
btfss status,2
goto dx2
bcf
porta,0
bsf
porta,2
call ms10
return
movlw 2
subwf assex,0
btfss status,2
goto dx3
bcf
porta,2
bsf
porta,1
call ms10
return
bcf
porta,1
bsf
porta,3
call ms10
return
;**********sottoprogramma controllo spostamento asse_sx
sx
decf assex
movlw 0xff
subwf assex,0
btfss status,2
goto sbx
movlw 3
movwf assex
sbx
movf assex
btfss status,2
goto sx1
bcf
porta,2
bsf
porta,0
call ms10
return
sx1
movlw 1
subwf assex,0
btfss status,2
goto sx2
bcf
porta,1
bsf
porta,2
call ms10
return
sx2
movlw 2
subwf assex,0
btfss status,2
goto sx3
bcf
porta,3
bsf
porta,1
call ms10
return
sx3
bcf
porta,0
bsf
porta,3
call ms10
return
;**********sottoprogramma controllo spostamento asse dy
dy
incf assey
movlw 4
61
ddy
dy1
dy2
dy3
subwf assey,0
btfss status,2
goto ddy
clrf assey
movf assey
btfss status,2
goto dy1
bcf
portc,3
bsf
portc,0
call ms10
return
movlw 1
subwf assey,0
btfss status,2
goto dy2
bcf
portc,0
bsf
portc,1
call ms10
return
movlw 2
subwf assey,0
btfss status,2
goto dy3
bcf
portc,1
bsf
portc,2
call ms10
return
bcf
portc,2
bsf
portc,3
call ms10
return
;**********sottoprogramma controllo spostamento asse sy
sy
decf assey
movlw 0xff
subwf assey,0
btfss status,2
goto sby
movlw 3
movwf assey
sby
movf assey
btfss status,2
goto sy1
bcf
portc,1
bsf
portc,0
call ms10
return
sy1
movlw 1
subwf assey,0
btfss status,2
goto sy2
bcf
portc,2
bsf
portc,1
call ms10
return
sy2
movlw 2
subwf assey,0
btfss status,2
goto sy3
bcf
portc,3
bsf
portc,2
call ms10
return
sy3
bcf
portc,0
bsf
portc,3
call ms10
return
;**********sottoprogramma posizionamento in x,y=0,0
62
zeroxy
lp1
btfsc porte,1
goto lp2
;controlla se azionato FCRX collegato a RE1
call sx
movlw b'11111101'
movwf portb
btfss portb,7
;premuto ESC ?
return
goto lp1
lp2
call mot_off
movlw b'11111101'
movwf portb
btfss portb,7
;premuto ESC ?
return
btfss porta,4
;controlla se azionato FCRY collegato a
RA4
goto lp222
call mot_off
return
lp222 call sy
goto lp2
;****************routine posiziona utensile in 0,0
zero_zero
movlw b'11111110'
movwf portb
btfsc portb,6
goto zzz1
btfsc porte,0
goto allarme
call dx
call mot_off
zzz1 movlw b'11111101'
movwf portb
btfsc portb,6
goto zzz2
btfsc porte,1
goto allarme
call sx
call mot_off
zzz2 movlw b'11111011'
movwf portb
btfsc portb,7
goto zzz3
btfsc porta,4
goto allarme
call sy
call mot_off
zzz3 movlw b'11110111'
movwf portb
btfsc portb,7
goto zzz4
btfsc porta,5
goto allarme
call dy
call mot_off
zzz4 movlw b'11111110' ;premuto # ?
movwf portb
btfsc portb,7
goto zero_zero
call mot_off
return
allarme
goto zero_zero
;***************motori a riposo
mot_off
clrf porta
;motore1 off
bcf
portc,0
;motore2 off
63
bcf
portc,1
bcf
portc,2
bcf
portc,3
return
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
;area rom libera per salto pagina
64
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
;**********routine che calcola tempo lavorazione cilindrica*******
visual_tempo
;moltiplica dati lavorazione x 4.8
movf xl,0
;memorizza dati in x1
movwf x1l
movf xh,0
movwf x1h
bcf
status,0
rlf
xl
rlf
xh
bcf
status,0
rlf
xl
rlf
xh
bcf
status,0
rrf
x1h
rrf
x1l
movf x1l,0
addwf xl
btfsc status,0
incf xh
movf x1h,0
addwf xh
bcf
status,0
rrf
x1h
rrf
x1l
bcf
status,0
rrf
x1h
rrf
x1l
bcf
status,0
rrf
x1h
rrf
x1l
movf x1l,0
addwf xl
btfsc status,0
incf xh
movf x1h,0
addwf xh
movf yl,0
;memorizza dati in y1
movwf y1l
movf yh,0
65
movwf
bcf
rlf
rlf
bcf
rlf
rlf
bcf
rrf
rrf
movf
addwf
btfsc
incf
movf
addwf
bcf
rrf
rrf
bcf
rrf
rrf
bcf
rrf
rrf
movf
addwf
btfsc
incf
movf
addwf
clrf
clrf
clrf
movf
movwf
movwf
movf
movwf
movwf
movf
movwf
movf
movwf
lav_cie
movf
movwf
movf
movwf
lav_cile
movf
btfsc
goto
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
e1
decf
goto
lavc_xe
btfsc
goto
y1h
status,0
yl
yh
status,0
yl
yh
status,0
y1h
y1l
y1l,0
yl
status,0
yh
y1h,0
yh
status,0
y1h
y1l
status,0
y1h
y1l
status,0
y1h
y1l
y1l,0
yl
status,0
yh
y1h,0
yh
em1
timel
timeh
xl,0
mxl
x1l
xh,0
mxh
x1h
yl,0
mem1
yh,0
mem2
clrf flag
mxl,0
x1l
mxh,0
x1h
;emula lavorazione cilindrica
x1l
status,2
lavc_xe
em1
d'100'
em1,0
status,0
e1
em1
1
timel
status,0
timeh
x1l
lav_cile
movf x1h
status,2
lavc_1e
;controlla se zero
;memorizza dati per lavorazione
;inizio lavorazione
;memorizza dati in x1
;controlla se zero
66
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
e2
decf
decf
goto
lavc_1e
btfsc
goto
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
e3
decf
goto
lavc_ye
btfsc
goto
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
e4
decf
decf
lavflage
incf
movlw
subwf
btfss
goto
movf
movwf
movf
movwf
lavr1e
btfsc
goto
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
e5
decf
goto
lavr2e
em1
d'100'
em1,0
status,0
e2
em1
1
timel
status,0
timeh
x1h
x1l
lav_cile
movf mem1
status,2
lavc_ye
em1
d'100'
em1,0
status,0
e3
em1
1
timel
status,0
timeh
mem1
lavflage
movf mem2
status,2
lav_coute
em1
d'100'
em1,0
status,0
e4
em1
1
timel
status,0
timeh
mem2
mem1
flag
1
flag,0
status,2
lav_cie
mxl,0
x1l
mxh,0
x1h
movf x1l
status,2
lavr2e
em1
d'100'
em1,0
status,0
e5
em1
1
timel
status,0
timeh
x1l
lavr1e
movf x1h
;controlla posizione asse y
;memorizza dati in x1
;controlla se zero
;controlla se zero
67
btfsc status,2
goto lavc_1e
incf em1
movlw d'100'
subwf em1,0
btfss status,0
goto e6
clrf em1
movlw 1
addwf timel
btfsc status,0
incf timeh
e6
decf x1h
decf x1l
goto lavr1e
lav_coute
incf em1
;aggiusta tempo di 1 secondo
movlw d'100'
subwf em1,0
btfss status,0
goto e9
movlw 1
addwf timel
btfsc status,0
incf timeh
e9
clrf mem1
;converti tempo in minuti
movf timel,0
movwf mem2
lt11c movlw d'60'
subwf mem2
btfss status,0
goto lt21c
subwf timel
incf mem1
goto lt11c
lt21c movf timeh
btfsc status,2
goto lt31c
decf timeh
movlw d'60'
subwf timel
incf mem1
goto lt11c
lt31c clrf dmin2
;converti minuti in BCD
movf mem1,0
movwf mem2
lt331c
movlw d'10'
subwf mem2
btfss status,0
goto lt41c
subwf mem1
incf dmin2
goto lt331c
lt41c movf mem1,0
movwf umin2
clrf dsec2 ;converti secondi in BCD
movf timel,0
movwf mem2
lt441c
movlw d'10'
subwf mem2
btfss status,0
goto lt51c
subwf timel
incf dsec2
goto lt441c
lt51c movf timel,0
movwf usec2
return
68
;**********routine che calcola passi motore *******
passi_m
;moltiplica dati lavorazione x 4.8
movf xl,0
;memorizza dati in x1
movwf x1l
movwf pendl
movf xh,0
movwf x1h
movwf pendh
bcf
status,0
rlf
xl
rlf
xh
bcf
status,0
rlf
xl
rlf
xh
bcf
status,0
rrf
x1h
rrf
x1l
movf x1l,0
addwf xl
btfsc status,0
incf xh
movf x1h,0
addwf xh
bcf
status,0
rrf
x1h
rrf
x1l
bcf
status,0
rrf
x1h
rrf
x1l
bcf
status,0
rrf
x1h
rrf
x1l
movf x1l,0
addwf xl
btfsc status,0
incf xh
movf x1h,0
addwf xh
movf ylC,0
;memorizza dati in y1
movwf y1l
movf xl,0
;salva dati per calcolo tempo
movf xh,0
return
;************* routine che calcola tempo lavorazione ********
visual_tempo1
clrf em1
;emula lavorazione conica
clrf timel
clrf timeh
movf xl,0
;memorizza dati per lavorazione
movwf mxl
movf xh,0
movwf mxh
in_cone
movf gradino,0
movwf contat
movf mxl,0
;memorizza dati per lavorazione
movwf x1l
movf mxh,0
movwf x1h
lavo_ce
movf x1l
;controlla se zero
btfsc status,2
goto lavoc_xe
incf em1
movlw d'100'
subwf em1,0
btfss status,0
goto ee1
clrf em1
69
movlw 1
addwf timel
btfsc status,0
incf timeh
ee1
decfsz
contat
;aggiorna calcolo gradino
goto ccc1e
goto salto_ge
ccc1e decf x1l
;controlla se zero
goto lavo_ce
lavoc_xe
movf x1h
btfsc status,2
goto fine_cone
incf em1
movlw d'100'
subwf em1,0
btfss status,0
goto ee2
clrf em1
movlw 1
addwf timel
btfsc status,0
incf timeh
ee2
decf x1h
decf x1l
decfsz
contat
;aggiorna calcolo gradino
goto ccc2e
goto salto_ge
ccc2e goto lavo_ce
salto_ge
incf em1
movlw d'100'
subwf em1,0
btfss status,0
goto ee3
clrf em1
movlw 1
addwf timel
btfsc status,0
incf timeh
ee3
movf gradino,0
subwf mxl
btfsc status,0
goto ritornoe
movf mxh
btfsc status,2
goto fine_cone
decf mxh
ritornoe
movf x1l
;ritorno con lavorazione
btfsc status,2
goto lavrc_xe
incf em1
movlw d'100'
subwf em1,0
btfss status,0
goto ee4
clrf em1
movlw 1
addwf timel
btfsc status,0
incf timeh
ee4
decf x1l
;controlla se zero
goto ritornoe
lavrc_xe
movf x1h
btfsc status,2
goto torne
incf em1
70
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
ee5
decf
decf
goto
torne movf
movwf
movf
movwf
rito_ve
btfsc
goto
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
ee6
decf
goto
rito_v1e
movf
btfsc
goto
incf
movlw
subwf
btfss
goto
clrf
movlw
addwf
btfsc
incf
ee7
decf
decf
goto
fine_cone
incf
movlw
subwf
btfss
goto
movlw
addwf
btfsc
incf
ee9
clrf
movf
movwf
lt11 movlw
subwf
btfss
goto
subwf
incf
goto
lt21 movf
d'100'
em1,0
status,0
ee5
em1
1
timel
status,0
timeh
x1h
x1l
ritornoe
mxl,0
x1l
mxh,0
x1h
movf x1l
status,2
rito_v1e
em1
d'100'
em1,0
status,0
ee6
em1
1
timel
status,0
timeh
x1l
rito_ve
;memorizza dati in x1
;ritorno senza lavorazione
;controlla se zero
x1h
status,2
in_cone
em1
d'100'
em1,0
status,0
ee7
em1
1
timel
status,0
timeh
x1h
x1l
rito_ve
em1
d'100'
em1,0
status,0
ee9
1
timel
status,0
timeh
mem1
timel,0
mem2
d'60'
mem2
status,0
lt21
timel
mem1
lt11
timeh
;aggiusta tempo di 1 secondo
;converti tempo in minuti
71
btfsc status,2
goto lt31
decf timeh
movlw d'60'
subwf timel
incf mem1
goto lt11
lt31 clrf dmin2
;converti minuti in BCD
movf mem1,0
movwf mem2
lt331 movlw d'10'
subwf mem2
btfss status,0
goto lt41
subwf mem1
incf dmin2
goto lt331
lt41 movf mem1,0
movwf umin2
clrf dsec2 ;converti secondi in BCD
movf timel,0
movwf mem2
lt441 movlw d'10'
subwf mem2
btfss status,0
goto lt51
subwf timel
incf dsec2
goto lt441
lt51 movf timel,0
movwf usec2
return
end
72
MODELLO
unimat 3
Progetto della classe V A/Z
Coordinatore del progetto :Ins. ZANIOL ITALO
Équipe Riccardo Palù Domenico De Luca Stefano Crepaldi Mauro Tosatto Loris Visintin
73
Egregio Cliente,
ci congratuliamo e La ringraziamo per aver scelto
il nostro prodotto UNIMAT 3.
Abbiamo preparato questo libretto di istruzioni per consentirle
di apprezzare le qualità di questo tornio.
Le raccomandiamo di leggerloattentamente in tutte le sue parti
prima di accingersi per la prima volta all’ utilizzo.
In esso sono contenute informazioni, consigli e
Avvertenze.
All’ interno del manuale sono stati inseriti dei
consigli utili per la manutenzione periodica e
per l’ uso coretto di UNIMAT 3 e del suo
mantenimento ottimale.
Cordialmente.
V A/Z serale
74
NOME DEI COMPONENTI E FUNZIONI
1
2
3
4
5
VISTA FRONTALE DEL TORNIO
7
14
8
15
9
10
11
12
16
VISTA DALL’ALTO DEL TORNIO
75
13
17
6
1)
Interruttore per l’ accensione
2)
Pulegge per variare i giri del mandrino
3)
Mandrino
4)
Motore asse X
5)
Contropunta
6)
Motore asse Z
7)
Segnalatore luminoso per indicare modi di funzionamento
8)
Display
9)
Scheda elettronica di controllo
10) Interruttore comando motore
11) Motore mandrino
12) Finecorsa asse X13) Finecorsa asse Z+
14) Tasto reset
15) Tastierino
16) Finecorsa asse Z17) Finecorsa asse X+
76
|
MODI DI IMPIEGO
|
AVVERTENZE: prima di usare il tornio leggere attentamente le istruzioni riportate in
questo manuale d’uso
Questa unità può lavorare principalmente leghe leggere, soprattutto materiale plastico.
La lavorazione di altri materiali non è consentita a causa della limitata potenza dei motori.
TIPI DI LAVORAZIONI CHE SI POSSONO ESEGUIRE
Le lavorazioni possibili sono cilindriche e coniche.
Per la lavorazione cilindrica viene esportato uno spessore di materiale pari a 20 micron
per ogni passata dell' utensile.
La lavorazione conica viene effettuata a gradini, l'altezza di ogni gradino e' di 20
micron.
PRECAUZIONI PER L'USO
L'accesso ai circuiti elettronici non solo li può danneggiare ma e' anche
pericoloso nonostante l'apparecchiatura preveda il rispetto delle normative di
sicurezza.
Posare il tornio su una superficie piatta, stabile ed in piano. Evitare scosse
violente o urti.
Non chiudere le fessure di ventilazione necessarie ad impedire che la
temperatura dei circuiti elettronici aumenti eccessivamente per il cattivo
ricircolo di aria.
Essendo il tornio sprovvisto di sistemi di protezione, non toccare gli organi
meccanici in movimento durante la lavorazione.
EMERGENZE
Se durante la lavorazione ci fossero anomalie di funzionamento o per qualsiasi altra
emergenza, premere il pulsante rosso di emergenza posto sopra il tastierino che arresta
immediatamente la macchina.
•
•
•
•
•
•
•
•
•
PRIMA DI PROCEDERE
Verificare che la tensione di alimentazione sia quella standard prevista nella rete di
distribuzione italiana
Verificare se il pezzo da lavorare richiede la contro punta
Nel caso si utilizzi la contro punta dare una pressione moderata ( una pressione elevata
provoca il riscaldamento degli organi meccanici durante la lavorazione)
Bloccare molto bene il pezzo. Un bloccaggio insicuro è fonte spesso di infortuni, dunque si
raccomanda la massima attenzione.
Verificare la velocità del mandrino agendo sull’interruttore in posizione 1 o 2 di rotazione.
Si può inoltre agire sulle pulegge poste dietro al mandrino per selezionare la velocità
desiderata.
Controllare se le guide della macchina sono oliate a sufficienza ( in caso di mancanza di
lubrificante il tornio potrebbe non eseguire correttamente le lavorazioni a causa della perdita
del passo dei motori).
Durante la lavorazione fare attenzione ai trucioli ( i trucioli possono provocare abrasioni ed
ustioni ). Usare occhiali di protezione e guanti.
Prima della lavorazione accertarsi che l'utensile sia affilato.
Si consiglia di eseguire una manutenzione ordinaria ogni 40 ore di lavoro oppure una
verifica generale delle condizioni di funzionamento.
77
ACCENSIONE DELLA MACCHINA
Inserire la spina in una presa provvista di impianto di messa a terra.
Alimentare il tornio attivando l’interruttore del relè magnetotermico posto sul
lato sinistro della macchina.
Il LED che segnala lo stato della macchina è acceso
Sul display compare il messaggio:
I.T.I.S. MAX PLANCK
# PER CONTINUARE
Premere il tasto # del tastierino esadecimale
Il LED lampeggia e segnala che i successivi comandi mettono in movimento la
torretta portautensile
POSIZIONAMENTO AUTOMATICO UTENSILE
dopo aver azionato il pulsante #, sul display compare il messaggio:
POSIZIONARE UTEN
SILE IN 0/0? S/N
Se viene premuto il tasto S l'utensile viene portato automaticamente nel punto
0,0 che equivale al punto estremo D x , Dy
Se durante il posizionamento automatico si preme il tasto ESC si esce da
questa funzione e si entra in quella successiva
Se viene premuto il tasto N si accede alla funzione successiva che consente di
posizionare l'utensile manualmente per la lavorazione
POSIZIONAMENTO MANUALE UTENSILE
Dopo la precedente operazione sul display compare il messaggio:
POSIZIONARE UTEN
SILE # SE VALIDO
VALIDO
a questo punto e' possibile posizionare l'utensile mediante i tasti freccia .
Premendo il tasto # si stabilisce il punto iniziale per la lavorazione cilindrica o
conica.
in caso di lavorazione cilindrica, la prima passata dell'utensile avviene verso il
mandrino
in caso di lavorazione conica la prima passata dell'utensile avviene nel verso
opposto al mandrino
SELEZIONARE TIPO DI LAVORAZIONE
TORNITURA CONICA
(S/N)
78
viene ora richiesto il tipo di lavorazione: premendo S si accede alla
lavorazione conica, in caso contrario a quella cilindrica
DATI PER LA LAVORAZIONE CILINDRICA
viene richiesta una conferma della lavorazione selezionata mediante il
messaggio
CONFERMA
CILINDRICA ? S / N
in caso di conferma si procede, altrimenti si torna al punto Selezionare tipo
lavorazione
0O0 . 0
LUNGHEZZA
il cursore lampeggiante consente di caricare la lunghezza della tornitura
cilindrica in decimi di millimetro.
se durante il caricamento dei dati si commettono degli errori e' possibile,
premendo il tasto ESC, ricominciare il caricamento dei dati.
Dopo aver caricato i dati viene richiesta conferma dei dati caricati
0125 . 5
CONFERMA ( S / N )
viene ora richiesta la profondità della lavorazione cilindrica e poi la conferma
dei dati inseriti.
00.O
PROFONDITA’
01.5
CONFERMA ( S / N )
LAVORAZIONE CILINDRICA
dopo aver confermato la profondità, inizia la lavorazione. Il LED lampeggia a
frequenza maggiore della precedente segnalando lavorazione in corso.
Il mandrino viene posto in rotazione automaticamente e fermato al termine della
lavorazione
Premendo il pulsante di EMERGENZA si arresta la lavorazione in qualsiasi
momento e si torna al punto iniziale che visualizza I.T.I.S. MAX
PLANCK.
durante la lavorazione compare sul display il tempo residuo di tornitura
79
03:45
TEMPO
LAVORAZIONE
TERMINE DELLA LAVORAZIONE
Terminata la lavorazione il mandrino si ferma automaticamente.
sul display compare il messaggio
LAVORAZIONE
TERMINATA
L' utensile viene portato automaticamente sul punto 0,0. Premendo il tasto
ESC si annulla il posizionamento automatico.
AI termine della precedente funzione si torna al punto POSIZIONAMENTO
UTENSILE PER LAVORAZIONE rendendo così possibile una nuova
lavorazione.
DATI PER LA LAVORAZIONE CONICA
dopo aver confermato la richiesta di una lavorazione conica, vengono richiesti i
dati della lavorazione in modo simile a quelli della lavorazione cilindrica
00O.0
LUNGHEZZA
Dopo aver caricato i dati viene richiesta conferma con i valori inseriti:
006.0
006.0
CONFERMA
S/N
viene ora richiesta la conicità e la relativa conferma:
00
CONICITA’ IN %
35
CONFERMA ( S / N )
LAVORAZIONE CONICA
dopo aver confermato la conicità inizia la lavorazione.
Il LED lampeggia a frequenza maggiore della precedente segnalando
lavorazione in corso.
80
durante la lavorazione compare il tempo residuo come per il caso della
lavorazione cilindrica. Anche la procedura di fine lavorazione e' analoga.
Note :
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
La VA/Z si riserva il diritto di apportare cambiamenti al progetto in qualsiasi
momento e senza preavviso. E vietata la riproduzione o la traduzione anche parziale di
questo libretto, senza l’autorizzazione scritta della VA/Z .
Giugno 2002
81
Scarica