Bobinatrice con Z80
AUTOMAZIONE BOBINATRICE CON MICROELABORATORE SPQ-Z80
1 Descrizione generale
Viene analizzata nel seguito l’implementazione di un sistema di automazione per una bobinatrice. Un microelaboratore SPQ-Z80 utilizzando il segnale fornito da un microencoder angolare solidale con l’asse di rotazione del motore di avvolgimento (vedi figura 1 ) genera gli impulsi di controllo per il motore a passo M2 che a sua volta controlla la guida del filo montata sulla madrevite.
Il programma di controllo è costituito da un modulo principale in Basic il cui compito è principalmente quello di effettuare il calcolo delle varie costanti numeriche utilizzate dai sottoprogrammi in Assembler. Al fine di sincronizzare la traslazione della madrevite azionata dal motore a passo M2 con la velocità di rotazione del motore M1, il programma Assembler genera una frequenza di controllo (F2) proporzionale ed “agganciata” a quella generata dall’encoder (F1), controllando anche l’inversione della direzione di traslazione al completamento di ogni strato, e l’arresto del motore di avvolgimento al raggiungimento del numero di spire desiderato. Le costanti utilizzate dal programma Assembler che dovranno essere calcolate dal programma Basic in base ai dati forniti dall’utente ed ai parametri fisici della macchina sono le seguenti :
K1, K2 = rispettivamente denominatore e numeratore della frazione F2/F1 ridotta ai minimi termini .
Is = numero di impulsi inviati al motore a passo necessari per completare la traslazione relativa ad ogni strato .
It = numero totale di impulsi inviati dall’encoder corrispondenti al numero di rotazioni del motore M1 per completare l’avvolgimento.
Nel seguito vengono analizzati da un punto di vista fisico i parametri di cui sopra allo scopo di stabilirne i limiti dei valori accettabili e le formule di calcolo da impiegare con il programma Basic.
1.0 Dati di progetto
- Motore M1: velocità = V1 [giri/s]
- Motore M2 : velocità = V2 [giri/s]
- Motore M2: n° passi = Pp [passi/giro]
- Encoder E: risoluzione = Ig [imp./giro]
- Vite V: passo = Pv [mm/giro]
- Filo rame: diametro = Df [mm]
- Bobina: lunghezza = Lb [mm]
- Bobina: numero spire totali = Ns
2.0 Limiti di funzionamento
Per limitare l'errore massimo di allineamento della madrevite-guidafilo al profilo dello strato della bobina in avvolgimento occorre che la minima traslazione possibile della guida, deltax, corrispondente ad un singolo passo del motore M2, sia inferiore al diametro del filo più piccolo utilizzabile Dfmin. Questa condizione determina il limite superiore del passo della vite Pv, (ipotizzando trascurabile la forza resistente di attrito nei confronti della forza motrice di traslazione legata alla coppia del motore a passo ).
(1)
Il limite inferiore del passo della vite Pv è determinato dalla massima velocità di traslazione della madrevite Vx richiesta , che è a sua volta legata alla velocità del motore di avvolgimento M1 e al diametro del filo del maggior diametro utile Dfmax. D'altra parte la Vx è limitata dalla massima velocità di rotazione del motore passo-passo V2max; traducendo in formule :
Vx = V1 Df ; (velocità di traslazione impressa da M1) (2)
Vx = V2 Pv ; (velocità di traslazione impressa da M2) (3)
eguagliando la (2) alla (3) si ottiene la condizione :
V1 Df
Pv = ------------- (4)
V2
utilizzando i valori massimi per il diametro del filo e per le velocità dei motori si ottiene il limite inferiore del passo della vite:
V1max Dfmax
Pvmin >= ------------------------ (5)
V2max
Il passo della vite deve quindi essere compreso tra i due limiti dati dalle (1) e (5).
Esempio 1 :
Dati i valori seguenti :
V1 = 50 [giri/s]; V2max = 2,5 [giri/s]; Dfmin = 0,1 [mm];
Dfmax = 0,5 [mm] Pp = 200 [passi/giro];
ricavare il campo di valori accettabili per Pv.
dalla (1) si ottiene :
Pvmax <= 0,1 X 200 = 20 [mm]
e dalla (5) si ricava :
50 X 0,5E-3
Pvmin >= -------------------- = 10 [mm]
2,5
In questo caso il passo della vite deve quindi avere un valore compreso tra 10 e 20 mm.
3.0 Algoritmo di controllo
La condizione di sincronismo tra la madrevite-guidafilo e la bobina in avvolgimento si realizza mediante Il circuito di controllo a microprocessore,che deve comandare il motore M2 con una frequenza F2 proporzionale alla frequenza F1 generata dall'encoder E. Il programma principale in Basic effettua i calcoli dei parametri di funzionamento utilizzati dalla routine in assembler per la generazione degli impulsi di comando.
F1 = V1 Ig ; (frequenza generata dall’encoder) (6)
F2 = V2 Pp ; (frequenza inviata al motore a passo) (7)
imponendo la condizione di sincronismo , cioè che la velocità di traslazione x impressa dal motore di avvolgimento sia uguale a quella impressa alla guida dal motore a passo e cioè uguagliando la (2) con la (3) si ottiene :
V1 Df = V2 Pv (8)
V1 Df
V2 = ------------- (9)
Pv
esprimendo V1 ed V2 in funzione di F1 ed F2 mediante le (6), (7) si ricava :
F2 Pp Df
------ = ------------- (10)
F1 Ig Pv
La (10) rappresenta l'equazione di sincronismo del sistema e deve essere calcolata numericamente dal modulo in Basic del programma di controllo, in modo da fornire al programma Assembler le necessarie costanti intere. Nella (10), le costanti Pp, Ig, Pv sono determinate a priori e dipendono dalle caratteristiche dei componenti elettromeccanici utilizzati, Df è introdotto dall'utente mentre la frequenza F1 è rilevata (interrupt) dall'encoder.
Esempio 3 :
Dati i seguenti valori numerici :
Pp = 200 [passi/giro], Df = 0,25 [mm], Ig = 5 [imp./giro], Pv = 6 [mm] :
calcolare il rapporto F2/F1 .
F2 200 X 0,25 E-3
----- = ------------------------ = 1,6 (periodico 6) ;
F1 5 X 6E -3
poichè come si è già osservato il programma assembler necessita di costanti intere, il rapporto F2/F1 deve essere espresso in forma frazionaria per ottenere le costanti K2 e K1. In questo caso è semplice ottenere :
5
1,6(periodico 6) = ------
3
si sono ottenute quindi le due costanti desiderate: K2 = 5 ; K1 = 3 ;
poichè le coppie di valori utili K1 e K2 sono in numero limitato (uguale al numero di diametri Df di filo utilizzati), è conveniente calcolarle tutte e memorizzarle in forma di tabella a programma.
3.1 Lunghezza bobina
Il programma deve generare degli impulsi di frequenza data dalla (10) , invertendo la direzione di traslazione al raggiungimento del bordo della bobina.Un ulteriore dato introdotto dall’utente è pertanto la lunghezza della bobina che determina il numero totale di impulsi Is per ogni strato dell’avvolgimento.Uguagliando la lunghezza della Bobina Lb alla traslazione della madrevite di passo Pv dovuta al numero di impulsi Is inviati al motore a passo si ottiene :
Is
Lb = --------- Pv ; ( con Is/Pp = numero di giri totali di M2)
Pp
si ricava quindi per Is :
Pp
Is = -------- Lb (12)
Pv
La (12) fornisce il numero totale di impulsi per strato che la routine in assembler deve inviare al motore a passo M2, in funzione della lunghezza della bobina Lb, introdotta dall’utente all’inizio. Anche questa formula deve essere calcolata numericamente dal programma in Basic.
3.2 Numero totale di spire
Dato il numero totale di spire Ns , il corrispondente numero totale di impulsi It inviati dall’encoder è dato da :
It = Ns Ig (13)
3.3 Costanti K1, K2
Le costanti K1 e K2, utilizzate dal programma Assembler per calcolare la proporzione tra la frequenza F2 impulsi di comando del motore M2 e quella di uscita dell’Encoder F1 devono essere calcolati numericamente effettuando il rapporto F2 / F1 ; ridotta ai minimi termini la frazione, si definisce K2 uguale al numeratore e K1 uguale al denominatore.
Esempio 4:
F2
Ricavare il rapporto ------ per i valori standard del diametro di filo di rame.
F1
Df1 = 0,05 mm Df1 = 0,08 mm; Df2 = 0,1 mm Df3 = 0,12 mm
Df4 = 0,15 mm Df5 = 0,18 mm; Df6 = 0,2 mm Df7 = 0,224 mm
Df8 = 0,25 mm Df9 = 0,315 mm Df10 = 0,4 mm Df11= 0,5 mm
Df12= 0,56 mm Df13 = 0,71 mm Df14 = 0,8 mm Df15= 1,0 mm
riscrivendo la (10) , con Pp=200 passi/giro, Ig=5 impulsi/giro, e Pv = 6 mm , si ottiene :
F2 Pp Df
----- = -----------
F1 Ig Pv
F2a 200 X 0,05E-3 1
------ = ------------------------- = -------- ; K2 = 1 ; K1 = 3 ;
F1a 5X6E-3 3
F2b 8
------ = 6666,7 X 0,08E-3 = -------; K2 = 8 ; K1 = 15 ;
F1b 15
F2c 2
------ = 6666,7 X 0,1E-3 = ------- ; K2 = 2 ; K1 = 3 ;
F1c 3
F2d 4
------ = 6666,7 X 0,12E-3 = ------ ; K2 = 4 ; K1 = 5 ;
F1d 5
F2e
------ = 6666,7 X 0,15E-3 = 1 ; K2 = 1 ; K1 = 1 ;
F1e
F2f 6
------ = 6666,7 X 0,18E-3 = ------ ; K2= 6 ; K1 = 5 ;
F1f 5
F2g 4
------ = 6666,7 X 0,2E-3 = ------- ; K2 = 4 ; K1 = 3 ;
F1g 3
F2h 3
------ = 6666,7 X 0,224E-3 = ------ ; K2 = 3 ; K1 = 2 ; (e=+0,45%)
F1h 2
F2i 5
------ = 6666,7 X 0,25E-3 = ------ ; K2 = 5 ; K1 = 3 ;
F1i 3
F2l 21
------ = 6666,7 X 0,315E-3 = ----- ; K2 = 21 ; K1 = 10 ;
F1l 10
F2m 8
------- = 6666,7 X 0,4E-3 = ------- ; K2 = 8 ; K1 = 3 ;
F1m 3
F2n 10
------ = 6666,7 X 0,5E-3 = ------- ; K2 = 10 ; K1 = 3 ;
F1n 3
F2o 15
------ = 6666,7 X 0,56E-3 = ------- ; K2 = 15 ; K1 = 4 ;
F1o 4
Esempio 5:
con Pp = 200 [ passi/giro ], L = 40 [ mm ] , Pv = 6 [ mm/giro ]
Ig = 5 [ passi/giro] , Df = 0,3 [ mm ], F1 = 250 Hz
200 X 40E-3
Is = ------------------------- = 1333,3 impulsi ;
6E-3
A.1 Indirizzi costanti e variabili programma assembler versione 32 K
Indirizzo HEX | Peso cifra | ||
K1 | denominatore di F2/F1 | FC00H | |
K2 | numeratore di F2/F1 | FC01H | |
IS | numero totale impulsi/strato ingresso | FC02H | X1 |
FC03H | X10 | ||
FC04H | X100 | ||
FC05H | X1000 | ||
FC06H | X10000 | ||
IT | numero totale impulsi/bobina ingresso | FC07H | X1 |
FC08H | X10 | ||
FC09H | X100 | ||
FC0AH | X1000 | ||
FC0BH | X10000 | ||
ns | numero impulsi/strato uscita | FC0CH | X1 |
FC0DH | X10 | ||
FCOEH | X100 | ||
FC0FH | X1000 | ||
FC10H | X10000 | ||
FC11H | flag | ||
ng | numero impulsi/giro ingresso | FC12H | X1 |
FC13H | X10 | ||
FC14H | X100 | ||
FC15H | X1000 | ||
FC16H | X10000 | ||
FC17H | flag | ||
ni | numero impulsi di interrupt | FC18H | |
dm | direzione motore | FC19H |