Spiegazioni di carattere generale: braccio2Inet

AZIONAMENTO DI UN BRACCIO MECCANICO CON UN PC E UN P 87511
di Conti S. e Garro A.
1 Introduzione
Vediamo un circuito che controlla un modellino di braccio meccanico, reperibile in commercio, mosso da 6
motori passo-passo unipolari.
Va detto, comunque, che il circuito può essere utilizzato anche per altri scopi: controlli di plotter, automatismi
a spostamenti assiali, o qualunque altro dispositivo meccanico mosso da motori dello stesso tipo.
Il circuito governa i 6 motori dell’apparato meccanico mediante 6 interfacce di potenza, ma chi volesse
riutilizzarlo per altri scopi potrebbe togliere qualcuna di queste senza problemi, o aggiungerne altre 2 a
condizione di modificare la sola scheda di supporto delle interfacce ed il software di gestione.
2 Presentazione del progetto
Prendiamo spunto dall’azionamento di questo braccio, del tipo di quelli usati nell’industria, per introdurre una
strategia di progetto per un lavoro, non più semplice, che può mettere in difficoltà gli inesperti.
Il progetto prevede l’uso di un PC che stabilisce le azioni che deve eseguire il braccio segnalandole ad un
controller remoto, progettato per un microprocessore 8751. Questo si limita ad eseguire le istruzioni che gli
vengono trasmesse dal computer mediante la porta seriale RS232.
3 Descrizione del braccio meccanico
Come si vede dalla fotografia presente nel file P1010016.zip il braccio è costituito da un basamento fisso su
cui ruota un sistema costituito da 2 leve e una pinza a 3 leve, che chiamo “mano”.
La mano può ruotare nei 2 sensi mediante un sistema che chiamo “polso”.
Chiamo “gomito” il perno che unisce le 2 leve, “spalla” il perno che unisce la leva inferiore al supporto rotante
che sostiene tutto. Chiamo “tronco” quest’ultimo supporto che permette una rotazione orizzontale di tutto il
meccanismo.
Va tenuto presente che un sistema meccanico come questo permette solo spostamenti rotatori dell’oggetto
da muovere, mai rettilinei.
4 Schema a blocchi del controller
Come si vede in fig. 4.1 lo schema di base è molto semplice, oltre al processore esso è composto da un
multivibratore (NE555) che dà la temporizzazione di base per far eseguire i passi ai motori; da 6 interfacce
di potenza per motori, che forniscono loro la corrente necessaria e permettono di sfruttarne tutta la velocità;
da un decoder (74S138) che seleziona qual è il motore effettivamente controllato dal processore; da un bus
controlli che va dal P alle interfacce per scegliere il modo di funzionamento di ogni motore; da un
convertitore TTL-RS232 per l’interfacciamento col PC; c’è, infine, un interruttore di sicurezza, applicabile ad
un cancello, che ferma ogni movimento in caso di apertura .
1
Tratto dall'articolo pubblicato su "Fare Elettronica" di Marzo 2001
MOTORI PASSO PASSO UNIPOLARI
5
5
5
5
5
5
Interfacce di
potenza (con
L297)
selez.
74S138
3
enab.
step ck
NE555
8751
astabile
ck
ck
ck
ck
ck
ck
avanti/indietro
enable
reset
half/full
ctrl
interruttore cancello
MAX232
TXD
RXD
(TTL)
Al PC
(RS232)

Fig. 4.1 Schema a blocchi
5 Funzionamento di un motore p.p. unipolare
Per capire certi dettagli del funzionamento del circuito bisogna prima conoscere la costituzione e il modo di
utilizzo di un motore passo-passo unipolare, del tipo presente su questo braccio.
N
I
A
S
S
I
N
A'
N
S
B
I B'
+
I
1
3
2
4
Vcc
-
Schema di principio di un motore p.p. unipolare a magneti permanenti con
circuito di pilotaggio
Fig. 5.1 Struttura di base di un motore passo-passo unipolare
L’ipotetico motore elementare che vediamo ha un rotore a magnete permanente magnetizzato in modo da
presentare il nord e il sud su punti diametralmente opposti.
A questo rotore sono affacciati 2 statori, su cui sono avvolti 2 avvolgimenti ciascuno, collegati centralmente
fra di loro. Questo particolare collegamento obbliga la corrente che percorre un singolo avvolgimento a
scorrere sempre dalla stessa parte, perciò a generare un campo magnetico orientato sempre allo stesso
modo, da qui il nome “unipolare”.
Nel momento in cui si dà corrente ad un avvolgimento il rotore ruota di un piccolo angolo fino ad affacciare il
proprio sud al nord dello statore, lì si ferma, perciò si dice che ha fatto un passo.
Ci sono 3 modi per controllarne gli spostamenti, 2 sono detti a passo intero, uno a mezzo passo.
Un modo di controllarlo a passo intero (detto “normal drive mode”) è visibile in figura: vengono attivati 2
avvolgimenti per volta, in questo caso mediante i buffer 1 e 4 consentendo, così, il passaggio di corrente
negli avvolgimenti A e B’. Si producono, in questo modo, i 2 poli nord che faranno ruotare il rotore di 90° in
senso orario (il suo sud si fermerà al centro dei 2 nord di statore).
Questo modo di funzionare è quello che sviluppa la maggiore coppia e provoca il maggiore assorbimento di
corrente.
Si vede bene dalla figura che per continuare la rotazione, in seguito bisognerà attivare i buffer 3 e 4, poi i 2 e
3, infine l’1 e il 3 per concludere il giro.
Naturalmente invertendo la sequenza temporale delle attivazioni dei buffer il rotore ruoterebbe in senso
contrario.
Un altro modo di controllarlo a passo intero (detto “wave drive mode”) si ottiene attivando un solo
avvolgimento per volta alternando gli statori da magnetizzare. Ad esempio se attiviamo dapprima il buffer 1,
producendo un solo polo nord in alto mediante l’avvolgimento A, il rotore si ferma col suo sud in alto; se, poi,
attiviamo il buffer 4 producendo un polo nord a destra mediante l’avvolgimento B’ il rotore ruota di 90° in
senso orario per fermarsi col suo sud a destra. Si farà concludere il giro attivando prima il buffer 3, poi il 2.
Anche questa volta invertendo la sequenza (buffer 2-3-4-1) si inverte il senso di rotazione.
Questo modo di controllarlo sviluppa meno coppia e dà minore assorbimento di corrente.
Alternando i 2 modi di controllo: 1 passo in wave drive mode, il passo successivo in normal drive mode, e
così via, il rotore si sposta solo di 45° ad ogni passo anziché 90.
Questo modo di controllarlo è detto “half step mode”, sviluppa una coppia variabile, dà anche un
assorbimento variabile di corrente, ma consente dei posizionamenti più precisi dei dispositivi meccanici
mossi dal motore.
6 Generalità sul funzionamento del sistema
Va tenuto presente che il lavoro che abbiamo eseguito è a scopo didattico: finalizzato ad imparare a
progettare hardware e software. Quest’apparecchiatura potrà, inoltre, essere utilizzata in futuro per prove di
laboratorio, per cui il circuito realizzato offre molte possibilità di realizzare tipi di controllo diversi da quello
usato attualmente.
Il programma di controllo, già collaudato sul circuito, prevede il funzionamento in “half step” ma niente
impedisce di modificare il SW per il processore e per il PC in modo da muovere i motori anche negli altri 2
modi.
Il tipo di controllo a “mezzo passo”, che abbiamo scelto, è il più laborioso da effettuare tramite il SW di un
processore, per cui è stato conveniente aggiungere dei circuiti integrati esterni che lo gestiscano e
permettano, inoltre, la regolazione delle correnti che percorrono gli avvolgimenti per sfruttare al massimo la
velocità raggiungibile dai motori.
Perciò abbiamo utilizzato le interfacce con gli I.C. L297 della ST Microelectronics (www.st.com).
Essi consentono il controllo del senso di rotazione; il controllo di modo: “half step”, “full step” a 1 fase e 2
fasi; danno la possibilità di fermare il motore tenendolo frenato o libero di muoversi; di dare un valore di
origine alle coordinate della posizione di un motore (“home”).
A questi L297 è sufficiente impostare il modo di funzionamento, in modo asincrono, mediante il bus controlli
e fornire un impulso (dato dal fronte di salita del pin 39 del P, “stepclock” o Gab) affinchè facciano eseguire
un passo ad un motore.
Al processore, in questo modo, rimane solo il più semplice lavoro di interpretare un comando ricevuto dal
PC, stabilire qual è il motore da muovere, selezionarlo applicando il suo numero al decoder 74S138 (pin 35,
36 e 37), applicare al bus controlli il livello appropriato per il pin avanti-indietro (pin 34), dare all’interfaccia gli
impulsi del clock di passo, contandoli per capire quando il motore è giunto a destinazione, attendere, infine,
un nuovo comando dal PC.
Precisiamo che gli istanti in cui vengono forniti gli impulsi del clock di passo sono determinati dall’NE555 e
che il protocollo di comunicazione prevede che prima che il motore sia giunto a destinazione, mentre ancora
si sta muovendo, il PC invii già il comando da eseguire in futuro per aumentare la velocità del sistema
eliminando i tempi di attesa.
Sfruttando la buona velocità che ci consente il protocollo, abbiamo deciso di muovere un solo motore per
volta per ridurre la complessità dei programmi di gestione.
7 Schema elettrico del controller (vedi file schmbtif.zip)
Le parti principali che costituiscono la scheda controller (o mother board) sono il processore, il multivibratore
realizzato con l’IC NE555, alcuni LED di segnalazione e il convertitore MAX232 per la comunicazione col
PC. Completano la scheda i necessari componenti passivi.
8 Principio di funzionamento del controller
Generazione degli impulsi di passo.
Abbiamo scelto di generare gli impulsi del clock di passo mediante un multivibratore esterno per poter
osservare gli effetti del cambiamento di velocità immediatamente mentre ruotiamo l’opportuno trimmer (R2).
Questa scelta, inoltre, semplifica la stesura del software sia per il PC che per il P.
Va detto, comunque, che, volendo, il multivibratore potrebbe essere eliminato fisicamente dal circuito e
simulato mediante i timer interni dell’8751, ma con le conseguenti complicazioni dei programmi di gestione.
Questo multivibratore genera un’onda quadra che ad ogni suo fronte di discesa provoca un interrupt per il
processore, cioè interrompe l’esecuzione, da parte del P, del programma in corso e lo obbliga ad eseguire
una routine in cui l’8751 stesso deve decidere se c’è qualche motore da muovere e, in tal caso,
complementare il pin stepclock (pin 39). Questo pin è collegato al decoder 74S138, posto sulla scheda bus
di supporto per le interfacce, che provvede a ritrasmetterlo all’ L297 interessato .
Siccome il clock per gli L297 è attivo sul fronte di salita, il processore, dopo la complementazione, controlla
se lo “stepclock” è alto e, in questo caso, considera effettuato il passo da parte del motore, perciò lo conta
per stabilire quando questo sarà giunto a destinazione.
Va notato che nel SW da noi realizzato la frequenza dello stepclock per i 297 è rigorosamente metà di quella
dell’NE555. Premesso che il SW che possiamo fornire prevede velocità uguali per tutti i motori, va detto che
volendo impostare velocità diverse per qualcuno di essi la frequenza del 555 andrà regolata per il motore
più veloce e il che nuovo SW dovrà provvedere a rallentare i motori necessariamente più lenti.
Interfacciamento col PC
Alla trasmissione fisica dei dati provvede semplicemente un I.C. MAX232 che trasla i livelli di tensione dei bit
da TTL, compatibili con l’8751, a RS232, compatibili con la porta seriale del PC.
Questo MAX232 fornisce circa +12V per lo 0 logico e circa –12V per l’1 logico, valori accettabili per la porta
seriale (COM) del PC.
Altre parti del controller
I LED di segnalazione non sono tutti utilizzati nel SW da noi realizzato.
Quelli usati indicano: D6, D7 e D8 formano il numero binario che seleziona il motore attivo; D5 segnala il
livello del clock di passo; D4 segnala il movimento in avanti o indietro; D3 segnala se il motore è abilitato; D2
segnala lo stato dell’interruttore del cancello.
Il pulsante S1 “resetta” il processore, cioè fa ripartire l’esecuzione del suo programma azzerando alcuni
valori che conteneva in precedenza. Va tenuto presente che la sua pressione durante il funzionamento del
braccio meccanico arresterebbe ogni movimento e per rimettere in posizione di riposo i meccanismi
bisognerebbe fare ricorso ai comandi impartiti dalla tastiera del PC.
Il connettore U2 collega il bus controlli che parte dall’8751 alla scheda bus che porta il decoder e gli slot per
le interfacce di potenza
9 Schema elettrico e funzionamento di un’interfaccia (Vedi file schinterjpg.zip)
Ognuna delle 6 interfacce è composta da 2 parti principali: un circuito di controllo impostato sull’L297 e un
circuito di potenza che fornisce la corrente necessaria ai 4 avvolgimenti del motore.
L’I.C. L297 riceve i comandi dal P tramite il pettine JP1 e genera le tensioni delle fasi, necessarie a
comandare il motore, sui suoi pin d’uscita 4,6,7,9 (fasi A,B,C,D).
Ognuno di questi pin è collegato alle porte AND che controllano i 4 Darlington TIP110 che fanno scorrere
corrente negli avvolgimenti. Per maggiore chiarezza un livello alto sulle uscite del 297 mandano in
saturazione i finali e fanno scorrere la corrente di fase; questo, naturalmente, se anche l’altro ingresso (pin
INH1 o 2) della porta AND è alto.
dall'oscillatore dell'L297
clock
A
Q
B
S
I carico
sense
R
C
COMP
D
R1 o 2
INH1
Vref
INH2
Fig. 9.1.2
Fig. 9.1.3
La figura 9.1.2 mostra l’andamento di base, nel tempo, delle tensioni di controllo per il modo “half step”. Va
tenuto presente che ad alcuni segnali si sovrappone (non si somma) quello dell’uscita Q del flip-flop della
figura 9.1.3 . Questo secondo segnale, detto di chopper, permette più alte velocità del motore (come
vedremo più avanti) e può essere indirizzato o alle tensioni di fase A,B,C,D o a INHx a seconda del livello
del pin CTRL; esso serve a interrompere e a reinserire, ad intervalli regolari, lo scorrimento di corrente.
Le uscite INH1 e 2 possono essere usate in 2 modi, o per accelerare la smagnetizzazione del motore
quando in un avvolgimento viene interrotto lo scorrimento di corrente, o per regolare la corrente massima
che scorre negli avvolgimenti con il metodo a chopper. Questi 2 modi servono, naturalmente, per aumentare
la velocità del sistema.
Il modo in cui agiscono INH1 e 2 è selezionato dal pin 11 (CTRL) dell’L297, se CTRL è a massa è attivo il 2°
modo.
Il 1° modo è più indicato per i motori bipolari che, però, necessitano circuiti d’uscita diversi.
Nel nostro circuito una smagnetizzazione rapida del motore è garantita dai diodi D1, D2, D3, D4 che sono in
parallelo ai 4 avvolgimenti, per cui quando un Darlington TIP110 va in interdizione la corrente, che tende a
continuare a scorrere nello stesso verso nell’avvolgimento per autoinduzione, torna rapidamente a 0
passando attraverso il diodo.
Gli altri 4 diodi, D5, D6, D7, D8, proteggono i Darlington dalle sovratensioni di commutazione causate dal
carico induttivo.
Le resistenze R1 e R2 (fig. 9.1.3) sono usate nel controllo a chopper per regolare la corrente negli
avvolgimenti in modo che sia la massima possibile.
Questo tipo di controllo permette di aumentare la velocità imponendo un fronte di salita della corrente molto
ripido (eventualmente si può superare leggermente la tensione di targa del motore), ma questo impone la
necessità di una limitazione del suo valore massimo per cui, una volta raggiunto questo valore, la corrente
viene interrotta, fatta diminuire e poi riattivata da un oscillatore interno al 297.
Le resistenze R1 e R2 hanno ai loro capi una tensione proporzionale alla corrente di fase, questa tensione
viene confrontata con la Vref (pin 15 del 297), tarata mediante il trimmer R3, e nel momento in cui la prima
supera la seconda un comparatore azzera o i pin INHx o le tensioni di fase A,B,C,D ( a seconda della
tensione applicata al pin CTRL). L’azzeramento di INHx toglie l’alimentazione all’avvolgimento e la corrente
scende; lo scorrimento verrà riattivato dopo un certo tempo determinato dalla frequenza dell’oscillatore
interno al 297 che fa capo a R4 e C1. Segnaliamo che il periodo di oscillazione deve essere almeno 10 volte
più basso della costante di tempo L/R degli avvolgimenti del motore per una miglior livellamento di I.
Presentiamo, infine, gli altri comandi che può ricevere l’L297 sono:
- di impostazione del verso di rotazione CW/CCW (orario/antiorario)
- di selezione del modo di movimento a mezzo passo o passo intero HALF/FULL
- di RESET: se posto a 0 impone alle uscite i valori ABCD = 0101 (“home”)
- di ENABLE: se posto a 0 azzera le uscite A,B,C,D, INH1 e 2. Il motore, così, è disattivato ma libero di
muoversi; va notato che per fermarlo tenendolo frenato bisogna togliere il clock di passo tenendo alta la
tensione sul pin ENABLE.
10 Scheda bus per le interfacce
Il semplice schema elettrico del modulo base (contenuto nel file schbustif.zip ) che riceve i comandi dal
controller (vedi file schmbtif.zip) mediante il connettore U1 e li distribuisce alle 6 interfacce dei motori
mediante il decoder U2 (74S138).
In particolare il processore seleziona il motore da muovere mettendone il corrispondente numero
identificatore sui pin 1,2 e 3 di U2 e applicando il clock di passo ai pin 4 e 5 (G2A e G2B). Sull’uscita del
74S138 selezionata viene ritrasmesso il clock per il motore. Il pin 6 dell’integrato non viene utilizzato nel SW
da noi realizzato.
Gli altri segnali di controllo (EN, A/I, H/F, RST, CTRL) vengono applicati in parallelo a tutte le interfacce di
potenza partendo da U1.
11 Alimentazioni
Le schede realizzate non hanno un alimentatore proprio ma bisogna utilizzarne 2 esterni. Uno da 5 volt 1 A
per alimentare il controller; un altro, per alimentare i motori, da scegliere in funzione della loro tensione di
targa e della corrente assorbita. Nel nostro caso abbiamo riscontrato un assorbimento di 2,2 A a 12 V
quando tutti i 6 motori sono frenati.
Va precisato che anche se il nostro programma fa muovere un solo motore per volta, l’alimentatore deve
poter fornire la corrente anche per tutti gli altri perchè essi devono restare frenati (perciò percorsi da
corrente) anche quando sono inutilizzati.
Nella figura contenuta nel file collegtif.zip si possono vedere i collegamenti da effettuare tra un alimentatore
a due tensioni di uscita, come quello da noi usato, e le due schede
12 Realizzazione pratica e circuiti stampati
Tutti i circuiti stampati disegnati al PC con ORCAD e realizzati dai nostri allievi sono in doppia faccia e,
naturalmente, ne sono serviti 6 per le interfacce, uno per la scheda bus e uno per il controller.
Ne forniamo i files con i 6 disegni (riprodotti con lo scanner) con le relative disposizioni dei componenti
-
file pwbbustif.zip Circuito stampato della scheda bus, lato rame
file comp_bustif.zip Disposizione componenti sulla scheda bus
file schbustif.zip Schema elettrico della scheda bus
file schmbtif.zip Schema elettrico della mother board
file pwbmbtif.zip Circuito stampato mother board
file comp_mb_int_tif.zip Disposizione componenti sull’interfaccia e sulla mother board
file schinterjpg.zip Schema elettrico dell’interfaccia
file pwbinter.zip Circuito stampato dell’interfaccia
Infine è possibile trovare l’elenco dei componenti nel file partlist.doc
13 Presentazione del software
Presentiamo, ora, i programmi per la gestione del sistema.
Quello che riguarda il controller, qui fornito sia in formato HEX (per programmare l’EPROM dell’8751) sia in
formato ASM (sorgente in assembler) per soddisfare la curiosità dei lettori (vedi files R1C2.ASM e
R1C2.HEX).
L’altro riguarda il PC, realizzato in QuickBasic, linguaggio tuttora in uso in applicazioni di robotica.
Le due parti sono vincolate da un protocollo di comunicazione da noi ideato appositamente per le prestazioni
desiderate.
Una prima differenza tra i 2 tipi di programmi, che può interessare gli “hobbisti” in vena di esperimenti,
riguarda la possibilità di effettuarne delle modifiche.
Il programma per il PC è aggiornabile molto facilmente in fase di collaudo, invece quello per il processore è
difficilmente modificabile perché bisognerebbe correggere il sorgente, riassemblarlo, cancellare quello
vecchio scritto nella EPROM, infine, riscriverlo nella memoria.
Il programma per l’8751, già collaudato sul circuito assieme all’altro programma, in effetti esegue comandi
abbastanza semplici impartiti dal PC. Per cui il programma in Basic può essere modificato, per potenziare la
gestione del sistema, in molti modi da chi volesse fare delle prove personali.
14 Il progetto dei programmi per il PC e il P
Alcuni suggerimenti per il neofita che volesse cimentarsi in lavori di questo livello.
Il progetto di questi programmi richiede la scelta delle prestazioni desiderate dal sistema, fissate queste si
sceglie un elenco dei comandi da impartire sia al PC che al controller. A questo punto si può passare alla
impostazione di un protocollo di comunicazione che lega il funzionamento del processore a quello del PC.
Il passo successivo è la stesura dei diagrammi di flusso: sono diversi e abbastanza complessi. Quelli che
sono stati disegnati da noi sono a mano libera e non sono fornibili come files.
Dopo il disegno dei diagrammi di flusso si può iniziare ad editare i files sorgenti.
Naturalmente, volendo realizzare un sistema dalle prestazioni complete, (cioè che dia la possibilità di
registrare un programma di lavoro quindi di mandarlo in esecuzione) il protocollo risulta discretamente
complesso per cui è inserito in un file a parte: file robot1pc.doc.
Chi volesse ulteriori chiarimenti, potrà farne richiesta al promotore di questo SW, prof. Conti S., [email protected].
15 Finalità dei programmi
Dovendo il braccio eseguire lavori automatizzati anche piuttosto complessi, abbiamo pensato che la cosa
migliore fosse memorizzare in un file (che chiamo “di lavoro” e che va memorizzato su un HD o FD) le varie
posizioni che esso deve raggiungere. Questo file costituirà il programma di lavoro che il braccio dovrà
eseguire.
In fase di esecuzione, il PC dovrà rileggere ogni record del file di lavoro creato e trasmettere al controller dei
comandi elementari tipo:
- “manda il motore N alla posizione X”
“fai un pausa di N centesimi di secondo”.
Fissata questa impostazione di base, abbiamo realizzato i programmi per il PC e il controller affinché
consentissero di gestire il braccio meccanico nei seguenti modi:
- muoverlo, manualmente, in modo arbitrario
- muoverlo manualmente per registrare un programma di lavoro
- registrare la posizione attualmente raggiunta dal braccio in un record del programma di lavoro
- eseguire un programma di lavoro registrato in precedenza
- arrestare il braccio durante l’esecuzione di un programma di lavoro (immediatamente o al termine
dell’esecuzione dell’istruzione attuale)
Il programma per il PC consente, inoltre, di:
- modificare, o anche editare, manualmente un file di programma di lavoro
- stampare un file di lavoro.
16 Costituzione dei file di lavoro
Va premesso che i tipi di comando che il PC deve gestire possono essere 3 :
- di spostamento di un singolo motore (tipo “P”)
di pausa di N centesimi di secondo (tipo “R”)
di salto, che il PC deve effettuare, ad un altro record del file di lavoro (tipo “S”). Questo salto deve
essere fatto per ricominciare un intero ciclo di lavoro.
Un tipico file di lavoro, allora, è costituito da record i cui campi contengono:
- le 6 coordinate (numeriche) di posizione che devono essere raggiunte da ogni motore al termine
dell’esecuzione del comando
- un commento descrittivo (facoltativo)
- un parametro, che può essere un tempo di pausa (per i comandi di tipo “R”) o il numero del record a cui
il PC deve saltare (per i comandi di tipo “S”)
Le proprietà che i record devono soddisfare sono le seguenti:
- Nei record di tipo P ci deve essere un solo motore che cambia posizione rispetto al precedente record
dello stesso tipo. Se il PC ne trova 2 la cui posizione è cambiata si ferma e abbandona il programma. In
questo caso l’utente dovrà controllare il file di lavoro e correggerlo.
- Nei record di tipo S possono esserci più motori che cambiano posizione contemporaneamente. Ma la
sequenza di movimenti per raggiungere la posizione finale è determinata dal PC e non dall’utente, perciò
chi crea un file di lavoro prima di registrare un record di salto è meglio che porti il braccio in prossimità
della posizione da raggiungere (quella da cui ricomincia la parte ripetitiva di un programma di lavoro).
- Nei record di ritardo il PC non controlla le posizioni dei motori per cui anche l’utente se ne può
disinteressare
-
I files di lavoro è meglio che non vengano mai scritti manualmente (tuttalpiù corretti) ci pensa il PC a crearli
durante la registrazione di un programma di lavoro.
17 Scrittura dei programmi per il PC e il P
I files HEX e ASM sono files di testo scritti in ASCII puro e possono essere copiati e letti con un editor
qualunque, ma se vengono caricati sotto Windows devono essere salvati come file di solo testo.
Il file HEX può essere, poi, utilizzato per un programmatore di EPROM.
Il programma per il PC (R1G5.BAS), qui presentato, è nato in QuickBasic ma gira anche in Qbasic.
Comunque chi non avesse i programmi per questi linguaggi potrà trovarne la versione eseguibile nel file
R1G5.EXE.
Questo file EXE gira su qualunque PC, IBM compatibile, senza fare ricorso agli interpreti Basic.
18 Breve guida per l’utente
Vediamo le azioni essenziali che portano alla registrazione e al lancio di un programma, o file, di lavoro. Chi
volesse un manuale per l’utente più completo lo potrà trovare nel file rob1manu.doc
Lancio: chi vuole usare il file R1G5.EXE deve uscire da Windows, entrare in DOS e digitare R1G5 .
Chi vuole, invece, usare l’ambiente Basic, dopo esserci entrato dovrà aprire il file R1G5.BAS, quindi lanciarlo
(menù ESEGUI).
Il programma, dopo una breve presentazione, chiede quale porta seriale (COM) si intende usare, immettere
1 o 2. Se si sbaglia poco male, non si guasta nulla, si può cambiarla in seguito (menù 5).
Quindi il programma chiede se si intende cambiare i parametri di comunicazione, rispondere NO.
A questo punto si entra nel menù principale di 7 voci:
1)
Registrazione di un programma di lavoro
2)
Esecuzione di un programma di lavoro
3)
Modifica di un programma di lavoro
4)
Esecuzione di comandi singoli, fuori programma
5)
Cambio porta seriale
6)
Stampa di un file di lavoro
7)
Uscita
Registrazione di un nuovo programma di lavoro: scegliere 1 .
Il programma chiede il nome e il percorso di salvataggio del nuovo file da creare; si può immettere, ad
esempio: A:\lavoro1.lav.
A questo punto il PC chiede al controller le coordinate di posizione dei motori, se non sono tutte nulle si
rifiuta di proseguire e l’utente dovrà provvedere ad azzerarle (menù 4) e poi ricominciare. Se sono tutte
nulle, prosegue chiedendo all’utente di che tipo è il 1° record del nuovo file di lavoro (spostamento: P,
ritardo: R o salto: S), immettere P .
Viene, a questo punto, chiesto quale motore si vuole muovere: immetterne il numero, quindi mandarlo alla
posizione desiderata (coi tasti /, *, -, +); quando vi è arrivato premere ESC per terminare i movimenti e
registrare la posizione raggiunta nel file. Ricordarsi che si deve spostare solo un motore per ogni record. Se
si vuole cambiare motore, prima di farlo bisogna rimandare quello, eventualmente, già mosso alla posizione
iniziale.
Ripetere questi spostamenti per tutto il ciclo di lavoro da eseguire.
Quando si decide che il ciclo di lavoro è terminato e deve cominciarne uno nuovo, identico al precedente,
bisogna prima portare il braccio in una posizione molto prossima a quella iniziale e registrare questo record
di tipo P. Poi registrare il record finale, di tipo S, dando come parametro il numero di record a cui il
programma deve saltare; il numero dovrà essere stato in precedenza annotato.
Esecuzione un programma di lavoro già registrato: dal menù principale immettere 2 .
Il programma di gestione chiederà, per prima cosa, le coordinate di posizione al controller, e se non sono
tutte nulle si rifiuterà di proseguire (come prima). Se sono tutte azzerate verrà chiesto all’utente il nome e il
percorso del file di lavoro; immettere, ad esempio: A:\ lavoro1.lav .
Il programma di lavoro andrà in esecuzione. Sarà definitivamente terminato premendo A o T.
Non è implementato un comando manuale di “pausa” (probabilmente inutile) ma segnalo che aprendo il
contatto S2 della mother board, che simula il cancello, il braccio fa una pausa fermandosi e riparte
richiudendolo.
Terminata l’esecuzione di una lavorazione, l’utente dovrà riportare ogni motore del braccio alla sua
coordinata 0 (menù 4).
Svariati collaudi dei programmi permettono di affermare che se i file di lavoro sono compilati correttamente
non ci dovrebbero essere problemi in fase di esecuzione, comunque è stato conservato un comando di
“reset del controller” che permette di azzerare la RAM del processore in caso di dubbi per anomalie di
funzionamento.
Chi volesse un piccolo programma di lavoro, per vederne un esempio, può prelevare il file 2c3p1r.lav;
questo programma fa spostare 2 oggetti su 3 posizioni diverse, finito il ciclo fa una pausa di 1 secondo, poi
ricomincia. Segnalo, però, che per vederne il contenuto o stamparlo, bisogna utilizzare R1G5.EXE o BAS.
19 Conclusioni
Il progetto presentato è piuttosto semplice perché i tempi scolastici non consentirebbero applicazioni di tipo
professionale, comunque il programma per il controller può consentire all’utente di apportare migliorie al
funzionamento di tutto il sistema modificando il solo programma per il PC.
Ad esempio manca un comando che simuli lo spostamento rettilineo del braccio, ma per realizzarlo non
sarebbe necessario modificare il file HEX basterebbe aggiungerlo al programma per il PC, tenendo presente
che, comunque, dovrebbe essere realizzato come sequenza di spostamenti di singoli motori.
20 Elenco autori
Il lavoro è stato realizzato dagli allievi Collia, La Monaca, Mercantili e Bianchini del corso di ELETTRONICA
E TELECOMUNICAZIONI sotto la guida dei proff. Garro A. (HW), Conti S. (SW), Renolfi (Sistemi e
Telecom.), De Vittor (T.D.P.), Mattachini (Elettronica gen.), Garavaglia (Lab.)