Robot Manipolatore a Cinque Gradi di Libertà

Transcript

Robot Manipolatore a Cinque Gradi di Libertà
Robotica (A)
Prof.ssa GINI
Robot Manipolatore a Cinque Gradi di Libertà
con software di Pianificazione, Monitoraggio, Supervisione e Analisi dei Dati
Ideato e Realizzato da:
Marco Di Stefano
Alessandro Gorla
Amos Robustelli
SOFTWARE DI PIANIFICAZIONE E CONTROLLO:
Poliarmtron Xp è un’applicazione a duplice funzione:
 Permette di definire il percorso da compiere per l’esecuzione del Task;
 Supervisiona, monitorizza e acquisisce i dati di esecuzione del compito
interfacciandosi all’unità di controllo del robot.
Il Task è inteso come sequenza di passi, dove ogni passo movimenta un singolo giunto.
Ogni movimentazione avviene entro i limiti strutturali del robot.
Oltre all’attivazione dei giunti, il passo può contenere l’istruzione di ATTESA con la quale è
possibile definire un ritardo di esecuzione tra due istruzioni.
Il comando di movimentazione indica il giunto da attivare e lo spostamento da effettuare
(es. VITA +30 = “ruota il giunto VITA di 30° in senso antiorario” ).
La sequenza è composta da al più quindici passi.
Configurazione iniziale dei giunti:
Prima di pianificare il percorso da compiere, è necessario esplicitare la posizione iniziale
del robot.
E’ possibile indicare la configurazione
iniziale dei giunti in più modi:
 Selezionandola tra tre possibili
varianti



“Centrale” = vita
braccio esteso e
aperta;
“Sinistra” = vita a
braccio esteso e
aperta;
“Destra” = vita a
braccio esteso e
aperta.
a 0°,
mano
+90°,
mano
-90°,
mano
 Inserendo manualmente un
valore per ogni giunto in base ai
sistemi di riferimento indicati nei
parametri di Denavit Hartenberg.
 Importando la posizione finale di
una sequenza preesistente.
Definizione della sequenza:
La sequenza viene definita inserendo le istruzioni da compiere attraverso i tasti “VITA”,
“SPALLA”, “GOMITO”, ”POLSO”, “MANO”,
“ATTESA”.
Gli spostamenti dichiarati all’interno della
sequenza assumono valori tali da rispettare i
vincoli strutturali del robot, questo controllo
viene eseguito automaticamente all’interno
delle maschere d’inserimento dei passi.
I valori inseriti devono assicurare che la
posizione finale dei giunti non superi le soglie
di fine corsa.
I valori strutturali di fine corsa per ogni giunto sono i seguenti:
GIUNTO
Fine Corsa Negativo
Fine Corsa Positivo
VITA
SPALLA
GOMITO
POLSO
POLSO ROT.
-180
-20
-90
0
-180
+180
+20
+90
+180
+180
Un ulteriore controllo impedisce di inserire consecutivamente più volte l’istruzione di
apertura/chiusura della mano.
L’istruzione “ATTESA” non può assumere valori superiori ai 9 secondi.
La finestra principale del programma consente di visionare la posizione finale raggiunta
all’ultimo passo indicando in GIALLO i giunti
con valore pari al fine corsa e in ROSSO i
giunti che lo hanno superato.
(I giunti possono superare i valori di fine corsa solo a seguito di modifiche apportate in un
secondo momento alla sequenza attraverso gli strumenti di editing).
E’ inoltre possibile inserire una breve descrizione alla sequenza sottoforma di commento,
basta un click sulla voce “commento” per
accedere alla relativa finestra di
inserimento.
Modifica dei passi della sequenza:
Una volta inserita la sequenza è possibile modificare ogni suo passo cliccando su di esso.
Lo strumento di modifica consente di
cambiare il valore dello spostamento ed il
giunto da muovere oppure di eliminare
completamente il passo dalla sequenza.
Ogni volta che viene modificata la sequenza
vengono calcolate nuovamente le posizioni
finali raggiunte dai giunti.
Modificando la sequenza (ad esempio a
seguito di un’ eliminazione) è possibile che in
alcuni passi i giunti si trovino oltre il limite di
fine corsa, a scopo di verifica esiste uno
strumento di debug.
Lo strumento di verifica visualizza la posizione raggiunta dai giunti ad ogni passo
indicando in giallo il raggiungimento dei fine corsa ed in rosso le operazioni non valide
(superamento
fine
corsa,
chiusure o aperture consecutive
della mano).
Al completamento della verifica
vengono indicati i passi non
validi da correggere.
Non è possibile caricare sul
robot una sequenza non valida,
questo strumento verrà quindi
eseguito automaticamente prima
di trasmettere le istruzioni al
microcontrollore.
Cinematica diretta:
Attraverso la cinematica diretta è possibile visionare i passi della sequenza nello spazio
operativo indicando la posizione del punto di presa e l’orientamento della mano rispetto la
terna del sistema di riferimento di base.
Per facilitare la lettura dei dati all’utente, è possibile richiamare dal menù “visualizza” una
finestra che mostri i parametri di
Denavit Hartenberg e le terne di
riferimento
utilizzate
per
le
trasformazioni geometriche.
L’orientamento della mano è
espresso come terna di Eulero ZYZ
dove:
ö = Angolo di rotazione intorno a Z
è = Angolo di rotazione intorno a Y’
ø = Angolo di rotazione intorno a Z”
Sempre dal menù “visualizza” è possibile eseguire la simulazione della sequenza in un
ambiente virtuale 3D che rappresenta lo spazio operativo.
Simulazione della sequenza in ambiente grafico 3D:
Un modello cinematico del robot esegue i passi indicati nella sequenza in uno spazio
operativo 3D virtuale.
Per consentire una corretta visione, l’utente è libero di cambiare la prospettiva
allontanandosi, avvicinandosi e ruotando attorno alla scena.
E’ inoltre possibile evidenziare il percorso compiuto attraverso delle linee.
Cinematica Inversa:
E’ possibile inserire una nuova sequenza direttamente nello spazio operativo definendo
dei punti di via da cui dovrà passare il punto di presa.
(Dovendo considerare il limite di 15 passi per sequenza, i punti di via definibili saranno al
più due).
E’ possibile utilizzare l’ambiente di simulazione 3D per eseguire una sorta di
“apprendimento sul campo virtuale” posizionando graficamente il punto di presa all’interno
del modello del mondo creatosi.
Salvataggio della sequenza:
La sequenza definita viene salvata su file testuale di estensione “.arm” avente la seguente
struttura:
Intestazione;
Nome del File;
Commento;
Configurazione
iniziale dei giunti;
Passi della sequenza;
Le istruzioni della sequenza vengono
memorizzate nel seguente modo:
VITA = Rotazione del giunto Vita
SPALLA = Rotazione del giunto Spalla
GOMITO = Rotazione del giunto Gomito
POLSO = Beccheggio del Polso
POLSOROT = Rollio del Polso
MANO = Movimentazione della Mano
I valori relativi agli spostamenti sono
indicati con segno (Es. +6, -10).
Configurazione
finale dei giunti;
Sono disponibili i comuni strumenti di operazione sui file come: “Apri”, “Salva”, “Salva con
Nome”.
Codifica della sequenza:
Per essere eseguita da Poliarmtron, la sequenza deve prima essere codificata e poi
trasmessa al microcontrollore.
La codifica è strutturata come segue:
PRIMO BYTE = ID del Giunto
SECONDO BYTE = Valore del movimento
I byte codificati vengono visualizzati in formato
esadecimale.
ID del Giunto
VITA Rotazione Oraria
VITA Rotazione Antioraria
SPALLA Rotazione Oraria
SPALLA Rotazione Antioraria
GOMITO Rotazione Oraria
GOMITO Rotazione Antioraria
POLSO Beccheggio Orario
POLSO Beccheggio Antiorario
POLSO Rollio Orario
POLSO Rollio Antiorario
MANO Apertura
MANO Chiusura
ATTESA
BYTE
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
Codificata in questo modo, la sequenza occuperà un massimo di 32 byte all’interno della
memoria RAM del microcontrollore.
Il range di valori associati allo spostamento è da 00 a B4 (180 decimale), mentre quello
relativo alle istruzioni va da B5 (181 decimale) a FF (255 decimale).
Prima della codifica, viene eseguita automaticamente l’operazione di debug, in modo da
impedire il caricamento sul robot di sequenze non valide.
Trasmissione della sequenza al microcontrollore:
I dati codificati vengono trasmessi al microcontrollore nella sequenza qui riportata, è
importante notare che la codifica adottata garantisce che BYTE consecutivi non assumano
mai lo stesso valore.
I segnali di sincronizzazione e controllo vengono discussi nel prossimo paragrafo.
COMPUTER
MICROCONTROLLORE
Il flusso di Byte da PC a Microcontrollore risulta quindi il seguente:
OUT  CC
IN  CA
OUT  C0 - F1 - 0A - F3 - 14 - F5 - 05 - F9 - 07 - FB - 00 - CF
IN  D5
Per la trasmissione è stata utilizzata la seguente tabella di codifica:
I segnali trasmessi dal Microcontrollore al PC
sono codificati come:
“CONNESSIONE OK”  CA
“PRONTO A ESEGUIRE”  D5
Segnali di sincronizzazione e controllo utilizzati nella fase di caricamento della sequenza:
Il personal computer dispone di sole due linee di controllo:
 DIR: comanda la direzione di comunicazione dei transceiver che interfacciano il
PC all’Unità di Controllo.
“DIR = OUT”  da PC a CTRL UNIT ; “DIR = IN”  da CTRL UNIT a PC
 PA 7: a seconda dello stato questa linea assume il significato di “DATO PRONTO”,
“DATO LETTO”, “DATO NON PRONTO/NON LETTO”.
L’unità di controllo utilizza tre linee mutuamente esclusive, solo una linea alla volta può
trovarsi allo stato logico basso:
 DEC 0: assume il significato di “DATO NON PRONTO/NON LETTO”;
 DEC 1: assume il significato di “DATO LETTO”;
 DEC 2: assume il significato di “DATO PRONTO”.
Esempio: Trasmissione “VERIFICA CONNESSIONE”
Esecuzione e Monitoraggio in Tempo Reale:
Dopo aver ricevuto dal robot il messaggio “PRONTO A ESEGUIRE” , è possibile accedere alla
finestra di esecuzione e monitoraggio del task.
Sono presenti due comandi
START e STOP tramite i quali è
possibile attivare e arrestare
l’esecuzione del task.
Una volta avviata la sequenza, il
robot trasmette al PC il comando
che
sta
eseguendo
e
l’incremento di posizione del
giunto misurato dal relativo
encoder.
Lo strumento di monitoraggio
calcola in tempo reale la
posizione corrente del punto di
presa e l’orientamento della
mano nello spazio operativo ogni
volta che il valore di un giunto si
modifica.
La sequenza si arresta in seguito a tre eventi:
 Completamento dell’esecuzione dell’ultima istruzione;
 Trasmissione del comando di STOP da parte dell’utente;
 Rilevamento di un errore di esecuzione da parte del microcontrollore.
Alla ricezione del messaggio “ERRORE DI ESECUZIONE” viene interrotto il monitoraggio e
visualizzata una schermata di allerta.
Trasmissione dello stato del Robot al PC durante l’esecuzione del task:
Durante l’esecuzione Poliarmtron trasmette al PC l’istruzione corrente e i dati rilevati dai
sensori di posizione così da poter essere monitorati.
Il microcontrollore trasmette al PC solamente i valori relativi agli incrementi di posizione, è
poi il software Poliarmtron Xp che da questi dati ricava la posizione raggiunta dal robot.
I segnali di sincronizzazione e controllo vengono discussi nel prossimo paragrafo.
COMPUTER
MICROCONTROLLORE
Nell’esempio appena riportato si può notare che in alcuni casi gli incrementi di posizione
raggiunti dai giunti sono maggiori di quelli desiderati, queste rilevazioni saranno poi
utilizzate per l’analisi di accuratezza.
Il flusso di Byte da Microcontrollore a PC risulta
quindi il seguente:
IN  D0
OUT  F1 - 0A - 04 - 0A - F3 - 14 - 05 - 0B - 11
16 - F5 - 05 - 06 - DE
Per la trasmissione è stata utilizzata la seguente
tabella di codifica:
Segnali di sincronizzazione e controllo utilizzati nella fase di esecuzione della sequenza:
Il personal computer dispone di sole due linee di controllo:
 DIR: comanda la direzione di comunicazione dei transceiver che interfacciano il
PC all’Unità di Controllo.
“DIR = OUT”  da PC a CTRL UNIT ; “DIR = IN”  da CTRL UNIT a PC
 PA 7: a seconda dello stato questa linea assume il significato di “DATO PRONTO”,
“DATO LETTO”, “DATO NON PRONTO/NON LETTO”, “PC PRESENTE”.
L’unità di controllo utilizza tre linee mutuamente esclusive, solo una linea alla volta può
trovarsi allo stato logico basso:
 DEC 0: assume il significato di “DATO NON PRONTO/NON LETTO”;
 DEC 1: a seconda dello stato assume il significato “PC RILEVATO”, “DATO LETTO”;
 DEC 2: assume il significato di “DATO PRONTO”.
Esempio: Trasmissione PASSO IN ESECUZIONE
Analisi di accuratezza:
Completata l’esecuzione del task, il robot si arresta e l’utente è libero di accedere alla
finestra di analisi d’accuratezza.
L’accuratezza
viene
calcolata
in
percentuale
come
complementare
dell’errore di posizionamento.
Oltre all’analisi di accuratezza dei singoli
passi della sequenza, è possibile visionare
quella relativa alla posizione finale del
robot, sia nello spazio dei giunti che in
quello operativo.
Nello spazio operativo viene indicata l’accuratezza
dell’orientamento dell’organo di presa (End-Effector).
sia
della
posizione
che
E’ possibile salvare su file di testo l’intera analisi di accuratezza relativa al task appena
eseguito.
Salvataggio su file di testo dell’analisi di accuratezza:
Tramite il pulsante SALVA REPORT è possibile salvare l’analisi di accuratezza su un file di
testo “.TXT” strutturato nel seguente modo:
Il file di testo viene salvato attraverso
l’apposita finestra di salvataggio.
In seguito è possibile visionare il report
utilizzando un qualsiasi editor di testo come
ad esempio Microsoft NotePad.
SPECIFICHE DELLA SCHEDA DI CONTROLLO:
L’unità di controllo del robot si basa sul microcontrollore ST6225B prodotto da SGS-THOMSON
MICROELETTRONICS.
Caratteristiche principali del dispositivo ST6225B :
(Per maggiori informazioni consultare il datasheet )
 Massima frequenza di clock 8 MHz
 Cinque vettori di Interrupt
 ROM da 3884 Byte
 RAM da 64 Byte
 Venti linee ingresso/uscita programmabili
 Watchdog digitale
 Reset all’accensione
La scheda è interfacciabile ad un Personal Computer IBM compatibile dotato di porta
parallela di tipo ECP.
La scheda si connette all’Unità di Potenza per il controllo delle trasmissioni del motore e
per ricevere la corretta alimentazione.
L’unita di controllo è attualmente realizza su scheda mille fori, ma è implementabile anche
su circuito stampato a doppio strato.
E’ possibile cancellare la memoria EPROM del microcontrollore attraverso l’esposizione a
raggi ultravioletti.
Connettività della scheda:
L’unità di Controllo, di Potenza e il gruppo Sensori sono alloggiati all’interno del robot e
interconnessi tramite bus, così da rendere modulabile il sistema.
Configurazione delle linee dati del microcontrollore:
Il microcontrollore è dotato di venti linee ingresso/uscita programmabili suddivise in tre
porte e configurate nel modo seguente:
PORTA A :
Otto linee in ingresso utilizzate per la lettura dei segnali
provenienti dai sensori (PA0 .. PA6) e per la ricezione
del segnale “DATO PRONTO/LETTO” inviato dal PC
attraverso la porta parallela (PA7).
PORTA B :
Otto linee bidirezionali (PB0 .. PB7) utilizzate per la
ricezione e trasmissione dei dati/istruzioni tra PC e
Robot.
PORTA C :
Quattro linee in uscita (PC4 .. PC7) in seguito
multiplexate a sedici, utilizzate per il controllo delle
trasmissioni e per l’invio dei segnali di controllo al
Personal Computer.
Oltre alle porte programmabili, viene utilizzato anche l’ingresso non mascherabile NMI, il
cui interrupt ha priorità assoluta su tutti gli altri; proprio per questa caratteristica viene
utilizzato per la ricezione del segnale di “STOP” proveniente dal Personal Computer.
Configurazione della Porta A per la lettura dei sensori:
E’ bene prima ricordare le limitazioni indotte dalla struttura del robot e dal microcontrollore:
 Il Robot è munito di un singolo motore che movimenta i link attraverso l’impiego
di una trasmissione per giunto;
 Non è possibile azionare più trasmissioni per volta, quindi i giunti vengono
attuati singolarmente;
 Ad ogni giunto rotazionale è applicato un encoder incrementale che genera uno
scalino ad ogni rotazione di ampiezza pari alla sua risoluzione;
Gli encoder, tranne quello ottico impiegato per la lettura del
movimento di Roll del polso, hanno una risoluzione di 256bit
per canale pari a 1,4°.
 La struttura del robot è molto elastica, sono sempre presenti slittamenti tra i
riduttori epicicloidali che impediscono un controllo accurato dei movimenti, di
conseguenza anche la velocità di rotazione dei giunti non è costante (per questo
motivo gli impulsi generati dagli encoder non sono equidistanti);
 Il microcontrollore non gestisce nidificazione di interrupt, non è quindi possibile
una lettura contemporanea di più sensori;
Per i motivi sopra elencati, la risoluzione a singolo canale degli encoder risulta più che
adeguata, mentre il senso di rotazione viene dedotto e non misurato, essendo infatti due
solenoidi distinti ad azionare il movimento orario e antiorario di un giunto, in base alla linea
di comando attiva è possibile ricavarne il verso. Di seguito un semplice esempio :
ALL’ARRIVO DI UN INTERRUPT SULLA LINEA <GOMITO> FAI:
SE <GOMITO ANTIORARIO> = “ATTIVO”  INCREMENTA <POSIZIONE GOMITO>
ALTRIMENTI DECREMENTA <POSIZIONE GOMITO>
Proprio perché non è possibile movimentare contemporaneamente più giunti e leggere più
sensori, viene applicato un mascheramento alle linee della porta A
così da ricevere l’interrupt solamente dal sensore relativo al giunto
a cui è stato comandato il movimento (possibili movimenti di altri
giunti sono dovuti all’elasticità della struttura).
Il movimento di ROLL del Polso risulta impreciso se si utilizza un singolo canale,
inserendo quindi i due canali in una porta XOR ne si raddoppia la risoluzione.
Il pinout della porta A risulta quindi il seguente:
Configurazione della Porta B per la comunicazione tra PC e Robot:
I dati e le istruzioni trasmesse tra PC e Robot sono codificate a 8 bit e vengono inviate in
modo bidirezionale a seconda che Poliarmtron riceva istruzioni dal pc o che debba inviare
informazioni sullo stato del robot.
Si anticipa che le linee della porta parallela del Personal Computer e quelle del
Microcontrollore non sono collegate in modo diretto, ma interfacciate attraverso dei
transceiver.
Il pinout della porta B risulta quindi il seguente:
Il personal computer allerta il microcontrollore che i dati sulla porta B sono pronti per
essere letti attraverso il segnale di interrupt DATO PRONTO inviato sul pin PA7 della porta A.
Configurazione della Porta C per il controllo delle trasmissioni dei giunti e per l’invio dei
segnali “DATO PRONTO”, “DATO LETTO” alla porta parallela:
Attraverso un decoder 4 / 16 74154N le linee della porta C possono essere utilizzate per
pilotare i dodici solenoidi relativi alle trasmissioni dei giunti e per inviare tre linee di
controllo alla porta parallela.
Per mantenere attive più linee contemporaneamente vengono utilizzati dei Flip Flop il cui
segnale di clock è generato da dei ritardi sulle linee stesse.
(E’ indispensabile avere più linee attive contemporaneamente durante la movimentazione
di un giunto quando si invia al personal computer l’incremento di posizione relativo).
L’intergrato specifico è il 74HC564 e contiene una batteria di 8 Flip Flop di tipo D gestiti da
un unico segnale di clock e di abilitazione.
La configurazione 1111 all’ingresso del decoder “forza” tutti i Flip Flop a memorizzare il
dato 0 rilasciando di conseguenza tutti i solenoidi (robot fermo).
I Flip Flop utilizzati memorizzano il dato in ingresso quando ricevono un fronte di salita
sulla linea di Clock.
Ritardando opportunatamente il segnale da memorizzare è
possibile generare un fronte di salita che abiliti il relativo Flip Flop
in scrittura.
Il ritardo viene creato sfruttando i tempi di commutazione di porte
logiche connesse in cascata.
Il pinout della porta C è il seguente, dove con A B C D sono indicate le linee d’ingresso del
decoder 4 / 16 :
Interfacciamento Porta Parallela / Unità di Controllo:
Le linee di una porta parallela non sono adatte ad erogare corrente (massimo 2 o 3 mA)
mentre in certe occasioni possono assorbire fino a 24 mA, per cui, per non rischiare
danneggiamenti sulla scheda madre vengono introdotti dei buffer di corrente.
Essendo le 8 linee DATI bidirezionali, viene utilizzato un transceiver 7411245 in grado di
funzionare nei due sensi, mentre per le linee di CONTROLLO vengono utilizzati buffer
monodirezionali 74S244N.
La direzione del transceiver, quindi il verso della comunicazione, viene gestita unicamente
dal personal computer.
Durante la funzione da supervisore il PC è in grado di abilitare/disabilitare l’attivazione del
motore da parte dell’Unità di Controllo, l’apposito segnale viene trasmesso attraverso una
linea della porta parallela.
Programmazione e caratteristiche della Porta Parallela di tipo ECP:
Per l’interfacciamento PC   ROBOT si utilizza una porta parallela di tipo ECP (Extened
Capabilities Port ) programmata in Modo1, cioè con comunicazione bidirezionale, senza
segnali di auto-strobe e senza compressione automatica dei dati.
La modalità di funzionamento si imposta attraverso un apposito registro (77AH) detto “Di
Controllo Esteso”.
Pinout “DATI” (bidirezionale)
Pinout “STATO”
Pinout “CONTROLLO”
Per accedere direttamente ai registri della porta parallela sotto ambiente Windows XP,
viene utilizzata un’apposita libreria: inpout32.dll
Schematico dell’Unità di Controllo:
PROGRAMMAZIONE DEL MICROCONTROLLORE:
Il microcontrollore è programmato a Struttura di Programma, all’interno del codice si
possono distinguere due funzionalità distinte:
1. Ricezione del compito attraverso comunicazione asincrona parallela
(Stati 1 4)
2. Esecuzione del compito ricevuto.
(Stati 5 8)
Diagramma di transizione di stato programma Unità di Controllo:
All’interno della ROM è presente una tabella d’interpretazione per l’esecuzione dei passi
del Task inviati dal Personal Computer.
Ad ogni codice relativo al passo da eseguire la tabella d’interpretazione associa la linea
del solenoide da attivare e la relativa maschera di bit da applicare alla porta A per la
ricezione degli interrupt dal sensore specifico.
Il processo d’interpretazione è molto semplice:




La tabella è allocata a partire dall’indirizzo etichettato con INTERP
I codici dei passi vanno da F0h (VITA -) a F9h (POLSO ROT +)
Eseguendo il calcolo: (CODICE_PASSO – F0h) x 2 si ottiene un OFFSET
I 2 Byte consecutivi a partire da INTERP+OFFSET indicano la linea e la maschera di bit
Rappresentazione del programma in FlowChart:
RICEZIONE
DELLA
SEQUENZA
ESECUZIONE
DEL
COMPITO
ESECUZIONE
DEL
PASSO
ROUTINE
INTERRUPT
Nel flowchart riportato precedentemente, si nota all’interno della routine di Interrupt un
controllo “Interrupt Spurio”.
Infatti ogni qualvolta viene attivato/disattivato il Flag di Abilitazione Interrupt Generale si
genera un interrupt spurio si tutti quelli attualmente attivi generando così un conteggio
“fasullo” che va filtrato.
Si può inoltre notare nell’esecuzione del passo, che la lettura dei dati sensoriali non
termina al raggiungimento della posizione desiderata, ma dopo un tempo pari a 1s in cui
non si sono verificati interrupt; ciò indica che il giunto si è stabilizzato e che nessuna
coppia resistente sul carico lo sta muovendo.
Comunicazione “Unità di Controllo  PC” durante l’esecuzione del compito:
Se durante l’esecuzione del compito si rileva la presenza di un personal computer
connesso al robot, la scheda di controllo inizia a comunicare i passi che sta eseguendo e
gli incrementi raggiunti dai giunti così che il software Poliarmtron Xp possa eseguire le sue
funzionalità di supervisione e monitoraggio.
Per rilevare la presenza di un PC connesso si utilizza una particolare caratteristica del
TRANSCEIVER utilizzato come interfaccia di collegamento:
Come si nota dalla figura, in uscita dall’integrato si ha un
segnale logico basso (Gnd) solamente nel caso in cui il
piedino del relativo ingresso sia connesso ad una linea
anch’essa impostata a Gnd.
Se invece il piedino in ingresso è ad alta impedenza,
circuito aperto, allora l’uscita del tranceiver sarà alta.
Il PC notificherà la sua presenza portando a livello logico
basso la sua linea PA_7.
Il microcontrollore verifica la presenza del PC prima dell’esecuzione di ogni passo della
sequenza, in questo modo il Robot è libero di eseguire il suo compito senza l’ausilio di un
computer ed il monitoraggio/supervisione può avvenire in qualsiasi istante inserendo
semplicemente il cavo parallelo nell’apposito connettore di Poliarmtron.
UNITA’ DI POTENZA:
Motore, solenoidi e unità di controllo necessitano di tensioni di alimentazione differenziate
per il loro corretto funzionamento.
Le componenti elettromeccaniche hanno un ruolo fondamentale nell’assorbimento di
potenza dell’intero sistema, richiedendo queste delle correnti elevate (vedi ad esempio la
coppia di spunto del motore).
Per ridurre disturbi e oscillazioni di tensione, si è reso necessario distinguere
l’alimentazione per l’unità di controllo da quella per gli organi attuatori.
Stimando il fabbisogno di potenza intorno ai 24VA, è stato realizzato un apposito sistema
di alimentazione da 30VA massimi, con tensioni differenziate filtrate e stabilizzate.
L’alimentatore esterno contiene un avvolgimento primario su cui si inseriscono 230V AC e
due avvolgimenti secondari da cui escono 12V AC, attraverso un ponte di Wheatstone ed
un filtro si ottiene una tensione raddrizzata e filtrata di 12V DC.
Il cavo di alimentazione si interfaccia al Robot attraverso un mini jack stereo.
Attraverso l’uso di Voltage Regulator la tensione di 12 Volt fornita dal trasformatore
esterno viene stabilizzata e convertita in 5 Volt e 4 Volt per l’alimentazione differenziata
dei vari dispositivi.
Disperdendo calore, i Voltage Regulator vengono montati su Dissipatori Lamellari e
raffreddati ulteriormente tramite una ventola alimentata a 12Volt.
Schematico dei circuiti di Trasformazione, Raddrizzamento, Filtraggio e Stabilizzazione:
Per filtrare ulteriormente eventuali cadute di tensione sull’unità di controllo, sono stati posti
dei condensatori parallelamente ai piedini di alimentazione del Microcontrollore e dei Flip
Flop.
Le linee di comando dei solenoidi provenienti dall’unità di controllo pilotano in ON/OFF dei
transistor Darlington che aprono/chiudono i circuiti di alimentazione.
La presenza del diodo è necessaria per
movimentazione del solenoide.
impedire
sovratensioni
dovute
alla
L’attivazione del motore viene gestita direttamente dall’unità di controllo attraverso un
segnale logico amplificato da un apposito finale di potenza, sempre basato su transistor
darlington.
In modalità supervisore, il Computer è in grado di arrestare il motore in qualsiasi istante.
Attraverso un Jumper, si può abilitare o meno la funzione di supervisore del computer.
Schematico FINALE DI POTENZA per l’attivazione dei SOLENOIDI:
CONSOLE PER IL POSIZIONAMENTO MANUALE:
Sulla base del robot è presente una console composta da dodici pulsanti normalmente
aperti che quando premuti, attivano il solenoide relativo.
Dei LED bicolore si accendono alla pressione di un
tasto indicando il verso di rotazione del giunto relativo in
base al colore della luce emessa.
“TASTO VITA DX PREMUTO”  LED VITA =
“TASTO VITA SX PREMUTO”  LED VITA =
Oltre alla console di comando, sulla base del robot sono
presenti anche
 Un pulsante per l’alimentazione generale ;
 Un selettore per il controllo “Manuale / PC”.
Il selettore “Manuale / PC” impedisce l’utilizzo simultaneo della console di comando e
dell’Unità di Controllo.
Quando il selettore è posizionato su “MANUALE” , il circuito di alimentazione del motore si
chiude azionandolo.
Schematico della Console di Comando:
Connessioni interne tramite bus a FLAT CABLE:
Per esigenze di modularità dell’intero sistema hardware, Unità di Controllo, Finali di
Potenza, e Console sono collegate tramite bus flat cable.
STRUMENTI DI DEBUG DELLA SCHEDA DI CONTROLLO:
Per il debugging dell’unità di controllo è stato necessario sviluppare software e piccoli
circuiti elettronici aggiuntivi in modo da poter simulare le fasi di:
 Comunicazione CTRL_UNIT  PC
 Movimentazione della struttura del robot
 Lettura dei dati di posizione dei giunti
E’ stato inoltre utilizzato un emulatore dedicato ai microcontrollori della famiglia ST6 per il
debugging del codice assembler che è poi stato memorizzato su EPROM.
Come si può vedere dallo schema precedente, attraverso un semplice circuito dotato di
LED è possibile evidenziare lo stato delle linee di attivazione dei solenoidi, in modo da
poter testare le uscite di comando della scheda di controllo senza doverla insere all’interno
del Robot.
Software di test comunicazione CTRL_UNIT   PC:
Questa utility sviluppata in VisualC++ permette di leggere e impostare in modo diretto i
registri DATI, CONTROLLO e STATO della porta parallela del PC, permettendo di testare
il comportamento dell’unità di controllo alla ricezione di particolari configurazioni di segnali
logici sulle linee di comunicazione.
L’utilizzo è molto semplice: è sufficiente selezionare la porta interessata e leggere o
impostarne il contenuto attraverso i pulsanti “SET” e “LEGGI”.
La finestra di dialogo riporta la piedinatura delle linee di comunicazione della scheda di
controllo e lo schema di interfacciamento dei singoli bit dei registri della porta parallela
così da facilitarne l’uso.
Software di simulazione impulsi dei sensori:
Per testare il corretto funzionamento dell’unità di controllo alla ricezione degli impulsi
provenienti dai sensori angolari posizionati sul robot, è stata sviluppata questa semplice
applicazione in VisualC++ che genera un’onda quadra sulle linee della porta parallela.
Attraverso la finestra di dialogo è possibile selezionare la forma d’onda dell’impulso, il
numero degli impulsi e la durata del livello in millisecondi.
Utilizzando anch’esso la porta parallela, non è possibile eseguire questo software
parallelamente a quello di testing di comunicazione su un’unica macchina, è necessario
l’utilizzo di un secondo computer.
Emulazione del microcontrollore:
Attraverso lo strumento di emulazione è possibile interfacciarsi alla scheda di controllo
connettendosi direttamente sullo zoccolo del microcontrollore ed eseguire passo passo il
codice assembler visionando lo stato dei registri e delle linee.