UNIVERSITÀ DEGLI STUDI DI TRIESTE Dipartimento Di ingegneria Ed Architettura Corso di Laurea in Ingegneria Elettronica Sviluppo di un sistema di controllo per un plotter tramite un dispositivo FPGA Relatore: prof. Stefano Marsi Laureando: Jamal el dine Hassan La realizzazione di un plotter consente di avere un sistema capace di controllare le coordinate di una penna, una punta o molti altri oggetti. Viene usato nelle: Stampanti Macchine per la fresatura dell’alluminio Macchine per la fresatura del legno Macchine per la realizzazione di PCB Il nostro progetto Costituito da: Due motori passo_passo ‘PM42S_096’ Un attuatore che consente di controllare lo stato della penna Drivers per avere l’alimentazione giusta dei diversi motori Tastiera come interfaccia di comando Scheda DE1 che monta un FPGA della famiglia cyclone II Alimentatore Motore Passo_Passo È costituito da : 1. Un rotore : che non contiene connessioni elettriche e può apparire come un magnete con bipolo NORD-SUD 2. Uno statore : appare come un insieme di avvolgimenti 3. Il modo di pilotaggio usato si chiama: «Pilotaggio a doppia fase» Motore Passo_Passo Pilotaggio Per comprendere questo metodo di pilotaggio immaginiamo che il nostro motore abbia : • Uno statore fatto da 4 espansioni. • Un rotore come un magnete a due poli. come in figura : Motori Passo_Passo(Pilotaggio) • Per attuare il metodo a doppia fase bisogna pilotare due bobine insieme, ad esempio A e C. • In tal modo le due bobine generano un campo magnetico pari alla somma dei due rispettivi campi. • Si genera così un campo magnetico di modulo quasi doppio rispetto a quello creato da una singola bobina. • La direzione del campo generato sarà intermedia tra le due bobine A e C e così facendo il rotore tende ad allinearsi in questa direzione. Motori Passo_Passo(Pilotaggio) applichiamo una sequenza d’impulsi : Bobina D Bobina B Bobina C Bobina A Passo 0 0 1 1 1 0 1 1 0 2 1 1 0 0 3 1 0 0 1 4 Attuatore Il nostro attuatore è stato realizzato per poter alzare e abbassare il penarello quando serve. costituito da : Un motore micro_servo sg_90 Un penarello Un supporto opportuno Attuatore(blocchi) Attuatore(micro_servo) Un Servo attuatore tipicamente consiste in una scatoletta di plastica di ridotte dimensioni da cui fuoriesce un perno in grado di ruotare in un angolo compreso tra 0 e 180 gradi e mantenere stabilmente la posizione raggiunta. l’elettronica del servo attuatore confronta il valore dato dal potenziometro collegato al sistema di riduzione del moto rotatorio col segnale di comando alimentato dal filo di controllo. Dal loro confronto si decide in che direzione si deve muovere il motore e, in qualche caso, con quale velocità. Attuatore(segnale di pilotaggio) Si va a generare un treno di impulsi alla frequenza di 50Hz che corrisponde a un periodo di 20ms. Modificando la durata del impulso si può pilotare la posizione in cui si deve muovere il perno. nel nostro caso per posizionare il perno negli angoli da 0° a 180° le durate degli impulsi variano da 0.51ms a 2.4ms Attuatore(segnale di pilotaggio) Tastiera La scheda DE1 monta un connettore di una porta PS2 La tastiera è stata collegata a questa porta Il PS2 è un protocollo bidirezionale sincrono che utilizza due linee: Linea CLOCK Linea DATI Due tipi di comunicazione: Dal device all’host Dall’host al device Nel nostro progetto abbiamo utilizzato solo la comunicazione dal device all’host. Tastiera(Device to Host) Clock sempre generato dal device. Host(scheda) controlla la comunicazione. Frequenza di clock deve essere compresa tra 10 KHz e 16,7 KHz La comunicazione è fatta nel seguente modo : • 1 bit di start, sempre 0 • 8 bits di data, il meno significativo prima(LSB first) • 1 bit di parità • 1 bit di stop, sempre 1 Funzionamento del sitema Vediamo la seguente immagine Funzionamento del sistema La zona tracciata in rosso è stata implementata per scrivere i caratteri desiderati al suo interno. Questa zona è stata divisa in 10 blocchi(5 colonne e 2 righe) come mostrato nella seguente figura Funzionamento del sistema ogni blocco può contenere una lettera sola, quindi in totale possiamo scrivere 10 lettere , le dimensione del blocco sono di lunghezza = 8 cm larghezza = 5cm . Poi il blocco viene diviso in 5 colonne e 8 righe e la sua forma sarà : Funzionamento del sistema Funzionamento del sistema Dopo aver spiegato il funzionamento della tastiera, dei motori, del nostro attuatore e come è stata divisa la tabella dove vengono scritti i caratteri, si può procedere alla fase successiva: come fare a leggere un dato dalla tastiera e tracciarlo sulla tabella ? Funzionamento Immaginiamo che venga premuto il tasto «A» Dopo averlo rilasciato viene letto il codice della lettera e viene disattivata la lettura della tastiera La lettera viene disegnata in questo modo : Funzionamento B E A D C funzionamento Percorso Dal punto Al punto penarello Possiamo dividere la lettera in diversiStatopercorsi 1 A(0,01;0,08) B(0,025;-0,08) giù 4 D E(-0,03;0,00) giù 5 E (0,05;0,03) su Nel 2nostro caso della lettera A si può scrivere B C(0,025;0,08) giù la 3 D(-0,01;-0,03) su seguente tabella:C Il percorso numero 5 è solo lo spostamento al blocco successsivo. Funzionamento Quindi tutte le lettere sono state divise in diversi percorsi Poi vengono tirate le coordinate necessarie per compiere i percorsi Adesso vediamo come questi percorsi si trasformano in uno spostamento Trasformazione LAo trasformazione Dalla figura Sia il punto D di coordinate 𝑋𝑜, 𝑌𝑜 Il punto C di coordinate 𝑋1, 𝑌1 Sia LAo e LBo la lunghezza del filo sotteso dal motore fino alla massa, rispettivamente del motore A e B , corrispondente al punto D Sia LA1 e LB1 la lunghezza del filo sotteso dal motore fino alla massa, rispettivamente del motore A e B , corrispondente al punto C Sia L la distanza tra due motori. Trasformazione Vogliamo che la penna si sposti dal punto D al punto C 𝐿𝐴𝑜 = 2 2 𝑋0 + 𝑌0 ;𝐿𝐵𝑜 = 𝐿 − 𝑋0 2 + 𝑌0 2 Cosi si trovano nello stesso modo le nuove lunghezze 𝐿𝐴1 e 𝐿𝐵1 e si trova la differenza di lunghezza 𝐷𝐿𝐴 , D𝐿𝐵 . Trasformazione Dove 𝐷𝐿𝐴 = 𝐿𝐴1 − 𝐿𝐴𝑜 e 𝐷𝐿𝐵 = 𝐿𝐵1 − 𝐿𝐵𝑜 Dopo si procede al calcolo dei numeri degli step neccessari per ogni motore per effettuare lo spostamento dal punto D al punto C. Calcolo numero di step La data sheet dei motori mostra che essi eseguono un giro completo con 96 step che equivale pertanto a (3.75° gradi/step) . allora si cerca di capire quale spostamento il motorino riesce a compiere con un solo step. Calcolo numero di step I motori montano un cilindrio di raggio R=0,0135m . lo spostamento con uno step sarà di : 3,5° ∗2𝜋∗𝑅 360° = 8,8357 ∗ 10−4 𝑚 Chiamiamo 𝑆𝑜 = 8,8357 ∗ 10−4 spostamento con uno step. Calcolo numero di step Il numero di step da fare sarà : 𝑛𝑠𝑡𝑒𝑝𝑎 = 𝑛𝑠𝑡𝑒𝑝𝑏 = 𝐷𝐿𝐴 𝑆𝑜 𝐷𝐿𝐵 𝑆𝑜 per il motore A per il motore B Verso di rotazione Abbiamo 𝐷𝐿𝐴 = 𝐿𝐴1 − 𝐿𝐴𝑜 e 𝐷𝐿𝐵 = 𝐿𝐵1 − 𝐿𝐵𝑜. Se 𝐷𝐿𝐴 < 0 , 𝐿𝐴1 < 𝐿𝐴𝑜 vuol dire che il motore A deve accorciare il filo, in questo modo il motorino gira in senso anti orario. Analogamente per il motore B si valuta il valore di 𝐷𝐿𝐵. Funzionamento Cosi attraverso il processore si sono calcolati i valori da utilizzare per lo spostamento dal punto D al punto C. 1. Abbiamo trovato i numeri di step neccessari. 2. Sappiamo il verso di rotazione dei motori. Funzionamento Così vengono generati gli impulsi necessari per entrambi i motori per esguire i numeri di step trovati. Una volta finito un percorso si passa ad un altro. Una volta finiti i percorsi di una lettera si attiva di nuovo la ricezione dei dati dalla tastiera per un eventuale nuova lettera. Conclusione Dopo l’applicazione del nostro progetto abbiamo avuto dei risultati accettabili. L’alimentazione è stata limitata a 17v, con una massima corrente fornita di 500mA. con una tensione di almeno di 20v i motori possono aver un miglior funzionamento. Suggerimenti Suggerimenti per un ulteriore sviluppo : 1. Uso di motore bipolare per migliorare la precisione. 2. Sviluppare un sistema d’alimentazione più efficiente . 3. Uso degli ingranaggi per una miglior precisione e un minor consumo. GRAZIE