Indice Indice Introduzione................................................................................................................. 3 Capitolo 1 ..................................................................................................................... 5 Motori stepper e tecniche PWM ................................................................................ 5 1.1 Generalità ........................................................................................................... 5 1.2 Il principio di funzionamento.............................................................................. 6 1.3 La struttura elettromeccanica............................................................................. 6 1.4 I cambi di velocità...............................................................................................7 1.5 La regolazione PWM della corrente................................................................... 9 1.6 Il pilotaggio dei motori stepper ........................................................................ 10 1.7 Il problema della massima velocità di rotazione.............................................. 12 Capitolo 2 ................................................................................................................... 14 Descrizione dell'unità di potenza ............................................................................. 14 2.1 Generalità sul motore NSK............................................................................... 14 2.2 Descrizione generale.........................................................................................14 Control stage............................................................................................................ 15 PWM stage ............................................................................................................... 16 Power stage.............................................................................................................. 18 Capitolo 3 ................................................................................................................... 19 Realizzazione del prototipo sperimentale ...............................................................19 3.1 Descrizione del layout circuitale ...................................................................... 19 3.2 Fotoincisione dei circuiti stampati ................................................................... 20 Pagina 1 Indice Principi di base ..................................................................................................... 22 Esposizione ai raggi UV.......................................................................................23 Realizzazione del bromografo.............................................................................. 23 Sviluppo................................................................................................................ 25 Incisione................................................................................................................ 26 Foratura................................................................................................................. 26 Capitolo 4 ................................................................................................................... 27 Pilotaggio dell'unità di potenza................................................................................ 27 4.1 Creazione del diagramma di flusso con Simulink ............................................ 27 4.2 Utilizzo di ControlDesk..................................................................................... 29 Capitolo 5 ................................................................................................................... 30 Verifica sperimentale del prototipo ......................................................................... 30 5.1 Fase preliminare ...............................................................................................30 5.2 Prove sperimentali ............................................................................................31 Conclusioni................................................................................................................. 34 Appendice 1................................................................................................................. 35 Interfacciamento del DSP.........................................................................................35 Introduzione ............................................................................................................. 35 Indirizzamento del DSP ...........................................................................................35 Generazione del diagramma di flusso in Simulink .................................................. 37 Trasferimento dell’esperimento a ControlDesk ......................................................37 Gestione dell'esperimento in ControlDesk ..............................................................38 Appendice 2................................................................................................................. 40 Interfacciamento del TDS220 tramite Matlab 6.1 ................................................. 40 Pagina 2 Introduzione Introduzione Nell'ambito delle applicazioni robotiche, spesso sono richieste unità di potenza capaci di poter pilotare diversi tipi di motori. In questo lavoro di tesi, è stata realizzata un'unità di potenza a basso costo, in grado di pilotare con prestazioni soddisfacenti due tipi di motori: il motore a riluttanza variabile e il motore a corrente continua. Facendo riferimento alla figura 1, si è fatto uso di una scheda di processamento digitale (DSP) e del software concesso in dotazione, per gestire l'unità di potenza. Da un semplice personal computer viene generato il segnale di riferimento che, tramite il DSP giunge all'ingresso di riferimento del controllore hardware. Successivamente attraverso l'utilizzo di sensori ad effetto Hall viene misurata la corrente che scorre all'interno delle fasi del motore. Questa misura è utilizzata per il controllo in retroazione della corrente. La misura della corrente, insieme alla misura della posizione angolare fornita da eventuali sensori di tipo encoder montati sul motore stesso, possono inoltre essere inviati al DSP per essere elaborati dal PC nell'ambito di leggi di controllo più sofisticate. irif Controllo Software Controllo Hardware Motore θ Figu ra 0 DSP DS1102 Sensore i Unità di Potenza Encoder Figura 1 Questa tesi costituisce un resoconto sulla realizzazione dell'unità di potenza rappresentata dal blocco tratteggiato in figura 1. Pagina 3 Introduzione Nel capitolo 1 si affronta un discorso generale sui motori stepper, i loro pregi, i difetti, il principio di funzionamento e la loro struttura elettromeccanica. Inoltre si forniscono cenni sulla tecnica di regolazione PWM della corrente. Nel capitolo 2 sono riportate le generalità del motore a riluttanza variabile utilizzato in questo lavoro di tesi, e si fornisce una descrizione generale dei tre stadi fondamentali in cui è stata divisa l'unità di potenza realizzata. In maniera più dettagliata nel capitolo 3, dopo una descrizione del layout circuitale con cui sono state realizzate le due schede principali dell'unità di potenza, sono riportati e commentati i passi elementari che caratterizzano la tecnica di fotoincisione dei circuiti stampati. Dopo la descrizione del prototipo, nel capitolo 4 viene descritta la fase di pilotaggio, a partire dal diagramma di flusso realizzato con Simulink, (che ha permesso di generare i segnali di riferimento per pilotare il motore) fino alla descrizione dell'interfaccia grafica realizzata con il pacchetto software ControlDesk. Nell'ultimo capitolo sono descritte le prove sperimentali effettuate su un motore a riluttanza variabile disponibile presso il nostro laboratorio di robotica. Infine, nell’appendice 1 sono descritti i passi necessari per effettuare l’interfacciamento del DSP con il PC; mentre nell’appendice 2 sono descritte le modalità per l’interfacciamento dell’oscilloscopio TDS 220 con il PC. Pagina 4 Capitolo 1 I motori stepper Capitolo 1 Motori stepper e tecniche PWM 1.1 Generalità I motori passo-passo, spesso chiamati anche step o stepper, sono caratterizzati nel panorama dei motori elettrici da una serie di particolarità che ne fanno la scelta (quasi) ideale per tutte quelle applicazioni che richiedono precisione nello spostamento angolare e nella velocità di rotazione, quali la robotica ed i servomeccanismi in genere. I vantaggi dei motori passo-passo sono principalmente i seguenti: • E' possibile realizzare azionamenti di precisione controllati da computer in catena aperta, cioè senza utilizzare sensori di posizione o di velocità. Sono quindi utilizzabili con relativa semplicità e senza richiedere particolare potenza di calcolo. • Godono di un'elevata robustezza meccanica ed elettrica: infatti non esistono contatti elettrici striscianti e, se necessario, possono essere realizzati anche in esecuzione completamente stagna. • E' facile far compiere all'albero piccole rotazioni angolari arbitrarie in ambedue i versi e bloccarlo in una determinata posizione. • La velocità di rotazione può essere molto bassa anche senza l'uso di riduttori meccanici. Oltre ai vantaggi citati, questi motori hanno anche degli svantaggi di cui i principali sono i seguenti: • Richiedono una logica circuitale di pilotaggio. Pagina 5 Capitolo 1 I motori stepper • Sono caratterizzati da un funzionamento “a scatti” e con forti vibrazioni, soprattutto ai bassi regimi e se vengono adottate tecniche di pilotaggio troppo semplici. • Hanno un costo elevato, relativamente ad altri tipi di motori con analoghe prestazioni. • Possono garantire velocità di rotazione piuttosto limitate. 1.2 Il principio di funzionamento I motori passo-passo sono motori che, a differenza dei classici motori elettrici, hanno un’architettura capace di mantenere fermo l'albero in una posizione di equilibrio: se alimentati si limitano infatti a bloccarsi in una ben precisa posizione angolare sotto l’azione di una coppia. Solo indirettamente è possibile ottenerne la rotazione: occorre inviare al motore una serie di impulsi di corrente, secondo un'opportuna sequenza, in modo tale da far spostare, per scatti successivi, la posizione angolare di equilibrio. 1.3 La struttura elettromeccanica I motori passo-passo si dividono tradizionalmente in tre grandi gruppi: motori a magnete permanente, motori ibridi e motori a riluttanza variabile. Un motore a riluttanza variabile è costituito da un rotore in ferro dolce e da uno statore; in figura 2 è riportato un esemplare non particolarmente recente ma in cui si vede chiaramente la struttura. Figura 2 Pagina 6 Capitolo 1 I motori stepper Con riferimento alla figura 2 il rotore appare come un insieme di ruote dentate affiancate e solidali all'albero. Il numero di denti è variabile a seconda delle dimensioni del motore. Inoltre, sul rotore non sono presenti fili elettrici: non è necessaria alcuna connessione elettrica tra la parte in movimento e quella fissa. Lo statore appare come il classico insieme di avvolgimenti ed il circuito magnetico è costituito da 4 o, più frequentemente, 8 espansioni polari (in genere due per ogni fase) da come si nota in figura 2. All'interno dello statore sono presenti piccoli denti che si affacciano esattamente su quelli del rotore. In particolare, sono esattamente affacciati al rotore solo il gruppo di denti appartenenti ad una fase; i denti relativi alle altre fasi sono sfasati rispettivamente di 1/4, 1/2 e 3/4 del passo dei denti. Avvolti intorno ai poli magnetici dello statore si trovano i fili che, quando percorsi da corrente, generano il campo magnetico. 1.4 I cambi di velocità Il motore passo-passo soffre di diversi problemi nel momento in cui viene effettuato un cambio di velocità, a causa del suo principio di funzionamento che lo rende simile ad un motore sincrono. Tutti i dispositivi meccanici, a causa dell'inerzia, non possono subire accelerazioni troppo brusche. Un classico motore elettrico, reagisce alla richiesta di improvviso aumento di velocità, con un momentaneo aumento dell'assorbimento di corrente ed un graduale e relativamente lento aumento di velocità. Al contrario, nel momento in cui cambia bruscamente la frequenza in ingresso al dispositivo di pilotaggio del motore passo-passo, lo stepper tenta di adeguarsi (quasi) istantaneamente alla nuova velocità: se la coppia disponibile è sufficiente, vi è una brusca accelerazione, praticamente istantanea; se la coppia non basta a vincere l'inerzia e gli attriti, semplicemente il motore si ferma e, senza un intervento esterno, non è più in grado di ripartire: si dice che il motore "ha perso il passo". Questo comportamento deriva dal fatto che la velocità del motore è rigidamente controllata dall'elettronica e che la corrente assorbita è fissa e praticamente indipendente dalla coppia meccanica resistente. Una simile reazione vi è anche nel caso di applicazione di un’improvvisa coppia resistente al motore già in moto. Un motore DC, per esempio, rallenta per adeguarsi alla nuova situazione ed eventualmente aumenta l'assorbimento di corrente. Uno stepper invece non può rallentare: se la coppia resistente è relativamente piccola, la velocità rimane costante; se la coppia è troppo grande, il motore perde il passo e si ferma. Questo comportamento è descritto dal grafico in figura 3, rappresentante il legame tra coppia e velocità. Pagina 7 Capitolo 1 I motori stepper Figura 3 • Un curva identifica l'area, disegnata in grigio chiaro, entro cui il motore può subire cambi di velocità e inversioni di marcia senza precauzioni particolari: è sufficiente cambiare la frequenza con cui sono applicate le correnti alle fasi. Essa è in genere indicata come curva di pull-in • La zona indicata in grigio scuro, chiamata slew-range, può essere attraversata solo a condizione di evitare bruschi cambiamenti di velocità. Il cambiamento di frequenza deve quindi essere continuo e tanto più lento quanto più ci si allontana dalla curva di pull-in. • La curva di pull-out indica la massima coppia resistente che può essere applicata al motore in rotazione ad una data velocità costante senza causare il blocco. Essa rappresenta le massime prestazioni del motore. Il grafico in figura 3 dipende non solo dalla struttura elettromeccanica del motore ma anche dai dispositivi meccanici ad esso collegati (un aumento del momento di inerzia del carico causa un restringimento dell'area di pull-in) e dal tipo di pilotaggio (una migliore gestione delle correnti estende entrambe le curve, soprattutto alle velocità più elevate). Per i dispositivi commerciali, la documentazione relativa a tali curve non è sempre disponibile, ma la conoscenza di queste caratteristiche dinamiche può servire come riferimento nel progetto del software di controllo del motore: per esempio è opportuno portare gradualmente il motore a regime con un riferimento a rampa, al fine di portarlo a velocità più elevate. In applicazioni critiche, è possibile utilizzare un sensore di velocità per riconoscere l'eventuale blocco del motore, ma spesso si preferisce ignorare il problema ed, eventualmente, abbondare un poco nel dimensionamento del motore. Pagina 8 Capitolo 1 I motori stepper 1.5 La regolazione PWM della corrente La regolazione Pulse Width Modulation (PWM) della corrente è il metodo utilizzato per la costruzione dell’unità di potenza realizzata in questo lavoro di tesi, in base alle migliori caratteristiche sia a livello di prestazioni che di consumo energetico. L'idea su cui si basa la tecnica PWM è quella del cosiddetto “Voltage chopping”. A mezzo di un semiponte di transistor configurati come interruttori, l’avvolgimento del motore viene alimentato solo durante una frazione percentuale del tempo totale. In tal modo, a causa dell’induttanza intrinseca dell’avvolgimento, la corrente si porta (dopo un inevitabile transitorio) ad un valore di regime che viene mantenuto a meno di piccole oscillazioni residue provocate dalla natura pulsante dell’alimentazione, e che sono tanto più piccole quanto più alta è la frequenza del pilotaggio PWM. Figura 4 In figura 4 è riportato l'andamento delle correnti nel caso in cui si desideri avere un rettangolo di corrente nella fase. La curva in nero rappresenta il comportamento ideale, la curva in grigio chiaro rappresenta l'andamento della corrente quando il pilotaggio è lineare, tramite un semplice transistor (con alimentazione adeguata al raggiungimento della corrente desiderata), la curva in grigio scuro rappresenta la corrente con la regolazione PWM (con una tensione di alimentazione tre volte maggiore), la curva tratteggiata rappresenta l'andamento della corrente nel caso in cui non fosse spento il transistor al raggiungimento della corrente nominale (ovviamente tale corrente sarebbe eccessiva e distruttiva per il motore e il transistor). Si noti come con il pilotaggio PWM il tempo di salita della corrente è molto più breve rispetto agli altri metodi sopra citati (in quanto è maggiore la tensione di alimentazione). Osservazione: In questo capitolo, l'induttanza dell'avvolgimento è stata considerata costante. In realtà l'induttanza dell’avvolgimento di motori stepper varia in maniera sostanziale Pagina 9 Capitolo 1 I motori stepper sia in funzione della corrente sia, soprattutto, in funzione della posizione angolare dell'albero. Naturalmente il ragionamento di base non cambia, ma occorre tenere presente questo fatto qualora si vogliano fare misure accurate dei parametri elettrici di un motore a riposo, misure poi evidentemente non sufficienti a descrivere adeguatamente i comportamenti osservati durante il movimento. 1.6 Il pilotaggio dei motori stepper Esistono vari metodi per pilotare i motori stepper, uno di questi è quello rappresentato in figura 5, denominato “ponte ad H”. Figura 5 Il ponte ad H è composto generalmente da quattro MOSFet montati come in figura 4, e quattro diodi necessari per il ricircolo della corrente residua nell’induttanza del motore durante la fase di interdizione. Per far passare corrente nella fase devono essere attivate contemporaneamente coppie di transistor in diagonale (M18 ed M17 per il passaggio della corrente in un verso, M19 ed M16 per il passaggio nell'altro verso). Occorre evitare nel modo più assoluto la contemporanea conduzione di due transistor sullo stesso lato (per esempio M18 e M16), poiché si creerebbe un cortocircuito con possibile distruzione dei transistor o dell'alimentatore. Tornando al discorso della corrente residua, quando si pilotano carichi induttivi è sempre necessario inserire nel circuito il cosiddetto "diodo di ricircolo", pena la repentina distruzione del transistor di potenza a causa delle tensioni elevate generate dal motore. Ciò succede perché ciascun avvolgimento del motore passo-passo è sostanzialmente un induttore, cioè un oggetto che tende a mantenere costante la corrente che in esso scorre. Quando un transistor si apre, la corrente istantaneamente Pagina 10 Capitolo 1 I motori stepper dovrebbe andare a zero; l'induttore tende però ad impedire questa repentina diminuzione e per fare questo tende a far salire la tensione sul collettore del transistor. Infatti se prendiamo in esame la formula matematica che lega la tensione, rispetto alle variazioni di corrente, che avvengono all’interno di un induttore, si ha: V (t ) = L di(t ) dt Con riferimento alla figura 5, assumiamo che M19 e M16 siano in conduzione. In tal caso, l’induttanza è alimentata a tensione costante e la sua corrente si porta esponenzialmente ad un valore di regime. Qualora uno dei transistor venga aperto (cosa che accade nel funzionamento PWM), in assenza di diodi di ricircolo, si imporrebbe una repentina riduzione di corrente che in base all’equazione sopra riportata, provoca pericolosi picchi di tensione La tensione arriva facilmente a picchi di centinaia di volt, che possono danneggiare i transistor stessi. Tali picchi sono spesso chiamati "tensione di fly-back". Per evitare questo fenomeno distruttivo, in genere, viene inserito in parallelo alla bobina del motore un diodo che fornisce alla corrente una via alternativa a quella del transistor nel momento in cui questo si apre. Figura 6 Il catodo va connesso alla tensione di alimentazione per mantenere il diodo in interdizione durante la fase di conduzione del transistor. Nello schema di figura 6 è rappresentato l’andamento della corrente: a sinistra si considera la situazione in cui il transistor è in conduzione (la corrente attraversa l'avvolgimento del motore ed il transistor; nel diodo non passa corrente in quanto esso è polarizzato inversamente). A destra invece si considera l'andamento della corrente subito dopo l'apertura del transistor: la stessa corrente che prima attraversava il transistor ora passa nel diodo. Quest’ultima situazione si esaurisce abbastanza rapidamente, non appena l’energia immagazzinata nell’induttore sia stata dissipata sulle parti resistive del circuito. Pagina 11 Capitolo 1 I motori stepper I diodi da utilizzare devono avere due caratteristiche fondamentali: • Essere veloci, essere cioè in grado di passare in poco tempo dalla condizione di interdizione a quella di conduzione e viceversa. In genere sono richiesti tempi di intervento dell'ordine dei 100 ns o anche meno. Per questo motivo non sono adatti, per esempio i comuni 1N4001: troppo lenti. • Essere in grado di gestire picchi di corrente elevati, in quanto al momento dello spegnimento, tutta la corrente del motore passa nei diodi, ed in genere si tratta di alcuni Ampere. Per questo motivo non sono adatti per esempio i comuni 1N4148, che sopportano correnti dell'ordine dei 100 mA. In genere, utilizzando un ponte ad H (ma anche in altre configurazioni), viene usato il diodo del substrato sempre presente tra collettore ed emettitore del transistor (o tra drain e source per i MOS). Questa scelta deve essere valutata con grande attenzione in quanto molto spesso tale diodo è troppo lento e quindi inefficace. Se occorre progettare il ponte ad H, è importante verificare questa caratteristica sui fogli tecnici degli switch scelti (quando questa possibilità è prevista, essa è in genere riportata esplicitamente). Un problema legato all'uso dei diodi di ricircolo deriva dal fatto che la corrente che attraversa i diodi "ritorna" verso la sorgente di alimentazione, causando a volte un aumento anche considerevole della tensione. In genere l'alimentazione è costituita da un ponte seguito da un condensatore di filtro: è opportuno che tale condensatore, generosamente dimensionato, abbia una tensione di lavoro almeno doppia di quella fornita dal ponte. In genere non è consigliabile usare, neppure per prova, alimentatori stabilizzati, troppo facili da distruggere in questo modo, anche quando protetti. 1.7 Il problema della massima velocità di rotazione Come già accennato, ciascun avvolgimento è sostanzialmente equivalente dal punto di vista elettrico ad un induttore in serie ad un resistore. In un motore passo-passo in rotazione, la corrente deve passare continuamente da un valore nullo al valore nominale; se il motore deve ruotare velocemente, queste commutazioni devono ovviamente essere rapide. Purtroppo la velocità di commutazione è limitata dalla costante di tempo (indicata dalla lettera τ) del circuito R-L costituito dall'avvolgimento stesso. Un induttore tende a mantenere costante la corrente che scorre in esso. Applicando una tensione a gradino ad un induttore la corrente aumenta secondo una curva esponenziale il cui andamento dipende dalla costante di tempo: τ= La Ra Pagina 12 Capitolo 1 I motori stepper dove La è l'induttanza (in Henry) ed Ra la resistenza (in Ohm) equivalente dell'avvolgimento. In genere non è possibile agire su La per diminuire tale tempo in quanto esso dipende dai parametri costruttivi del motore. Come per tutti i motori elettrici, la coppia meccanica disponibile è proporzionale alla corrente che attraversa gli avvolgimenti. Questo significa che durante la carica dell'induttore che costituisce una fase, non tutta la coppia nominale del motore è subito disponibile. Inoltre, quando la corrente deve andare a zero, in realtà essa decresce lentamente, e analogamente anche il campo elettromagnetico della fase non va repentinamente a zero tentando di "frenare" il motore. Esistono diverse tecniche per ridurre il tempo di commutazione e quindi aumentare la velocità di rotazione, una tra queste è l'aumento della resistenza interna dell'avvolgimento. Osservando la relazione sopra riportata si vede come, per diminuire la τ, basti aumentare la Ra: la resistenza da utilizzare nella formula del tempo di carica è quella dell'avvolgimento sommata ad una eventuale resistenza esterna da porre in serie all'avvolgimento stesso. Nel caso in cui venga aggiunta in serie all'avvolgimento una resistenza esterna, il tempo di carica dipende da: τ= La Ra + Rext tempo evidentemente minore. Bisogna però fare delle considerazioni: per ottenere la stessa corrente sia nel caso di assenza che di presenza della resistenza esterna, si dovranno avere tensioni di alimentazione diverse. Ad esempio, se si intende usare una Rext pari alla Ra, bisogna raddoppiare la tensione di alimentazione, raddoppiando quindi la potenza elettrica da fornire. La potenza in eccesso viene dissipata come calore nella resistenza esterna che deve quindi essere opportunamente dimensionata. È da notare anche che nel caso in cui sia presente la Rext, la resistenza stessa provvede anche alla dissipazione della potenza accumulata nella fase durante il pilotaggio PWM, rendendo più rapido il passaggio allo stato off. Figura 7 Pagina 13 Capitolo 2 Descrizione dell'unità di potenza Capitolo 2 Descrizione dell'unità di potenza 2.1 Generalità sul motore NSK Prima di passare alla descrizione di com'è stata realizzata l'unita di potenza, bisogna conoscere le caratteristiche tecniche del motore a riluttanza variabile utilizzato: il motore è l'YS3040GN501 della NSK. Questo motore ha lo statore costituito da tre fasi, ognuna con sei espansioni polari, arrivando così ad un totale di diciotto espansioni polari. Ogni espansione è composta da 8 denti, per un totale di 144. Il rotore invece, ha sulla sua circonferenza esterna un totale di 150 denti, aventi lo stesso passo di quelli presenti sullo statore. In questo modo, sono esattamente affacciati al rotore solo il gruppo di denti appartenenti alle espansioni polari di una singola fase; gli altri gruppi sono sfasati rispettivamente di 1/3 e 2/3 del passo dei denti. Inoltre, per come è strutturato il motore, per il numero di poli presenti all'interno di esso e per la tecnica di pilotaggio utilizzata (vedi Capitolo 4), non possono esserci problemi di blocco dovuti alla perdita di passo, come descritto nel capitolo precedente; bensì il motore può rimanere fermo soltanto se la coppia disponibile non riesce a vincere l'inerzia del rotore stesso. 2.2 Descrizione generale L’unità di potenza realizzata, che permette il funzionamento del motore, è suddivisa principalmente in tre parti: • La prima (Control stage) è quella dedicata al controllo di corrente dove entrano i segnali di riferimento e le misure di corrente, provenienti dai sensori. • La seconda (PWM Stage) è quella dedicata alla generazione del pilotaggio PWM. Pagina 14 Capitolo 2 Descrizione dell'unità di potenza • La terza (Power stage) è quella dedicata all’alta potenza, da cui si prelevano i cavi di potenza da connettere al motore. Tutto ciò è rappresentato nello schema a blocchi di figura 8. Figura 8 Come si può notare in figura 8, c’è un altro stadio non citato tra i precedenti, che è quello per la generazione del trigger (Trigger generator), necessario al PWM per creare il segnale modulante a 25KHz. Inoltre, sono forniti in uscita anche i segnali di misura della corrente che scorre in ogni fase, provenienti da sensori ad effetto Hall. Control stage Più in dettaglio, la parte di controllo è costituita da: • Un circuito, realizzato tramite un LM317, che genera un segnale di +5 volt (tarabile), utilizzato dai successivi operazionali. Questo è necessario perché i sensori ad effetto Hall generano un segnale in tensione proporzionale alla corrente che scorre al loro interno. Questo segnale è compreso tra 0 e +10 volt, ma le misure vengono riferite tutte a +5 volt; infatti, il sensore associa questo valore intermedio al passaggio nullo di corrente. Per ogni Ampere, che scorre nella fase, l’uscita del sensore cresce o decresce di un volt. • Tre operazionali (LF353), uno per ogni fase, che effettuano la differenza (riferita a +5 volt) tra, il segnale di riferimento da inseguire e quello generato dai sensori ad effetto Hall. Pagina 15 Capitolo 2 Descrizione dell'unità di potenza • Tre operazionali che permettono di effettuare il controllo di tipo proporzionale (P), essendo stati montati come amplificatori invertenti. • Tre operazionali utilizzati per effettuare il controllo di tipo integrativo (I), e quindi montati in configurazione di integratori. • Tre operazionali utilizzati per effettuare il controllo di tipo derivativo (D), quindi montati in configurazione di derivatori. • Infine, tre operazionali1 utilizzati per effettuare, ognuno, la somma dei tre segnali provenienti dallo stadio di controllo proporzionale (P), da quello integrativo (I) e da quello derivativo (D), per realizzare un unico controllore, uno per ogni fase, di tipo PID. All’interno dell’unità di controllo sono stati montati tre jumpers per ogni fase, utilizzati per l’attivazione o disattivazione di ogni singolo stadio P, I o D, collegati ognuno ad un diodo led che si accende quando il relativo stadio è attivo. Questo permette di scegliere se utilizzare solo un controllo di tipo proporzionale P, oppure di tipo proporzionale integrativo PI, proporzionale derivativo PD, o un controllo completo di tipo PID proporzionale integrativo derivativo. PWM stage Lo stadio del circuito che genera il segnale PWM è composto da: • Tre circuiti, uno per ogni fase, costituiti ognuno da un saturatore ed un buffer. Il circuito di saturazione serve ad evitare che il segnale proveniente dal controllore superi gli 8.2V e scenda al disotto di 1.8V, mentre il buffer, ottenuto utilizzando un operazionale configurato in maniera opportuna, serve a disaccoppiare lo stadio PWM dallo stadio di controllo. • Un circuito realizzato con un NE555, che genera il segnale di trigger a 25Khz, utilizzato dagli altri NE555 per generare il segnale PWM. • Tre NE555, ognuno configurato in maniera da generare un’onda quadra con la stessa frequenza del trigger, ma avente duty-cycle proporzionale al segnale proveniente dall’unità di controllo. Per fare in modo che il segnale PWM sia generato in maniera lineare, bisogna rendere lineare l’andamento del segnale di “threshold” corrispondente alla carica di un condensatore. Ciò è stato ottenuto tramite un circuito generatore di corrente costante realizzato con un transistor BC557. In Figura 9 si può notare come viene generato il segnale di output (PWM) in funzione del segnale di controllo. 1 Gli operazionali utilizzati effettuano tutte le operazioni riferendosi, come già detto in precedenza, ad una massa di segnale corrispondente ai +5V generati dall’LM317. Pagina 16 Capitolo 2 Descrizione dell'unità di potenza Figura 9 • Un 74HC14 utilizzato per la generazione del ritardo della fase B rispetto alla fase A, nel caso in cui si voglia utilizzare l'unita di potenza per azionare un motore a corrente continua. Questo ritardo è generato perché, come si nota in figura 10, per far funzionare il motore DC, vengono esclusi i due diodi di ricircolo presenti sul ponte della fase A, ed al posto di questi vengono collegati, tramite altri due diodi, i MOSFet della fase B, ottenendo cosi un ponte a quattro MOSFet. Figura 10 Se non ci fosse il generatore di ritardo, durante il passaggio dalla fase A alla fase B (o viceversa), potrebbe esserci un breve intervallo di conduzione contemporanea dei MOSFet delle due fasi, dovuto al piccolo ritardo di spegnimento dei MOSFet precedentemente in conduzione. Ciò provocherebbe un violento passaggio di corrente verso massa, provocando la rottura certa dei MOSFet. Il generatore di ritardo, consente l’entrata in conduzione dei MOSFet della fase B, solo dopo la totale disattivazione di quelli della fase A, tenendo conto dell'eventuale ritardo di spegnimento. Pagina 17 Capitolo 2 Descrizione dell'unità di potenza Power stage La parte ad alta potenza è costituita da: • Tre ponti ad H, costituiti ognuno da due MOSFet a canale N per il pilotaggio del ponte e due diodi di ricircolo che, quando M1 ed M2 sono entrambi aperti, permettono alla corrente residua contenuta nell'induttanza di tornare verso il circuito di alimentazione (Ea) per permettere la scarica dell'induttanza stessa. La configurazione del ponte sopra descritto e rappresentato in figura 11, permette una gestione di tipo hard-chopping, in cui la corrente inizia a scorrere sul carico L solo per valori di duty-cycle superiori al 50%. Figura 11 • Tre sensori ad effetto Hall, uno per ogni ponte, che generano segnali proporzionali alla corrente che scorre all’interno di ogni fase. Tale misura di corrente è necessaria per il controllo in corrente che è stato adottato in questa unità di potenza. • Tre integrati IR2113, ognuno utilizzato per il pilotaggio dei due MOSFet contenuti in ogni ponte. • Tre operazionali, utilizzati per bufferizzare i tre segnali provenienti dai sensori di corrente. Pagina 18 Capitolo 3 Realizzazione del prototipo sperimentale Capitolo 3 Realizzazione del prototipo sperimentale 3.1 Descrizione del layout circuitale L’unita di potenza descritta nel capitolo precedente, è stata realizzata costruendo due schede, una per i circuiti a bassa tensione ed una per i circuiti ad alta tensione. Figura 12 La scheda di bassa tensione, rappresentata in figura 12, è stata divisa in quattro quadranti fondamentali: • In alto si trovano i tre controllori PID: uno per ogni fase. Pagina 19 Capitolo 3 Realizzazione del prototipo sperimentale • In basso, a sinistra c'è il generatore di trigger ed i tre saturatori+buffer del segnale di ingresso al PWM generator. • In basso, al centro ci sono i tre PWM generator, che generano il segnale che gestisce la scheda ad alta tensione. • In basso, a destra c'è il generatore di ritardo necessario per il funzionamento del motore DC. La scheda ad alta tensione, rappresentata in figura 13, invece, è costituita dai tre ponti che alimentano le tre fasi, ed ogni ponte è costituito da: • Il relativo sensore ad effetto Hall che rileva l’andamento della corrente nella fase. • L’integrato IR2113 per gestire i MOSFet del ponte. • L’amplificatore operazionale per la realizzazione del buffer sulla misura di corrente. Figura 13 3.2 Fotoincisione dei circuiti stampati Le due schede sono state realizzate in due passi, il primo costituito dalla realizzazione del master del circuito stampato, il secondo costituito dall’incisione del circuito stesso sulle basette ramate. Per la realizzazione del master di ogni scheda si è fatto uso del programma OrCAD. Inizialmente è stato creato, per ogni circuito da realizzare, uno schema elettrico utilizzando l'applicazione Capture CIS. Successivamente, tramite Layout Plus, si è passati alla realizzazione della basetta vera e propria. Quest’applicazione, facendo uso dello schema elettrico costruito in precedenza, è in grado di realizzare un master autonomamente, posizionando prima i componenti e poi tracciando le piste in maniera opportuna, facendo loro percorrere a la via più breve per effettuare il collegamento tra un componente ed un altro. I nuovi master (o maschere) rappresentati in figura 14 e figura Pagina 20 Capitolo 3 Realizzazione del prototipo sperimentale 15 vengono poi utilizzati per la realizzazione delle basette finali. Per incidere il master sulle basette ramate si è utilizzata la tecnica della fotoincisione. Figura 14 Pagina 21 Capitolo 3 Realizzazione del prototipo sperimentale Figura 15 Principi di base La fotoincisione di un circuito stampato necessita innanzitutto di una basetta ramata sulla quale sia stato applicato uno strato di photoresist: un materiale fotosensibile in grado di Pagina 22 Capitolo 3 Realizzazione del prototipo sperimentale mutare le proprie caratteristiche chimiche in seguito ad un’esposizione alla luce ultravioletta (UV). In sostanza, il photoresist ha la funzione di realizzare uno strato protettivo per il rame della basetta durante l'attacco chimico per l'asportazione del metallo in eccesso; mantenendo tale strato protettivo solo laddove dovranno esistere le piste, queste verranno conservate, ottenendo in tal modo il layout desiderato. Per ottenere la rimozione del photoresist solamente in corrispondenza delle aree nelle quali il rame va rimosso, si applica una maschera (opaca in determinate aree) sulla basetta, e si espone la superficie, così protetta, alle radiazioni UV. A questo proposito risulta necessario effettuare una distinzione: esistono in commercio basette presensibilizzate con photoresist positivo e basette presensibilizzate con photoresist negativo. Nel primo caso vanno esposte alla luce solo le aree nelle quali il rame andrà rimosso, nel secondo caso, viceversa. Generalmente si utilizzano basette con photoresist positivo come quelle usate da noi; la maschera da realizzare deve allora essere opaca, (o meglio non trasparente) in corrispondenza delle piste e trasparente in corrispondenza delle aree nelle quali il rame va rimosso. Esposizione ai raggi UV L'esposizione della basetta alle radiazioni UV è stata effettuata tramite un bromografo. Questo apparecchio, dotato di particolari lampade a raggi ultravioletti (UV), è in grado di innescare la trasformazione chimica del photoresist. Realizzazione del bromografo. Il bromografo utilizzato è stato costruito utilizzando come base di partenza un vecchio scanner HP. Il primo passo è stato quello di svuotare totalmente l’interno dello scanner, lasciando solo la scheda di alimentazione che è stata sfruttata per alimentare l’unità di temporizzazione. Successivamente nel suo interno è stato installato: • Un circuito di temporizzazione realizzato tramite un NE555. • Tre lampade UV-C, con i rispettivi circuiti di alimentazione composti ognuno da un trasformatore e da uno starter. Il circuito di temporizzazione è stato realizzato secondo lo schema rappresentato in figura 16. A riposo, il circuito si trova con l’uscita Q dell'IC1 a livello basso di 0V, cosìcche Q2 non sia polarizzato, ed il relé non sia eccitato. Con Q dell'IC1 a 0V, sarà basso anche il pin 7 (DIS) e pertanto C5 rimane scarico. Il contatto NA è collegato al pulsante esterno di innesco. Se tale contatto NA permane aperto, Q1 è interdetto e pertanto il trigger (TR) rimane a livello alto attraverso la R4 da 22k. Non appena il contatto NA si chiude, anche per un breve istante, attraverso D8, C3, R5 e D3 arriva un impulso positivo alla base di Q1 che va in saturazione portando il Pagina 23 Capitolo 3 Realizzazione del prototipo sperimentale pin di trigger (TR) di IC1 al livello basso così da far commutare l'uscita Q dell'NE555 a livello alto. Figura 16 Pagina 24 Capitolo 3 Realizzazione del prototipo sperimentale In queste condizioni si polarizza Q1, si eccita il relé RL1 e il transistor Q5 (collegato tramite il diodo D6 e la resistenza R7 all'uscita dell'NE555) si innesca, tenendo a livello basso il punto di connessione tra C3 e R5. In questo modo, il segnale di trigger è mantenuto alto durante tutto il ciclo di temporizzazione, bloccando eventuali altri impulsi positivi dovuti all’eventuale azionamento del pulsante NA, che potrebbero far ripartire il timer. Nel frattempo, il pin 7 dell'IC1 (open collector) si apre e lascia caricare C7 attraverso il potenziometro R2. Quando C7, (e quindi il pin 6 dell'IC1) raggiunge circa i 2/3 dell’alimentazione (che corrisponde a +12V) è terminato il ciclo di temporizzazione e l'uscita dell’NE555 torna a livello basso togliendo eccitazione al relé RL1. In base alla descrizione appena effettuata, il tempo di eccitazione del relé temporizzazione dipende dalla resistenza selezionata tramite la regolazione del trimmer. Quando il trimmer (che è posizionato sul fronte anteriore del bromografo), viene ruotato completamente verso sinistra, si ha un tempo minimo di 0,1 secondi circa. Ruotando invece il trimmer completamente nel verso opposto, si ottiene la temporizzazione massima di circa 2 minuti e mezzo. Il tempo di esposizione utilizzato per la realizzazione delle schede è di circa 2 minuti e 10 secondi. Sviluppo Dopo l’esposizione della scheda fotosensibile tramite bromografo, si passa alla fase dello sviluppo della basetta, per rimuovere il photoresist laddove si desideri ottenere l'asportazione del rame. Nel caso di photoresist positivo sarà quello esposto alla luce ad essere asportato, nel caso di photoresist negativo, viceversa. La soluzione di sviluppo è costituita da idrossido di sodio (NaOH), noto anche come soda caustica, disciolto in acqua distillata in una quantità di 8 grammi/litro. La basetta viene immersa nella soluzione mediante, ad esempio pinze di plastica; è importante non graffiarne la superficie. Se il photoresist è stato esposto correttamente, dopo alcuni secondi dall’immersione si nota un oscuramento delle parti non esposte e contemporaneamente si comincia a vedere dissolversi il photoresist esposto. Per assicurare uno sviluppo uniforme si deve agitare la basetta o il recipiente; se la basetta è a doppia faccia bisogna evitare, per ovvi motivi, di appoggiarla sul fondo. Periodicamente, diciamo ogni 30 secondi /1 minuto, si estrae la basetta dalla vaschetta, si lava abbondantemente con acqua ed infine la si esamina. Lo sviluppo è completo quando il rame che deve essere asportato appare lucente, senza opacità causate da eventuale photoresist residuo, e il disegno delle piste risulta ben visibile. In aggiunta, deve essere possibile sentire al tatto lo scalino dovuto al photoresist che protegge le parti in rame da preservare. Questa operazione richiede di solito 5-6 minuti. Se lo sviluppo non è completo la basetta va immersa nuovamente. Occorre prestare attenzione a non esagerare con lo sviluppo; infatti se si insiste troppo, anche una parte del photoresist non esposto potrebbe essere rimossa. Si tenga presente che, se il photoresist da rimuovere non è stato disciolto completamente, ma ne rimane solo qualche sottile strato in alcuni punti, esso sarà poi rimosso dalla soluzione di cloruro ferrino per l’asportazione del rame. Se dopo dieci minuti di immersione nella soluzione le piste ancora non appaiono, o appaiono con pochissimo Pagina 25 Capitolo 3 Realizzazione del prototipo sperimentale contrasto rispetto al resto, significa che l'esposizione è stata insufficiente, e seppure sia possibile tentare con uno sviluppo prolungato della basetta, è consigliabile utilizzarne un'altra. Incisione Eseguito lo sviluppo, si esamini la basetta per assicurarsi che non vi siano vistosi graffi sul photoresist; in caso contrario è consigliabile ritoccare le piste in tali punti con l'apposita penna per circuiti stampati onde evitare interruzioni nelle tracce in rame. La basetta quindi va immersa nella soluzione di cloruro ferrico, anche in questo caso ad esempio con pinze di plastica, per un tempo variabile tra qualche minuto e qualche decina di minuti. Il tempo di immersione in acido dipende principalmente dal grado di utilizzo del liquido e dalla temperatura dello stesso. Come per lo sviluppo, anche in questa fase si deve fare attenzione a garantire un’erosione uniforme sull'intera superficie, pertanto è opportuno agitare periodicamente la soluzione e muovere la basetta; questo vale maggiormente per le basette a doppia faccia che per ovvi motivi non vanno adagiate sul fondo, bensì tenute sospese in qualche modo. La basetta va estratta periodicamente per controllare il grado di avanzamento del processo. Appena tutto il rame in eccesso è stato rimosso basta sciacquare la basetta con acqua. Se invece si nota che, anche dopo un’immersione prolungata, in alcuni punti il rame non è stato rimosso, questo può significare che il photoresist non è stato rimosso completamente; si può provare allora, con molta delicatezza, ad eseguire questa operazione con qualche utensile, ad esempio un cacciavite, facendo però attenzione a non graffiare anche il photoresist che deve proteggere le piste. Ad operazione ultimata è possibile rimuovere il photoresist con alcool o acetone, oppure con carta abrasiva molto fine (grana 500 o maggiore), sebbene il photoresist sia generalmente saldabile e, di fatto, può proteggere le piste dalla loro lieve e naturale ossidazione. Foratura A questo punto la basetta è quasi pronta: resta solamente da eseguire l'operazione di foratura. I fori possono essere effettuati con un trapano a colonna, utilizzando una punta da 1mm di diametro per i fori dove vanno montati i componenti di piccola potenza (resistenze, condensatori, zoccoletti per integrati ecc..) ed una da 1,2 mm di diametro per i fori dove vanno montati i componenti di alta potenza (relé, MOSFet, diodi, ecc..). Nel nostro caso è stato utilizzato un trapano a colonna disponibile presso il laboratorio di Robotica. Pagina 26 Capitolo 4 Pilotaggio dell’unità di potenza Capitolo 4 Pilotaggio dell'unità di potenza 4.1 Creazione del diagramma di flusso con Simulink Il pilotaggio dell'unità di potenza è stato realizzato interfacciando quest'ultima ad un PC, utilizzando come hardware una scheda DSP DS1102 della dSpace e come software il pacchetto applicativo Simulink di Matlab ed il programma ControlDesk della dSpace. Tramite Simulink è stato creato il diagramma di flusso rappresentato in figura 17, utilizzato per la prova generale dell’unità di potenza. Figura 17 Pagina 27 Capitolo 4 Pilotaggio dell’unità di potenza Il diagramma nella parte alta serve a trasmettere i segnali di riferimento sui convertitori digitale/analogico (DAC) del DSP, mentre quello in basso è servito per la ricezione dei dati dai convertitori analogico/digitale (ADC) del DSP. Nel primo diagramma sono presenti tre generatori di onda quadra (Pulse Generator). Questi generano, ognuno, un’onda con valore di Duty-cycle del 33.3% del periodo totale. Essendo quest'ultimo pari a 33.3 millisecondi, il Duty-cycle avrà una durata di 11.1 millisecondi. Rispetto al primo generatore, il secondo ha gli stessi parametri del primo, tranne il tempo di ritardo, infatti il segnale viene generato con 11.1 millisecondi di ritardo. La stessa cosa avviene per il terzo generatore, ritardato di 22.2 millisecondi. Le tre ampiezze dei segnali, che hanno valore unitario, vengono tutte moltiplicate per il guadagno costante 0.4 (questo guadagno servirà poi nell’interfaccia grafica di ControlDesk per far variare l’ampiezza del segnale di riferimento durante il funzionamento in Real-time) e sommate ad un valore costante 0.5. L’ultima costante è necessaria perché l’unità di potenza fa passare corrente nelle fasi, solo con segnali di riferimento maggiori di 5 volt. Le due costanti sono state ricavate tenendo presente che il DAC, su ogni canale di uscita, genera un segnale che varia tra 0 e 10 volt. Tale uscita corrisponde al segnale inviato al DAC nel diagramma Simulink a meno di un fattore 10. Quindi sommando la costante 0.5, ad ogni singolo segnale, (che ha un ampiezza massima pari a 0.4) in ingresso ad ogni canale del DAC si ottiene un segnale tra 0.1 e 0.9, che corrisponde in uscita ad una tensione che varia tra 1 e 9V. Le tre tensioni in uscita dal DAC del DSP sono connesse ai riferimenti di tensione della scheda logica dell'unità di potenza. Figura 18 Pagina 28 Capitolo 4 Pilotaggio dell’unità di potenza In figura 18 sono rappresentati, ad esempio, i segnali relativi al pilotaggio pulsante del motore. Si osservi che i segnali sono sfasati di 60 gradi rispetto ad un periodo di azionamento pari a 33.3 mS. Questo sfasamento è necessario perché, per permettere al motore di girare, bisogna attivare in sequenza una fase per volta come già discusso nel capitolo 1. Il diagramma in basso in figura 17 è utilizzato per l'acquisizione dei tre segnali, generati dai sensori ad effetto Hall, connessi ai tre ingressi dell'ADC presenti sul DSP. Poiché gli ingressi del DSP sono scalati di un fattore 10, le uscite ADC nel blocco Simulink sono moltiplicate per un fattore 10 per ricostruire l'ampiezza originale. In questo modo vengono generate tre variabili, da utilizzare nel ControlDesk, per graficare l'andamento della corrente in ogni fase (vedi figura 19). 4.2 Utilizzo di ControlDesk Tramite il programma ControlDesk, è stata realizzata2 l'interfaccia grafica per il pilotaggio del motore. Come mostrato in figura 19, l'interfaccia è composta da: • Uno slider, che permette di far variare l'ampiezza del segnale di riferimento che arriva su ogni fase modificando, come accennato in precedenza, la costante di valore 0.4 presente nel diagramma Simulink. • Un display, che consente di visualizzare la misura esatta dell'ampiezza del segnale di riferimento. • Tre grafici, che rappresentano, l'andamento nel tempo del segnale proveniente dai sensori ad effetto Hall e quindi, in maniera indiretta, l'andamento della corrente che scorre in ogni fase. Figura 19 2 Fare riferimento all'APPENDICE 1 Pagina 29 Capitolo 5 Verifica sperimentale del prototipo Capitolo 5 Verifica sperimentale del prototipo 5.1 Fase preliminare Prima di effettuare le prove è stato necessario realizzare un cavo per connettere l'unità di potenza con la scheda DSP installata sul PC. Questo è costituito da un connettore a 62 poli3 che permette la connessione al DSP, ed un connettore a 25 poli che permette la connessione aull'unità di potenza. La piedinatura di connessione presente sul connettore a 25 poli è rappresentata in tabella 1. Tabella 1 NOME ADC1 ADC2 ADC3 ADC4 Analog GND Analog GND Analog GND Digital GND DAC1 DAC2 DAC3 DAC4 NC PIN 6 7 8 9 15 16 17 18 1 2 3 14 4-5-9..13-19..25 TIPO INPUT INPUT INPUT INPUT OUTPUT OUTPUT OUTPUT OUTPUT Una volta effettuata la connessione del bus interno che collega le due schede dell'unità di potenza con il DSP, ed i vari collegamenti per alimentare il circuito, si è potuto procedere nell'effettuazione delle prove sperimentali. 3 Per la piedinatura di connessione del DSP DS1102, si è fatto riferimento al manuale Floating-Point Controller Board della dSPACE. Pagina 30 Capitolo 5 Verifica sperimentale del prototipo 5.2 Prove sperimentali Le prove sono state effettuate sul motore YS3040GN501 della NSK rappresentato in figura 20. Come già detto nel capitolo 2, l'unità di potenza può gestire anche motori DC come quello in figura 21 (un ESA 35). Entrambi i motori sono disponibili presso il laboratorio di robotica dell’università di Roma Tor Vrgata. Figura 20 Figura 21 Inizialmente, è stato fornito il segnale di riferimento generato dal diagramma di Simulink già citato nel capitolo 4. Analizzando la fase A, sono stati acquisiti Pagina 31 Capitolo 5 Verifica sperimentale del prototipo dall'oscilloscopio4 (e successivamente graficati), l'andamento del riferimento, l'andamento del segnale di controllo e l'andamento della corrente che scorre in ogni fase (vedi figura 22). I primi due vettori prima di essere graficati sono stati filtrati con un filtro di media aritmetica centrata implementato in Matlab in una funzione denominata mac.m, mentre il terzo vettore è stato filtrato con un filtro dinamico. Figura 22 Bisogna notare come l'andamento della corrente della fase, salga molto lentamente al valore nominale quando il segnale di riferimento è a livello alto e scenda in simil modo quando il riferimento torna a livello basso. Questo tempo necessario alla corrente per arrivare al suo valore nominale, come accennato nel capitolo 1 limita la velocità massima che può raggiungere il motore. Nel caso in questione la velocità massima di rotazione, non supera 1 giro ogni 5 sec. Inoltre il motore, gira con un andamento prevalentemente a scatti. Ciò è stato attenuato utilizzando come segnale di riferimento un sin6(x) (vedi figura 23), che porta ad una rotazione meno discontinua. 4 Fare riferimento all'appendice 2. Pagina 32 Capitolo 5 Verifica sperimentale del prototipo Figura 23 In questo caso, però, la velocità di rotazione del motore si è ulteriormente ridotta a causa della sovrapposizione parziale dei segnali di riferimento. Questa sovrapposizione fa sì che la fase successiva venga attivata prima che quella precedente sia stata disattivata. Quest'ultima quindi richiamando il rotore si comporta da freno rallentando notevolmente la velocità di rotazione. Si osservi che per ottenere controlli a coppia costante bisogna affrontare (e risolvere) un difficile problema di controllo non-lineare legato alla struttura del motore. In ogni caso, l'unità di potenza realizzata costituisce un elemento essenziale per l'attuazione di qualsiasi strategia di pilotaggio, dalle più semplici (come quelle in figura 22 e 23) a quelle più sofisticate che saranno argomenti futuri di studio. Pagina 33 Conclusioni Conclusioni Il lavoro svolto si è articolato in tre punti fondamentali: • In una fase preliminare sono stati studiati i principi fisici di funzionamento, le problematiche e le tecniche di pilotaggio dei motori stepper. • In seguito si è passati alla progettazione ed alla realizzazione dell'unità di potenza, e del relativo bromografo che ha permesso di realizzarla senza ricorrere alla tecnica meno accurata del classico pennarello per circuiti stampati. • Infine, dopo la realizzazione del prototipo e la taratura dei singoli stadi, sono state effettuate le prove sperimentali, che hanno dimostrato la robustezza e l’affidabilità dell'unità di potenza, realizzata con componenti elettronici a basso costo. Pagina 34 Appendice 1 Interfacciamento del DSP Appendice 1 Interfacciamento del DSP Introduzione L’interfacciamento dell’unità di potenza con il computer è stato effettuato tramite il DSP DS 1102 della dSPACE. Questo dispositivo è dotato di un pacchetto software chiamato ControlDesk che permette di interfacciare la scheda con il computer e di far interagire i dati anche con il pacchetto software di calcolo numerico Matlab installando, all’interno di quest’ultimo, una libreria con adeguate istruzioni per la gestione del DSP. Sono stati inoltre installati nuovi componenti anche all’interno delle librerie di Simulink (un pacchetto simulativo con interfaccia utente a blocchi che lavora in associazione con Matlab), come per esempio l’ADC (convertitore analogico digitale) e il DAC (convertitore digitale analogico). Questi nuovi componenti, se utilizzati all’interno di un diagramma di flusso di Simulink, interagiscono direttamente con i dispositivi corrispondenti presenti sulla scheda del DSP attraverso un programma associato al DSP, denominato ControlDesk. Indirizzamento del DSP Il primo passo da effettuare, dopo l’installazione della scheda DS 1102 all’interno del computer, è l’indirizzamento della nuova periferica. Come default, l’indirizzo base è 0300H (00110000B) ma nel caso in esame la periferica entrava in conflitto con altre periferiche presenti sul PC, e per questo motivo è stata reindirizzata al nuovo indirizzo 0310H (00110001B). Per effettuare il reindirizzamento bisogna: • Configurare gli switch che sono presenti sulla scheda DSP, utilizzando la stessa configurazione che si imposterà in seguito sulla Register Board. • Avviare ControlDesk, dal Menù bar selezionare View e quindi Navigator, appare così la finestra di navigazione nel caso non fosse attiva (vedi figura 24). Pagina 35 Appendice 1 Interfacciamento del DSP Figura 24 • Dalla nuova finestra, in basso, selezionare Hardware. Dal Menu bar selezionare Hardware, quindi Initialization e poi Register. Si apre così una nuova finestra, rappresentata in figura 25, chiamata Register Board. Figura 25 • Nella Register Board selezionare, tramite il comando Type, il tipo di scheda installata (in questo caso la DS1102 DSP Controller Board). • Per modificare l’indirizzo base, basta muovere gli switch che vanno da 1 a 8 sapendo che 0 = on, 1 = off e come gia accennato la configurazione degli switch deve essere la stessa impostata sulla scheda DSP. Se il nuovo indirizzo non entra in conflitto con altre periferiche, selezionando il tasto Register la scheda verrà installata correttamente. Pagina 36 Appendice 1 Interfacciamento del DSP Generazione del diagramma di flusso in Simulink L’interfaccia tra il computer e la scheda DSP può essere effettuata: • Utilizzando solo il programma ControlDesk (in questo lavoro di tesi non si è approfondito questo aspetto). • Oppure utilizzando Simulink e ControlDesk simultaneamente. Tramite Simulink si crea un diagramma che genera i segnali di riferimento che vanno all’unità logica di controllo dell’unità di potenza. Per trasmettere i segnali all’unità si fa uso dei componenti DAC presenti all’interno delle librerie di Simulink che, come detto in precedenza, sono stati inseriti durante l’installazione di ControlDesk. Da qui bisogna generare i files che permettono a ControlDesk di gestire i parametri ricavati dalla simulazione, effettuata tramite Simulink, i quali hanno lo stesso nome che è stato dato al file contenente il diagramma di flusso di Simulink, ma diversa estensione (in particolare, .OBJ e .TRC). • Una volta creato il diagramma di flusso, dal Menù Bar di Simulink selezionare Tools quindi RTW Options e si apre una nuova finestra per impostare i parametri della simulazione. • Selezionando Solver tramite Type selezionare Fixed-step e tramite Fixed step size inserire il passo di campionamento, fatto ciò selezionare Apply e chiudere la finestra. Ora il sistema è pronto per la creazione dei Files. • Selezionando nuovamente Tools cliccare su RTW Build, verranno così compilati e generati i files necessari a far interagire ControlDesk con il DSP. Trasferimento dell’esperimento a ControlDesk Tramite il comando RTW Build di Simulink, il DSP si avvia in maniera automatica mettendo subito in funzione il dispositivo/i connesso/i alle sue porte. Una volta generati i files tramite il precedente comando, si lancia il programma ControlDesk, e si pre-impostano i parametri per creare un nuovo esperimento che, in conclusione, sarà l’interfaccia grafica da utilizzare per la gestione del DSP. • Utilizzando l’Hardware Navigator bisogna aprire l’object file, che essendo stato creato con Simulink, si trova all’interno della cartella Work di Matlab. Per aprire il file basta trascinarlo sopra alla scritta ds 1102 (vedi figura 26). Selezionando View, e successivamente ToolWindow, appare una nuova finestra. All’interno di essa selezionare Model, ed in questo modo, sulla destra appariranno le variabili che sono state utilizzate da Simulink durante la simulazione. Tali variabili sono riconfigurabili da control desk, rendendo così possibile una gestione versatile Pagina 37 Appendice 1 Interfacciamento del DSP dell’esperimento. In particolare, le variabili possono essere collegate ad elementi grafici, quali indicatori cartesiani, barre di scorrimento e simili, così creando un vero e proprio pannello di interfacciamento tra utente e DSP. Figura 26 Gestione dell'esperimento in ControlDesk Per gestire l'esperimento da ControlDesk, bisogna innanzitutto creare un esperimento. • Per creare un nuovo esperimento dal Menu Bar selezionare File, quindi New Experiment nel ControlDesk. Di seguito va creato il foglio di lavoro dove andranno posizionati gli elementi grafici che verranno utilizzati per la gestione del DSP. Per creare il foglio bisogna: • Selezionare File dal Menu Bar, poi New e successivamente Layout. Vengono così aperte due nuove finestre, una chiamata Layout ed un’altra Instrument Selector come rappresentato in figura 27. Per creare uno strumento all’interno del Layout bisogna: • Cliccare sul gruppo di strumenti contenente lo strumento che si interessa creare (es. Data Acquisition). • All’interno di Instrument Selector fare doppio click sull’icona dello strumento da creare (es. Plotter), e nella finestra Layout disegnare un rettangolo della dimensione desiderata, usando il mouse. • Viene così creato lo strumento all’interno del Layout. Il contorno rosso sul nuovo strumento indica che ancora non esiste una connessione valida con una Pagina 38 Appendice 1 Interfacciamento del DSP variabile, ossia lo strumento non è ancora collegato a nessun elemento dell’esperimento. • Per generare un collegamento con il nuovo strumento, bisogna prendere una variabile dall’interno del Variable Browser, e trascinarla sopra lo strumento creato. Figura 27 Una volta inseriti tutti gli strumenti desiderati, dal Menù Bar selezionare File e quindi Save, per salvare il nuovo Layout. Nell’Instrument Navigator, in basso, selezionare Experiment e andare sul nome dell’esperimento in oggetto (che è stato creato in precedenza). Cliccando il tasto destro del mouse, selezionare Add All Opened Files per aggiungere il Layout con i suoi strumenti all’interno dell’esperimento. Seguiti i precedenti passi, dal Menu Bar selezionare Instrumentation e successivamente Animation mode per far si che l’esperimento cominci a gestire i dati in Real Time. Pagina 39 Appendice 2 Interfacciamento del TDS220 tramite Matlab 6.1 Appendice 2 Interfacciamento del TDS220 tramite Matlab 6.1 L’acquisizione dei dati dall’oscilloscopio Tektronix TDS_220, è stata effettuata tramite Matlab 6.1, utilizzando la libreria che permette di interfacciare la porta seriale RS232 con Matlab. Il cavo utilizzato per il collegamento tra l’oscilloscopio ed il PC deve essere di tipo null-modem, la cui piedinatura è riportata in tabella 2. Tabella 2 NOME Ricezione dati (RxD, Rceive data) Trasmissione dati (TxD, Trasmit data) Terminale dati pronto (DTR, Data terminal ready) Massa del segnale (GND) Set dati pronto (DSR, Data set ready) Richiesta di invio (RTS, Request to send) Libero per trasmettere (CTS, Clear to send) N° PIN SERIALE OSC. N° PIN SERIALE PC 3 2 2 3 4 4 5 5 6 6 8 7 7 8 Tipo di segnale Per PC input Per OSC output Per PC output Per OSC input Per PC output Per OSC input Per PC input Per OSC output Per PC output Per OSC input Per PC input Per OSC output I principali comandi Matlab che hanno permesso di gestire la porta sono: • Serial( ) • Fopen( ) Pagina 40 Appendice 2 • • • • Interfacciamento del TDS220 tramite Matlab 6.1 Fprintf( ) Fscanf( ) Fclose( ) Delete( ) 1. Tramite il comando serial( ) si imposta la porta seriale (COM) da utilizzare per il trasferimento dei dati. Una volta indicata la porta da utilizzare vengono modificati i parametri (se necessario) per la trasmissione dei dati. In questo caso è stato impostato il BaudRate a 9600b/sec, il Timeout a 30 sec. e l’InputBuffersize a 500000. Il timeout è il tempo massimo in cui la porta rimane abilitata alla trasmissione o ricezione dei dati, ossia se viene inviato un comando dalla seriale al dispositivo ad essa connesso, il tempo massimo di attesa di risposta non deve superare il tempo indicato nella variabile timeout, che come default è 10 s, ma nel caso in esame è stato portato a 30 s. Nel caso venga superato questo tempo, Matlab invia un messaggio d’errore al prompt. L’InputBuffersize rappresenta la grandezza del buffer dove vengono immagazzinati i dati durante l’acquisizione dal dispositivo connesso alla porta. 2. Tramite fopen( ) viene aperta la comunicazione con la porta scelta in precedenza. 3. Tramite fprintf( ) si iniziano ad inviare i comandi al dispositivo connesso sulla porta. 4. Con fscanf( ) si ricevono i dati dal dispositivo dopo che gli è stata inviata una richiesta. 5. Con i comandi fclose( ) e delete( ) si chiude la comunicazione con la porta. Dopo questa breve introduzione possiamo passare alla spiegazione dettagliata della funzione oscilloscopio.m che è riportata nelle ultime pagine dell’appendice 2. Alla funzione viene passato un solo parametro (d) che può essere 1 o 2. Tale parametro corrisponde al canale dell’oscilloscopio da cui si desidera acquisire i dati. La funzione restituisce due vettori contenuti, rispettivamente, nelle variabili volt, tempi. Le prime quattro istruzioni abilitano la porta seriale COM1, impostando i parametri per la comunicazione con l’oscilloscopio. Dopo aver aperto la comunicazione con la porta seriale si iniziano ad inviare le istruzioni5 necessarie per acquisire i dati dal TDS220. Ogni istruzione è contenuta tra apici, all’interno della riga di comando fprinf( ). fprintf(s,'ACQuire:STATE OFF'), Esempio in l’istruzione ACQuire:STATE OFF blocca l’immagine presente sullo schermo del TDS220, per 5 Per le istruzioni utilizzate per la comunicazione con l’oscilloscopio, si è fatto riferimento al Programmer Manual della Tektronix serieTDS200 disponibile su internet sul sito della Tektronix. Pagina 41 Appendice 2 Interfacciamento del TDS220 tramite Matlab 6.1 permettere successivamente di acquisire i dati della misura effettuata dall’oscilloscopio. Dopo aver acquisito i dati dallo strumento, il primo passo da effettuare è la conversione in numero della stringa contenuta nella variabile source. Tale variabile contiene i dati inviati dall’oscilloscopio al PC, ovvero contiene le misure, non in scala, effettuate campionando l’onda presente sullo schermo dell’oscilloscopio. Il campionamento è effettuato con un passo di 250 campioni/Div e quindi con un totale di 2500 campioni, ed i campioni sono separati da virgole. La conversione da stringa in numero è effettuata nel primo ciclo FOR, usando la variabile app che contiene i valori risultanti dalla conversione. I 2500 valori di tensione acquisiti, come già detto, non sono in scala, infatti sono ventisei volte più grandi rispetto alla scala (Volt/div) impostata sull’oscilloscopio. Per riportare la misura al suo valore effettivo bisogna, prima acquisire il valore della scala che si sta utilizzando sull’oscilloscopio, (questo è effettuato tramite la riga di comando fprintf (s,'WFMPre : WFID?') e il primo ciclo WHILE). Il valore è memorizzato nella variabile Yunit e, nel secondo ciclo FOR, viene assegnata la variabile Volt contenete i 2500 valori di tensione in scala. La stessa cosa viene effettuata per il vettore dei tempi. Per l’acquisizione del valore della scala dei tempi impostata sull’oscilloscopio, viene utilizzato il secondo ciclo WHILE e nel secondo ciclo FOR viene assegnata la variabile in scala tempi. Osservazione: • Poiché le misure vengono riferite agli assi cartesiani presenti sullo schermo dell’oscilloscopio è opportuno, prima di collegare le sonde, tarare con accuratezza lo zero dell’oscilloscopio. • Prima di acquisire i dati dall’oscilloscopio bisogna controllare che i parametri della porta seriale RS232 presente su di esso, coincidano con i parametri della porta seriale del PC. Per effettuare questa verifica basta premere il tasto utilità presente sul pannello frontale dell’oscilloscopio, selezionare opzioni ed infine impostazioni della porta RS232. È stato implementato un esempio che utilizza la funzione oscilloscopio.m, denominato acquisizione.m, che permette di acquisire tre misure, memorizzando successivamente i vettori in un file chiamato exp1.mat. Quest'ultimo file viene utilizzato dal file grafico.m per graficare le tre misure acquisite. All'interno del file grafico.m viene utilizzata una funzione denominata mac.m che permette di ''filtrare'' il segnale. La funzione acquisizione.m è stata utilizzata per generare le figure 22 e, 23 riportate nel capitolo 5. Listato della funzione Oscilloscopio.m function [volt,tempi,Xunit,Yunit]=oscilloscopio(d); s = serial('COM1'); Pagina 42 Appendice 2 Interfacciamento del TDS220 tramite Matlab 6.1 s.InputBuffersize = 500000; s.BaudRate =9600; s.timeout=30; fopen(s); fprintf(s,'ACQuire:STATE OFF') fprintf(s,'DATa : INIT') switch d case d==1 | d==3 fprintf(s,'DATa:SOUrce CH1'); case d==2 fprintf(s,'DATa:SOUrce CH2'); end; fprintf(s,'DATa:ENCdg ASCIi') fprintf(s,'DATa:WIDth 1') fprintf(s,'DATa:STARt 1') fprintf(s,'DATa:STOP 2500') fprintf(s,'DATa?') source=fscanf(s) fprintf(s,'CURVe : block') fprintf(s,'CURVe?') fprintf(s,'ACQuire:STATE ON') source=fscanf(s); j=1; k=1; clear app; for i=1:size(source,2) if source(i)==',' app(j)=str2num(stringa); j=j+1; k=0; clear stringa; else stringa(k)=source(i); end k=k+1; end fprintf(s,'WFMPre:WFID?') dati=fscanf(s); v=0; z=1; i=0; clear str; while i~=size(dati,2) i=i+1; if v==3 & dati(i)~=',' & dati(i)~='s' str(z)=dati(i); z=z+1; elseif v==4 i=size(dati,2); end if (dati(i)==',')|(dati(i)=='s') v=v+1; end end Xunit=str2num(str); v=0; z=1; i=0; clear str; while i~=size(dati,2) i=i+1; if v==2 & dati(i)~=',' & dati(i)~='V' str(z)=dati(i); Pagina 43 Appendice 2 Interfacciamento del TDS220 tramite Matlab 6.1 z=z+1; elseif v==3 i=size(dati,2); end if (dati(i)==',')|(dati(i)=='V') v=v+1; end end Yunit=str2num(str); for i=1:2499 tempi(i)=i*Xunit/250 -5*Xunit; volt(i)=app(i)*Yunit/26; end % % % % % Tramite questo ciclo For vengono riscalati i dati acquisiti coerentemente con le impostazioni dell'oscilloscopio al momento dell'acquisizione. fclose(s); delete(s); clear s; Listato del file acquisizione.m clear all: for l = 1:3, disp('Digitare il numero del canale da cui acquisire le misure'); d=input('CH? :'); while (d~=1) & (d~=2) disp('Il canale richiesto non è presente digitare 1 o 2'); d=input('CH? :'); end switch l case 1, [volt1,tempi1]=oscilloscopio(d); case 2, [volt2,tempi2]=oscilloscopio(d); case 3, [volt3,tempi3]=oscilloscopio(d); end end save exp1; Listato del file Grafico.m load exp1 v1m=mac(volt1',10); v2m=mac(volt2',10); v3m=mac(volt3',10); figure(1); subplot(3,1,1); plot(tempi1,v1m) subplot(3,1,2); plot(tempi2,v2m) subplot(3,1,3); plot(tempi3,v3m) Listato della funzione mac.m function yout=mac(u,n) temp=[u; u(length(u))*ones(n,1)]; y=zeros(size(temp)); for c=1:n, Pagina 44 Appendice 2 Interfacciamento del TDS220 tramite Matlab 6.1 temp = [temp(1); temp(1:length(temp)-1)]; y=y + temp; end y=y/n; yout = y((n-1)/2+2:length(u)+(n-1)/2+1); %plot(u,'b'); %hold on; %plot(yout,'r'); %hold off; Pagina 45