CONTROLLO DEL MOTORE
Fare in modo che il calcolatore comunichi con il motore è forse la fase
più semplice di questo progetto.
Osservando la tabella sotto, si può osservare che
per ogni passo della sequenza di controllo devono variare le
alimentazioni "logiche" delle bobine.
Se si pensa a queste combinazioni come digit binari si può verificare
che sono necessarie parole di 4 bit.
Tutto quello che si deve fare è inviare queste parole alla porta
parallela dei computer ogni volta che si desidera far ruotare il motore
di un passo.
Trasformando questa informazione da binario a decimale, si può notare
che la sequenza necessaria per far avanzare il motore di quattro passi è
10-9-5-6; per mantenere il motore in rotazione continua è sufficiente
perciò ripetere la stessa sequenza.
Realizzare questa operazione è molto facile; il sistema più semplice è
quello di inviare questa informazione direttamente all'uscita della
stampante tramite un'istruzione scritta in BASIC.
Si deve quindi caricare il BASIC e scrivere la seguente istruzione:
OUT 888,10 <RETURN>
Questo comando invia un valore decimale 10 (1010 in binario) alle prime
quattro linee della porta parallela. I diodi LED corrispondenti alla
prima sequenza di rotazione si illuminano e il motore si muove di un
passo. Se ora si scrive l'istruzione:
OUT 888,9 <RETURN>
la sequenza di accensione dei diodi LED cambia, e il motore avanza sino
alla posizione successiva. Per i successivi avanzamenti si devono
scrivere le due istruzioni che seguono:
OUT 888,5 <RETURN>
OUT 888,6 <RETURN>
Se si vuole ottenere un comportamento più ,professionale" dal circuito,
si consiglia di scrivere un breve programma che controlli il movimento
completo dei motore:
10 OUT 888,10 <RETURN>
20 OUT 888,9 <RETURN>
30 OUT 888,5 <RETURN>
40 OUT 888,6 <RETURN>
50 GOTO 10
Per fermare il ciclo continuo dei programma si devono premere
contemporaneamente i tasti CTRL-BRK. In funzione della velocità dei
calcolatore utilizzato si possono verificare due situazioni: il motore
funziona correttamente, oppure rimane completamente fermo. la ragione di
questo comportamento è dovuto al fatto che la velocità alla quale la
sequenza dei dati di azionamento viene inviata al motore dipende dalla
velocità stessa dei calcolatore.
Se questi ordini arrivano al motore passo-passo ad una velocità
superiore a quella per cui è stato progettato non è in grado di
sincronizzarsi con queste istruzioni. Ciò significa che viene persa
l'integrità di passo di ciascuna istruzione. la cosa peggiore che si
può verificare è che il motore si blocchi e cominci a emettere strani
rumori. Se ci si trova in questa situazione il programma deve essere
modificato introducendo una breve pausa tra ogni singola istruzione di
movimento.
10 OUT 888, 10 <RETURN>
15 GOSUB 100
20 OUT 888,9 <RETURN>
25 GOSUB 100
30 OUT 888,5 <RETURN>
35 GOSUB 100
40 OUT 888,6 <RETUIRN>
45 GOSUB 100
50 GOTO 10
100 FOR X=1 TO 10
110 NEXT X
120 RETURN
Così facendo il programma tra una istruzione di movimento e quella
successiva salta alla subroutine presente alla linea 100, che
rappresenta un temporizzatore. Variando il valore utilizzato riportato
in questa linea (ad esempio 20 invece di 10), si modifica il tempo di
ritardo programmato tra ciascuna istruzione.
E' possibile migliorare questo programma inserendo all'inizio una
richiesta di INPUT, in modo che venga richiesto il verso di rotazione
desiderato; per una rotazione in senso orario si deve fornire la
sequenza 10-9-5-6, mentre per ottenere una rotazione antioraria bisogna
fornire la sequenza inversa, 65-910.
Con un minimo di fantasia si possono programmare diversi movimenti dei
motore, simulando la gestione di un robot.
Con dieci movimenti diversi, ciascuno con la sua sequenza di controllo e
relativo numero di impulsi, è possibile simulare il movimento di
apparecchiature diverse, inserire delle pause per eseguire determinate
operazioni e, se si desidera, pilotare un carico di una certa
consistenza per sperimentare la tecnica "ramping" |