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.
Documenti analoghi
Cinematica diretta ed inversa di manipolatori seriali
La soluzione che si cerca può non essere unica. Si possono avere: (1) nessuna
soluzione (si richiede di stare all’esterno
soluzione (si richiede di stare all
esterno dello spazio di lavoro); (2) i...