CONTROLLO NUMERICO DI UN TORNIO - itisplanck - Home · piano arrugginendo per la mancata ......

81
1 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

Transcript of CONTROLLO NUMERICO DI UN TORNIO - itisplanck - Home · piano arrugginendo per la mancata ......

1

CONTROLLO NUMERICO DI UN TORNIO DI TIPO DIDATTICO

ELETTRONICA E TELECOMUNICAZIONI AREA DI PROGETTO TESINA PLURIDISCIPL INARE

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 Stefa no, Tosatto Mauro

2

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

3

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 )

4

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

5

L’idea di progetto

La realizzazione

Il tornio didattico visto frontalmente

Elettronica di controllo

6

Il tornio didattico visto nella parte posteriore

PARTICOLARI COSTRUTTIVI DELLA SCHEDA DI CONTROLLO

IL MICROPROCESSORE PIC16F877 L’INTERFACCIA DI PO TENZA

IL QUARZO PER IL CLOCK DEL MICROCONTROLLORE LA RETE RESISTIVA Rb

7

Schemi elettrici

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

330 Ω

TIP 29

+12V

MOTORE ASSE X MOTORE ASSE Z

+5V

RESET330 Ω

8

220 V~

GND +5V +12V

GND +5V

TASTIERINO NUMERICO

schema elettrico

ALIMENTATORE

STABILIZZATO

11

+5V

+5V

100 Ω

10 KΩ

10 KΩ

INTERRUTORE

GENERALE C6

RC0 RC1 RC2 RC3 RA0 RA1 RA2 RA3

RC4

RA4

RA5

RE0

RE1

MCLR

VSS VDD RD0/RD7-RC5/RC7

RB0/RB7

RE2

OSC1

OSC2

FINE CORA ASSI

ASSE Z-

ASSE Z+

ASSE X-

ASSE X+

LED

OUT

interfaccia

motore

XTAL

4 MHz

C1 C2

C3

D1

+5V

+5V

+5V

+5V

10 KΩ

10 KΩ

10 KΩ

10 KΩ

8

I.T.I.S."MAX PLANCK"Classe 5° A/Z ASO 2001/2002

CIRCUITO STAMPATO LATO RAME

9

"MAX PLANCK"

I.T.I.S.Classe 5° A/Z ASO 2001/2002

circuito stampato lato componenti

10

PIC 16F877

XTAL

+ 5 V -in- alimentatore ( Blu )

LED

di

funz

iona

men

to

Tas

to

ST

OP

+ 5 V out interfaccia motore 220 V~ ( Verde )

Fin

e c

ors

a

asse

Z+

+ 12 V -out- Motore asse X ( Nero )

Out motore asse Z ( Nero )

Out motore asse Z ( Grigio )

Out motore asse Z ( Rosso )

Out motore asse Z ( Bianco )

+ 12 V Out motore asse Z ( nero )

+ 12 V -in- alimentatore ( Nero )

Out motore asse X ( Grigio )

Out motore asse X ( Rosso )

Out motore asse X ( Nero )

Out motore asse X ( Nero )

Fin

e c

ors

a

asse

Z-

Fin

e c

ors

a

asse

X-

Fin

e c

ors

a

asse

X+

Out

di

spla

y O

ut

tast

iera

SCHEDA PRINCIPALE

componenti e morsetti

zocc

olo

col

lega

men

to

flat d

ispl

ayzo

ccol

o c

olle

gam

ento

fla

t tas

tierin

o ad

esiv

o

rete

res

istiv

asi

ngo

la 3

30Ω

TIP 29

TIP 29

TIP 29

TIP 29

TIP 29

TIP 29

TIP 29

TIP 29

11

O Il DISPLAY A CRISTALLI LIQUIDI o

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 cen-tesimo 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 im-magine 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.

12

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

13

-2 linee per la retroilluminazione

Analisi linee di controllo:

linea RS

-RS = 1 il display riconosce il dato presente sul bus come simbolo da visualizzare

-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 o ff 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 ' '

14

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 se conda riga home2 bcf portc,RS movlw 0xc0 ;display inizio seconda riga call display bsf portc,RS return ;**********sottoprogramma comando cursore inizio pr ima 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

15

16

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.

17

Primo piano di tastierino e display

Disegno di progetto

18

Si riporta di seguito una parte del software che co nsente di leggere la tastiera. Si noti che in fase di lettura viene atti vata la funzione blinking del display che mostra i dati inseriti in modo lamp eggiante.

;*************************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

19

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

20

- 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 ass e_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

21

bcf porta,0 bsf porta,2 call ms10 return dx2 movlw 2 subwf assex,0 btfss status,2 goto dx3 bcf porta,2 bsf porta,1 call ms10 return dx3 bcf porta,1 bsf porta,3 call ms10 return ;**********sottoprogramma controllo spostamento ass e_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

22

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

23

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

24

o ALIMENTATORE o

Questo dispositivo ha lo scopo di alimentare i circuiti elettronici del controllo ed i motori passo-passo 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. -trasformatore; 2. -raddrizzatore; 3. -filtro; 4. -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 I 1 e la restituisce con una tensione V2 e con una corrente I 2, 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)

25

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.

26

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.

27

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 )/1 0 –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.1 5 –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

28

29

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:

30

- 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

31

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

32

CODICE SORGENTE COMPLETO

;************************************************** ****** ;********* ************** ;********* CONTROLLO NUMERICO DI UN TORNIO ******** ****** ;********* CL. 5A/Z ******** ****** ;********* A.S. 20001/2002 ********* ***** ;************************************************** ****** list p=16f877 ;**********dichiarazione dei registri speciali banc o0 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 banc o1 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

33

flag equ 0x47 y1l equ 0x48 y1h equ 0x49 gradino equ 0x4a led equ 0x4b msl equ 0x4c dsl equ 0x4d secl equ 0x4e ms2 equ 0x4f ds2 equ 0x50 usec2 equ 0x51 dsec2 equ 0x52 umin2 equ 0x53 dmin2 equ 0x54 time equ 0x55 mux equ 0x56 mxl equ 0x57 mxh equ 0x58 myl equ 0x59 myh equ 0x5a mml equ 0x5b mmh equ 0x5c timeh equ 0x5d timel equ 0x5e mem1 equ 0x5f mem2 equ 0x60 mem3 equ 0x61 mem4 equ 0x62 em1 equ 0x63 em2 equ 0x64 em3 equ 0x65 ;**********dichiarazione segnali di controllo DISPL AY #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

34

btfsc status,2 bsf portc,4 movlw 1 subwf led,0 btfss status,2 goto int1 movlw 4 subwf dsl,0 btfss status,2 goto int2 movlw 0x10 xorwf portc clrf dsl goto esci2 int1 movlw 2 subwf led,0 btfss status,2 goto int2 movlw 2 subwf dsl,0 btfss status,2 goto int2 movlw 0x10 xorwf portc clrf dsl goto esci2 int2 movlw d'5' subwf dsl,0 btfss status,2 goto esci2 clrf dsl esci2 movf time btfsc status,2 goto esci movlw d'100' subwf ms2,0 btfss status,2 goto displayl incf ds2 clrf ms2 movlw 0x0a subwf ds2,0 btfss status,2 goto displayl clrf ds2 decf usec2 movlw 0xff subwf usec2,0 btfss status,2 goto displayl movlw 9 movwf usec2 movf dmin2,0 ;controlla se min=0 btfss status,2 goto agg1 movf umin2,0 btfss status,2 goto agg2 movf dsec2,0 btfss status,2 goto agg3 goto displayl agg1 decf dsec2 movlw 0xff subwf dsec2,0 btfss status,2 goto displayl movlw 5 movwf dsec2

35

decf umin2 movlw 0xff subwf umin2,0 btfss status,2 goto displayl movlw 9 movwf umin2 decf dmin2 goto displayl agg2 decf dsec2 movlw 0xff subwf dsec2,0 btfss status,2 goto displayl decf umin2 movlw 5 movwf dsec2 goto displayl agg3 decf dsec2 displayl ;visualizza tempo lavorazione movf mux btfss status,2 goto mux1 bcf portc,RS ;sposta cursore incf mux goto esci mux1 movlw 1 subwf mux,0 btfss status,2 goto mux22 movlw 80 movwf portd incf mux goto esci mux22 movlw 2 subwf mux,0 btfss status,2 goto mux2 bsf portc,E bcf portc,E incf mux goto esci mux2 movlw 3 subwf mux,0 btfss status,2 goto mux3 bsf portc,RS incf mux goto esci mux3 movlw 4 subwf mux,0 btfss status,2 goto mux6 movf dmin2,0 call tab movwf portd ;invia dato bsf portc,E ;impulso di abilitazione bcf portc,E incf mux goto esci mux6 movlw 5 subwf mux,0 btfss status,2 goto mux7 movf umin2,0 call tab movwf portd ;invia dato bsf portc,E ;impulso di abilitazione bcf portc,E

36

incf mux goto esci mux7 movlw 6 subwf mux,0 btfss status,2 goto mux9 movlw ':' movwf portd ;invia dato bsf portc,E ;impulso di abilitazione bcf portc,E incf mux goto esci mux9 movlw 7 subwf mux,0 btfss status,2 goto mux12 movf dsec2,0 call tab movwf portd ;invia dato bsf portc,E ;impulso di abilitazione bcf portc,E incf mux goto esci mux12 movlw 8 subwf mux,0 btfss status,2 goto esci movf usec2,0 call tab movwf portd ;invia dato bsf portc,E ;impulso di abilitazione bcf portc,E clrf mux esci bcf intcon,2 ;azzera flag interrupt swapf stack2,0 ;ripristina registro di stato movwf status swapf stack1 ;ripristina accumulatore swapf stack1,0 retfie ;**********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 R A5 input 2 fine corsa movwf ddra movlw b'11110000' ;PBH in - PBL out lettura tastie ra movwf ddrb clrf ddrc ;RC0-RC3 out motore 2 -- RC4-RC7 out co ntrollo 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 - configu ra prescaler tmr0 movwf opzioni

37

movlw b'00000111' ;pin portoa e portoe come i/o movwf ad bcf status,5 bcf porte,2 ;motore mandrino fermo clrf time ;azzera flag visualizzazione tempo clrf mux ;azzera puntatore multiplexing display bsf portc,4 ;diodo on clrf led clrf porta ;motore1 off bcf portc,0 ;motore2 off bcf portc,1 bcf portc,2 bcf portc,3 bcf portc,E ;enable display OFF movlw 9 ;inizializza timer movwf tmr movlw b'10100000' ;abilita interrupt timer movwf intcon call configura_lcd ;configura lcd call enter ;premere # per continuare call ok ;controlla se premuto enter call okoff movlw 1 ;lampeggio led movwf led clrf assex ;azzera puntatori controllo motori clrf assey inizio call posizionare00 loop movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto in00 movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto loop goto iniz1 in00 call zeroxy ;posizione zero per torretta iniz1 movlw 1 ;lampeggio led movwf led movlw b'11111110' movwf portb nnn btfss portb,6 ;rilasciato ? goto nnn call posizionare ;posiziona utensile in 0,0 call zero_zero ;posizionamento manuale utensile lp777 call lavorazione ;chiedere se lavorazione co nica lp7 movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto avanti movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto lp7 lpconf call cil_conf movlw b'11111110' movwf portb nnn1 btfss portb,6 ;rilasciato N ? goto nnn1 lpconf1 movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto lp9 movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto lpconf1 movlw b'11111110'

38

movwf portb nnn2 btfss portb,6 ;rilasciato N ? goto nnn2 goto lp777 lp9 call dati_cil_lun ;richiede dati lavorazione ci lindrica lp91 movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto lp99 movlw b'11111101' movwf portb btfss portb,7 ;premuto ESC ? goto lp777 movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto lp91 goto lp9 lp99 call dati_cil_prof ;se confermati vai a richie dere profondita' lp101 movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto lav1 movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto lp101 goto lp99 lav1 movlw 2 ;lampeggio led movwf led call lav_corso ;messaggio per display call lav_cilindrica ;esegui lavorazione goto in00 avanti call dati_con_lun ;richiede dati conica lung hezza lp991 movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto avanti1 movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto lp991 goto avanti avanti1 call dati_con_prof1 ;richiedi diametro1 lp990 movlw b'11111101' movwf portb btfss portb,6 ;premuto S ? goto lav2 movlw b'11111110' movwf portb btfsc portb,6 ;premuto N ? goto lp990 goto avanti1 lav2 movlw 2 ;lampeggio led movwf led call lav_corso ;messaggio per display call lav_conica ;esegui lavorazione goto 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

39

call display movlw 0x0c ;display on - cursore off - blinking o ff 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 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 ;**********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'

40

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 lavo razione 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

41

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 ;sposta cursore alla casella 4 movlw 0xc4 return ;*********************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

42

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 lavoraz ione cilindica dati_cil_lun call home1 movlw ' ' call display movlw ' ' call display movlw ' ' call display movlw ' ' call display movlw ' ' call display movlw '0'

43

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 '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' call display movlw 'Z' call display movlw 'A' call display movlw ' ' 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_cil_lun movf memoria,0 movwf centx movf mem_dis,0

44

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'

45

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 lavoraz ione 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

46

movlw ' ' call display movlw ' ' call display call home2 movlw ' ' call display movlw ' ' call display movlw ' ' call display movlw 'P' call display movlw 'R' call display movlw 'O' call display movlw 'F' call display movlw 'O' call display movlw 'N' call display movlw 'D' call display movlw 'I' call display movlw 'T' call display movlw 'A' call display movlw '`' call display movlw ' ' call display movlw ' ' call display bcf portc,RS ;richiedi dati lunghezza call ms1 ;decy,uny e decimiy sono i valori della profondita' movlw 86 call display bsf portc,RS call ms1 call tastiera movlw 10 subwf memoria,0 btfsc status,2 goto dati_cil_prof movf memoria,0 movwf decy movf mem_dis,0 call display call tastiera movlw 10 subwf memoria,0 btfsc status,2 goto dati_cil_prof movf memoria,0 movwf uny movf mem_dis,0 call display bcf portc,RS ;salta punto call ms1 movlw 89 call display bsf portc,RS call ms1 call tastiera

47

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 lavoraz ione 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'

48

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 lavoraz ione conica angolo dati_con_prof1 call home1 movlw ' ' call display movlw ' '

49

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 ' ' call display movlw ' ' call display movlw ' ' call display movlw ' ' call display movlw ' ' call display movlw ' ' call display call home2 movlw 'C' call display movlw 'O' call display movlw 'N' call display movlw 'I' call display movlw 'C' call display movlw 'I' call display movlw 'T' call display movlw 'A' call display movlw '`' call display movlw ' ' call display movlw 'I' call display movlw 'N' call display movlw ' ' call display movlw '%' call display movlw ' ' call display movlw ' ' call display bcf portc,RS ;richiedi dati conicita' call ms1 ; movlw 87 call display bsf portc,RS call ms1 call tastiera

50

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'

51

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

52

btfss status,2 goto lav_ci movf xl,0 ;memorizza dati in x1 movwf x1l movf xh,0 movwf x1h lavr1 movf x1l ;controlla se zero btfsc status,2 goto lavr2 call sy decf x1l ;controlla se zero goto lavr1 lavr2 movf x1h btfsc status,2 goto lavc_1 call sy decf x1h decf x1l goto lavr1 lav_cout bcf porte,2 ;motore off call terminata call zeroxy return ;***********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

53

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 binar io spostamento assex binariox clrf xl clrf xh lpx1 movf centx ;controlla valore centinaia btfsc status,2 ;se zero passa a controllo decine goto lpx2

54

movlw d'250' addwf xl btfsc status,0 ;c'e' riporto incf xh movlw d'250' addwf xl btfsc status,0 ;c'e' riporto incf xh movlw d'250' addwf xl btfsc status,0 ;c'e' riporto incf xh movlw d'250' addwf xl btfsc status,0 ;c'e' riporto incf xh decf centx goto lpx1 lpx2 movf decx ;controlla valore decine btfsc status,2 ;se zero passa a controllo unita' goto lpx3 movlw d'100' addwf xl btfsc status,0 ;c'e' riporto incf xh decf decx goto lpx2 lpx3 movf unx ;controlla valore unita' btfsc status,2 ;se zero passa a controllo decimi goto lpx4 movlw d'10' addwf xl btfsc status,0 ;c'e' riporto incf xh decf unx goto lpx3 lpx4 movf decimix ;controlla valore decimi btfsc status,2 goto lpx5 movlw 1 addwf xl btfsc status,0 ;c'e' riporto incf xh decf decimix goto lpx4 lpx5 return ;**********sottoprogramma conversione dati in binar io 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

55

goto lpx3y lpx4y movf decimiy ;controlla valore decimi btfsc status,2 goto lpx5y movlw 1 addwf yl btfsc status,0 ;c'e' riporto incf yh decf decimiy goto lpx4y lpx5y return ;**********sottoprogramma conversione dati in binar io 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 ' '

56

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

57

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'

58

movwf memoria movlw '2' movwf mem_dis goto blink tasto3 call delay20ms lpt4 btfss portb,4 goto lpt4 call delay20ms movlw d'3' movwf memoria movlw '3' movwf mem_dis goto blink tasto4 call delay20ms lpt5 btfss portb,5 goto lpt5 call delay20ms movlw d'4' movwf memoria movlw '4' movwf mem_dis goto blink tasto5 call delay20ms lpt6 btfss portb,5 goto lpt6 call delay20ms movlw d'5' movwf memoria movlw '5' movwf mem_dis goto blink tasto6 call delay20ms lpt7 btfss portb,5 goto lpt7 call delay20ms movlw d'6' movwf memoria movlw '6' movwf mem_dis goto blink tasto7 call delay20ms lpt8 btfss portb,5 goto lpt8 call delay20ms movlw d'7' movwf memoria movlw '7' movwf mem_dis goto blink tasto8 call delay20ms lpt9 btfss portb,6 goto lpt9 call delay20ms movlw d'8' movwf memoria movlw '8' movwf mem_dis goto blink tasto10 call delay20ms lptesc btfss portb,7 goto lptesc call delay20ms movlw 10 movwf memoria return tasto9 call delay20ms lpt10 btfss portb,6 goto lpt10 call delay20ms

59

movlw d'9' movwf memoria movlw '9' movwf mem_dis blink 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 rilas ciato 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 se conda riga home2 bcf portc,RS movlw 0xc0 ;display inizio seconda riga call display bsf portc,RS return ;**********sottoprogramma comando cursore inizio pr ima 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 continuar e enter call home2 movlw '#' call display

60

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 ass e_dx dx incf assex movlw 4 subwf assex,0 btfss status,2

61

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 bcf porta,0 bsf porta,2 call ms10 return dx2 movlw 2 subwf assex,0 btfss status,2 goto dx3 bcf porta,2 bsf porta,1 call ms10 return dx3 bcf porta,1 bsf porta,3 call ms10 return ;**********sottoprogramma controllo spostamento ass e_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 ass e dy dy incf assey movlw 4

62

subwf assey,0 btfss status,2 goto ddy clrf assey ddy movf assey btfss status,2 goto dy1 bcf portc,3 bsf portc,0 call ms10 return dy1 movlw 1 subwf assey,0 btfss status,2 goto dy2 bcf portc,0 bsf portc,1 call ms10 return dy2 movlw 2 subwf assey,0 btfss status,2 goto dy3 bcf portc,1 bsf portc,2 call ms10 return dy3 bcf portc,2 bsf portc,3 call ms10 return ;**********sottoprogramma controllo spostamento ass e 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

63

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 collega to 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

64

bcf portc,1 bcf portc,2 bcf portc,3 return nop ;area rom libera per salto pagina 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

65

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 ci lindrica******* 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

66

movwf y1h bcf status,0 rlf yl rlf yh bcf status,0 rlf yl rlf yh bcf status,0 rrf y1h rrf y1l movf y1l,0 addwf yl btfsc status,0 incf yh movf y1h,0 addwf yh bcf status,0 rrf y1h rrf y1l bcf status,0 rrf y1h rrf y1l bcf status,0 rrf y1h rrf y1l movf y1l,0 addwf yl btfsc status,0 incf yh movf y1h,0 addwf yh clrf em1 ;emula lavorazione cilindrica clrf timel clrf timeh movf xl,0 ;memorizza dati per lavorazione movwf mxl movwf x1l movf xh,0 movwf mxh movwf x1h movf yl,0 movwf mem1 movf yh,0 movwf mem2 lav_cie clrf flag ;inizio lavorazione movf mxl,0 ;memorizza dati in x1 movwf x1l movf mxh,0 movwf x1h lav_cile movf x1l ;controlla se zero btfsc status,2 goto lavc_xe incf em1 movlw d'100' subwf em1,0 btfss status,0 goto e1 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh e1 decf x1l ;controlla se zero goto lav_cile lavc_xe movf x1h btfsc status,2 goto lavc_1e

67

incf em1 movlw d'100' subwf em1,0 btfss status,0 goto e2 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh e2 decf x1h decf x1l goto lav_cile lavc_1e movf mem1 ;controlla posizione asse y btfsc status,2 goto lavc_ye incf em1 movlw d'100' subwf em1,0 btfss status,0 goto e3 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh e3 decf mem1 goto lavflage lavc_ye movf mem2 btfsc status,2 goto lav_coute incf em1 movlw d'100' subwf em1,0 btfss status,0 goto e4 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh e4 decf mem2 decf mem1 lavflage incf flag movlw 1 subwf flag,0 btfss status,2 goto lav_cie movf mxl,0 ;memorizza dati in x1 movwf x1l movf mxh,0 movwf x1h lavr1e movf x1l ;controlla se zero btfsc status,2 goto lavr2e incf em1 movlw d'100' subwf em1,0 btfss status,0 goto e5 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh e5 decf x1l ;controlla se zero goto lavr1e lavr2e movf x1h

68

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

69

;**********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 lavorazion e ******** 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

70

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

71

movlw d'100' subwf em1,0 btfss status,0 goto ee5 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh ee5 decf x1h decf x1l goto ritornoe torne movf mxl,0 ;memorizza dati in x1 movwf x1l movf mxh,0 movwf x1h rito_ve movf x1l ;ritorno senza lavorazione btfsc status,2 goto rito_v1e incf em1 movlw d'100' subwf em1,0 btfss status,0 goto ee6 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh ee6 decf x1l ;controlla se zero goto rito_ve rito_v1e movf x1h btfsc status,2 goto in_cone incf em1 movlw d'100' subwf em1,0 btfss status,0 goto ee7 clrf em1 movlw 1 addwf timel btfsc status,0 incf timeh ee7 decf x1h decf x1l goto rito_ve fine_cone incf em1 ;aggiusta tempo di 1 secondo movlw d'100' subwf em1,0 btfss status,0 goto ee9 movlw 1 addwf timel btfsc status,0 incf timeh ee9 clrf mem1 ;converti tempo in minuti movf timel,0 movwf mem2 lt11 movlw d'60' subwf mem2 btfss status,0 goto lt21 subwf timel incf mem1 goto lt11 lt21 movf timeh

72

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

73

MODELLO unimat 3

Progetto della classe V A/Z Coordinat ore del progetto :Ins. ZANIOL ITALO

Équipe Riccardo Palù Domenico De Luca Stefano Crepal di Mauro Tosatto Loris Visintin

74

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

75

NOME DEI COMPONENTI E FUNZIONI

VISTA FRONTALE DEL TORNIO

VISTA DALL’ALTO DEL TORNIO

1 3 5 6 2 4

8 10 11 12 9

15 16

17 14

7 13

76

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 X-

13) Finecorsa asse Z+

14) Tasto reset

15) Tastierino

16) Finecorsa asse Z-

17) Finecorsa asse X+

77

| 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.

78

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 LEDLEDLEDLED che segnala lo stato della macchina è acceso Sul display compare il messaggio:

I.T.I.S. MAX PLANCKI.T.I.S. MAX PLANCKI.T.I.S. MAX PLANCKI.T.I.S. MAX PLANCK # PER CONTINUARE# PER CONTINUARE# PER CONTINUARE# PER CONTINUARE

Premere il tasto #### del tastierino esadecimale Il LEDLEDLEDLED 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 UTENPOSIZIONARE UTENPOSIZIONARE UTENPOSIZIONARE UTEN SILE IN 0/0? S/N SILE IN 0/0? S/N SILE IN 0/0? S/N SILE IN 0/0? S/N

Se viene premuto il tasto SSSS 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 ESCESCESCESC si esce da questa funzione e si entra in quella successiva

Se viene premuto il tasto NNNN 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 UTENPOSIZIONARE UTENPOSIZIONARE UTENPOSIZIONARE UTEN SILE # SE VALI SILE # SE VALI SILE # SE VALI SILE # SE VALIDODODODO

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 TORNITURA CONICA TORNITURA CONICA TORNITURA CONICA ( S / N ) ( S / N ) ( S / N ) ( S / N )

79

viene ora richiesto il tipo di lavorazione: premendo SSSS 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 CONFERMA CONFERMA CONFERMA CILINDRICA ? S / N CILINDRICA ? S / N CILINDRICA ? S / N CILINDRICA ? S / N

in caso di conferma si procede, altrimenti si torna al punto Selezionare tipo lavorazione

0O0 . 0 0O0 . 0 0O0 . 0 0O0 . 0 LUNGHEZZA LUNGHEZZA LUNGHEZZA 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, ESC, ESC, ESC, ricominciare il caricamento dei dati.

Dopo aver caricato i dati viene richiesta conferma dei dati caricati 0125 . 5 0125 . 5 0125 . 5 0125 . 5 CONFERMA ( S / N ) CONFERMA ( S / N ) CONFERMA ( S / N ) CONFERMA ( S / N )

viene ora richiesta la profondità della lavorazione cilindrica e poi la conferma dei dati inseriti.

00.O00.O00.O00.O PROFONDITA’ PROFONDITA’ PROFONDITA’ PROFONDITA’ 01.501.501.501.5 CONFERMA ( S / N ) CONFERMA ( S / N ) CONFERMA ( S / N ) CONFERMA ( S / N )

LAVORAZIONE CILINDRICA

dopo aver confermato la profondità, inizia la lavorazione. Il LEDLEDLEDLED 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 EMERGENZAEMERGENZAEMERGENZAEMERGENZA si arresta la lavorazione in qualsiasi momento e si torna al punto iniziale che visualizza I.T.I.S. MAX I.T.I.S. MAX I.T.I.S. MAX I.T.I.S. MAX PLANCK.PLANCK.PLANCK.PLANCK.

durante la lavorazione compare sul display il tempo residuo di tornitura

80

03:45 TEMPO03:45 TEMPO03:45 TEMPO03:45 TEMPO LAVORAZIONE LAVORAZIONE LAVORAZIONE LAVORAZIONE

TERMINE DELLA LAVORAZIONE

Terminata la lavorazione il mandrino si ferma automaticamente. sul display compare il messaggio

LAVORAZIONELAVORAZIONELAVORAZIONELAVORAZIONE TERMINATA TERMINATA TERMINATA TERMINATA

L' utensile viene portato automaticamente sul punto 0,0. Premendo il tasto ESCESCESCESC 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 00O.0 00O.0 00O.0 LUNGHEZZA LUNGHEZZA LUNGHEZZA LUNGHEZZA

Dopo aver caricato i dati viene richiesta conferma con i valori inseriti: 006006006006.0.0.0.0 CONFERMACONFERMACONFERMACONFERMA S/N S/N S/N S/N

viene ora richiesta la conicità e la relativa conferma:

00 00 00 00 CONICITA’ IN % CONICITA’ IN % CONICITA’ IN % CONICITA’ IN % 35353535 CONFERMA ( S / N ) CONFERMA ( S / N ) CONFERMA ( S / N ) CONFERMA ( S / N )

LAVORAZIONE CONICA

dopo aver confermato la conicità inizia la lavorazione. Il LEDLEDLEDLED lampeggia a frequenza maggiore della precedente segnalando

lavorazione in corso.

81

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