candini gian paolo tesi

candini gian paolo tesi
Alma Mater Studiorum – Università di Bologna
DOTTORATO DI RICERCA IN
Meccanica e Scienze Avanzate dell'Ingegneria
DISEGNO E METODI DELL'INGEGNERIA INDUSTRIALE E SCIENZE AEROSPAZIALI
Ciclo XXIV
Settore Concorsuale di afferenza: 09/A1
Settore Scientifico disciplinare: ING-IND/05
SVILUPPO DI UN SISTEMA MINIATURIZZATO PER IL CONTROLLO
REAL-TIME DI ASSETTO DI NANO E MICROSATELLITI
Presentata da:
Ing. Gian Paolo Candini
Coordinatore Dottorato
Relatore
Prof. Vincenzo Parenti Castelli
Prof. Fabrizio Piergentili
Esame finale anno 2012
2
Sommario
Introduzione .......................................................................................................................................5
Capitolo I: Fasi preliminari del progetto.........................................................................................6
I.1: Definizione degli obiettivi.........................................................................................................6
I.2: Verifica delle soluzioni tecnologiche esistenti ........................................................................7
I.3: Identificazione delle soluzioni tecnologiche da adottare ........................................................8
I.4: Linee guida del progetto...........................................................................................................9
Capitolo II: Simulazioni numeriche ...............................................................................................11
II.1: Modello utilizzato..................................................................................................................11
II.2: Magnetotorquer ....................................................................................................................12
II.3: Risultati delle prime simulazioni..........................................................................................14
II.4: Simulazioni dell’effetto del rumore sul sistema di controllo ..............................................18
II.5: Simulazioni con grandezze discrete .....................................................................................21
II.6: Considerazioni finali sulle simulazioni dei magnetotorquer ..............................................24
II.7: Simulazione delle ruote di momento....................................................................................24
Capitolo III: Soluzioni identificate dalle simulazioni teoriche ....................................................28
III.1: Magnetotorquer, caratteristiche fisiche .............................................................................28
III.2: Magnetotorquer, requisiti del sistema di controllo ............................................................29
III.3: Ruota di momento, caratteristiche fisiche..........................................................................29
III.4: Ruota di momento, requisiti del sistema di controllo ........................................................31
III.5: Test del motore della ruota di momento .............................................................................32
Capitolo IV: Struttura meccanica ..................................................................................................35
IV.1: Requisiti di progetto per la struttura meccanica ................................................................35
IV.2: Disegno del prototipo e realizzazione mediante stampante 3-D ........................................36
IV.3: Considerazioni sul prototipo e raffinamento della struttura .............................................38
IV.4: Simulazioni numeriche .......................................................................................................41
IV.5: Realizzazione struttura in alluminio...................................................................................43
Capitolo V: Elettronica....................................................................................................................45
V.1: Necessità di progetto e caratteristiche da implementare .....................................................45
V.2: Sensori ...................................................................................................................................46
V.3: Interfacciamento delle schede ..............................................................................................49
V.4: Scheda di controllo dei magnetotorquer ..............................................................................51
V.5: Scheda di controllo dei magnetometri..................................................................................58
V.6: Scheda di controllo dei motori..............................................................................................61
V.7: Scheda del microcontrollore .................................................................................................65
V.8: Circuiti stampati ....................................................................................................................67
Capitolo VI: Test e messa a punto dei prototipi............................................................................69
VI.1: Assemblaggio della schede e test elettrici ...........................................................................69
VI.2: Scheda del microcontrollore, firmware di test....................................................................71
VI.3: Test funzionali .....................................................................................................................79
VI.4: Modifiche decise e realizzazione di un secondo prototipo .................................................86
Capitolo VII: Dispositivo finale ......................................................................................................88
VII.1: Modifiche effettuate al prototipo .......................................................................................88
VII.2: Funzioni firmware di alto livello .......................................................................................92
VII.3: Sequenza tipica di funzionamento...................................................................................100
VII.4: Caratteristiche finali del sistema elettronico...................................................................101
VII.6: Struttura dei registri interni.............................................................................................109
VII.7: Interfaccia LabView.........................................................................................................112
VII.8: Esempio di funzionamento ..............................................................................................115
Capitolo VIII: Test sul dispositivo finale .....................................................................................124
3
VIII.1: Caratteristiche della piattaforma di test ........................................................................124
VIII.2: Test sulle ruote di momento ...........................................................................................125
VIII.3: Test sugli attuatori magnetici.........................................................................................127
VIII.4: Verifiche sulla magnetizzazione residua .......................................................................130
Capitolo IX: Resistenza all’ambiente spaziale ............................................................................136
IX.1: Premesse teoriche ..............................................................................................................136
IX.2: Analisi della letteratura.....................................................................................................141
IX.3: Requisiti della scheda del microcontrollore resistente all’ambiente spaziale .................148
IX.4: Progetto di un prototipo.....................................................................................................149
Capitolo X: Test sulla scheda fault-tolerant ................................................................................156
X.1: Assemblaggio della scheda .................................................................................................156
X.2: Architettura del sistema ......................................................................................................157
X.3: Funzionalità di base............................................................................................................162
X.4: Conflict resolver ..................................................................................................................169
X.5: Test.......................................................................................................................................170
Capitolo XI: Versioni avanzate.....................................................................................................180
XI.1: Struttura meccanica ..........................................................................................................180
XI.2: Nuova versione del motore ................................................................................................181
XI.3: Elettronica avanzata ..........................................................................................................182
XI.4: Software avanzato..............................................................................................................185
Capitolo XII: Conclusioni .............................................................................................................187
Appendice A: Missioni BEXUS - REXUS....................................................................................190
A.1: BEXUS – Esperimento COMPASS ....................................................................................190
A.2: REXUS – Esperimento BUGS ............................................................................................193
A.3: REXUS – Esperimento REDEMPTION ............................................................................196
Appendice B: Strumentazione di appoggio al progetto..............................................................199
B.1: Accenni teorici e requisiti di progetto.................................................................................199
B.2: Descrizione del circuito.......................................................................................................200
B.3: Realizzazione .......................................................................................................................204
B.4: Software ...............................................................................................................................206
B.5: Schemi completi ..................................................................................................................211
Appendice C: Pubblicazioni..........................................................................................................214
4
Introduzione
L’evoluzione delle tecnologie e la nascita del settore low-cost nelle missioni spaziali hanno portato
alla sempre più elevata miniaturizzazione dei satelliti e dei sistemi impiegati in essi, sempre più
spesso con l’impiego di tecnologie nate in ambito terrestre e non esplicitamente sviluppate per
l’ambiente spaziale. La necessità di ridurre i costi di accesso allo spazio ha portato, negli ultimi
anni, alla nascita di standard come il CubeSat, che può essere adattato ad un gran numero di
payload e missioni.
Una limitazione importante per questi nano satelliti è legata ai sistemi di controllo d’assetto, che
non hanno seguito una riduzione di dimensioni con lo stesso passo di altri sistemi.
Le attività svolte durante questo dottorato hanno avuto lo scopo di rendere possibile la realizzazione
di un sistema di controllo d’assetto completo, comprendente tutti gli attuatori e i sensori necessari,
che fosse compatibile, in termini di dimensioni, peso, consumi e performance con gli standard
CubeSat.
Questo obiettivo ha richiesto in primo luogo un’analisi delle soluzioni già esistenti e la verifica
della loro miniaturizzazione, prendendo in considerazione tutte le modifiche necessarie; in secondo
luogo, la ricerca di materiali e dispositivi adatti all’implementazione di sistemi di dimensioni
estremamente ridotte. In seguito, una campagna di simulazioni ha avuto lo scopo di affinare i
requisiti identificati e convalidare le soluzioni scelte dal punto di vista teorico. La realizzazione di
un primo prototipo e i relativi test funzionali hanno completato il lavoro.
Tra le attività svolte, hanno avuto un ruolo importante anche lo sviluppo di strumentazione di test
adeguata e la verifica in condizioni di volo delle tecnologie scelte sfruttando le opportunità fornite
dai programmi destinati agli studenti universitari dell’Agenzia Spaziale Europea. È stato inoltre
affrontato il problema della compatibilità dei sistemi sviluppati con l’ambiente spaziale ed è stato
sviluppato un sistema di controllo resistente a malfunzionamenti causati da esso.
Il risultato del lavoro svolto è un sistema di controllo d’assetto compatibile con lo standard
CubeSat, caratterizzato da attuatori magnetici per la fase di stabilizzazione dell’assetto, da attuatori
meccanici per le manovre orbitali, dalla sensoristica di bordo necessaria per il suo funzionamento e
dal sistema di controllo, il tutto realizzato tramite tecnologie di basso costo di derivazione terrestre,
con una particolare attenzione per la resistenza all’ambiente spaziale.
5
Capitolo I: Fasi preliminari del progetto
Una serie di operazioni preliminari hanno preceduto la stesura del progetto vero e proprio. In primo
luogo si è dovuto stabilire precisamente quali fossero i requisiti del sistema da realizzare, con
particolare attenzione alle limitazioni imposte dalla compatibilità con i sistemi CubeSat.
A questo ha fatto seguito una fase di informazione relativamente alle soluzioni attualmente
impiegate e a come potessero essere trasformate per essere adattate al caso in questione.
Sono state infine identificate le linee guida dell’intero progetto, in termini di caratteristiche,
dimensioni fisiche, interfacce e prestazioni del sistema di controllo d’assetto.
I.1: Definizione degli obiettivi
I requisiti identificati per il sistema sono stati i seguenti:
-
Sistema di controllo d’assetto magnetico: utilizzando l’interazione con il campo magnetico
terrestre, il sistema di controllo deve essere in grado di annullare il momento angolare
imposto al satellite al momento del distacco dal vettore che l’abbia portato in orbita. Il
sistema deve possedere una legge di controllo che sia funzione della velocità di rotazione sui
tre assi del satellite e del campo magnetico esterno;
-
Sistema di controllo d’assetto meccanico: tramite l’assorbimento o la cessione di momento
angolare, deve essere possibile far effettuare rotazioni arbitrare al satellite sui tre assi. Il
sistema deve quindi essere dotato di attuatori meccanici (ruote di momento) che siano
azionate quando richiesto dalla stazione di controllo;
-
Compatibilità con sistemi CubeSat: i requisiti più stringenti, derivanti dalla compatibilità
con i sistemi CubeSat sono soprattutto meccanici legati agli ingombri. In particolare, è stato
identificato l’obiettivo di produrre un sistema di forma cubica dalle dimensioni esterne di
50x50x50mm;
-
Elettronica integrata: il sistema dovrà contenere tutti i sottosistemi necessari al suo
funzionamento, quindi una parte di pilotaggio delle bobine, una parte di pilotaggio dei
motori delle ruote di momento, una sezione di sensoristica adeguata per ricavare tutte le
informazioni necessarie all’implementazione del controllo e una sezione digitale che
funzioni da interfaccia con il resto del satellite e controlli tutti i differenti sottosistemi. Se
6
possibile, tutta l’elettronica dovrà essere di derivazione terrestre, per mantenersi all’interno
della filosofia dei satelliti di basso costo.
-
Controllo da terra: il sistema da realizzare dovrà essere in grado di operare sì in maniera
autonoma, per esempio durante la fase iniziale di smorzamento delle velocità angolari, ma
dovrà essere pensata fondamentalmente per operare tramite comandi impartiti da terra.
I.2: Verifica delle soluzioni tecnologiche esistenti
Una volta identificato l’ambito in cui dovrà operare il sistema, si è proceduto alla verifica in
letteratura delle soluzioni impiegate in condizioni simili.
In particolare, basandosi sulle caratteristiche di sistemi CubeSat sviluppati da università ed enti
privati, è stato notato che, per quanto concerne i sistemi di attuazione magnetica, essi sono
normalmente realizzati utilizzando bobine avvolte su supporti quadrati, poste sulle facce del
satellite stesso.
Figura I.1: Esempio di attuatore magnetico tipo bobina [SwissCube: http://swisscube.epfl.ch/]
Questa soluzione indubbiamente efficace, ha il grande inconveniente di richiedere una superficie
elevata per essere funzionale, andando contro i requisiti dimensionali identificati nel paragrafo
precedente.
7
Per quel che riguarda invece la parte di controllo d’assetto di tipo meccanico, si è rilevata la
generale inesistenza di questo tipo di sistema integrato assieme a quello meccanico, probabilmente
non inserito per ragioni di spazio e di costi1.
Relativamente ai sistemi di controllo e alla tecnologia elettronica utilizzata, è da notare il sempre
più frequente uso di soluzioni basate su microcontrollori commerciali, come per esempio i
dispositivi della famiglia dei PIC della Microchip. Tali sistemi, seppur non pensati espressamente
per applicazioni spaziali, offrono gli indiscutibili vantaggi di una elevata integrazione di periferiche
e di funzionalità che permettono di ridurre in maniera significativa la complessità del circuito nel
suo complesso, offrendo possibilità altrimenti difficilmente implementabili. Dall’altra parte, le
caratteristiche costruttive e la stessa elevata integrazione, offrono poche difese nei confronti di un
ambiente ostile come quello spaziale, limitandone l’affidabilità e di conseguenza la diffusione in
sistemi cruciali. Nonostante questo, anche le agenzie spaziali stanno iniziando, seppur a livello
sperimentale, ad interessarsi a questo tipo di sistemi2.
I.3: Identificazione delle soluzioni tecnologiche da adottare
Partendo dallo scenario delineato dallo studio precedentemente descritto, sono state effettuate le
seguenti scelte:
-
Sistema di controllo magnetico: invece di affidarsi a bobine avvolte su strutture quadrate,
senza alcun tipo di nucleo ferromagnetico, è stato scelto di utilizzare magnetotorquer,
avvolti su nuclei ad alta permeabilità magnetica, in grado quindi di fornire un elevato campo
magnetico al loro interno e un sufficiente momento angolare tramite l’interazione con il
campo magnetico terrestre, mantenendo però pesi ed ingombri limitati e compresi all’interno
delle specifiche meccaniche precedentemente identificate;
Figura I.2: Magnetotorquer
1
Si veda ad esempio il sistema di controllo d’assetto ADACS prodotto da Pumpkin, di dimensioni 10x10x7,8cm, che
integra solo le ruote di momento e i magnetometri.
2
SuitSat1: http://www.amsat.org/amsat-new/articles/BauerSuitsat/index.php
SuitSat2: http://science.nasa.gov/science-news/science-at-nasa/2006/26jan_suitsat/
8
-
Sistema di controllo meccanico: utilizzando dei motori brushless ad elevate prestazioni ed
estremamente sottili, si è deciso di dotare il sistema di tre ruote di momento in gradi di
permettere al satellite di ruotare indipendentemente sui tre assi. Le tre ruote saranno
disegnate in modo da essere contenute all’interno delle facce del sistema di controllo, in
modo da ottenere un sistema estremamente compatto;
Figura I.3: Micromotori brushless
-
Elettronica di controllo: l’elettronica di controllo sarà basata su un microcontrollore della
famiglia dei dsPIC della Microchip, che integrerà tutte le periferiche e le funzionalità
necessarie. Il sistema sarà in grado di comunicare verso l’esterno tramite collegamento
seriale, gestire il controller dei magnetotorquer e dei motori tramite segnali PWM ed
effettuare le letture dalla scheda dei sensori. Particolare attenzione sarà data alla
compatibilità del sistema con l’ambiente spaziale, tramite lo sviluppo di un eventuale
controller esterno basato sullo stesso tipo di tecnologia ma dotato di soluzioni che gli
permettano di raggiungere un sufficiente grado di tolleranza ai guasti.
I.4: Linee guida del progetto
Una volta identificate le soluzioni tecnologiche adatte per implementare i sistemi richiesti, prima di
poter procedere con la stesura del progetto, è stato necessario identificare alcune grandezze di
partenza per poter effettuare un primo dimensionamento dei dispositivi e fissare dei margini entro
cui muoversi.
In particolare, oltre alle specifiche già discusse in precedenza, per il dimensionamento dei
sottosistemi si dovrà considerare, come sistema medio su cui dovrà operare il dispositivo, un
satellite caratterizzato da un momento d’inerzia pari a 0.01 Kgm2 uguale su tutti tre gli assi di
rotazione.
9
Per quel che riguarda il consumo, il sistema dovrà mantenersi ovviamente il più basso possibile. È
stato fissato un limite superiore di 100mW per ogni sottosistema, in modo da avere un riferimento
in fase di dimensionamento.
I tempi di smorzamento delle velocità angolari impressi al rilascio del satellite non sono stati
considerati una grandezza critica, ma in ogni caso da minimizzare il più possibile mantenendosi
all’interno dei limiti di consumo sopra specificati.
Come detto, le dimensioni ideali della struttura dovranno essere di 50x50x50mm, mantenendo
comunque l’ingombro complessivo in ogni caso al di sotto di 55x55x55mm.
Fissati tutti questi pre-requisiti, si è proceduto ad una fase di simulazioni teoriche che hanno
permesso di ricavare il dimensionamento ottimale dei sottosistemi, verificarne le loro performance e
limitazioni e testare i sistemi di controllo identificati.
10
Capitolo II: Simulazioni numeriche
In questa fase del progetto, un modello matematico implementato in Matlab ha permesso di
effettuare un dimensionamento dei magnetotorquer da impiegare nel sistema, valutandone le
caratteristiche minime, le prestazioni e le limitazioni.
Grazie a questo studio, sono state poi identificate le soluzioni commerciali che più si avvicinavano
ai valori richiesti; nuovamente, le simulazioni sono state utilizzate per verificarne le reali
performance.
Una successiva serie di simulazioni ha poi permesso di valutare il comportamento del sistema così
tracciato in presenza di disturbi sulla parte sensoristica, potendo così stimare l’efficacia delle leggi
utilizzate nelle reali situazioni di funzionamento.
II.1: Modello utilizzato
Per poter studiare gli effetti di attuatori posti su un satellite in orbita, è necessario disporre di un
modello matematico del satellite che contenga gli effetti di tali attuatori, propagando nel tempo il
suo stato e ricavando tutte le grandezze necessarie.
In una rotazione, gli angoli di Eulero (φ, θ, ψ) sono definiti dalle rotazioni, rispettivamente, attorno
agli assi i, j e k. Date le possibili combinazioni di rotazioni attorno a questi assi, esistono 12 distinte
rappresentazioni della matrice di rotazione di Eulero, dipendendo dagli assi attorno ai quali si
eseguono le rotazioni in un determinato ordine.
Per implementare il propagatore si è scelto di utilizzare la rotazione denominata 3-1-3, tipicamente
utilizzata in letteratura.
Il programma inizia definendo le condizioni iniziali: gli angoli tra il riferimento inerziale e il
riferimento del corpo, le velocità di rotazione e le velocità di traslazione iniziali, la distanza dal
centro della terra e il tempo di durata della simulazione.
Per quel che riguarda lo stato iniziale delle velocità angolari, si è considerato un modulo pari a 5
rotazioni al minuto orientato casualmente. Tramite la generazioni di due valori casuali vengono
quindi determinate due delle tre componenti angolari del vettore; la terza viene ricavata per
differenza partendo dal modulo. In questo modo, ogni simulazione avrà una condizione di partenza
diversa dalle altre, garantendo la validità delle differenze sequenze di test.
11
L’orbita scelta per comodità è di tipo polare, inclinata di 45º e, per semplicità, il campo magnetico è
considerato di tipo dipolare.
La combinazione risultata essere più vantaggiosa risultante da simulazioni preliminari è
caratterizzata da 500 spire e da un nucleo con permeabilità magnetica relativa pari a 2300.
A questo punto, tramite le funzioni di risoluzione numerica di equazioni differenziali di Matlab,
viene propagato lo stato del satellite.
I nuovi dati risultanti saranno poi le condizioni iniziali del passo successivo.
II.2: Magnetotorquer
In questa prima fase ci si è limitati allo studio del comportamento del sistema di magnetotorquer,
che rappresenta anche la parte più complessa dal punto di vista del sistema di controllo, lasciando
per ultimo il test sull’efficacia delle ruote di momento, su cui era possibile agire con un numero
estremamente limitato di parametri.
Per le bobine è stato quindi scelto un diametro ideale del filo, da cui si è ricavata la resistenza
specifica. Utilizzando un diametro standard di nuclei ferromagnetici disponibili in commercio, si è
quindi calcolato il numero di strati e la lunghezza di filo per ottenerli per un numero prefissato di
spire, cercando un compromesso tra efficacia del magnetotorquer, dimensioni, peso e requisiti
elettrici. Variando la permeabilità magnetica del nucleo è stato possibile aggiungere una ulteriore
variabile al sistema.
La legge di controllo che si è deciso di utilizzare è la cosiddetta -B·.
Il nome deriva dal fatto che, per determinare il campo magnetico da generare in ogni bobina, viene
considerata la variazione del campo magnetico rilevata sugli assi perpendicolari alla bobina stessa,
ossia la derivata, da cui il nome.
Infatti, se si considera un corpo in rotazione attorno all’asse Z, dotato di una bobina allineata lungo
l’asse X e di un magnetometro lungo lo stesso asse, quest’ultimo misurerebbe un campo magnetico
Bx.
In particolare, si otterrà che:
Bx  B0 cos  z t
Di conseguenza, data la decisione di generare un campo magnetico proporzionale alla derivata del
campo magnetico rilevato, risulta che:
M x   B0 z sin  z t  kBx'
12
Il vettore risultante
 
M B
sarà un vettore orientato lungo l’asse Z, di modulo pari a MxBy.
Analogamente per l’asse Y, si ricava che il modulo del vettore risultante sarà pari a –MyBx.
Ossia, sommando i due contributi:
Tz  M x B y  M y Bx
Lo stesso procedimento è ripetibile per gli altri assi di rotazione.
La legge può essere implementata in due modi diversi: proporzionale o così detta Bang-Bang.
Nel caso proporzionale, il campo magnetico generato dai magnetotorquer varia in maniera lineare
adattandosi alla derivata del campo magnetico rilevato. Al contrario, nel caso Bang-Bang, gli
attuatori vengono accesi alla massima potenza facendo scorrere la corrente in un verso o nell’altro,
ottenendo sempre la coppia massima.
Dato che questa soluzione è un caso particolare della versione proporzionale, si è scelto di
implementare quest’ultima e poi valutare successivamente il suo comportamento rispetto all’altra
variante.
Dalle osservazioni svolte su simulazioni preliminari, è stato determinato un valore di k da inserire
nella simulazione.
Questo parametro rappresenta il guadagno della correzione e, in termini concreti, rappresenta
l’amplificazione in corrente delle misure ricavate dai magnetometri di bordo. Il valore di questo
parametro è importante sotto vari aspetti: in primo luogo, non deve essere troppo basso per poter
permettere di sfruttare il massimo valore di campo magnetico generato dalle bobine, evitando tempi
troppo lunghi di smorzamento; d’altra parte, un valore di k troppo alto porterebbe ad una
saturazione costante delle bobine e a possibili oscillazioni tanto nel sistema di controllo quanto nel
sistema fisico stesso, attuando correzioni troppo brusche.
Un valore di k adeguato è quindi quello che permette di sfruttare a pieno gli attuatori nella prima
fase di smorzamento, mantenendo però la corrente ad un valore accettabile quando le velocità
angolari sono state in parte assorbite.
È da notare, infine, che questo scenario corrisponde all’attuazione della legge di controllo nella sua
variante Bang-Bang per le prime fasi, riportandosi poi a puramente proporzionale nella parte
restante del controllo.
Per verificare come le varie condizioni imposte da un sistema reale possano condizionare i risultati
della simulazione, si è scelto di procedere per passi successivi: prima la simulazione è stata svolta in
condizioni ideali, senza nessun tipo di limitazione imposta dai dispositivi impiegati; poi è stata
effettuata una nuova serie di simulazioni introducendo limitazioni sulla corrente e discretizzando le
13
grandezze, come avviene in qualunque sistema digitale; infine, è stato introdotto il rumore nel
sistema.
I paragrafi seguenti mostrano i risultati di dette campagne di simulazione.
II.3: Risultati delle prime simulazioni
Come detto, il primo set di simulazioni effettuate è stato caratterizzato dai seguenti punti:
-
la corrente che percorre i magnetotorquer è stata limitata a 50mA per ciascun attuatore, per
avere un consumo di potenza limitato ed inserire un valore compatibile con le caratteristiche
elettriche identificate in fase preliminare, in particolare per quello che riguarda le resistenze
in gioco;
-
il tempo di simulazione è stato impostato pari a 60 orbite, per dare un tempo sufficiente al
sistema di controllo di stabilizzare l’orbita senza eccedere nella lunghezza delle simulazioni;
-
un modulo del vettore della velocità angolare iniziale pari a 5 rotazioni al minuto, un valore
abbastanza realistico per il tipo di applicazioni in studio;
-
magnetotorquer caratterizzati da 500 spire disposte su tre strati, avvolte su un nucleo di
materiale ferromagnetico caratterizzato da una permeabilità relativa pari a 2400;
-
legge di controllo degli attuatori magnetici -B·, caratterizzata da una costante k pari a 5*106;
-
momenti d’inerzia del satellite uguali su tutti tre gli assi e pari a 0.01Kgm2.
Ulteriori dettagli relativi al realismo della simulazione in questa fase sono stati omessi, in quanto lo
scopo che si vuole raggiungere è la verifica della capacità del sistema di assorbire la velocità
angolare iniziale in tempi ragionevoli.
Questa prima fase ha previsto lo svolgimento di 298 simulazioni.
Le condizioni iniziali sono state generate in maniera casuale in tutte le simulazioni: una volta fissato
il modulo della velocità angolare iniziale, le prime due componenti sono state ricavate in maniera
casuale, mentre la terza è stata ottenuta per differenza. Matlab ha mostrato di possedere alcune
limitazioni per la generazione di numeri random, in particolare la funzione rand mostra un
comportamento pseudorandom, dato che in alcune circostanze restituisce la stessa sequenza di
valori: la funzione di generazione delle condizioni iniziali è stata adattata in modo da tenerne conto,
garantendo valori sempre diversi. Questo problema, tuttavia, ha permesso di verificare il
determinismo della simulazione sviluppata: ad uguali condizioni iniziali, si è sempre ottenuto lo
stesso risultato.
14
I grafici in figura II.1 mostrano la distribuzione delle condizioni iniziali per le simulazioni:
70
70
120
60
60
100
50
50
80
40
40
60
30
30
20
20
10
10
40
0
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
Distribuzione p iniziale
0.3
0.4
0.5
0
20
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
Distribuzione q iniziale
0.3
0.4
0.5
0
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
Distribuzione r iniziale
0.3
0.4
0.5
Figura II.1: Distribuzione delle condizioni iniziali delle simulazioni
Prendendo quindi come esempio del tutto generico i risultati di una qualunque delle simulazioni, di
seguito si commenta l’andamento delle varie grandezze significative.
In primo luogo, è interessante notare l’andamento delle velocità angolari lungo il tempo dell’orbita:
p
p [rad/s]
0.2
0
-0.2
0
1000
2000
0
1000
2000
0
1000
2000
3000
t
q
4000
5000
6000
3000
4000
t
Velocità angolari in riferimento corpo
5000
6000
5000
6000
q [rad/s]
0
-0.5
-1
r [rad/s]
0.2
0
-0.2
3000
t
4000
Figura II.2: Andamento delle velocità angolari durante una simulazione
L’asse x riporta il tempo della simulazione, mentre gli assi y riportano p, q ed r in rad/sec, ossia le
velocità angolari sui tre assi del satellite. L’immagine riporta solo la parte iniziale della
simulazione, in quanto durante tutto il resto delle orbite simulate non avvengono cambiamenti.
Si può notare come la velocità finale non sia pari a zero: questo fatto non deve stupire, perché il
satellite si muove all’interno del campo magnetico, che a sua volta ruota.
15
Il punto di partenza di queste velocità è quello ricavato tramite la generazione delle condizioni
iniziali descritta in precedenza. Come si vede chiaramente dai grafici, in una prima fase queste
velocità vengono rapidamente smorzate, per poi decrescere in maniera più graduale fino
sostanzialmente ad annullarsi circa a metà del tempo di simulazione.
Un chiarimento su questo tipo di comportamento viene dato dalla comparazione di questo grafico
con quello della corrente consumata dagli attuatori magnetici:
Corrente X
A
0.05
0
-0.05
0
5000
10000
15000
10000
15000
10000
15000
Corrente Y
A
0.05
0
-0.05
0
5000
Corrente Z
A
0.05
0
-0.05
0
5000
Figura II.3: Andamento della corrente durante una simulazione
Come si evince dalla figura II.33, la fase di rapido smorzamento delle velocità angolari corrisponde
alla fase in cui le rapide variazioni del campo magnetico registrate dal satellite, unite all’ampiezza
della costante k scelta per la legge di controllo, portano la corrente a raggiungere il valore massimo,
saturando così le bobine. In questa fase, la legge di controllo si comporta nello stesso modo
descritto dalla sua variante chiamata Bang-Bang, imponendo la corrente massima in un senso o
nell’altro a seconda del verso della variazione del campo magnetico.
3
Mentre l’asse Y riporta chiaramente il valore della corrente in A, l’asse X non rappresenta il tempo, come succedeva
nel grafico precedente, ma il numero di risultati restituiti dalla funzione di Matlab per la risoluzione delle equazioni
differenziali, che non corrispondono ad intervalli di tempo uniformi. In altre parole, se l’inizio e la fine del grafico
coincidono con il tempo iniziale e finale della simulazione, questo non è vero per i punti intermedi: con la diminuzione
delle velocità angolari e la riduzione della forza esercitata dal sistema di controllo, la simulazione tende a considerare
intervalli di tempo sempre più ampi tra una soluzione e la successiva, arrivando al punto da saltare in un solo passaggio
dal momento in cui si annullano le velocità angolari al tempo finale della simulazione. Questo comporta una distorsione
del grafico delle correnti, che deve essere interpretato in maniera corretta per non cadere in equivoci.
16
Con il passare del tempo, la diminuzione delle velocità angolari porta alla diminuzione della
derivata del campo magnetico, diminuendo di conseguenza la corrente che percorre le bobine. In
questa seconda fase, avviene lo smorzamento più lento delle velocità angolari.
Tramite l’analisi di questo grafico diventa anche più chiaro determinare se le velocità siano state
annullate realmente o meno: come si vede, una quantità di corrente residua passa sempre nelle
bobine. Questo è dovuto a due fattori: in primo luogo, il raggiungimento di una posizione di quiete
assoluta è asintotico, in quanto in questa simulazione ideale la forza applicata dal sistema è
proporzionale all’ampiezza delle variazioni di B registrate, e di conseguenza al diminuire di queste,
diminuirà anche la forza del controllo; in secondo luogo, la stessa rotazione del satellite attorno alla
Terra porta ad una variazione del campo magnetico che tende ad essere compensata dal sistema.
Interessante è anche notare l’andamento della potenza istantanea consumata dai magnetotorquer,
mostrata nel grafico seguente:
Potenza complessiva impiegata
0.07
0.06
0.05
W
0.04
0.03
0.02
0.01
0
0
200
400
600
Sample
800
1000
Figura II.4: Potenza impiegata durante una simulazione
Dopo un picco iniziale, limitato a 70mW nel caso delle tre bobine accese contemporaneamente al
massimo della corrente, la potenza decresce rapidamente fino ad essere dell’ordine del milliwatt già
nella prima metà del tempo di simulazione.
In base a quanto detto, per determinare il tempo di smorzamento delle velocità angolari, non era
necessario considerare il momento in cui fossero andate stabilmente a zero. Per questo, è stato
17
scelto di considerare il tempo dopo il quale tutte tre le velocità angolari fossero state ridotte al di
sotto di una soglia prefissata, scelta nel 5% della minima velocità angolare iniziale.
Mediando i risultati ottenuti per tutte le simulazioni, è stato determinato che il sistema fosse in
grado di assorbire le velocità angolari impresse al momento della separazione dal vettore –secondo
la definizione appena data- mediamente in circa 6074 secondi.
II.4: Simulazioni dell’effetto del rumore sul sistema di controllo
I risultati ottenuti con il primo set di simulazioni non hanno reso necessarie modifiche nei parametri
del sistema di controllo. Le bobine, con le spire e il nucleo stabiliti, hanno dimostrato di essere
sufficienti per smorzare le velocità angolari in un tempo adeguato, mentre la costante della legge di
controllo è stata calibrata in maniera equilibrata.
Il passaggio successivo è stato quindi quello di introdurre alcuni aspetti nella simulazione per
aumentarne il realismo.
In particolare, porre un limite minimo alla corrente imposta sulle bobine ed introdurre una sorgente
di rumore all’interno del sistema di controllo.
Per quel che riguarda il limite minimo della corrente, le ragioni derivano dal fatto che il sistema sarà
controllato in maniera digitale e, di conseguenza, ogni valore di corrente dovrà essere un multiplo di
una unità minima. In questo caso, semplicemente, si è considerato un sistema a 12 bit, comune alla
maggior parte delle famiglie di microcontrollori che si è presa in considerazione per
l’implementazione del sistema, e si è stabilito come valore minimo della corrente:
Imin=60*10-3/4096
ossia, considerando 60mA come corrente massima assoluta imponibile con 12 bit, il valore
corrispondente ad “1”.
Discorso più complesso merita la caratterizzazione del rumore.
Data la scelta di integrare all’interno del sistema di controllo anche la parte sensoristica, si è cercato
una soluzione integrata che incorporasse i magnetometri e che potesse facilmente essere
interfacciata con il microcontrollore.
Sono stati scelti a questo scopo i sensori magnetici HMC1021 e HMC1022, prodotti dalla
Honeywell, capaci di operare su un ampio intervallo di campi magnetici, con una uscita analogica e
dal guadagno regolabile.
18
La documentazione a disposizione riporta la densità spettrale che caratterizza questo tipo di
sensori4, permettendo di ricavare il valore picco-picco del rumore bianco in un intervallo di banda
desiderato.
In questo modo, conoscendo le specifiche del campo magnetico che si andranno a misurare, le
specifiche elettriche e avendo una stima delle frequenze di campionamento, è stato possibile
modellare un rumore bianco caratteristico di questi sensori all’interno della simulazione di Matlab.
Accanto a questo, è stata presa in considerazione anche una ulteriore fonte di rumore nelle letture
effettuate, ossia l’incertezza della lettura del convertitore analogico-digitale. A causa della sua
implementazione, un convertitore AD ha sempre una incertezza sull’ultima cifra, che porta ad una
variazione di un bit nella lettura. Accanto quindi alla sorgente di rumore bianco è stato considerato
anche questo effetto, introducendo una variazione casuale pari all’ampiezza di un bit all’interno
della lettura che viene passata alla legge di controllo.
I risultati delle simulazioni effettuate sono stati soddisfacenti.
La variazione della velocità angolare, mostrata in figura II.5, non è stata regolare come nel caso
precedente, e ha comportato un aumento dei tempi di smorzamento delle velocità angolari iniziali.
p
p [rad/s]
0.5
0
-0.5
0
0.5
1
1.5
2
t
4
x 10
q
q [rad/s]
0
-0.2
-0.4
0
0.5
1
1.5
2
t
4
x 10
Velocità angolari in riferimento corpo
r [rad/s]
0.2
0
-0.2
0
0.5
1
1.5
2
t
4
x 10
Figura II.5: Andamento delle velocità angolari durante una simulazione
Abbastanza diverso dal caso precedente, è stato anche il comportamento della corrente, che ha
mostrato oscillazioni molto più ampie, dovute al fatto che, più il campo magnetico riduceva le sue
variazioni, più pesavano sulla lettura le variazioni dovute al rumore sulla lettura.
4
HMC1001/1002/1021/1022 Datasheet, pag. 7 e ss.
19
Corrente X
0.05
A
0
-0.05
0
0.5
1
1.5
2
2.5
3
4
x 10
Corrente Y
0.05
A
0
-0.05
0
0.5
1
1.5
2
2.5
3
4
x 10
Corrente Z
0.05
A
0
-0.05
0
0.5
1
1.5
2
2.5
3
4
x 10
Figura II.6: Andamento della corrente durante una simulazione
Si nota, comunque, che l’introduzione di una corrente minima al di sotto della quale non è possibile
andare comporta la cessazione del controllo raggiunta una sufficiente attenuazione delle velocità
angolari.
Potenza complessiva impiegata
0.07
0.06
0.05
W
0.04
0.03
0.02
0.01
0
0
5000
10000
Figura II.7: Andamento della potenza durante una simulazione
20
15000
L’introduzione
del
rumore
comporta
un
aumento
della
potenza
impiegata
a
causa
dell’allungamento, seppur limitato, dei tempi necessari per raggiungere il termine della fase di
controllo.
Questi risultati indicano la probabile necessità di inserire un filtraggio software nelle letture in fase
di implementazione delle routine di lettura dei valori del campo magnetico, per cercare di mediare e
quindi attenuare gli effetti dovuti all’incertezza intrinseca del sistema di acquisizione e del rumore.
È stato quindi svolto lo stesso tipo di studio del caso precedente sul tempo di smorzamento
considerando il 5% della velocità minima iniziale come limite, ottenendo come risultato un valore
medio di circa 7270 secondi, con un prevedibile leggero peggioramento delle prestazioni, senza con
questo inficiare la funzionalità del sistema.
II.5: Simulazioni con grandezze discrete
Una ulteriore maniera per aumentare il realismo della simulazione è quello di considerare grandezze
discrete invece che continue.
Per la stessa natura digitale del sistema di controllo, i valori delle correnti e le letture del campo
magnetico non saranno continui, ma multipli di valori discreti.
Per verificare l’impatto di questa caratteristica sul sistema di controllo, la simulazione è stata
modificata per tenerla in conto.
Tutte le variabili sono state quindi digitalizzate considerando una risoluzione di 12 bit per l’ADC e
per le correnti, in base alle stesse considerazioni esposte nel paragrafo precedente.
I risultati non hanno mostrato particolari cambiamenti. Nelle simulazioni, si nota una leggera
irregolarità nell’andamento delle velocità angolari all’inizio:
21
p
p [rad/s]
0.5
0
-0.5
0
0.5
1
1.5
2
t
4
x 10
q
q [rad/s]
0.2
0
-0.2
0
0.5
1
1.5
2
t
4
x 10
Velocità angolari in riferimento corpo
r [rad/s]
1
0.5
0
-0.5
0
0.5
1
1.5
2
t
4
x 10
Figura II.8: Andamento delle velocità angolari durante una simulazione
Si nota invece un andamento abbastanza diverso nelle correnti, rispetto ai casi precedenti:
Corrente X
A
0.05
0
-0.05
0
1
2
3
4
5
6
4
x 10
Corrente Y
A
0.05
0
-0.05
0
1
2
3
4
5
6
4
x 10
Corrente Z
S
0.05
0
-0.05
0
1
2
3
4
5
6
4
x 10
Figura II.8: Andamento delle correnti durante una simulazione
22
Un dettaglio del grafico delle correnti mostra l’effetto della discretizzazione sul controllo:
-3
8
Corrente X
x 10
6
4
A
2
0
-2
-4
-6
-8
1.519
1.52
1.521
1.522
1.523
1.524
1.525
1.526
1.527
1.528
4
x 10
Figura II.9: Dettaglio dell’andamento delle correnti per il caso discretizzato
Come si vede chiaramente dalla figura II.9, i valori assunti dalle correnti non sono continui ma
procedono a salti, ognuno dei quali rappresenta un bit di risoluzione.
Applicando gli stessi criteri per ricavare un tempo di assestamento del sistema a queste simulazioni,
si è ottenuto un tempo medio di assorbimento delle velocità angolari iniziali pari a 7826 secondi,
con un ulteriore aumento rispetto al caso precedente, mantenendo comunque intatta la funzionalità
del sistema. La distribuzione dei risultati finali è mostrata in figura II.10:
50
45
40
#Occorrenze
35
30
25
20
15
10
5
0
-0.5
0
0.5
1
1.5
2
s
2.5
3
3.5
4
4.5
4
x 10
Figura II.10: Distribuzione dei tempi di smorzamento al termine della campagna di simulazioni
23
Nel grafico si notano alcuni campioni distribuiti al di fuori del gruppo principale, corrispondenti a
simulazioni che hanno impiegato più tempo rispetto alle altre per convergere secondo i parametri
che sono stati fissati. Questi casi, in realtà, non corrispondono a situazioni in cui il sistema di
controllo non ha funzionato, bensì a simulazioni in cui almeno una delle componenti delle velocità
iniziali era molto vicina allo zero. Bisogna ricordare, infatti, che è stato scelto come parametro per
determinare il tempo di smorzamento delle velocità iniziali il tempo necessario al sistema per
portare tutte le componenti al di sotto del 5% della più piccola: nel caso in cui una di queste fosse
vicina allo zero, risulta impossibile per il sistema di controllo ridurla ulteriormente, essendo limitato
dalla velocità di rotazione del satellite attorno alla terra e dalla conseguente rotazione del campo
magnetico.
II.6: Considerazioni finali sulle simulazioni dei magnetotorquer
In conclusione, le simulazioni relative al sistema di controllo magnetico hanno mostrato la buona
capacità del sistema che è stato delineato di attenuare le velocità angolari iniziali impresse al
satellite in un tempo finito e ragionevolmente breve.
Le performance che si evincono da queste simulazioni chiaramente peggiorano man mano che si
inseriscono fattori di disturbo e limitazioni, dalla presenza di rumore alla digitalizzazione delle
variabili, restando tuttavia all’interno di margini accettabili.
È stata inoltre scartata la possibilità di limitare il verso di scorrimento della corrente all’interno
degli attuatori magnetici, poiché le simulazioni mostravano l’incapacità del sistema di raggiungere
uno stato di equilibrio nei tempi massimi impostati.
Visto l’esito delle simulazioni, si sono quindi validati i parametri fisici dei magnetotorquer per poter
iniziare lo sviluppo dell’elettronica di controllo.
II.7: Simulazione delle ruote di momento
Se da una parte il sistema di controllo magnetico dovrà entrare in azione durante le prime orbite del
satellite, quando il rilascio dal vettore imprime una velocità di rotazione casuale al sistema, le ruote
di momento svolgono una funzione molto diversa.
24
Una volta infatti che il satellite si sia stabilizzato e le perturbazioni iniziali siano state assorbite, le
manovre orbitali saranno effettuate tramite le ruote di momento.
Mettendo in rotazione una ruota, questa accumula momento angolare; per il principio di azione e
reazione, il supporto a cui si trova vincolata riceverà una rotazione in verso opposto e inversamente
proporzionale alla sua inerzia.
Per far ruotare quindi un satellite attorno ad un suo asse, sarà sufficiente mettere in moto la ruota
corrispondente: durante la fase di accelerazione, il satellite comincerà a ruotare in senso opposto
alla ruota con una accelerazione pari alla coppia data dal motore divisa per il momento d’inerzia del
satellite stesso intorno all’asse di rotazione. Mantenendo la ruota ad una velocità fissa, la rotazione
del satellite proseguirà in maniera costante. Infine, decelerando la ruota fino a riportarla a velocità
nulla, il satellite decelererà ugualmente fino a fermarsi.
Per poter effettuare una simulazione di questa manovra è stato necessario disporre di un primo
modello della ruota da applicare al motore per poterne calcolare il momento d’inerzia.
A causa delle forti limitazioni di tipo dimensionale e strutturale, la scelta di un disco con una corona
circolare di spessore maggiore all’esterno è stata praticamente obbligata.
Dopo aver disegnato una ruota che fosse compatibile con i requisiti di dimensioni richiesti, è stato
utilizzato il programma CATIA per calcolarne le caratteristiche fisiche:
Figura II.11: Caratteristiche della ruota di momento calcolate tramite il programma CATIA
25
Il momento d’inerzia risultante per l’asse di rotazione è pari a 1.335*10-6Kgm2, per una ruota
costruita in alluminio.
Continuando a considerare i momenti d’inerzia del satellite pari a 0.01 Kgm2 come fatto finora, si è
sviluppato un programma Matlab che simulasse una operazione di rotazione attorno ad un asse.
Inserendo l’angolo di rotazione desiderato, viene calcolato il profilo di velocità della ruota, del
satellite e l’angolo raggiunto.
Per esempio, richiedendo una rotazione di 2π radianti, la figura seguente mostra i risultati.
Rotazione
rad
0
-5
-10
0
5
10
15
20
25
30
35
40
45
25
30
35
40
45
25
30
35
40
45
t
V-Ruota
[rad/s]
4000
2000
0
0
5
10
15
20
t
V-Sat
[rad/s]
0.5
0
-0.5
0
5
10
15
20
t
Figura II.12: Risultato delle simulazioni di una manovra effettuata tramite la ruota di momento
senza saturazione della stessa
In un tempo di poco meno di 45 secondi, con una coppia massima fornita dal motore di
0.000124Nm, la ruota viene portata ad una velocità di 2000rad/sec per poi tornarsi a fermare,
mentre il satellite raggiunge una velocità angolare di circa 0.25rad/sec.
Questa simulazione mostra chiaramente la capacità della sistema di manovra di agire sul satellite in
tempi brevi e con buone performance, lasciando un buon margine di manovra.
Nel caso in cui la rotazione richiesta superi quella raggiungibile prima della saturazione della ruota,
per esempio limitando la velocità massima raggiungibile ad un valore inferiore a quanto fatto
finora, invece, il comportamento è quello mostrato in figura II.13.
26
Rotazione
rad
0
-5
-10
0
10
20
30
t
V-Ruota
40
50
60
0
10
20
30
t
V-Sat
40
50
60
0
10
20
30
t
40
50
60
[rad/s]
2000
1000
0
[rad/s]
0.2
0
-0.2
Figura II.13: Risultato delle simulazioni di una manovra effettuata tramite la ruota di momento con
la saturazione della stessa a 1000 giri al minuto
In questo caso, la velocità di rotazione della ruota è stata limitata a 1000rad/sec. La ruota accelera
fino ad raggiungere la sua velocità massima possibile, quindi mantiene la velocità costante. In
questa fase la rotazione del satellite avviene a velocità costante, fino al momento in cui la ruota
ricomincia a decelerare per fermarsi.
In conclusione, la ruota così dimensionata si è rivelata capace di soddisfare pienamente le necessità
del sistema di controllo e potrà essere implementata senza modifiche.
27
Capitolo III: Soluzioni identificate dalle simulazioni teoriche
Nel presente capitolo sono riassunte le caratteristiche dei sistemi di controllo emerse dalle
simulazioni teoriche riportate in precedenza, descrivendo inoltre le caratteristiche tecniche dei
relativi circuiti di pilotaggio che si evincono da esse.
III.1: Magnetotorquer, caratteristiche fisiche
In base ai risultati ottenuti in fase di test, le seguenti caratteristiche sono state fissate per i
magnetotorquer:
-
Diametro del nucleo: 6mm
-
Lunghezza del nucleo: 45mm
-
Diametro del filo degli avvolgimenti: 0.239mm
-
Resistenza specifica del filo: 0.5441Ω/m
-
Resistenza dell’avvolgimento: ~9.2 Ω
-
Numero di spire: 500
-
Lunghezza dell’avvolgimento: 40mm
-
Permeabilità magnetica del nucleo: 2300
-
Corrente massima: 50mA
Figura III.1: Magnetotorquer realizzati
28
La figura III.1 mostra un primo set di magnetotorquer prodotti da impiegare nel prototipo del
sistema di controllo.
III.2: Magnetotorquer, requisiti del sistema di controllo
Dalle caratteristiche precedentemente esposte, emergono i primi requisiti sul sistema di controllo
delle bobine.
Innanzitutto si può osservare che la combinazione tra la corrente massima, pari a 50mA, e la
resistenza media degli avvolgimenti, pari a circa 9.2 Ω, comporta una tensione minima di lavoro
estremamente ridotta, nell’ordine dei 500mV. Questo significa che fondamentalmente qualunque
tipo di tensione di alimentazione e di sistema di controllo della stessa saranno adatti allo scopo.
D’altra parte, la ridotta corrente permette l’utilizzo di un sistema di regolazione di tipo lineare senza
compromettere l’efficienza energetica del circuito stesso.
Questo comporta l’ulteriore vantaggio di evitare circuiti di commutazione all’interno di questo
sottosistema, che avrebbero potuto generare disturbi accoppiati ai magnetotorquer.
Durante le simulazioni teoriche è stata confermata la necessità di permettere lo scorrimento della
corrente in entrambi i sensi. Di conseguenza, il circuito dovrà essere dotato di una sezione capace di
invertire i collegamenti del carico oppure di applicare una tensione negativa e una positiva.
Nonostante la prima soluzione comporti una maggiore complessità circuitale, la necessità di una
sola alimentazione rende il sistema estremamente più flessibile rispetto all’alternativa. Per questa
ragione, si è deciso di seguire questa strada durante l’implementazione, utilizzando un sistema
simile a quello utilizzato per la realizzazione delle bobine di Helmotz utilizzabili per la fase di test5.
III.3: Ruota di momento, caratteristiche fisiche
Essendo l’intero progetto estremamente limitato nelle dimensioni fisiche, sono state identificate le
seguenti caratteristiche per le ruote di momento, senza praticamente la possibilità di modifiche:
-
Diametro della ruota: 19,5mm
-
Spessore della corona esterna: 3mm
-
Larghezza della corona esterna: 4mm
-
Spessore del piano centrale: 1mm
5
Design, Manufacturing and Test of a Real Time Three-Axis Magnetic Field Simulator, Fabrizio Piergentili, Gian Paolo
Candini e Marco Zannoni, IEEE Transactions on Aerospace and Electronic Systems, 12/2007
29
-
Materiale: alluminio
Il motore da abbinare alla ruota è stato scelto in base a due requisiti: che fosse di tecnologia
brushless e che fosse estremamente sottile.
In base a queste caratteristiche, la scelta quasi obbligata è caduta su un modello prodotto dalla
tedesca Faulhaber, basato nella tecnologia Penny-Motor, la cui struttura è mostrata in figura III.26.
Si tratta di un tipo di motore brushless estremamente sottile, dallo spessore di soli 2mm. Dai dati
forniti dal produttore, risulta che sia dotato di una coppia massima di 0.16mNm e di una velocità
massima in assenza di carico di più di 41000 rpm. La tensione di alimentazione è compresa tra 4 e
6V, rendendolo compatibile con una tensione di 5V utilizzabile per tutto il circuito di controllo.
Il consumo estremamente ridotto, di 0.902mNm/A, lo rende ottimo per i requisiti di basso consumo
comuni a tutti i sottosistemi del sistema di controllo.
Con un peso di un solo grammo e un diametro del rotore di 11mm si integra perfettamente nella
struttura meccanica.
Figura III.2: Schema meccanico dei micromotori brushless
Con queste caratteristiche, le simulazioni hanno dimostrato la capacità delle ruote di momento di far
realizzare ad un satellite su cui sia montato il sistema di controllo una rotazione su un proprio asse
6
Faulhaber Technical Information manual, pag. 21.
30
in tempi brevi e utilizzando sono una parte del potenziale della ruota di momento, evitandone la
saturazione.
III.4: Ruota di momento, requisiti del sistema di controllo
Per quel che riguarda il circuito di controllo della scheda, esso dovrà essere formato da una parte
capace di gestire adeguatamente i profili di velocità del motore in modo da ottimizzarne il
funzionamento e dall’altra dal driver di potenza vero e proprio.
Per quel che riguarda quest’ultimo, la stessa ditta che produce il motore fornisce un driver che può
essere facilmente integrato all’interno di altri circuiti. Si tratta di un piccolo circuito, mostrato in
figura III.37, compatibile con le dimensioni di uno zoccolo DIP8.
Figura III.3: Driver di potenza dei micromotori
Questo driver riceve in ingresso un segnale la cui polarità indica la direzione di rotazione, la
tensione di alimentazione degli avvolgimenti e un segnale la cui frequenza corrisponde alla
frequenza di rotazione del motore divisa per 4, ossia per il numero di coppie di avvolgimenti
presenti, e fornisce in uscita direttamente i collegamenti per le fasi del motore.
7
Faulhaber BLD05002S Operating Instructions
31
Di conseguenza, il circuito di controllo dovrà essere in grado di fornire un segnale ad onda quadra,
variabile in frequenza, per controllare la velocità di rotazione. Per fare questo si utilizzeranno delle
uscite PWM senza variare il duty cycle ma agendo solo sulla frequenza.
III.5: Test del motore della ruota di momento
Per poter effettuare una verifica pratica del funzionamento del motore, è stato acquistato lo starter
kit fornito dall’azienda, che comprende un esemplare del motore descritto precedentemente, il
relativo driver e una piccola scheda di interfaccia in grado sia di generare tutti i segnali necessari al
funzionamento del motore, sia di riceverli in ingresso per testare il comportamento del motore
controllandolo con una sorgente di segnale esterna.
Utilizzando questa seconda configurazione, è stato allestito un banco di prova per mettere in
funzione il motore e verificarne i limiti.
La scheda è stata alimentata a 4V, impostando la piena tensione di alimentazione agli avvolgimenti
del motore.
Per regolare la velocità di rotazione è stato poi collegato un generatore di funzioni.
Figura III.4: Test di funzionamento dei micromotori utilizzando la scheda di prova fornita dal
produttore
In figura III.4 è mostrato un momento dei test.
32
Nell’oscilloscopio è visibile il segnale di controllo inviato tramite il generatore di funzioni. Nella
foto di destra la frequenza mostrata è la massima che è stata possibile far raggiungere al motore.
È stato constatato durante i test che, affinché il motore compia una rotazione completa, sono
necessari 192 impulsi.
L’onda quadra nella velocità maggiore è stata generata ad una frequenza di 80KHz, il che comporta
una velocità di rotazione di circa 420 rotazioni al secondo, pari a più di 25000 giri al minuto, ossia
più di 2600 rad/sec.
Questo valore si è rivelato abbastanza inferiore al massimo teorico descritto nel datasheet, riportato
in figura III.5, tuttavia ancora sufficientemente alto relativamente ai valori raggiunti durante le
simulazioni di prova.
Come descritto nella simulazione del paragrafo II.8, infatti, la velocità di rotazione raggiunta per
una rotazione di 360º è stata pari a circa 2000 rad/sec, con un margine quindi di circa il 30% sulla
velocità massima raggiungibile. È da notare che la velocità massima raggiungibile in linea teorica
non dovrebbe cambiare aggiungendo un carico sul rotore, che dovrebbe comportare solo un
aumento dei tempi per raggiungere detta velocità.
Figura III.5: Caratteristiche della serie di micromotori
È stata valutata anche la capacità del motore di accelerare e decelerare senza perdere la
sincronizzazione con il segnale di controllo. In particolare, per quel che riguarda l’accelerazione, è
stato possibile raggiungere la velocità massima in tempi dell’ordine dei 5 secondi; la decelerazione,
invece, può considerarsi quasi istantanea. Questi valori sono da considerarsi ovviamente come
ideali, dato che sono stati ottenuti tramite prove senza carico e forniscono un limite superiore alle
performance ottenibili con i motori selezionati.
È importante notare che, con questo tipo di motore, se l’accelerazione supera il massimo consentito,
il motore perde la sincronizzazione con il campo magnetico generato dagli avvolgimenti e si ferma,
non riuscendo più a riportarsi alla velocità desiderata. Quest’aspetto è estremamente importante e
dovrà essere opportunamente tenuto in conto nel momento di implementare il controllo, lasciando
un ampio margine di sicurezza nel momento in cui si scelga il profilo di accelerazione.
33
Chiaramente, questi valori saranno da riconsiderare nel momento in cui si effettuino le prove con la
massa della ruota installata sul rotore, che limiterà l’accelerazione massima raggiungibile rispetto a
quanto faccia la massa del rotore stesso. In ogni caso, un modo per poter valutare se il motore abbia
perso o meno il sincronismo, può essere implementato tramite la lettura della corrente durante la
fase di accelerazione. In ogni caso, questa funzionalità verrà approfondita una volta che il motore
sia stato installato sulla struttura e collegato alla scheda di controllo.
Il consumo di corrente, infine, si è mantenuto estremamente basso durante tutto il test, senza
variazioni significative durante la messa in movimento del motore, dovuto principalmente al
consumo della scheda di test. Anche in questo caso è plausibile aspettarsi un cambiamento sensibile
nel momento in cui si effettuino le prove con la ruota installata.
34
Capitolo IV: Struttura meccanica
Nel presente capitolo si descrive la progettazione della struttura meccanica che alloggerà il sistema
di controllo d’assetto. Sono brevemente descritti i requisiti strutturali e i principi adottati. Segue la
descrizione della realizzazione di un primo prototipo, il miglioramento della struttura e le
simulazioni numeriche effettuate su di essa. La realizzazione dei pezzi in alluminio completa questa
fase del lavoro.
IV.1: Requisiti di progetto per la struttura meccanica
La struttura che andrà a formare il sistema di controllo, oltre a dover alloggiare l’elettronica, dovrà
dare supporto ai magnetotorquer e alle ruote di momento. E’ importante che la struttura possa
alloggiare tutte le parti necessarie permettendo comunque in qualunque momento la loro rimozione,
nel caso sia necessario sostituire qualche sistema o ispezionare le parti interne.
Per quel che riguarda i magnetotorquer, questi devono essere installati su tre assi perpendicolari del
sistema di controllo. Data la necessità di installarli all’interno della struttura, è opportuno che siano
montati con uno spigolo in comune in modo da ridurre al minimo lo spazio tolto alle schede
elettroniche.
I motori e le rispettive ruote, invece, devono essere montati all’esterno della struttura: date le ridotte
dimensioni dell’albero motore non è possibile montare il rotore all’interno e la ruota all’esterno, ma
deve essere disposto tutto sullo stesso lato. Il superamento delle misure di riferimento, ossia
50x50x50mm, deve essere evitato dove possibile: di conseguenza, si dovrà prevedere una rientranza
nelle facce che sosterranno le ruote di momento in modo da contenerne la sporgenza.
Ovviamente, la struttura dovrà alloggiare anche l’elettronica. I pezzi saranno realizzati in alluminio,
per cui uno spessore di 2mm è sufficiente a garantire una buona robustezza del costrutto. Prendendo
in considerazione la quantità e le caratteristiche dei sistemi che dovranno essere implementati, ci si
rende conto di come le dimensioni dello spazio dedicato alle schede elettroniche siano
estremamente critiche. Per questa ragione, considerando anche gli spessori, si è deciso per un primo
compromesso tra le misure iniziali e la necessità di mantenere il volume interno, riducendo quindi
le dimensioni interne a un cubo di 48mm di lato e portando quelle esterne a 52mm.
Dato che in questa fase lo scopo è realizzare un modello della struttura per verificarne la fattibilità,
non sono stati presi in considerazione ulteriori vincoli progettuali.
35
IV.2: Disegno del prototipo e realizzazione mediante stampante 3-D
Il progetto meccanico è stato realizzato mediante il software CATIA.
Per quel che riguarda i magnetotorquer, è necessario un sistema che permetta di fissarli su tre assi
perpendicolari del sistema di controllo: su tre facce viene effettuato un incavo che permette
l’alloggiamento di un estremo del magnetotorquer; nel vertice comune, invece, viene posizionato un
cubo smontabile con un altro alloggiamento per ogni dispositivo, che li blocca.
Come detto in precedenza, i motori invece devono essere montati sulla parte esterna realizzando
una rientranza nella faccia.
In generale, tutte le facce dovranno essere dotate di alette per poter essere fissate l’une alle altre.
Il risultato di questo disegno preliminare è il seguente:
Lato aperto: tre facce sono aperte, per permettere l’accesso
all’elettronica, il posizionamento di connettori e l’ispezione
dell’interno. Su uno spigolo di due queste facce si trova
l’alloggiamento circolare per il magnetotorquer. Sulla terza
faccia, quella che convenzionalmente sarà considerata come
inferiore, si lascerà uno spazio chiuso maggior per permettere
l’installazione del cubetto di fissaggio dei magnetotorquer.
Su due lati sono presenti le alette per il fissaggio delle facce
confinanti.
Ruote di momento: per le ruote di momento il fattore più
importante è, per l’appunto, il momento angolare. Per
ottenere il maggior momento possibile senza aggiungere
massa inutile alla struttura, si è soliti creare una ruota con uno
spessore sottile e raggruppare più massa possibile in una
corona circolare esterna. Nel caso in esame, lo spessore della
corona circolare deve necessariamente essere limitato per
ridurre la sporgenza. Le dimensioni erano già state calcolare
al momento delle simulazioni numeriche per verificarne
l’efficienza e, di conseguenza, non sono state modificate.
36
Figura IV.1: Disegni meccanici preliminari della struttura
Lato motori: le facce che alloggeranno i motori presentano una struttura più complessa, per trovare
un compromesso tra la necessità di mantenere il già ridotto volume interno utile per l’elettronica e
ridurre la sporgenza degli elementi esterni. C’è da tenere in conto, infatti, della presenza della
corona circolare sporgente nella ruota di momento che interferisce con il supporto del motore
stesso. Per questa ragione, si è deciso di concedere ulteriori due millimetri alle dimensioni esterne
del cubo, portandole a 54mm, e di ridurre lo spazio utile per l’elettronica nella parte centrale del
cubo di altri 3mm, portandolo quindi a 45mm.
Deve essere previsto il passaggio del cavo di collegamento del motore, per cui si è proceduto ad
effettuare un taglio nel supporto lungo una direzione.
Cubo di fissaggio dei magnetotorquer: la lunghezza di ogni
magnetotorquer è pari a 40mm. Contando una distanza tra
due facce parallele pari a 48mm e una profondità di ogni
alloggiamento di 1mm, il cubo di fissaggio dovrà avere un
lato pari a 10mm.
37
I pezzi così disegnati sono stati stampati con una stampante 3-D, ottenendo un modello utile per
valutare eventuali problemi e limitazioni non prese in considerazione durante il progetto.
È da notare che, nel prototipo mandato in realizzazione, è stata creata una sola faccia dotata del
supporto per il motore. Il risultato è mostrato nelle seguente immagine:
Figura IV.2: Prototipo della struttura in ABS
IV.3: Considerazioni sul prototipo e raffinamento della struttura
Il prototipo realizzato ha dimostrato la sostanziale validità del progetto realizzato. Sono stati
effettuati alcuni piccoli aggiustamenti che hanno riguardato le alette di fissaggio delle facce del
cubo, l’alloggiamento dei motori e la faccia di base.
Sono stati poi aggiunti tutti i fori necessari per le viti, tanto per l’unione dei pezzi come per il
fissaggio dell’elettronica e del cubo sulla struttura del satellite.
Di seguito è mostrato l’aspetto finale delle parti che compongono la struttura del sistema di
controllo d’assetto.
38
Facce di supporto dei motori:
Figura IV.3: Disegni finali della struttura meccanica
Le facce di supporto dei motori non hanno subito sostanziali modifiche. Sono stati aggiunti i fori di
fissaggio per le viti ove necessario; sulla parte esterna, è stato modificato l’alloggiamento del
motore, inserendo una ulteriore scanalatura per l’uscita del cavo di collegamento tale da permettere
l’istallazione del motore in entrambi i sensi. Di seguito sono spiegare le ragioni che hanno portato a
questa scelta.
Faccia di supporto delle bobine:
Oltre ad aggiungere tutti i necessari fori di
fissaggio, dall’assemblaggio dei pezzi è risultata
una interferenza tra le alette di alcune facce e i
magnetotorquer, che potevano toccarle. Si è quindi
sagomata l’aletta dandole un profilo triangolare,
assicurando quindi lo spazio necessario per il
corretto
posizionamento
della
bobina.
In
corrispondenza dello spigolo in cui troverà posto il
cubetto di fissaggio dei magnetotorquer sono stati
aggiunti tre fori di fissaggio.
Faccia di supporto dell’elettronica:
39
Oltre alle precedenti caratteristiche, la faccia di
supporto dell’elettronica è stata dotata di quattro
fori in corrispondenza dei supporti predisposti sui
circuiti stampati. Originariamente si era pensato di
posizionare la scheda elettronica inferiore in
corrispondenza del cubetto di fissaggio dei
magnetotorquer. Esaminando l’assemblaggio nel
suo complesso, lo spessore delle schede e dei
componenti e le possibilità offerte dai connettori
scelti per le schede, ci si è resi conto che era
necessario recuperare alcuni millimetri di spazio in
altezza. La presenza del magnetotorquer inferiore e del cubetto di fissaggio impediva di avvicinare
la scheda inferiore al fondo della struttura, per cui la soluzione più ragionevole è stata invertire la
faccia di fissaggio dell’elettronica, portandola su quella opposta.
Il risultato finale è mostrato nella seguente figura:
Figura IV.4: Assemblaggio finale del sistema di controllo d’assetto
Nell’immagine di sinistra, sono chiaramente visibili le schede elettroniche alloggiate all’interno
della struttura: sul fondo, si trova la scheda di controllo dei magnetotorquer; al secondo livello, la
40
scheda di controllo digitale, con il microcontrollore e i connettori di comunicazione con l’esterno; al
terzo livello, la scheda dei magnetometri, con una piccola scheda verticale dove alloggia il sensore
relativo all’asse Z; al di sopra di tutto, la scheda di controllo dei motori.
Questa soluzione chiaramente richiede un allungamento dei collegamenti, ma si tratta sicuramente
di un compromesso più che accettabile data l’impossibilità di modificare l’altezza dei componenti
elettronici e la necessità di non aumentare ulteriormente le dimensioni della struttura.
Tutte le schede sono state sagomate per seguire l’andamento della struttura meccanica, in
particolare le due centrali presentano una rientranza per lasciar posto al supporto del motore.
IV.4: Simulazioni numeriche
Terminata la progettazione, sono state realizzate una serie di simulazioni numeriche utilizzando gli
appositi strumenti forniti da CATIA per valutare la resistenza della struttura e calcolare le frequenze
proprie di vibrazione.
Il primo tipo di verifica è stato relativo alle condizioni statiche. Si è scelto di ancorare la struttura
sulla sua base inferiore e di applicare una forza pari alla massa della struttura stessa sottoposta ad
una accelerazione di 100g su una faccia perpendicolare alla base.
Questo tipo di simulazione è giustificata dalle elevate accelerazioni che può subire la struttura a
causa dell’accelerazione di un missile durante il lancio: il valore scelto è chiaramente molto
superiore ma serve per stabilire la robustezza della struttura disegnata.
La rappresentazione offerta da CATIA mostra le deformazioni subite dalla struttura con una
rappresentazione in una scala aumentata affinché si possano apprezzare. L’analisi degli stress di
Von Mises rileva valori massimi nell’ordine di 106Nm2.
Ogni materiale ha una sua resistenza alla deformazione, quantificata dalla tensione di snervamento.
Quando uno stress raggiunge questo valore, le deformazioni che provoca nel materiale sono di tipo
irreversibile, indebolendolo e portando a diminuire ulteriormente la sua resistenza. Finché quindi i
valori di stress calcolati dalla simulazione restano al di sotto di questa soglia, si ha la sicurezza che
la struttura non subisce danni.
Per l’alluminio, la tensione di snervamento è pari a 15-20MPa, ossia 1.5-2*107Nm2. Questo valore è
almeno un ordine di grandezza superiore agli stress calcolati, per cui la struttura risulta adeguata a
sopportare anche forti accelerazioni.
41
Figura IV.5: Risultati della simulazione degli stress di Von Mises
Vista la presenza di parti in movimento fissate sulla struttura, ossia le ruote di momento, è
importante calcolare anche le frequenze proprie della struttura per assicurarsi che non avvengano
risonanze potenzialmente dannose.
Si è eseguita quindi una analisi delle frequenze della struttura, ipotizzando nuovamente che sia
fissata sulla faccia inferiore.
I risultati mostrano la presenza dei seguenti modi di vibrazione:
Mode Number
Frequenza
Hz
1
2.1692e+003
2
3.0560e+003
3
4.0710e+003
4
4.6744e+003
5
5.1361e+003
42
Le velocità dei motori scelti non consentono il raggiungimento di frequenze di rotazione superiori ai
420Hz (si veda il paragrafo III.5), di conseguenza questa simulazione ha dimostrato l’impossibilità
di fenomeni di risonanza tra le parti in rotazione fissate sulla struttura e la struttura stessa.
Lo stesso tipo di simulazione è stato effettuato sulla ruota di momento, con i seguenti risultati:
Mode Number
Frequenza
Hz
1
2.4141e+003
2
2.7110e+003
3
2.7184e+003
4
5.2360e+003
5
1.0383e+004
Anche in questo caso, le frequenze calcolate non presentano alcun problema per le condizioni di
funzionamento del sistema.
IV.5: Realizzazione struttura in alluminio
La realizzazione della struttura meccanica in alluminio si è rivelata estremamente più difficoltosa
del previsto.
Le piccole dimensioni dei pezzi hanno complicato la lavorazione alla fresa a controllo numerico,
rendendo possibile ottenere un risultato solo approssimativo.
I pezzi hanno richiesto quindi un paziente lavoro di rifinitura per consentire il montaggio della
struttura, raggiungendo un risultato solo parzialmente soddisfacente, che è stato comunque
sufficiente per l’installazione dell’elettronica e dei motori per la realizzazione di un prototipo di
test. La figura seguente mostra il risultato della lavorazione effettuata presso i laboratori
dell’Università di Bologna.
43
Figura IV.6: Le parti della struttura realizzate in alluminio
44
Capitolo V: Elettronica
Gli studi svolti e descritti fino a questo momento sono serviti per delineare e specificare le
caratteristiche che dovrà avere il sistema per poter funzionare secondo i requisiti proposti. In questo
capitolo viene descritto lo sviluppo dell’elettronica, disegnata per rispondere alle necessità in
precedenza descritte. In primo luogo vengono riassunte le specifiche tecniche e i requisiti desiderati
per l’elettronica di bordo; si prosegue analizzando i requisiti dei sensori che dovranno permettere la
conoscenza dello stato in cui si trova il sistema di controllo. Sono poi di seguito descritti nel
dettaglio i circuiti che compongono le quattro schede del sistema, ossia la scheda di controllo delle
bobine, dei magnetometri, la scheda della parte digitale e infine il controller dei motori.
Il risultato di questa fase di lavoro è la creazione di un primo prototipo per valutare le limitazioni e
le caratteristiche del sistema ideato.
V.1: Necessità di progetto e caratteristiche da implementare
Tutte le funzionalità che il sistema dovrà implementare sono state ricavate e descritte nei capitoli
precedenti. Riassumendo:
-
Scheda di controllo dei magnetotorquer
Le ridotte disponibilità di energia hanno portato alla scelta di limitare la corrente massima a
50mA, con la necessità che possa scorrere in entrambi i sensi. Il circuito di controllo della
corrente dovrà dunque essere dimensionato su questi valori, tenendo presente un carico
rappresentato dalle bobine nell’ordine dei 7-10Ω. Il circuito dovrà prevedere la possibilità di
essere spento durante la lettura dei magnetometri. Il sistema di feedback utilizzato sarà la
lettura della corrente circolante per le bobine, unita all’informazione della polarità applicata
dal microcontrollore.
-
Scheda dei magnetometri
Per il funzionamento della legge di controllo magnetico, è necessaria l’acquisizione del
valore del campo magnetico a diversi intervalli di tempo. La sensibilità dovrà essere
sufficiente per leggere campi magnetici di intensità ridotte come quelli presenti in orbita. Per
ragioni di risparmio energetico, i sensori dovranno poter essere spenti quando non in uso.
-
Scheda di controllo dei motori
45
Per i motori scelti, la casa produttrice offre un controller integrato di dimensioni
estremamente ridotte adatto all’applicazione in sviluppo. La scheda dovrà quindi
interfacciarsi con detti controller, aggiungendo la funzionalità di lettura della corrente. Non è
stato previsto un sistema di lettura della velocità di rotazione del motore, ma conoscendo la
corrente assorbita e la frequenza di rotazione impostata è possibile risalire alle condizioni di
lavoro del motore. Anche in questo caso, è necessaria la possibilità di disabilitare
completamente il motore spegnendo la scheda.
-
Scheda del microcontrollore
La scheda che alloggia il microcontrollore dovrà prevedere la presenza di una porta di
comunicazione seriale per il collegamento del sistema di controllo al resto dei sistemi. Oltre
alla presenza della porta di debug e dell’ingresso generale dell’alimentazione, non sono
previsti altri vincoli di carattere funzionale.
V.2: Sensori
Analizzando i requisiti del sistema, per quel che riguarda i sensori necessari per conoscere lo stato
del satellite su cui è installato il sistema di controllo, si osserva come i magnetometri siano
sufficienti per ricavare le informazioni necessarie.
Durante la fase di controllo basato sui magnetotorquer, ovviamente, svolgono la funzione di
determinare la corrente che deve essere erogata alle bobine per smorzare la rotazione. Le velocità di
rotazione, poi, possono essere determinate tramite una lettura continua del campo magnetico, senza
quindi la necessità dell’utilizzo di una piattaforma inerziale che difficilmente potrebbe essere
alloggiata all’interno della struttura.
Durante l’uso dei motori, infine, la rotazione indotta può essere misurata tramite la rotazione del
campo magnetico: lungo l’orbita il campo terrestre misurato varia molto lentamente e può essere
utilizzato quindi come riferimento.
Le dimensioni estremamente ridotte del sistema hanno forzato la scelta verso due magnetometri
prodotti dall’Honeywell, uno contenente un magnetometro su due assi e uno su un solo asse, da
disporre su piani perpendicolari.
Questi dispositivi, HMC1021 e HMC1022, rispettivamente a uno e due assi, sono caratterizzati da
un elemento sensibile posto all’interno di un ponte resistivo di misura e possiedono un’uscita di tipo
differenziale. Necessitano quindi di una serie di circuiti ausiliari per poter ricavare le letture
46
richieste, ma dall’altra parte questi circuiti esterni permettono di adattare entro certi limiti le
caratteristiche del sensore ai requisiti dell’applicazione.
Queste sono le principali caratteristiche riportate nel datasheet8:
Characteristic
Conditions
Min
Typ
Max
Unit
Bridge Supply
Vbridge referenced to GND
5
25
Volts
Bridge Resistance
Bridge current = 5mA
800
1100
1300
Ω
Operating Temperature
HMC1021S, 1021Z, 1022
-55
150
°C
Field Range
Full scale (FS), — total applied
field
-6
+6
gauss
Linearity Error
Best fit straight line ±1 gauss
±
3
0.05
0.4
1.6
%FS
Hysteresis Error
3 sweeps across ±3 gauss
0.08
%FS
Repeatability Error
3 sweeps across ±3 gauss
0.08
%FS
Bridge Offset
Offset = (OUT+) – (OUT-), Field =
0 gauss
After Set pulse, Vbridge=5V
-10
±2.5
11.25
mV
Sensitivity
S/R Current = 0.5A
0.8
1.0
1.25
mV/V/gauss
Noise Density
Noise at 1Hz, Vbridge=5V
48
nV/√Hz
Resolution
Bandwidth=10Hz, Vbridge=5V
85
µgauss
Bandwidth
Magnetic signal (lower limit = DC)
5
MHz
OFFSET Strap
Measured from OFFSET+ to
OFFSET-
38
50
60
Ω
OFFSET Field
Field applied in sensitive direction
4.0
4.6
6.0
mA/gauss
Set/Reset Strap
Measured from S/R+ to S/R-
5.5
7.7
9
Ω
Set/Reset Current
2µs current pulse, 1% duty cycle
0.5
0.5
4.0
Amp
Disturbing Field
Sensitivity starts to degrade. Use
S/R pulse to restore sensitivity.
20
Max. Exposed Field
No perming effect on zero reading
gauss
10000
gauss
La tensione di alimentazione del ponte di misura tipica è di 5V, mentre la resistenza degli elementi
resistivi è compresa tra 800 e 1300 Ω. Il range del campo magnetico misurato è di +/- 6 Gauss, con
una risoluzione massima di 85uGauss. Nell’applicazione in oggetto la banda passante non è
rilevante, dato che le frequenze di rotazione del campo magnetico saranno basse. Dalle
caratteristiche risulta anche una buona ripetibilità della misura, così come un’isteresi limitata. Già a
8
1- and 2-Axis Magnetic Sensors HMC1001/1002/1021/1022 datasheet, Honeywell, pag. 3.
47
livello di caratteristiche, appare comunque la presenza di un segnale di Set/Reset: a causa della
presenza stessa del campo magnetico, infatti, i domini magnetici che compongono l’elemento
sensibile del magnetometro tendono a disporsi in maniera disordinata soprattutto in seguito
all’applicazione di forti campi di disturbo o, in ogni caso, con il passare del tempo. Questo effetto
porta ad una riduzione della sensibilità del magnetometro e ad un cambiamento nelle caratteristiche
delle misure effettuate.
Per eliminare il problema è necessario far passare un breve ma intenso impulso di corrente attorno
all’elemento sensibile, facendo scorrere prima la corrente in un verso generando un campo
magnetico che muove i domini magnetici in un verso (fase di Set), poi un altro impulso in senso
opposto che riporta l’orientazione dei domini nel verso di partenza (fase di Reset).
Figura V.1: Effetto del segnale di Set/Reset come descritto nel datasheet9
Il circuito dovrà quindi prevedere la presenza di questo segnale di Set/Reset, per poter garantire e
ripristinare le caratteristiche di funzionamento dei magnetometri.
Come detto, l’uscita del sensore è di tipo differenziale: come qualunque ponte di misura, un ramo
ha la funzione di riferimento, mentre l’altro, contenente l’elemento sensibile, restituisce in uscita
una tensione inferiore o superiore a quello di riferimento a seconda dell’andamento della grandezza
misurata.
9
1- and 2-Axis Magnetic Sensors HMC1001 / 1002 HMC1021 / 1022 Application note, pag. 8
48
È quindi necessario prevedere un amplificatore differenziale per poter leggere l’uscita del
magnetometro.
La parte restante di sensoristica inserita all’interno dell’elettronica è fondamentalmente
riconducibile a sensori di corrente.
Dato che ogni periferica prevista consuma una quantità di corrente proporzionale al funzionamento
che viene comandato dal sistema, dalla lettura della corrente stessa è possibile stabilire in primo
luogo se il comando inviato ha sortito l’effetto desiderato, come nel caso delle bobine, e in secondo
luogo se la periferica si sta comportando correttamente, come nel caso dei motori.
Nella descrizione di ogni sistema si vedrà in dettaglio la soluzione scelta per questo scopo.
V.3: Interfacciamento delle schede
Data la necessità di distribuire i circuiti elettronici su più schede separate, è necessario prevedere un
sistema di interfacciamento tra loro, non solo per la distribuzione delle alimentazioni ma anche per
l’invio dei segnali di controllo e la ricezione delle letture dei sensori.
In un contesto così limitato di spazi, anche la scelta dei connettori si è rivelata critica, soprattutto
alla luce del numero di linee necessarie. La seguente tabella riporta le connessioni che sono state
ritenute indispensabili per il sistema:
Controllo bobine
1 linea di accensione delle bobine
1 linea di accensione dei sensori
3 linee per l’impostazione della corrente
3 linee per l’impostazione della polarità
3 linee di lettura delle correnti
Magnetometri
2 linee di Set/Reset per i due sensori
1 linea di accensione
3 linee di lettura dei sensori
Motori
1 linea di accensione
3 linee per l’impostazione della direzione
3 linee per l’impostazione della velocità
3 linee di lettura della corrente
Funzioni generali
2 linee per l’alimentazione
49
Dato che la scheda di controllo dei magnetotorquer è posizionata per ultima, immediatamente sotto
alla scheda del microcontrollore, il connettore può essere dedicato alle 13 linee identificate.
Tuttavia, per le altre due schede, tutte le linee devono passare per il primo connettore, che
provvederà poi a passarle alla scheda successiva.
Tutte le linee devono essere raddoppiate per motivi di ridondanza: nel caso in cui per vibrazioni o
per cattivo montaggio meccanico un pin dovesse perdere il contatto, sono necessarie due failure per
portare ad una reale interruzione della comunicazione.
Alcune linee di collegamento sono particolarmente critiche, come nel caso di quelle di
alimentazione. Di conseguenza, la linea di alimentazione positiva e quella di massa sono
ulteriormente raddoppiate, portando all’occupazione di quattro piedini del connettore.
Calcolando il caso peggiore, si ottiene dunque la necessità di un connettore con 40 pin.
Analizzando i connettori per PCB disponibili sul mercato con le caratteristiche necessarie di ridotte
dimensioni, ridotto profilo, altezza complessiva variabile e ridotto passo tra pin, si è scelto di
utilizzare la serie di connettori per PCB coplanari da 0.8mm di passo della Tyco Electronics, come
quello mostrato in figura:
Figura V.2: Connettori per il collegamento delle diverse schede (website http://www.te.com)
Questa serie di connettori permette una serie di combinazioni tra loro che portano ad una distanza
tra scheda e scheda compresa tra 5mm e 20mm, più che sufficiente per il caso corrente.
Per quel che riguarda l’interfacciamento tra la scheda del microcontrollore e tutte le periferiche,
infine, è da sottolineare la scelta dell’uso di segnali PWM per trasmettere l’informazione. Questa
decisione presenta molti vantaggi: da un lato, i microcontrollori dispongono di moduli hardware per
la generazione di questi segnali, liberando risorse software e garantendo un’ottima stabilità del
50
segnale di uscita che non dipende dalle tempistiche di esecuzione dei comandi; da un segnale di
questo tipo, poi, è molto facile ricavare un segnale continuo: per esempio, la corrente dei
magnetotorquer non può essere impostata tramite un segnale discreto, perché si otterrebbero
sovracorrenti e sovratensioni causate dall’impedenza della bobina stessa. È quindi necessario che la
corrente sia regolata in maniera continua, ricavando il segnale necessario con un semplice filtro a
partire dal segnale PWM.
Inoltre, questo segnale può semplicemente essere convertito in un impulso di clock fissando il duty
cycle al 50% e variando la frequenza ed essere utilizzato per comandare i motori.
L’aspetto forse più importante però è la sua estrema immunità al rumore: dovendo attraversare varie
schede e più di un connettore in un ambiente ricco di componenti elettromagnetiche, un segnale
analogico potrebbe raccogliere molto rumore e sarebbe necessario ricorrere a sofisticati sistemi di
filtraggio. In questo caso, tutta l’informazione necessaria è contenuta nella frequenza del segnale
stesso e nel suo duty cycle, che non vengono alterati dai disturbi esterni.
In generale, la struttura dei collegamenti tra le varie schede è la seguente:
Com/Seriale
Alimentazione
Scheda del
microcontrollore
Alim. / Comandi
Alim. / Comandi
Controller dei
magnetotorquer
Motori
Magnetometri
Figura V.3: Schema a blocchi della connessione tra le differenti schede
V.4: Scheda di controllo dei magnetotorquer
La scheda di controllo dei magnetotorquer contiene tre circuiti uguali, uno per ciascuna bobina, per
cui per chiarezza si descriverà il funzionamento di uno solo.
Lo schema a blocchi seguente mostra la struttura di detto circuito:
51
DC/DC
Alimentazione
Interruttore di
accensione
Interruttore
sensori
Resistenza di
riferimento
PWM
Generatore di corrente
Sensore di corrente
Lettura
corrente
Impostazione della
polarità
Filtro
Polarità
Bobina
Figura V.4: Schema a blocchi della scheda di controllo di magnetotorquer
La tensione in ingresso è di 12V non stabilizzata, collegata direttamente con l’ingresso nella scheda
del microcontrollore. Questa tensione è troppo alta per il circuito, per cui viene abbassata a 3.3V, un
valore compatibile tanto con le uscite del microcontrollore quanto con gli ingressi analogico-digitali
dello stesso.
Due interruttori abilitano o disabilitano il magnetotorquer e il relativo sensore di corrente,
permettendo di accenderli solo quando necessario per un maggior risparmio energetico.
Il cuore del controller è formato da un generatore di corrente controllato in tensione: il segnale
PWM generato dal microcontrollore, tramite un filtro RC, viene trasformato in un segnale continuo
e utilizzato come riferimento per il generatore di corrente. L’uscita del generatore è collegata al
circuito di controllo della polarità, anch’esso controllato dal microcontrollore, che fornisce
l’alimentazione alla bobina.
La stessa resistenza di riferimento del generatore di corrente è utilizzata come elemento di sensing
per il sensore di corrente, risparmiando così un ulteriore elemento nel circuito e migliorando
l’efficienza complessiva. La lettura della tensione ai capi della resistenza viene mandata ad un
52
amplificatore differenziale che, opportunamente regolato, fornisce un’uscita proporzionale alla
corrente imposta sul carico.
I vantaggi di questa soluzione sono vari. In primo luogo si utilizza un circuito completamente
lineare per gestire la corrente su carichi quasi completamente induttivi: questo approccio elimina
completamente la possibilità di generare interferenze ad alta frequenza che sarebbero irradiate in
tutto l’ambiente circostante se il controllo fosse di tipo switching. In secondo luogo, il circuito è
intrinsecamente sicuro: la corrente viene limitata al massimo possibile tramite la resistenza di
riferimento, per cui anche qualora il carico dovesse andare in corto circuito, la corrente resterebbe
limitata al valore fissato in fase di progetto. Inoltre, in caso di guasto, il circuito rimarrebbe aperto
rendendo inutilizzabile la bobina ma senza compromettere l’uso delle rimanenti.
Di seguito sono esaminati nel dettaglio le varie componenti del circuito.
Figura V.5: Schema elettrico dell’alimentatore della scheda di controllo dei magnetotorquer
Il convertitore progettato per fornire l’alimentazione al circuito è basato sul controller switching
LT1376 della Linear Tecnology, montato in configurazione di Buck Converter e caratterizzato da
un’elevata efficienza, nell’ordine dell85% e in grado di erogare fino a 1.5A.
Il principio di funzionamento è semplice: il controller mantiene alla sua entrata di feedback un
valore costante, che è ricavato tramite un partitore dall’uscita del convertitore stesso, garantendone
così la stabilità. Questo dispositivo richiede solo pochi componenti esterni, di cui l’induttore e i
condensatori di entrata e uscita rappresentano quelli più importanti.
53
Figura V.6: Efficienza dell’alimentatore switching impiegato nella scheda di controllo dei
magnetotorquer10
Come detto, per quest’applicazione è fondamentale evitare che segnali ad alta frequenza arrivino
alle bobine, e questo è vero ancor più per l’alimentazione a cui vengono collegate. Il calcolo quindi
dell’induttanza e del condensatore di filtro diventa fondamentale per garantire un ripple il più basso
possibile.
Il parametro più importante per il condensatore è la resistenza equivalente di serie, ESR: più questo
valore è basso, meno ripple viene generato dalla corrente dell’induttanza. Per ottenere un valore
basso si possono scegliere condensatori prodotti con particolari materiali, che risultano però più
ingombranti rispetto a normali condensatori, oppure posizionare più condensatori in parallelo per
ottenere il parallelo delle resistenze.
In questo caso si è scelto un condensatore con una ESR relativamente bassa, pari a 0.8Ω, e ne
saranno posti quattro in parallelo nelle varie parti del circuito, ottenendo quindi una resistenza
complessiva di 0.2Ω.
Per quel che riguarda la induttanza, il parametro fondamentale è l’impedenza. In questo caso la
scelta è stata per una induttanza da 10uH.
10
Linear Technology LT1361/LT1362 datasheet, pag. 1
54
Utilizzando le formule fornite sulla nota di applicazione, si ottiene che la massima tensione piccopicco di ripple è pari a:
I p  p ( Induttore) 
dI
 dt

VOUT  (VIN  VOUT )
 0,478 A
VIN  L  f
V IN
 1.2  10 5
ESL
V RIPPLE  ( I P  P )( ESR)  ESL
dI
 95mV
dt
Considerando che la massima corrente erogata nell’applicazione in questione in condizioni di
funzionamento normali è di 150mA, ossia un decimo della massima corrente disponibile con questo
regolatore, una tensione di ripple sicuramente inferiore a 95mV è accettabile.
L’alimentazione viene inviata ad ognuno dei tre circuiti delle bobine attraverso un interruttore
formato da due MOSFET, uno di tipo N e uno di tipo P, con tensioni di gate compatibili con il
segnale a 3.3V in uscita dal microcontrollore.
Figura V.7: Circuito di attivazione dell’alimentazione
Questo tipo di circuito è lo stesso utilizzato per fornire l’alimentazione ai sensori.
La sezione di circuito seguente è il generatore di corrente vero e proprio:
55
Figura V.8: Circuito del generatore di corrente del controller dei magnetotorquer
La resistenza R3 è la resistenza di riferimento del generatore. Il valore è stato scelto per avere una
corrente massima di 150mA sul carico. La scelta di un valore di corrente massimo pari al triplo
previsto permette da un lato di testare le capacità della sezione di alimentazione senza dover
collegare tutti tre i magnetotorquer, e dall’altro lascia molto margine per l’aumento della corrente in
fase di controllo qualora si rendesse necessario. All’uscita di R3 è collegato l’ingresso invertente di
U3, l’amplificatore operazione che controlla il generatore. Sull’ingresso non invertente dello stesso
operazionale si trova il filtro RC che ricava un valore di tensione costante a partire dal segnale
PWM generato dal microcontrollore. L’uscita dell’operazionale pilota Q1, il MOSFET che regola il
passaggio della corrente.
Il principio di funzionamento è semplice ed efficace: un amplificatore operazionale regola l’uscita
in modo da mantenere uguale la tensione ai due ingressi. Ad uno di questi viene fornita la tensione
di riferimento, mentre la tensione presente sull’altro è inversamente proporzionale alla corrente che
scorre attraverso il circuito. Nei due casi estremi, una tensione di controllo pari a quella di
alimentazione significa che sulla resistenza di riferimento non deve esserci nessuna caduta, quindi
la corrente imposta è uguale a zero. Nel caso opposto, ossia tensione di controllo pari a zero, il
circuito tende a far passare più corrente possibile per portare la tensione al capo della resistenza più
vicino possibile a zero.
L’integrato U2 è un amplificatore per strumentazione, formato da tre amplificatori operazionali,
utilizzato per la lettura della corrente. Utilizza la stessa resistenza impiegata come riferimento per il
56
generatore di corrente, risparmiando così componenti e spazio sulla scheda. Alimentato da un
circuito indipendente attivato dal microcontrollore, fornisce un valore di tensione in uscita
proporzionale alla differenza delle tensioni in ingresso, il cui guadagno è regolato da R4. Questo
tipo di amplificatore permette di annullare la componente continua della misura, mantenendo solo la
parte differenziale.
La sezione di circuito successiva ha il compito di cambiare il verso di scorrimento della corrente nel
magnetotorquer.
Figura V.9: Circuito di controllo della polarità nel controller dei magnetotorquer
Realizzare un generatore di corrente in grado di erogare e assorbire corrente, per permettere lo
scorrimento in entrambi i versi, richiede un circuito più complesso di quello utilizzato. Risulta
quindi molto più pratico invertire i collegamenti del carico per ottenere l’effetto desiderato, e questo
è possibile tramite un ponte di MOSFET. I due estremi del carico vengono quindi collegati in un
verso o nell’altro a seconda di un comando di polarità inviato dal microcontrollore, che abilita una
combinazione o l’altra. Per risparmiare collegamenti tra le schede, un semplice circuito effettua
l’inversione logica del segnale di polarità, operazione necessaria per il corretto controllo del ponte.
A questo punto, l’uscita viene inviata al connettore dei magnetotorquer.
Inizialmente era prevista la presenza di sensori ad effetto Hall per avere una lettura del campo
generato tramite i magnetotorquer, ma per vari motivi questa sezione di circuito è stata scartata.
L’uso dei sensori di corrente, abbinato ai magnetometri del sistema di controllo, è infatti più che
sufficiente per verificare il corretto funzionamento del sistema. Leggendo la corrente, infatti, è
57
possibile rendersi conto se il circuito funziona come richiesto e, anche se dovesse essere presente un
corto circuito che blocca l’alimentazione alle bobine, la mancanza di cambiamenti nelle letture dei
magnetometri lo segnalerebbe.
V.5: Scheda di controllo dei magnetometri
I magnetometri rappresentano la parte dei sensori più critica in quanto a requisiti di qualità del
segnale e di rumore. Per questo motivo è stato realizzato un alimentatore lineare, proprio per evitare
qualunque tipo di rumore indotto sull’alimentazione.
Figura V.10: Circuito di alimentazione della scheda dei magnetometri
Dai requisiti dei magnetometri sappiamo che la tensione tipica di alimentazione è di 5V: lo
stabilizzatore U12, attivato tramite l’interruttore U7 (uguale al sistema descritto nel paragrafo
precedente), fornisce questa alimentazione a partire dai 12V in ingresso. L’efficienza è chiaramente
minore rispetto ad un alimentatore switching, ma viste le piccole correnti in gioco non risulta un
problema.
I 12V necessari per il circuito di Set/Reset sono presi direttamente dall’alimentazione, prima dello
stabilizzatore.
Il segnale di Set/Reset, come detto in precedenza, deve essere un impulso di corrente abbastanza
elevato ma di durata molto breve. Per ottenere la corrente necessaria, si usa una tensione di almeno
12V, che il microcontrollore direttamente non può fornire. Per questo motivo, il seguente circuito,
porta il segnale di controllo del microcontrollore dai 3.3V originari a 12V, sufficienti per controllare
i MOSFET che piloteranno il segnale vero e proprio.
58
Figura V.11: Circuito di pilotaggio del segnale di Set/Reset
Il segnale in arrivo dal microcontrollore, SR-XY e SR-Z, viene utilizzato per pilotare due MOSFET.
Le resistenze di pull-up R86 e R87 permettono quindi di ottenere un segnale a 12V.
È da notare che il segnale in uscita risulta invertito ma, per come è stata realizzata la parte
successiva del circuito, non ha implicazioni sul funzionamento del circuito.
Figura V.12: Circuito di generazione del segnale di Set/Reset
U5 è il doppio MOSFET che pilota realmente l’ingresso del Set/Reset del magnetometro. Si tratta di
due MOSFET, uno di tipo N e l’altro di tipo P, collegati in serie. Ai due estremi si trova
l’alimentazione di 12V, mentre l’uscita è presa nel centro. Di conseguenza, l’uscita è alta, ossia
12V, quando l’ingresso è basso e viceversa.
I due condensatori C19 e C20 posti in serie all’uscita eliminano la componente continua, creando un
impulso ogni qualvolta venga prodotto un cambio di tensione: quando l’uscita dei MOSFET passa
da 12V a 0V, l’impulso sarà positivo, mentre nel caso contrario l’impulso sarà negativo.
La durata massima di detto impulso sarà determinata dalla capacità di condensatori e dalla
resistenza della linea di Set/Reset del magnetometro, mentre gli intervalli di tempo tra uno e l’altro
saranno date dal segnale in uscita dal microcontrollore.
59
I collegamenti al magnetometro non presentano nessun requisito particolare: il dispositivo non
richiede componenti esterni per il suo funzionamento e tutti i segnali entrano o escono direttamente
dall’integrato.
Come detto, l’uscita è di tipo differenziale: per poterla utilizzare è necessario un amplificatore
operazionale in configurazione differenziale.
Figura V.13: Circuito di lettura del sensore di campi magnetici
L’integrato U4 è un amplificatore operazione quadruplo. Nello schema in figura V.13 è riportato il
circuito per l’asse z, dove si utilizzano solo due dei quattro amplificatori.
Sono disponibili molti possibili circuiti per realizzare un amplificatore differenziale, ma il più
semplice prevede l’uso di un solo amplificatore e per ragioni di spazio è la soluzione scelta per il
caso concreto.
Le resistenze R79 e R78 sono collegate all’uscita del ponte di misura che, come già ricordato, da
una parte offre il segnale variabile vero e proprio mentre dall’altra riporta il riferimento di tensione.
Le resistenze R76 e R81 fissano il guadagno differenziale dell’amplificatore, pari a oltre 1330.
Dato che il campo magnetico può essere sia positivo che negativo, la differenza di tensione tra i due
ingressi può assumere entrambi i valori. Tuttavia, il circuito è alimentato da una tensione singola,
che lo impedisce.
Per risolvere questo problema si inserisce un offset nel circuito, ottenuto tramite il terzo
amplificatore di U4: un partitore resistivo formato da R84 e R89 ricava dai 5V dell’alimentazione
una tensione di 2.5V, fornita in ingresso all’inseguitore di tensione realizzato con l’amplificatore
operazionale, in modo tale da essere utilizzata come offset per tutti gli altri amplificatori
differenziali. Questa tensione, applicata tramite R76 sull’ingresso non invertente dell’operazionale,
60
sposta la tensione in uscita in assenza di segnale dell’amplificatore differenziale al valore di offset
stesso, permettendo quindi di avere tensioni in uscita maggiori o minori di questo valore.
La necessità di far operare il magnetometro a 5V comporta la necessità di applicare la stessa
tensione al circuito di amplificazione. Questo può comportare dei problemi con il segnale di uscita,
qualora questo venga applicato direttamente sugli ingressi analogico-digitali del microcontrollore,
poiché la tensione applicata non può essere più alta di quella di alimentazione, pari a 3.3V. Per
questo motivo, sull’uscita viene inserito un partitore resistivo per abbassare il range di tensioni da 05V a 0-3.3V, prevedendo anche un diodo zener come ulteriore protezione.
Il circuito appena descritto è ripetuto anche per i segnali relativi agli assi X e Y del magnetometro,
completando così il circuito.
V.6: Scheda di controllo dei motori
Il driver per i motori scelto è il BLD05002S prodotto dalla Faulhaber, composto da un piccolo
circuito compatibile con un package DIP8 e completamente autonomo.
Questo dispositivo richiede una serie di segnali per il suo funzionamento:
-
CLK: la velocità di rotazione del motore è impostata da un segnale di clock esterno. La
velocità di rotazione finale dipende dal numero di poli p del motore (4 nel caso del motore
scelto) secondo la formula
v
f CLK
48 p
Una frequenza di clock di 10KHz, per esempio, comporta una velocità di rotazione del
motori di 3125rpm.
-
DIR: Imposta la direzione di rotazione del motore
-
Um: Il voltaggio che arriva al motore è impostato tramite l’ingresso Um e risulta essere una
combinazione della tensione di alimentazione Ucc secondo la formula:
U motor  (U m 
U cc
)  0.707
2
Stando alle informazioni del datasheet, i valori di tensione applicati a questo ingresso
devono essere compresi tra Ucc e Ucc/2.
61
Figura V.14: Caratteristiche del driver dei motori11
L’alimentazione scelta per i motori è di 3.3V, eventualmente modificabile fino a 5V nel caso in cui
durante i test ci si renda conto che è necessaria maggior coppia.
Il circuito di alimentazione è lo stesso utilizzato per la scheda dei magnetotorquer, per cui non sarà
ulteriormente discusso.
11
Faulhaber BLD 05002 S datasheet, pagg. 5 e 6
62
Figura V.15: Circuito di alimentazione della scheda di controllo dei motori
L’utilizzo di una alimentazione uguale a quella del microcontrollore permette di evitare la necessità
di inserire protezioni nella sezione di lettura della corrente.
Figura V.16: Circuito di lettura della corrente dei motori
63
In questo caso si utilizza l’integrato INA168, un sensore di corrente prodotto dalla Texas
Instruments, il cui funzionamento è riportato in figura V.17.
Figura V.17: Schema di funzionamento del sensore di corrente utilizzato nella scheda di controllo
dei motori12
Il guadagno è impostato tramite una sola resistenza, R10 nello schema precedente, e permette di
utilizzare resistenze di sensing di piccolo valore ohmico riducendo così al minimo le perdite di
potenza. Nel caso concreto, la resistenza di sensing formata dal parallelo di R11 e R12, da 1Ω
ciascuna, è pari a 0.5Ω. La resistenza di carico è pari a 100kΩ e la corrente massima indicata dal
datasheet per ogni motore è di 300mA. Con questi dati, la tensione massima in uscita è pari a 3V,
lasciando margine per leggere eventuali sovraccarichi del motore.
12
Texas Instrument INA168 datasheet, pag. 1
64
Figura V.18: Driver dei motori
Infine, il controller del motore è collegato secondo quanto visto precedentemente.
L’uscita delle tre fasi viene mandata direttamente al connettore del motore.
V.7: Scheda del microcontrollore
La scheda del microcontrollore rappresenta il cuore del sistema di controllo d’assetto: da questa
scheda partono tutti i segnali di controllo delle periferiche, in essa vengono effettuate le letture dei
sensori e messe in pratica le leggi di controllo, oltre a comunicare con l’esterno.
L’alimentazione viene fornita tramite il connettore J15 e da lì inviata direttamente ai connettori per
le altre schede. Un regolatore DC/DC integrato, denominato U10, fornisce i 3.3V per il
funzionamento del microcontrollore. Un ulteriore regolatore di tensione lineare fornisce il
riferimento di tensione per la sezione di conversione analogico-digitale del microcontrollore.
Il microcontrollore non presenta particolari componenti ausiliari, dato che la maggior parte del
circuito è distribuito sulle schede delle periferiche.
È presente un connettore il sistema di In-Circuit Debugging, che permette di programmare ed
effettuare il debug del programma in fase di sviluppo senza dover rimuovere fisicamente il
dispositivo dalla scheda, operazione praticamente impossibile lavorando con componenti in
tecnologia SMD.
Il segnale di clock è fornito da un quarzo a 4Mhz, ma il microcontrollore scelto dispone di un
sistema di PLL capace di generare internamente una frequenza di funzionamento fino a 80Mhz, con
una frequenza di istruzione di 40Mhz.
65
Figura V.19: Circuito di alimentazione per la scheda di controllo digitale
Figura V.20: Collegamenti del microcontrollore
66
Per la comunicazione con l’esterno si è scelto di usare la porta seriale in standard RS232,
compatibile con la porta seriale di qualunque PC.
Il transceiver utilizzato è un tradizionale MAX232, di cui si usa un solo canale. L’uscita è portata ad
un connettore posto sulla stessa scheda.
Completato lo schema di tutti i circuiti, si è proceduto alla ricerca ed assegnazione dei footprint di
ogni componente e al disegno del circuito stampato.
Figura V.21: Driver della porta seriale
V.8: Circuiti stampati
I circuiti realizzati per la scheda di prototipo sono stati tutti disegnati con le dimensioni finali per
permettere di effettuare anche una valutazione realistica delle mutue interferenze tra i componenti
critici.
67
Figura V.22: Circuiti stampati realizzati per il primo prototipo
68
Capitolo VI: Test e messa a punto dei prototipi
Il progetto e i calcoli che sono stati descritti finora hanno preso in considerazione tutto ciò che
teoricamente viene riportato nella documentazione, ma non possono sostituire la valutazione del
dispositivo reale. Una volta montati i prototipi, anche se solo parzialmente nei casi in cui erano
presenti più circuiti uguali, sono stati effettuati una serie di test che hanno permesso la verifica di
quanto teorizzato finora, la messa a punto dei circuiti ove necessario e la correzione di eventuali
errori.
Nei paragrafi successivi sono descritti i passaggi che hanno portato dalla stesura del progetto del
primo prototipo alla realizzazione di un secondo dispositivo migliorato e corretto, compresa la
realizzazione di un primo firmware di basso livello che servirà come base per le principali funzioni
del sistema definitivo.
VI.1: Assemblaggio della schede e test elettrici
Iniziando dalla scheda del microcontrollore e seguendo, in ordine, con le schede dei
magnetotorquer, dei magnetometri e dei motori, si è proceduto a montare tutti i componenti. In
realtà, dato che i sistemi sono ripetuti per tre volte in ogni scheda, a parte nel caso del
microcontrollore, sono state montate solo le parti comuni e un esemplare per ogni circuito,
sufficiente per validarne il funzionamento.
69
Figura VI.1: Montaggio dei prototipi
Le schede mostrate in foto evidenziano già alcuni cambiamenti che si sono resi necessari durante la
fase di test.
Prima di collegare una scheda all’altra è stato effettuato un test elettrico per verificarne il
funzionamento in condizioni statiche.
Figura VI.2: Analisi all’oscilloscopio della qualità dell’alimentazione
70
La visualizzazione con l’oscilloscopio dell’alimentazione di uno dei regolatori switching montati,
filtrando la sola componente alternata del segnale, mostra un ripple più che accettabile per
un’alimentazione switching in assenza di carico. È presente un po’ di rumore, ma dato che le
componenti più sensibili sono alimentate tramite convertitori lineari, questo non presenta un
problema.
VI.2: Scheda del microcontrollore, firmware di test
Il funzionamento di tutte le periferiche è strettamente connesso al funzionamento del
microcontrollore, che provvede a comandarle e gestirle. Per questa ragione, la prima scheda ad
essere stata assemblata e messa in funzione è stata proprio quella del microcontrollore.
L’assemblaggio non ha presentato particolari difficoltà, a parte quelle normalmente legate al
montaggio manuale di componenti in tecnologia SMD, e si è proceduto immediatamente alla
scrittura di un primo firmware di test che permettesse di valutare le funzioni di base del sistema di
controllo d’assetto.
In particolare, i requisiti per ogni funzione sono i seguenti:
-
Controllo delle bobine: generazione di tre segnali PWM a frequenza fissa e a duty cycle
variabile, uno per ciascuna bobina. Il segnale deve essere continuo, senza interruzioni, ma la
stabilità entro certi limiti non è un requisito fondamentale, in quando la dinamica del sistema
è comunque lenta a causa del filtro RC che ricava la componente continua per il controllo
dei generatori di corrente. Serve inoltre un segnale di controllo per l’accensione delle bobine
e per la polarità.
-
Magnetometri: generazione di impulso di Set/Reset periodico, senza particolari requisiti
sull’intervallo tra un impulso e l’altro ma caratterizzato da una durata abbastanza precisa. È
necessario anche un segnale per abilitare la lettura dei sensori.
-
Controllo dei motori: generazione di tre segnali di clock a frequenza variabile e
indipendenti, con stretti requisiti di stabilità del segnale. Nel momento in cui un motore
viene messo in movimento, il segnale deve essere mantenuto costantemente fino allo stop
del motore. La variazione di frequenza del segnale deve essere effettuata in maniera
graduale e possibilmente autonoma, ossia senza l’intervento costante del software, a seconda
della massima accelerazione che si identificherà durante i test con la massa della ruota di
momento posizionata sul rotore. Anche in questo caso è necessario un segnale per
l’accensione dei motori e uno ulteriore per la direzione.
71
Oltre ai requisiti delle funzioni di controllo è necessario tenere in considerazione la necessità di
riceve ed inviare dati sulla porta seriale ed effettuare le letture del convertitore analogico-digitale:
l’invio dei dati e l’acquisizione degli ingressi analogici può anche essere effettuato ad intervalli più
o meno regolari, ma la ricezione dei dati può dover avvenire in qualunque momento.
Appare quindi evidente che la struttura del programma deve essere il meno sequenziale possibile,
perché effettuare tutte queste operazioni in un ciclo continuo può comportare ritardi, perdite di
sincronizzazione o perdita di dati qualora una operazione richieda più tempo del previsto. È
necessaria una soluzione software che permetta il richiamo di specifiche funzioni in maniera
indipendente dal regolare svolgimento del programma.
Gli strumenti messi a disposizione dal microcontrollore in questione per implementare questo tipo
di software sono due: interrupt e DMA.
Un interrupt è una richiesta che viene inviata alla CPU di eseguire determinate funzioni e viene
inviata in corrispondenza di un qualche evento, che può essere esterno, come il cambiamento di
stato di una porta, oppure interno, come lo scadere di un timer. Ad esempio, si può configurare il
sistema perché, allo scadere di un tempo determinato, invochi la funzione che abilita l’invio della
telemetria oppure che effettua la lettura dell’ADC. In quel caso, il programma interrompe la sua
normale esecuzione, esegue la funzione associata all’interrupt specifico quindi, una volta terminata,
ritorna al punto in cui si era interrotto. Da una parte permette, quindi, l’esecuzione quasi in tempo
reale di funzioni legate a specifici eventi, ma dall’altra comporta una pausa nell’esecuzione del
programma regolare.
Il DMA invece è un tipo di accesso alla memoria che permette ad una periferica, come una porta
seriale, di accedere ad un buffer di memoria direttamente, senza richiedere l’intervento della CPU.
In questo modo l’esecuzione del programma principale continua senza interruzioni, fino al
momento in cui l’azione specifica viene terminata –ad esempio la ricezione o l’invio di un
messaggio-, quando viene lanciato un interrupt.
Per alcune periferiche non è disponibile il DMA, per il semplice fatto che non operano su variabili.
La tabella seguente indica gli interrupt e i DMA assegnati alle varie risorse hardware del
microcontrollore.
72
Periferica
Funzione
Timer 1
Disponibile
Timer 2
Riservato per PWM
Timer 3
Riservato per PWM
Timer 4
Interrupt - Impulso di Set/Reset
Timer 5
Interrupt – Controllo
accelerazione per i motori
Interrupt – Esecuzione della
legge di controllo
Timer 6
Timer 7
Interrupt – Abilita l’invio di un
pacchetto di telemetria
Timer 8
Disponibile
Timer 9
Disponibile
ADC
DMA
Serial TX
DMA
Serial RX
DMA
Note
L’intervallo tra il fronte di salita e di discesa
dell’impulso sarà diverso dall’intervallo tra un
impulso e l’altro.
Generazione della rampa di accelerazione –
decelerazione con una pendenza predeterminata.
Intervallo di tempo per l’esecuzione della legge
di controllo; la tempistica è importante perché
coinvolge una derivata rispetto al tempo.
L’abilitazione all’invio è trasparente al software,
ma non essendoci requisiti temporali stringenti
l’invio effettivo sarà effettuato in polling.
Il campionamento è continuo e trasparente al
software. Una volta completato, il software
elabora i dati.
Una volta avviato l’invio di dati, questo avviene
in maniera trasparente al software.
Richiede un pacchetto in ingresso di lunghezza
fissa e conosciuta.
È stato detto che alcune periferiche hanno stringenti requisiti di stabilità nel segnale di controllo che
deve essere loro fornito.
È stato fatto un tentativo di generare segnali PWM via software, associando lo stato della porta ad
un timer, ma i risultati sono stati deludenti: anche alzando verso i valori massimi la velocità di clock
del microcontrollore, con tre uscite attive e l’utilizzo della porta seriale il segnale in uscita
diventava estremamente instabile, rendendo inefficiente il controllo.
La generazione di questi segnali tramite software è quindi da escludere, essendo legata a
tempistiche imprevedibili. I segnali PWM in oggetto, quindi, saranno generati tramite le periferiche
hardware rese disponibili dal microcontrollore. In particolare, esiste una porta denominata Output
Compare che, tramite dei timer interni, permette la generazione di vari segnali: clock, impulsi e
PWM.
Se da una parte questa soluzione risolve perfettamente il problema della qualità dei segnali in uscita,
presenta una limitazione: solo due timer diversi possono essere associati alle diverse uscite della
porta, permettendo quindi la generazione di segnali solamente a due frequenze indipendenti. Per i
magnetotorquer questo non rappresenta una limitazione, dato che ciò che cambia durante il
73
controllo è il duty cycle, che è indipendente per ogni porta. Per i motori invece questo rappresenta
un problema, dato che è necessario comandare con una frequenza diversa ognuno di essi.
Nel corso del 2011 la Microchip ha reso disponibile una nuova famiglia di microcontrollori che
superano questa limitazione, permettendo la generazione di fino a 16 segnali PWM con frequenza
indipendente l’una dall’altra. Un dispositivo che potrebbe sostituire senza problemi il
microcontrollore scelto è, per esempio, il dsPIC33EP512MU810.
Per lo sviluppo del prototipo si è deciso di proseguire, comunque, con l’utilizzo del
microcontrollore identificato inizialmente, anche a causa della tardiva disponibilità della nuova
famiglia (seconda metà del 2011). Per i possibili test da effettuare a terra, l’uso di un solo motore
per volta non è limitante, mentre per la realizzazione di un prototipo di volo il passaggio al nuovo
sistema richiederebbe solo una minima revisione del codice di più basso livello.
In questa fase di sviluppo del software, le funzioni sono implementate esclusivamente a basso
livello, ossia hanno il solo scopo di gestire le risorse hardware e rendere disponibili le funzionalità
di base per testare il sistema.
Il segnale di controllo dei magnetotorquer, come detto, è generato tramite la porta Output Compare
del microcontrollore opportunamente impostata perché produca un segnale di tipo PWM.
Figura VI.3: Modi di funzionamento delle uscite di Output Compare del microcontrollore
Il periodo del segnale PWM è impostato tramite il registro PR associato al timer ed è inoltre
dipendente dal valore del prescaler e dalla frequenza di funzionamento del microcontrollore. La
frequenza di funzionamento deve essere sufficientemente elevata da poter essere filtrata senza
residui del filtro RC del circuito di controllo dei magnetotorquer ma, dall’altra parte, non deve
essere generata con un valore troppo piccolo di PR per poter mantenere una buona risoluzione.
74
Dallo schema mostrato in figura VI.3, infatti, appare chiaro come l’impulso venga attivato all’inizio
del periodo impostato da PR (TMR è il registro che contiene il valore del timer e viene resettato
quando raggiunge il valore impostato in PR) e terminato quando il contatore raggiunge il valore
contenuto nel registro OCxR, dove “x” è l’identificatore dell’uscita. Di conseguenza, il numero
massimo di passi possibili per il segnale PWM sarà pari a PR, che è un valore a 16 bits.
Nel caso specifico, i valori impostati sono i seguenti:
-
Frequenza di funzionamento del micro: 70Mhz
-
Prescaler: 1:1
-
PR: 2000
La frequenza del segnale PWM risulta quindi pari a 35KHz, con quindi 2000 passi di regolazione
disponibili della corrente dei magnetotorquer.
Le operazioni per poter utilizzare questa periferica sono quindi le seguenti:
Setup Timer 2:
- Frequenza
Setup OC (x3):
- Modo di funzionamento
- Periodo
- Abilitazione
Impostazione corrente:
- Scrittura registro OCxR
Figura VI.4: Schema a blocchi della procedura di configurazione del PWM associato ai
magnetotorquer
Ogni uscita possiede un suo registro OCxR indipendente dagli altri, per cui mentre il Timer2
imposta la frequenza comune per tutti i segnali associati, il duty cycle del PWM è indipendente e
permette di controllare tutte le bobine senza limitazioni.
75
Come spiegato in precedenza, i magnetometri hanno bisogno di un segnale di Set/Reset per poter
funzionare. Questo è implementato tramite un interrupt associato ad un timer: allo scadere del
tempo prefissato, viene invertita per due volte in successione il valore dell’uscita associata al
segnale, generando così l’impulso.
Nuovamente si richiede l’impostazione del timer, che questa volta ha bisogno di una bassa
frequenza di funzionamento. Tramite i registri descritti per il timer associato al segnale PWM, si è
scelto un intervallo tra un impulso e l’altro di 50ms e una durata dell’impulso di 2us, secondo le
indicazioni ricavate dal datasheet dei magnetometri.
Per ottenere questo cambiamento di frequenza, all’interno della funzione stessa dell’interrupt
vengono modificati i parametri di funzionamento del timer nel seguente modo:
Interrupt
Impostazione Timer 4:
- Frequenza
- Prescaler
Abilitazione
Primo interrupt
-
Uscita S/R alta
Impostazione timer per 2us
Secondo interrupt
-
Uscita S/R bassa
Impostazione timer per
50ms
Figura VI.5: Schema a blocchi della funzione di generazione del segnale di Set/Reset
Anche il segnale di controllo dei motori si genera tramite le porte di Output Compare, utilizzate
però in modo impulso invece che in modo PWM.
Il problema in questo caso è che, oltre a variare la durata dell’impulso per mantenere sempre un
duty cycle del 50% con il variare della frequenza, è necessario anche variare le impostazioni del
timer associato alla porta. Come detto, a causa di limitazioni hardware, solo i timer 2 e 3 possono
essere associati al modulo di Output Compare, obbligando all’uso di una sola uscita alla volta per il
controllo dei motori.
76
Figura VI.6: Modi di funzionamento delle porte di Output Compare del microcontrollore
In questo modo di funzionamento, il registro OCxR indica il momento in cui l’impulso viene
attivato, mentre il registro OCxRS quando l’impulso deve terminare.
Nell’applicazione presente il valore di OCxR può essere mantenuto sempre a 0, per far iniziare
l’impulso ad ogni reset del contatore, mentre il valore di OCxRS sarà pari alla metà di PR, per
generare un’onda quadra.
I valori di impostazione del timer sono quindi i seguenti:
-
Frequenza di funzionamento del micro: 70Mhz
-
Prescaler: 1:256
-
PR: da 2 a 65535
Questi valori permettono generare un’onda quadra a partire da una frequenza di 4Hz fino a
136.7KHz. Tenendo in conto le caratteristiche del motore (si veda il paragrafo V.6), questo significa
una velocità di rotazione compresa tra 0.02Hz (1.2rpm) e 711Hz (>42700rpm). Modificando anche
il valore del prescaler, è possibile raggiungere velocità più elevate qualora sia necessario.
Finora sono state presentate funzioni che non richiedono il trasferimento di dati, quindi l’unica via
disponibile per scaricare il software della loro gestione è stato utilizzare l’interrupt. Per il
trasferimento dati, invece, è possibile avvalersi del DMA.
Ad ogni tipo di trasferimento è necessario associare un canale DMA, quindi alla porta seriale ne
saranno associati due: uno per la trasmissione e uno per la ricezione.
Nel caso della trasmissione dati, un buffer software viene assegnato al DMA prescelto, generando
quindi una associazione tra il registro del DMA che andrà a contenere il dato e l’indirizzo di
memoria del buffer. Nel momento in cui si desidera iniziare una trasmissione, si dovrà impostare il
77
numero di caratteri che compongono il messaggio in uno speciale registro del DMA ed iniziare la
trasmissione. A questo punto, tutto il procedimento è completamente trasparente al software, che
può proseguire senza interruzione la sua esecuzione, fino al termine del messaggio quando viene
inviato un interrupt per segnalare la conclusione delle operazioni di DMA. All’interno della
funzione di interrupt verrà resettata una variabile che segnala una trasmissione in corso al resto del
programma, per evitare scritture nel buffer di uscita mentre questo viene utilizzato.
La ricezione dei dati tramite DMA presenta invece un requisito: com’è stato detto, è necessario
impostare il registro che indica il numero di volte che il canale deve essere utilizzato prima di
mandare un interrupt che segnala il completamento delle operazioni. Nel caso della ricezione di
dati, questo significa il completamento del messaggio e, di conseguenza, richiede la conoscenza a
priori della lunghezza del messaggio stesso. Ci possono essere strade software per ovviare a questo
problema, ma per il momento si è scelto di utilizzare una lunghezza fissa del messaggio: questa
decisione richiederà più lavoro sullo sviluppo di un protocollo di comunicazione, ma permette di
mantenere più semplice, affidabile e snello il firmware di bordo. Nella funzione di interrupt si
procederà a segnalare che un nuovo messaggio è stato ricevuto, per poi elaborarlo all’interno del
ciclo di esecuzione del software: dato che un interrupt blocca l’esecuzione di tutte le funzioni di
priorità inferiore, è sempre opportuno mantenere il più breve possibile i processi che vengono
eseguiti in questa modalità e delegare il più possibile le operazioni che possono richiedere tempo al
normale flusso software.
Anche al convertitore analogico-digitale viene associato un DMA: in questo caso il suo compito è
trasferire ogni acquisizione dal registro interno della periferica al buffer di memoria in cui viene
immagazzinato per il suo utilizzo da parte del software. Nuovamente, si sceglie un numero di
esecuzioni del DMA prima che scatti l’interrupt, che in questo caso è pari al numero di ingressi da
scansionare. Nella funzione di interrupt si segnalerà che la tabella dei valori acquisiti è stata
aggiornata.
Come si evince da quanto detto, queste funzioni permettono solo un controllo di base delle
periferiche del microcontrollore e dovranno essere utilizzate manualmente, ma da una parte
permettono di valutare le potenzialità e le caratteristiche del sistema che è stato sviluppato e
dall’altra saranno la base per la scrittura delle funzioni di più alto livello.
78
VI.3: Test funzionali
Una volta messo in funzione il microcontrollore, la prima scheda ad essere testata è stata quella dei
magnetotorquer. I test hanno riguardato la generazione del segnale PWM, la sua qualità e stabilità e
il funzionamento dei generatori di corrente. Il segnale generato dal microcontrollore utilizzando le
periferiche hardware descritte nel paragrafo precedente si è rivelato di ottima qualità e stabilità, in
qualunque condizione di funzionamento. La frequenza è sufficientemente elevata per non presentare
alcuna ondulazione residua a valle del filtro RC del generatore di corrente e la risoluzione si è
dimostrata ottima..
Figura VI.7: Esempi di segnale PWM (sinistra e centro) e segnale in uscita al filtro RC
La figura superiore offre due esempi di segnale PWM generato dal microcontrollore a diverso duty
cycle e stessa frequenza, a sinistra, e il segnale ottenuto in uscita, a destra. Come si vede
chiaramente, solo la componente continua del segnale passa attraverso il filtro, permettendo un
controllo stabile della corrente del generatore.
Figura VI.8: Segnale in uscita al filtro RC a seguito di un segnale PWM a bassa frequenza
79
E’ stata fatta una prova per verificare la capacità del microcontrollore di produrre tre segnali PWM
a frequenza fissa e duty cycle variabile via software, utilizzando un interrupt relativo ad un timer.
I risultati sono stati discreti: il segnale è sufficientemente stabile finché il microcontrollore non ha
altre funzioni da svolgere, mentre tende a degradare nel caso in cui si inseriscono trasmissioni dati o
altre funzioni che richiedono l’uso di altri interrupt. Alzando la priorità dell’interrupt relativo alla
generazione del segnale si ottiene un ulteriore miglioramento della situazione, a fronte di un
accettabile rallentamento delle altre attività svolte dal software. La frequenza non può però essere
mantenuta troppo alta per non avere una esecuzione del software eccessivamente frammentaria,
comportando un eccessivo ripple nel segnale di controllo del generatore di corrente come
nell’esempio mostrato in figura VI.8 relativo ad un segnale PWM al 50% del duty cycle.
In definitiva il segnale PWM che controlla i magnetotorquer deve essere generato necessariamente
via hardware.
Il controllo della corrente si è rivelato ottimo. La sequenza seguente di immagini mostra la corrente
massima che è stata impostata per ogni canale, fissando dei limiti opportuni sul duty cycle del
PWM, e l’effetto dell’inversione della polarità, dimostrando che mantiene fondamentalmente
inalterata la corrente che attraversa il carico.
Figura VI.9: Test della corrente massima imposta dal circuito di controllo dei magnetotorquer
(sopra) e del circuito di inversione della polarità (centro e sotto)
80
Un ultimo test è stato quello di posizione una bussola a fianco di una delle bobine, per valutare in
maniera qualitativa l’effetto del campo magnetico prodotto dalle correnti scelte.
Figura VI.10: Rotazione della bussola a seguito del passaggio della corrente
Già con 30mA di corrente, il magnetotorquer muove di 90º la bussola, fornendo un’ottima prova
visiva del funzionamento del sistema.
Per i magnetometri, i test effettuati sono stati di due tipi: sulla generazione del segnale di Set/Reset
e sulla qualità delle letture.
Per quel che riguarda il segnale di Set/Reset, l’intervallo tra un impulso e l’altro non presenta
alcuna criticità né requisito particolare: il tempo intercorso tra due impulsi deve essere
semplicemente sufficientemente breve da assicurare un ripristino delle caratteristiche di sensibilità
del magnetometro in caso di una forte perturbazione del campo magnetico, ma nemmeno troppo
breve per non comportare un eccessivo consumo di potenza e interferenze con le misure.
Più importante invece si è rivelata la tempistica dell’impulso stesso, ossia l’intervallo di tempo tra il
fronte di salita e il fronte di discesa. Per ottenere un buon comportamento del magnetometro è stato
necessario calibrare l’intervallo di tempo l’interrupt che segna l’inizio dell’impulso e quello che ne
81
segna la fine fino al valore di 14us, mentre l’intervallo stabilito tra due impulsi è stato fissato a
200ms.
Figura VI.11: Segnale di Set/Reset
L’immagine riporta l’andamento della tensioni alla porta positiva del segnale di Set/Reset del
magnetometro. Come si vede, all’inizio dell’impulso è presente un picco di tensione positiva, che
arriva ai 12V dati dall’alimentazione, dovuto alla scarica dei condensatori posti in serie all’ingresso.
Dopo un tempo di circa 100us si nota un picco negativo, molto più limitato, dovuto questa volta alla
carica dei condensatori. È interessante notare come l’intervallo tra queste due forme d’onda sia
maggiore rispetto all’intervallo del segnale di controllo: questo può essere dovuto a diversi fattori
costruttivi interni all’integrato, come all’induttanza della linea di Set/Reset che comporta un ritardo
nel passaggio della corrente. In ogni caso, sarà necessario tener conto della durata reale
dell’impulso di Set/Reset al momento di effettuare l’acquisizione dei dati onde evitare letture
falsate.
Un altro effetto che è stato preso in considerazione durante questi test è il tempo di decadimento
della corrente che scorre nelle bobine. I magnetotorquer, infatti, possono essere considerati come un
82
carico puramente induttivo. L’induttanza si oppone ai cambiamenti di modulo e verso della corrente
che l’attraversa, portando quindi a sostenere per un certo tempo il campo magnetico generato anche
quando il generatore di corrente venga spento. Per poter implementare la funzione di controllo dei
magnetotorquer, è necessario effettuare delle letture del campo magnetico terrestre e calcolare la
variazione tra una lettura e l’anteriore: se il campo generato dalle bobine non è nullo nel momento
delle letture, si introducono componenti spurie che alterano il funzionamento del sistema. Per
questo motivo, è importante valutare dopo quanto tempo scompaia il campo applicato per sapere
quando è possibile effettuare le misurazioni.
Per fare questa verifica è stata creata una funzione che applica la massima corrente ad una bobina e,
ad intervalli regolai, spegne e riaccende il circuito. L’uscita dell’amplificatore del magnetometro è
mostrata in figura:
Figura VI.12: Effetto dell’attivazione della bobina sui sensori di campo magnetico
Il momento in cui la bobina è spenta corrisponde al gradino alto del segnale in uscita. Come si vede
chiaramente, tanto il fronte di salita come quello di discesa sono smussati, con un tempo di
assestamento nell’ordine dei 2ms.
83
I tempi da rispettare nell’effettuare le misure saranno quindi pari a 350us di attesa dopo l’invio di
un segnale di Set/Reset e almeno 2ms dopo lo spegnimento dei magnetotorquer.
Questa misura dimostra anche che la presenza dei magnetometri associata ai sensori di corrente è
più che sufficiente a determinare il corretto funzionamento del sistema di controllo magnetico, dato
che l’effetto dei magnetotorquer è ben visibile nelle letture dei sensori di bordo e non richiede alcun
altro tipo di feedback.
Nonostante queste accortezze, la lettura effettuata dal microcontrollore presenta un certo rumore
che può causare problemi nel momento in cui si effettua la derivata del segnale campionato,
probabilmente derivante dalla presenza di diversi circuiti digitali nelle vicinanze e impossibili da
schermare a causa delle ridotte dimensioni del sistema. Per risolvere questo problema si introdurrà
nel software un sistema di campionamento multiplo su cui si effettuerà la media, per ottenere letture
più stabili. Data l’estrema rapidità del convertitore analogico-digitale e le relativamente basse
frequenze con cui può variare il campo magnetico, l’acquisizione di un elevato numero di campioni
non compromette la dinamica del sistema.
Durante i test si è evidenziato un problema relativo ai magnetometri: due canali su tre presentavano
un’uscita quasi saturata verso uno dei due valori estremi e una bassissima sensibilità alle variazioni
del campo magnetico. Dopo una serie di test per verificare le funzionalità delle singole componenti
del circuito, si è capito che il problema deriva da un comportamento anomalo del ponte di misura
del magnetometro stesso. In altre parole, o per differenze nelle tolleranze dei componenti interni o
per la presenza di elementi che distorcono il campo magnetico esterno come i nuclei dei
magnetotorquer, il ponte di misura viene a trovarsi molto spostato verso un estremo o l’altro,
impedendo di effettuare misure corrette.
Questa circostanza, descritta come di rara occorrenza nella documentazione tecnica del sensore, è
facilmente risolta utilizzando l’ingresso di Offset del magnetometro, applicando quindi una corrente
esterna che riporti il sensore in condizioni di equilibrio in mancanza di un campo esterno applicato.
Utilizzando come riferimento il canale che non presentava questo problema, sono stati quindi tarati
gli altri due canali rimanenti perché fornissero una uscita il più simile possibile quando rivolte nella
stessa direzione, ottenendo quindi gli stessi comportamenti su tutti tre gli assi.
Il test della scheda dei motori non ha rivelato alcun problema.
È stato tuttavia osservato che, per il modo in cui viene generato il segnale di clock che imposta la
velocità di rotazione del motore, si ha una altissima risoluzione nell’impostare velocità
estremamente basse, mentre le alte velocità presentano pochi valori possibili. Questo fenomeno è
chiaramente mostrato nel grafico in figura VI.13, con l’asse X in scala logaritmica che rappresenta
84
il valore inserito nel registro del timer associato al segnale di clock, e la frequenza del segnale
corrispondente sull’asse Y.
4
14
x 10
12
Frequenza
10
8
6
4
2
0
0
10
1
10
2
3
10
10
Valore timer PWM
4
10
5
10
Figura VI.13: Simulazioni dell’andamento della frequenza imposta ai motori in funzione del valore
del timer che genera il PWM di controllo
Questo comportamento deriva dal fatto che la grandezza che si imposta è il periodo del segnale, con
un andamento lineare: la frequenza presenta quindi un andamento del tipo di 1/x, con un rapido
aumento per i valori più piccoli. Un modo per ovviare a questo problema è modificare il prescaler
del timer man mano che ci si avvicina a frequenze elevate, in modo da guadagnare risoluzione e
poter cambiare frequenza in maniera più graduale.
Ovviamente i cambiamenti di prescaler devono avvenire senza salti, per cui si possono scegliere
alcuni valori speciali per effettuare il cambio, mantenendo però lo stesso segnale in uscita. In
particolare:
Passaggio dal prescaler x256 al x64: 33Hz
Passaggio dal prescaler x64 al x8: 2136Hz
Passaggio dal prescaler x8 a x1: 68359Hz
Il risultato di questa operazione è ben visibile nel grafico della simulazione:
85
4
14
x 10
12
Frequenza
10
8
6
4
2
0
0
10
1
10
2
3
10
10
4
10
5
10
Passi
Figura VI.14: Simulazioni dell’andamento della frequenza di rotazione del motore a seguito delle
modifiche introdotte nella funzione di generazione del segnale PWM di controllo
Il cambiamento nell’andamento del grafico è estremamente evidente: oltre ad avere più passi di
regolazione disponibili (>90000 contro >64000 nel caso precedente), la crescita della frequenza è
estremamente più lenta e controllabile. Si notano chiaramente i passaggi da un prescaler all’altro,
che modificano l’andamento del grafico.
VI.4: Modifiche decise e realizzazione di un secondo prototipo
In generale i test effettuati sul prototipo hanno confermato la validità del progetto.
Alcune piccole modifiche o aggiustamenti si sono rese necessarie per risolvere diversi
inconveniente emersi durante le prove, ma nel complesso i circuiti non hanno richiesto particolari
cambiamenti.
In particolare, rispetto alla prima versione, sono state decise le seguenti migliorie:
86
-
Scheda dei magnetotorquer: sono stati raffinati i guadagni dei sensori di corrente per
ottimizzare il range del segnale rispetto alle tensioni permesse dal convertitore analogicodigitale; è stata eliminata la predisposizione per i sensori ad effetto hall da installare nei
magnetotorquer come seconda linea di feedback del loro funzionamento, visto che è stato
dimostrato come la sensoristica già esistente sia sufficiente per valutarne il funzionamento.
-
Scheda dei magnetometri: sono stati regolati i guadagni degli amplificatori dei sensori di
campo magnetico, adattandoli ai campi presenti a terra per i test; bisogna comunque tenere
presente che saranno ulteriormente da regolare per le intensità di campo magnetico previste
in orbita; è stato aggiunto il circuito di offset per poter correggere eventuali sbilanciamenti
nel ponte di misura, come si è verificato durante i test; è stato modificato il valore della
tensione di offset utilizzato per centrare l’uscita degli amplificatori differenziali per tenere
conto delle limitazioni proprie dell’amplificatore differenziale: non si tratta di un dispositivo
rail-to-rail, ossia in grado di raggiungere un’uscita variabile tra la tensione di alimentazione
e massa, ma solo valori più limitati. Per avere la maggior dinamica possibile ed avere
l’uscita in assenza di segnale di ingresso centrata sull’effettivo range disponibile invece che
sul range di alimentazione, si è dovuto quindi modificare la tensione di offset.
Le schede del microcontrollore e dei motori non hanno richiesto sostanziali cambiamenti.
La forma di tutte le schede poi è stata adattata allo spazio disponibile con la versione definitiva
della struttura esterna, richiedendo quindi un adattamento per le due schede centrali
(microcontrollore e magnetometri) per poter lasciar spazio alla rientranza del supporto dei motori.
Le nuove schede sono state stampate ed assemblate completamente per poter effettuare una ultima
serie di test funzionali e cominciare lo sviluppo del software definitivo.
87
Capitolo VII: Dispositivo finale
La realizzazione del secondo prototipo ha permesso di verificare le modifiche apportate al progetto
e testarne la validità. Le schede sono state quindi interamente assemblate per formare un prototipo
completamente funzionante, su cui avviare lo sviluppo del software.
Nel presente capitolo si descriveranno le modifiche realizzate tra la versione prototipo e quella
finale, le fasi di sviluppo del software e le caratteristiche definitive del sistema.
Si descriverà quindi l’interfaccia di comunicazione del sistema di controllo d’assetto verso
l’esterno, la struttura della telemetria e l’organizzazione dei registri interni e un esempio di
funzionamento.
VII.1: Modifiche effettuate al prototipo
La maggior parte delle modifiche hanno interessato i valori dei componenti: per ottimizzare le
prestazioni, i range di misura, i guadagni degli amplificatori e i punti di lavoro dei vari circuiti, si
sono rese necessarie diverse tarature dei componenti.
Tuttavia, alcuni circuiti specifici sono stati modificati in maniera più sostanziale: in particolare, è
stata eliminata la sezione di sensori ad effetto Hall, dato che il loro impiego si è rivelato superfluo a
seguito delle osservazioni svolte durante i test del primo prototipo e riportate nel capitolo
precedente; si è poi resa necessaria l’aggiunta di un circuito di offset per i sensori di campo
magnetico, che è stato aggiunto alle schede.
A seguito delle verifiche sulla qualità dell’alimentazione e dei test effettuati sui convertitori
analogico-digitale e del rilevamento di una incompatibilità tra la tensione massima del riferimento
di tensione per detto convertitore e l’alimentazione generale del sistema di controllo, è stata rimossa
questa alimentazione dalla scheda di controllo digitale. Il riferimento di tensione del convertitore,
quindi, è passato ad essere l’alimentazione stessa del microcontrollore, opportunamente filtrata,
senza portare a nessun cambiamento sostanziale nelle prestazioni del sistema.
È stato poi effettuato un cambiamento nel posizionamento delle schede all’interno della struttura
meccanica, invertendo la faccia su cui sono fissate: a causa delle limitate combinazioni di altezze
complessive possibili dei connettori tra scheda e scheda e dei vincoli imposti dalle altezze dei
componenti, è stato necessario garantire più margine nella parte superiore utilizzando una delle
facce vuote come chiusura della struttura. In questo modo, però, uno dei tre motori viene a trovarsi
88
dalla parte opposta rispetto alla scheda di controllo, per cui è stato necessario inserire un connettore
aggiuntivo per realizzare una prolunga che arrivi fino alla posizione di fissaggio del motore.
In fase di revisione delle schede, infine, è stato leggermente modificato il perimetro per adattarlo
meglio alla sagoma interna della struttura in cui sarà alloggiato.
Una volta stampate le schede, sono state interamente montate, testate e assemblate.
Nessuna ulteriore modifica si è resa necessaria, quindi si è proceduto allo sviluppo del software.
Le immagini seguenti mostrano le schede assemblate pronte per i test finali.
Figura VII.1: Scheda del controller dei motori
Figura VII.2: Scheda dei magnetometri
89
Figura VII.3: Scheda del microcontrollore
Figura VII.4: Scheda dei magnetotorquer
Durante i primi test funzionali con l’intera struttura assemblata, compresi i motori, sono stati rivelati
dei problemi relativi al magnetometro corrispondente agli assi X e Y: a causa della vicinanza ad un
motore il sensore risultava in alcuni momenti saturato.
A seconda della posizione del rotore, infatti, il magnete permanente contenuto in esso generava un
campo magnetico che interferiva con le letture su entrambi gli assi. È stato tuttavia riscontrato che,
in alcune posizioni, il magnetometro ricominciava a funzionare correttamente.
Un primo tentativo fatto per risolvere il problema è stato quello di creare una funzione che, nel
momento in cui fosse stato necessario l’uso del magnetometro, posizionasse il motore in un punto
90
in cui non disturbasse le letture. Il procedimento, corretto in linea teorica, non ha mostrato buoni
risultati a causa dell’inerzia della ruota che portava il rotore a superare la posizione corretta.
Non è rimasta quindi alcuna alternativa se non quella di ridisegnare la scheda dei magnetometri,
lasciando fermo il sensore dell’asse Z che non ha mostrato problemi e cambiando di posizione a
quello degli assi X-Y, muovendolo verso un estremo della scheda che fosse meno interessato dalla
presenza dei motori.
Figura VII.5: Modifiche della scheda dei magnetometri nell’ultimo prototipo
L’immagine mostra la differenza di posizione del sensore nelle due schede e quella successiva il
sistema assemblato.
Figura VII.6: Schede assemblate
91
VII.2: Funzioni firmware di alto livello
Le funzioni a basso livello, descritte nel capitolo precedente, servono per gestire le periferiche a
livello hardware: si occupano, cioè, della generazione dei segnali di controllo dei motori, dei
magnetotorquer e dei sensori, interfacciandosi direttamente con i registri del microcontrollore.
Se da una parte in fase di test del dispositivo è utile lavorare a questo livello di astrazione, risulta
dall’altro estremamente scomodo e ripetitivo affidarsi a questo tipo di funzioni nel momento in cui
si vogliano rendere disponibile ad un utente le funzionalità offerte. È quindi necessario creare un
nuovo livello di funzioni, basate su quelle a più basso livello, che eseguano in maniera automatica
tutte le procedure necessarie per svolgere compiti complessi e a cui l’utente debba solo passare
alcuni parametri di funzionamento.
Nei successivi paragrafi ne sarà quindi descritta l’implementazione.
VII.2.1: Impostazione della potenza e della polarità dei magnetotorquer
La tabella seguente riassume i parametri in ingresso e in uscita della funzione di controllo dei
magnetotorquer:
Parametri in ingresso Parametri in uscita
Valore della corrente
Stato dell’esecuzione dell’operazione
Verso della corrente
Assi da comandare
Parametri in ingresso:
-
Valore della corrente: per comodità il valore della corrente conviene sia espresso in
percentuale rispetto al massimo, pari a 55mA come verificato durante i test. In questa
maniera, qualunque modifica nelle caratteristiche del circuito o delle bobine richiederà solo
un aggiornamento all’interno di questa funzione lasciando immutato il resto del
programma13.
-
Verso della corrente: è necessario che la funzione sappia qual è il verso richiesto della
corrente.
13
Alcune funzioni, come per esempio la funzione che implementa la legge di controllo, possono aver bisogno di
impostare una corrente ben definita, in termini di mA. In questo caso, è sufficiente definire un valore globale all’inizio
del programma, valido per tutte le funzioni, e utilizzarlo per effettuare una conversione tra valore percentuale rispetto al
fondo scala e valore assoluto. Anche in questo caso, a fronte di cambiamenti nelle caratteristiche del circuito, sarà
sufficiente aggiornare questa costante.
92
-
Assi da comandare: l’impostazione del nuovo valore può essere applicato ad una bobina in
concreto, oppure a più di una. La presenza di questo parametro permette quindi di
selezionare un asse, due (con tutte le possibili combinazioni) oppure tutte tre le bobine.
Quest’ultimo caso è utile, ad esempio, quando si voglia spegnere il sistema.
Parametri in uscita:
-
Stato dell’esecuzione dell’operazione: prima di inviare il comando alle periferiche, al
funzione provvederà a verificare la correttezza dei parametri inviati. Nel caso in cui si
riscontrasse qualche incongruenza, come per esempio un valore inaspettato di corrente o un
parametro non riconosciuto, un codice di errore restituito dalla funzione permette di venirne
a conoscenza.
Implementazione:
La funzione può procedere ad impostare i valori di corrente senza particolari accorgimenti. L’unica
accortezza da tenere in conto è, nel caso di un cambio di polarità partendo da una corrente diversa
da zero, far avvenire il cambio in maniera graduale, per evitare picchi di corrente al momento
dell’inversione e della scarica dell’energia immagazzinata nei magnetotorquer che possono a lungo
andare danneggiare i mosfet del ponte di controllo.
Di conseguenza, quando venga richiesto un cambio di polarità della corrente, la funzione
provvederà dapprima a verificare se la corrente attuale è al di sopra o al di sotto di una soglia di
sicurezza; nel caso in cui sia al di sotto, effettuerà il cambio di polarità e la variazione della
corrente; nel caso opposto, invece, provvederà a ridurre gradualmente la corrente fino a zero, per
poi effettuare il cambio di polarità e impostare la corrente desiderata.
VII.2.2: Funzione di lettura dei sensori
Questa funzione esegue la lettura dei sensori e aggiorna le variabili interne con i valori ricavati.
Parametri in ingresso
Parametri in uscita14
Tipo di lettura
Valori RAW o elaborati
14
La funzione non presenta parametri in uscita perché i valori acquisiti vengono scritti direttamente nelle allocazioni di
memoria delle tabelle contenenti le letture dei sensori e non passati ad altre funzioni attraverso altre variabili.
93
Parametri in ingresso:
-
Tipo di lettura: la lettura può essere completa, acquisendo i valori delle componenti del
campo magnetico, delle correnti dei motori e delle tensioni delle varie alimentazioni, oppure
sintetica, limitandosi ad acquisire i valori del campo magnetico da impiegare nella funzione
di controllo. Per ridurre il carico computazionale del microcontrollore può essere utile infatti
effettuare una lettura completa solo quando sia necessario.
-
Valori RAW o elaborati: la funzione può restituire semplicemente le letture dell’ADC,
espresse quindi in termini di bit, oppure elaborare dette letture e convertirle nelle rispettive
unità di misura, quindi in mA, uG, etc. Per la trasmissione della telemetria può risultare
conveniente utilizzare i valori ricavati direttamente dall’ADC, più facili da trasmettere,
rispetto a valori con decimali come possono essere quelli convertiti.
Implementazione:
La funzione richiama le direttive di basso livello che si occupano di gestire tutte le periferiche di
acquisizione. In particolare per quel che riguarda la funzione di lettura del campo magnetico,
descritta nel dettaglio nel capitolo precedente, si effettua un azzeramento temporaneo della corrente
dei magnetotorquer, si attende il tempo necessario perché si annulli il campo magnetico nei nuclei,
poi si esegue la lettura e si ripristina la situazione precedente.
Per le letture che lo necessitino viene effettuato un filtraggio acquisendo più valori e calcolandone
la media: i parametri di queste operazioni non vengono stabiliti al richiamo della funzione ma
tramite registri interni, descritti in seguito.
Nel caso in cui si richieda una lettura completa, viene anche aggiornato lo stato del sistema,
descritto nell’ultimo paragrafo del presente capitolo.
VII.2.3: Legge di controllo –b.
Questa funzione implementa la legge di controllo utilizzata durante la fase automatica di
smorzamento delle velocità angolari iniziali.
Parametri in ingresso Parametri in uscita
Costante k
Stato dell’esecuzione dell’operazione
Timeout
94
Parametri in ingresso:
-
Costante k: la funzione riceve come parametro la costante che indica il guadagno della
funzione. A valori più alti corrisponde un controllo più forte e una maggiore amplificazione
del valore della derivata, ma se eccessivo può portare ad instabilità nel controllo e a
sensibilità al rumore.
-
Timeout: tramite questo parametro si può richiedere che la funzione sia eseguita solo per un
determinato tempo oppure fino a quando le velocità di rotazione non scendano al di sotto di
una determinata soglia. In questo secondo caso, la soglia è impostata tramite i registri interni
del dispositivo e non rappresenta un parametro della funzione.
Parametri in uscita:
-
Stato dell’esecuzione dell’operazione: la funzione periodicamente aggiorna i registri interni
di stato segnalando se il controllo è attivo, ha terminato l’operazione richiesta, etc.
Implementazione:
Quando si attiva la funzione, viene abilitato il timer che, periodicamente, esegue la lettura dei
sensori, il calcolo della derivata del campo magnetico e della corrente da imporre nelle bobine.
L’intervallo di tempo tra una acquisizione e la successiva è determinato dai registri interni e non
rappresenta un parametro della funzione. La funzione termina la sua esecuzione una volta raggiunto
il tempo di esecuzione impostato oppure quando le velocità di rotazione rimangono al di sotto di
una soglia prefissata.
Lo schema a blocchi in figura VII.7 mostra la sequenza di funzionamento della legge di controllo:
una volta abilitato il timer che determina l’intervallo di tempo tra una esecuzione e l’altra della
legge, il funzionamento è automatico. Ad ogni scadere del timer, vengono acquisite una serie di
letture dai magnetometri. Queste letture sono filtrate per ridurre il rumore attraverso il calcolo di
una media, poi vengono utilizzate per calcolare la derivata utilizzando i valori precedenti salvati in
memoria, quindi viene calcolata la corrente da impostare su ogni asse e infine viene inviato il
comando alla scheda di controllo dei magnetotorquer.
95
Attivazione
–b·
Scadenza
timer
Campionamento
multiplo
Attivazione
magnetometri
Calcolo
medie
Attivazione
timer
campionamento
Calcolo
derivata
Calcolo
corrente
Impostazione
corrente
Figura VII.7: Schema a blocchi della funzione –b·
VII.2.4: Controllo dei motori
Questa funzione permette il controllo dei motori per le manovre orbitali, assicurando che uno solo
sia in rotazione, a causa delle limitazioni del prototipo descritte in precedenza, e governando i
cambiamenti di velocità.
Parametri in ingresso Parametri in uscita
Asse
Stato dell’esecuzione dell’operazione
Direzione
Frequenza
Parametri in ingresso:
-
Asse: indica il motore che deve essere utilizzato. Dato che un solo motore per volta può
essere messo in moto, qualora un motore diverso da quello indicato fosse già in funzione la
funzione provvede a fermarlo prima di eseguire l’ultimo comando inviato.
-
Direzione: indica la rotazione in senso orario o antiorario
-
Frequenza: indica la frequenza di rotazione del motore, espressa in Hz.
96
Parametri in uscita:
-
Stato dell’esecuzione dell’operazione: tramite i registri interni, la funzione segnala quali
motori sono fermi, quale è in fase di raggiungimento della velocità desiderata e quale si
trova a regime.
La funzione è divisa in due parti separate.
La prima parte è direttamente accessibile all’utente ed è incaricata di interpretare i parametri dati in
ingresso e calcolare tutti i parametri interni necessari per il funzionamento del motore.
La prima parte della funzione è mostrata nello
Controlla se
ci sono altri
motori attivi
Sì
Richiedi stop
del motore
schema a blocchi a lato. Come primo passo
controlla che non ci sia alcun motore già attivo,
ovviamente al di fuori di quello che si vuole
comandare. Nel caso in cui ce ne sia uno, abilita un
Calcola periodo,
prescaler e
parametri
comando all’interno dei registri di funzionamento
del motore che richiede lo stop dell’asse
attualmente
Scrittura dei
registri interni
in
funzione
previamente
all’esecuzione del comando.
Successivamente,
vengono
calcolati
tutti
i
parametri di funzionamento del motore: se si
Avvio del
timer della
rampa
desidera un’accelerazione o una decelerazione, il
verso di rotazione, il prescaler e il periodo del
timer che genera il segnale di clock del motore.
Una volta che tutti questi parametri sono scritti nei
registri associati al funzionamento del motore,
viene attivato il timer che regola la rampa di accelerazione.
97
Sì
È stato richiesto uno stop di
un motore in movimento?
No
Salva i parametri e
richiedi lo stop
Il prescaler richiesto è
uguale a quello attuale?
Sì
Aumenta o diminuisci il
periodo
Raggiungi gradualmente
il prescaler richiesto
Modifica del timer della
rampa in base al
prescaler e la periodo
attuale
Modifica del timer della
rampa in base al
prescaler e la periodo
attuale
No
È stato raggiunto il
periodo desiderato?
Attesa per il prossimo
ciclo
Sì
Cambio di verso di
rotazione?
No
Sì
Cambia il verso di
rotazione e carica i valori
desiderati
No
Era stato richiesto uno
stop di un motore?
Sì
Carica i valori desiderati
Sì
Spegni la scheda
No
Tutti i motori sono
fermi?
No
Disattiva il timer della
rampa
Figura VII.8: Schema a blocchi della funzione di controllo dei motori
A questo punto entra un gioco la seconda parte della funzione, quella incaricata di regolare il
movimento del motore ed inserita all’interno dell’interrupt associato al timer 5 che regola la rampa
di accelerazione o decelerazione. L’interfaccia tra queste due funzioni sono, come detto, i registri
interni associati al motore che permettono di trasmettere e salvare tutti i dati necessari. Questa
soluzione permette di rendere il funzionamento del motore trasparente al resto del programma, che
98
così non deve aspettare i tempi necessari perché la ruota acceleri fino alla velocità desiderata, oltre a
permettere di generare una rampa in maniera molto affidabile.
Per rendere più chiara l’implementazione di questa funzione, è necessario ricordare quanto spiegato
in precedenza riguardo alla generazione del segnale di clock che impone la frequenza di rotazione
del motore. Questo segnale è governato da un timer e, di conseguenza, dipende da due parametri:
dal periodo del timer stesso e dal prescaler associato al segnale di clock del timer. A causa della
dipendenza di tipo 1/t della frequenza di rotazione del motore, quando il periodo diventa piccolo
una diminuzione di un bit corrisponde ad un cambiamento sempre più grande nella frequenza di
rotazione. È quindi necessario variare anche il prescaler per poter mantenere il più costante
possibile l’accelerazione.
Alla prima esecuzione della funzione viene verificato se si sia chiesto lo stop di un motore già in
movimento. In caso affermativo, le impostazioni correnti vengono salvate in un registro buffer e
viene richiesto al motore in moto di fermarsi. A questo punto, ad ogni richiamo della funzione di
interrupt, si verifica che il prescaler sia quello richiesto o meno. Se non lo è, si procede ad
accelerare o decelerare gradualmente tramite il periodo fino ad effettuare il cambio di prescaler, a
seconda che si debba eseguire un’accelerazione o una decelerazione. Viene quindi aggiornato il
periodo del timer che regola l’interrupt a seconda del valore di prescaler e di periodo del timer
associato al segnale di clock, in modo da avere un’accelerazione più regolare possibile.
Quando il prescaler raggiunge il valore richiesto si entra in una seconda fase, dove nuovamente si
procede al cambio del periodo fino a quando anche questo abbia raggiunto il valore richiesto.
Quando questo avviene, si verifica se fosse stata richiesta una inversione del senso di rotazione del
motore: in questo caso, infatti, il motore viene fermato prima di invertire la rotazione e la funzione,
una volta raggiunta la velocità zero, inverte la rotazione e reimposta la velocità richiesta,
ricominciando il ciclo.
Se era stato richiesto uno stop di un motore in movimento, una volta che questo si sia fermato
vengono recuperate le informazioni salvate in un registro buffer e ricaricate in memoria,
cominciando così l’esecuzione del comando che era stato ricevuto.
Una volta quindi che sia stata terminata completamente l’esecuzione di tutti i comandi, viene
disattivato il timer.
Nel caso in cui tutti i motori siano stati fermati, viene spenta anche la scheda.
99
VII.2.5: Desaturazione dei motori
Teoricamente, una volta fermato un motore che sia stato messo in movimento, il satellite dovrebbe
annullare la rotazione che era stata imposta. Tuttavia gli attriti presenti nelle parti in movimento del
motore e piccole perturbazioni esterne possono portare, nel tempo, a delle velocità angolari residue
che richiederebbero un motore sempre in movimento perché fossero annullate. Tramite questa
funzione si ottiene lo smorzamento di questi disturbi, combinando il controllo dei motori con il
controllo dei magnetotorquer.
Parametri in ingresso Parametri in uscita
Stato dell’esecuzione dell’operazione
Parametri in ingresso:
-
Nessuno, la funzione opera automaticamente sul motore in movimento.
Parametri in uscita:
-
Stato dell’esecuzione dell’operazione: indica la fase in cui si trova la desaturazione tramite i
registri interni. Può essere lo stop del motore, l’utilizzo dei magnetotorquer o il
completamento dell’operazione.
Una volta richiamata, la funzione procede allo stop del motore attualmente in movimento. Allo
stesso tempo, abilita i magnetotorquer attivando il controllo solo sull’asse interessato dal motore e
ponendo come condizione per il termine del controllo lo smorzamento completo delle velocità
angolari.
VII.3: Sequenza tipica di funzionamento
In linea di principio, la sequenza tipica di funzionamento del sistema è quella mostrata in figura
VII.9.
All’attivazione del sistema di controllo d’assetto, comincia una prima fase in cui viene attivata la
legge di controllo –b· fino ad ottenere lo smorzamento delle velocità angolari iniziali.
In seguito, il sistema si mette in attesa di ricevere i comandi da parte dell’operatore. Qualora venga
richiesta una manovra, vengono attivati i motori fino a quando richiesto.
100
È da sottolineare che, mentre la prima fase di stabilizzazione è di tipo automatico, questa seconda
parte è completamente sotto il controllo dell’operatore.
Esecuzione
–b·
Avvio
No
Annullamento
ω?
Sì
Attesa comandi
manuali
Spegnimento
magnetotorquer
Figura VII.9: Schema a blocchi della sequenza tipica di funzionamento
VII.4: Caratteristiche finali del sistema elettronico
In questo parametro sono riassunte le caratteristiche finali del primo prototipo del sistema
realizzato, tenendo conto delle performance reali e non solo di quelle teoriche.
Sistema dei magnetotorquer
Corrente magnetotorquer
Risoluzione corrente
+/- 55mA
2000 passi - 0.055mA/passo
Nota: 1000 passi per verso della
corrente
Risoluzione
acquisizione Fondo scala: 110mA
corrente
Risoluzione: 12 bits
Sistema dei magnetometri
Risoluzione
12 bit
Nota: risoluzione limitata al
90% per il guadagno del sensore
Tempo di Set/Reset
Intervallo: 200mSec
Impuslo: 14uSec
101
Sistema dei motori
Velocità massima motore
150Hz – 9000rpm
Velocità minima motore
0.0025Hz – 0.15rpm
Tempo 0-100Hz
Numero passi 0-150Hz
Risoluzione
acquisizione
corrente dei motori
Legge di controllo
~190 secondi
66734
Fondo scala: 330mA
Risoluzione: 12 bits
Intervallo di esecuzione
Valore costante
500mSec
1-65536
Nota: limitata dalla forza del
motore
Nota: limitata dal segnale di
clock del microcontroller
Costante k
controllo
della
legge
di
Comunicazioni
Protocollo
Velocità
Standard
RS232
57.6Kbps
ASCII/Misto binario
Nota:
predisposizione
per
funzionamento completo in
binario
Come appare evidente confrontando questi dati con quelli riportati nei primi capitoli, appare chiaro
come solo in alcuni casi sia stato possibile sfruttare a pieno i valori dichiarati e le prestazioni
teoriche dei vari dispositivi.
Nelle sezioni di circuito progettate in maniera completa, come quelle di acquisizione dati ad
esempio, si è potuto sfruttare completamente la risoluzione del microcontrollore scelto.
In altri casi, i dispositivi impiegati hanno richiesto delle limitazioni.
Per quel che riguarda i magnetotorquer, la limitazione nel numero di passi disponibili deriva dalla
presenza di alcuni offset nel circuito che non è stato possibile ridurre ulteriormente, comportando
l’impossibilità di utilizzare l’intero intervallo di tensioni generabili dal microcontrollore, ottenendo
comunque un’ottima risoluzione di 0.055mA per passo.
Con la tipologia di circuito consigliata nelle note di applicazione per il sistema di lettura dei campi
magnetici si è potuto raggiungere un guadagno accettabile, che ha portato a circa 1600 counts di
differenza tra il valore massimo e minimo acquisito del campo magnetico, contro i 4096 massimi
permessi dall’ADC.
Anche la velocità massima del motore è inferiore rispetto a quella massima teorica, ma in questo
caso non si è trattato di una sorpresa. Come già accennato nel resoconto dei primi test di
funzionamento del motore, la presenza di una massa in rotazione avrebbe comportato una riduzione
delle prestazioni. Se da una parte la limitazione della frequenza di rotazione di 150Hz rispetto ai
300Hz teorici è dovuta a imperfezioni nei pezzi meccanici ricevuti e quindi presentano qualche
102
margine di miglioramento, dall’altra parte l’attrito della ruota in rotazione con l’aria e il sistema di
generazione del clock non sono eliminabili, quanto meno senza effettuare prove nel vuoto o
cambiare il circuito di generazione del clock. Questi aspetti saranno discussi in maniera più ampia
nel paragrafo VII.8, dedicato ai test sul sistema.
Infine, l’interfaccia di comunicazione con l’esterno è stata realizzata utilizzando il protocollo seriale
RS232, ad una velocità di 57.6Kbs che garantisce una rapida trasmissione della telemetria. Lo
standard di comunicazione utilizzato è tanto ASCII come binario. Una trasmissione di tipo ASCII si
rivela molto comoda durante la fase di sviluppo in quanto permette di visualizzare rapidamente su
terminale la comunicazione in corso ed inviare in maniera facile i comandi. Dall’altra parte, però,
genera un volume di traffico sensibilmente superiore rispetto ad una codifica binaria, dove vengono
sfruttati interamente gli otto bits di ogni carattere trasmesso. L’interfaccia manuale di
comunicazione, utilizzata principalmente durante i test, è stata quindi realizzata tramite caratteri
ASCII, mentre l’interfaccia di comunicazione con l’applicazione LabView sviluppata utilizza un
protocollo misto, ASCII e binario, sfruttando gli aspetti positivi di entrambe le soluzioni. In nessuno
dei due casi si sono comunque riscontrati problemi nella velocità di trasmissione.
Il sistema è stato predisposto, in ogni caso, anche per poter operare esclusivamente in binario
qualora si rendesse necessario.
VII.5: Interfaccia di comunicazione con l’esterno
Le comunicazioni che possono avvenire tra il sistema di controllo d’assetto e l’esterno sono
fondamentalmente di due tipi: ricezione di comandi e invio della telemetria.
La filosofia con cui è stata sviluppata l’interfaccia di comunicazione è quella di rendere il sistema di
controllo una sorta di “scatola nera” a cui si inviano comandi e da cui si ricevano risposte, senza che
sia necessario per i sistemi che si mettono in comunicazione con essa di conoscerne il
funzionamento, al di là ovviamente dei parametri necessari.
Esistono due strade perché questo possa avvenire.
La prima è quella di associare ad ogni funzione di alto livello una sequenza di bit, o un carattere
ASCII, a cui fa seguito un certo numero di parametri. Quando un messaggio viene ricevuto, il
sistema lo elabora, riconoscendo il comando richiesto, interpretando di conseguenza il resto del
messaggio ed eseguendolo.
Questo primo approccio è semplice e diretto, ed è stato utilizzato nella fase di test per verificare le
varie funzionalità. Presenta tuttavia alcune limitazioni importanti: per ogni comando che si vuole
103
implementare è necessario sviluppare una funzione apposta Il numero di parametri da inviare, e
quindi da ricevere, varia in funzione del comando che si vuole utilizzare e qualunque cambiamento
richiede diverse modifiche nel software.
La seconda strada, quindi, è quella di creare una interfaccia generale basata su registri, che possono
essere letti o scritti. Ad ogni registro è assegnata una locazione di memoria e l’azione di scrittura
avviene su di esse: dall’esterno si invia solo l’indirizzo a cui devono essere scritti i valori inviati.
In questo modo, il software a bordo del sistema di controllo non dovrà fare altro che controllare
periodicamente i registri che contengono i comandi di attivazione delle varie funzioni ed
eventualmente avviarle. Tutti i parametri di funzionamento vengono recuperati direttamente dai
registri, su cui vengono scritti. È inoltre possibile impostare i parametri di una funzione senza
attivarla immediatamente, in modo da poter verificare l’esito della comunicazione prima di eseguire
materialmente il comando.
Ogni volta che si voglia creare una nuova funzionalità, è sufficiente creare uno o più nuovi registri,
permettendo una implementazione rapida e omogenea.
La tabelle seguenti descrivono nel dettaglio i registri associati alle funzione descritte in precedenza,
ognuno dei quali possiede un indirizzo di base e un indirizzo di registro che permettono la lettura o
la scrittura anche di un singolo parametro, oltre che di tutto il registro. Alcuni elementi sono indicati
come di sola lettura, essendo normalmente indicatori dello stato interno di funzionamento del
sistema di controllo d’assetto e non potendo essere modificati dall’esterno.
Base
Reg
Contenuto
R/W
0x01
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
Stato bobina X
Stato bobina Y
Stato bobina Z
Stato motore X
Stato motore Y
Stato motore Z
Stato scheda motori
Stato scheda bobine
R
R
R
R
R
R
R
R
Registro di stato motori e
bobine
Stato della bobina, valore del
registro OCxRS che determina
il duty cycle del segnale di
controllo
Attivo, in movimento, fermo
Accesa-spenta
Accesa-spenta
Il primo registro contiene le informazioni di base sullo stato delle periferiche del sistema di
controllo. I primi tre elementi riportano il periodo dei timer che controllano la corrente che scorre
nei magnetotorquer; i tre successivi indicano lo stato del motore, ossia se sono fermi, in movimento
oppure se hanno raggiunto la velocità richiesta. Gli ultimi due elementi indicano se le schede delle
bobine e dei motori sono accese o spente.
104
Base
0x02
Reg
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
Contenuto
Stato legge di controllo
R/W
R
Registro della legge di
controllo
Attiva, disattiva
Attiva legge di controllo
Assi su cui attivare la legge
Valore k
Condizione di terminazione
Valore di terminazione (tempo o
velocità)
W
R/W
R/W
R/W
Da attivare o da disattivare
x, y, z, xy, yz, xyz
Valore
1 tempo, 2 velocità
R/W
valore del parametro
Il secondo registro contiene le informazioni e i parametri relativi alla legge di controllo. Il primo
campo indica se il controllo è attivo o meno, mentre il secondo ne comanda l’attivazione. I
successivi parametri servono per impostare, rispettivamente, gli assi su cui può intervenire il
controllo, il valore della costante k, se la terminazione della legge deve avvenire dopo un certo
numero di tempo oppure una volta raggiunte delle velocità angolari minime e infine il valore della
condizione di terminazione.
Base
0x03
Reg
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
Contenuto
Attivazione manuale bobine
Aggiorna
Corrente bobina X
Corrente bobina Y
Corrente bobina Z
Campo X
Campo Y
Campo Z
R/W
W
W
W
W
W
R
R
R
Registro manuale delle bobine
Attiva, disattiva
-1000...+1000
Lettura magnetometro
Il terzo registro controlla l’attivazione manuale dei magnetotorquer. Il primo campo deve essere
scritto per abilitare il controllo manuale, mentre il secondo comanda l’aggiornamento dello stato
delle bobine secondo i dati contenuti in questo stesso registro, in particolare nei tre campi
successivi. Gli ultimi tre campi contengono le letture dei magnetometri e sono di sola lettura.
Base
0x04
Reg
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
Contenuto
Attivazione manuale motori
Verso attuale
Asse
Verso
Velocità
Periodo
Prescaler
Asse
R/W
W
R
W
W
W
R
R
R
Registro manuale dei motori
Attiva, disattiva
x, y, z
+, Hz
PR3
0-3
Asse
Il quarto registro controlla il funzionamento dei motori. Il primo campo controlla l’attivazione
manuale dei motori; il secondo indica l’attuale verso di rotazione. I successivi tre campi indicano
105
quale asse deve essere modificato, il verso di rotazione e la velocità espressa in Hz. Gli ultimi tre
campi contengono le informazioni attuali sul motore, ossia il periodo e il prescaler del timer che
genera il clock del motore, e quale asse è attualmente attivo.
Base
0x05
Reg
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
Contenuto
Forza desaturazione
Asse desaturazione
Stato desaturazione
R/W
W
W
R
Registro della desaturazione
Attiva, disattiva
x, y, z
Stato
Il quinto registro è associato alla funzione di desaturazione. Il primo campo attiva la desaturazione
dei motori, mentre il secondo è stato inserito qualora si richieda un asse specifico. Come spiegato in
precedenza, questa funzionalità per ora non è utilizzata. Il terzo campo contiene lo stato della
funzione di desaturazione.
Base
0x06
Reg
0x00
0x01
0x02
0x03
0x04
0x05
0x06
Contenuto
Invio telemetria
Intervallo telemetria
Stato intervallo telemetria
Attivazione magnetometri
Attivazione sensori corrente
Stato magnetometri
Stato sensori corrente
R/W
W
W
R
W
W
R
R
0x07
Invio una sola telemetria
W
Registro della telemetria
Attiva, disattiva
0-9, 143ms
Attiva la scheda dei magnetometri
Attiva i sensori dei magnetotorquer
Richiesta di una sola lettura, azzeramento
automatico
Il sesto registro è associato alla telemetria. Il primo campo serve per attivare o disattivare l’invio
continuo dei dati di telemetria, mentre il secondo permette di impostare l’intervallo tra un invio e
l’altro in multipli di circa 150mSec. Il valore attuale di questo intervallo è riportato nel terzo campo.
I due campi successivi sono utilizzati per comandare l’attivazione della scheda dei magnetometri e
dei sensori sulla scheda dei magnetotorquer, il cui stato è indicato nei due campi successivi.
L’ultimo campo infine permette l’invio di un solo pacchetto di telemetria e viene azzerato
automaticamente una volta effettuato l’invio.
106
Base
0x07
Reg
0x00
0x01
0x02
0x03
0x04
0x05
0x06
Contenuto
Tempo di set/reset
R/W
W
Registro interno del set/reset
Tempo da impostare
Tempo attuale di set/reset
R
Tempo attuale
0x07
Aggiorna
W
Imposta, automaticamente
azzerato
Il settimo ed ultimo registro permette di modificare il funzionamento del segnale di Set/Reset che
consente di ripristinare le caratteristiche di funzionamento del magnetometro qualora sia immerso in
un campo magnetico particolarmente forte ed attivo comunque in maniera costante durante tutto
l’utilizzo dei sensori. Tramite il primo campo è possibile impostare il ritardo tra un impulso e il
seguente, il cui valore attuale è riportato nel campo successivo. L’ultimo campo, infine, effettua
l’aggiornamento del valore corrente a quello impostato.
Per poter accedere a questi registri sono state rese disponibili quattro diverse funzioni, ognuna delle
quali è associata ad un carattere ASCII particolare. La struttura del messaggio quindi sarà di questo
tipo:
Comando
Base address
Parametro
(altri parametri)
/n/r
Il Comando può essere:
-
R per leggere un singolo campo di un registro, richiedendo quindi l’invio di due parametri: il
Base address e l’indice del campo da leggere;
-
W per scrivere un singolo campo di un registro, richiedendo quindi l’invio di tre parametri:
oltre ai due dal caso precedente, anche il valore da inserire nel registro, che sarà inviato in
binario all’interno del messaggio;
-
F per la lettura di un intero registro; in questo caso è necessario un solo parametro, ossia il
Base address del registro a cui si vuole accedere;
-
X per la scrittura di un intero registro: in questo caso, oltre all’indirizzo, è necessario inviare
tutti gli otto parametri in binario che devono essere inseriti nel registro. Se alcuni campi del
registro sono di sola lettura, i valori corrispondenti inviati saranno automaticamente scartati
durante l’operazione di aggiornamento del registro.
L’ultimo campo del messaggio è il terminatore.
107
Come si capisce, questo messaggio è di tipo ibrido, contenente una parte in codice ASCII e una
parte in binario. La risposta che viene inviata a seguito della richiesta di lettura di un campo o di un
intero registro invece è interamente in caratteri ASCII, per facilitare la sua interpretazione, ed ha la
seguente struttura:
Invio di un singolo campo
SRR
Base address
Invio di un intero registro
FRR
Base address
Indice
Valore
[8 valori]
/n/r
/n/r
Il primo campo della risposta, SRR o FRR, indica se si tratta di una lettura singola o completa. Il
resto dei campi contengono l’indirizzo del registro e i valori in esso contenuto, oltre all’indice del
campo nel caso in cui si tratti di una lettura singola.
La telemetria è infine un altro tipo di risposta inviato dal sistema di controllo d’assetto. In essa si
trovano riassunte tutte le informazioni sullo stato e sulle attività in corso all’interno del sistema. La
sua struttura è la seguente:
TRW
Corrente magnetotorquer X
Corrente magnetotorquer Y
Corrente magnetotorquer Z
Campo magnetico X
Campo magnetico Y
Campo magnetico Z
Corrente motore 1
Corrente motore 2
Corrente motore 3
Impostazione corrente X
Impostazione corrente Y
Impostazione corrente Z
Periodo timer 3
Prescaler del timer 3
Stato del motore 1
Stato del motore 2
Indica l’inizio della telemetria
Riporta la corrente letta dai sensori relativi al magnetotorquer X
Riporta la corrente letta dai sensori relativi al magnetotorquer Y
Riporta la corrente letta dai sensori relativi al magnetotorquer
Campo magnetico letto sull’asse X
Campo magnetico letto sull’asse Y
Campo magnetico letto sull’asse Z
Corrente letta relativa al motore sul piano XY
Corrente letta relativa al motore sul piano XZ
Corrente letta relativa al motore sul piano YZ
Valore del registro che controlla la corrente sul magnetotorquer X
e del verso della corrente
Valore del registro che controlla la corrente sul magnetotorquer Y
e del verso della corrente
Valore del registro che controlla la corrente sul magnetotorquer Z
e del verso della corrente
Periodo del timer che controlla la generazione del clock dei
motori, unito al segno che indica il verso di rotazione
Prescaler del timer che controlla la generazione del clock dei
motori. Assieme all’informazione precedente permette di calcolare
gli Hz a cui sta ruotando il motore
Indica lo stato del motore, ‘X’ se disattivo, ‘M’ se sta
raggiungendo una nuova velocità e ‘A’ se attivo
Indica lo stato del motore, ‘X’ se disattivo, ‘M’ se sta
raggiungendo una nuova velocità e ‘A’ se attivo
108
Stato del motore 3
Indica lo stato del motore, ‘X’ se disattivo, ‘M’ se sta
raggiungendo una nuova velocità e ‘A’ se attivo
Stato scheda magnetotorquer
Indica se la scheda di controllo dei magnetotorquer è attiva
Stato sensori di corrente Indica se i sensori di corrente dei magnetotorquer sono attivi
magnetotorquer
Stato magnetometri
Indica se la scheda dei magnetometri è attiva
Stato motori
Indica se la scheda di controllo dei motori è attiva
/n/r
Terminatore della telemetria
VII.6: Struttura dei registri interni
Accanto ai registri visibili dall’esterno descritti nel paragrafo precedente, ci sono una serie di
registri interni il cui uso è riservato al sistema di controllo. Questi registri sono utilizzati dal
programma per salvare le informazioni relative ai comandi ricevuti, ai valori calcolati per
l’impostazione delle differenti periferiche, etc., e svolgono la funzione di buffer nei casi in cui
condividano alcune funzioni con i registri di pubblico accesso.
Fondamentalmente, questi registri interni si dividono in due categorie: registri di stato e registri di
comando.
Di seguito sono descritti i principali registri di stato, con una breve descrizione del loro utilizzo:
Registro di stato del motore
X Attivo
Indica se il motore 1 è attivo
Y Attivo
Indica se il motore 2 è attivo
Z Attivo
Indica se il motore 3 è attivo
Queste informazioni sono utilizzate al momento della ricezione di un nuovo comando del motore,
per verificare se può essere eseguito immediatamente oppure se è necessario lo stop del motore
attualmente in movimento prima di effettuare le modifiche di velocità richieste.
X Vel
Velocità di rotazione del motore 1
Y Vel
Velocità di rotazione del motore 2
Z Vel
Velocità di rotazione del motore 3
X Mod
Indica se c’è una modifica dello stato del motore 1
Y Mod
Indica se c’è una modifica dello stato del motore 2
Z Mod
Indica se c’è una modifica dello stato del motore 3
109
Queste informazioni servono da interfaccia tra i registri di stato di pubblico accesso e le funzioni
che aggiornano lo stato dei motori.
X New Vel
Nuova velocità di rotazione del motore 1
Y New Vel
Nuova velocità di rotazione del motore 2
Z New Vel
Nuova velocità di rotazione del motore 3
Queste informazioni sono utilizzate all’interno della funzione di interrupt che regola la rampa di
accelerazione e decelerazione dei motori.
Registro di stato della legge di controllo
Attiva
Terminata
Condizione stop
Max passi
Passi
Costante
Indica se la legge di controllo è attiva o meno
Indica se la legge di controllo è terminata
Indica la condizione di terminazione della funzione
Indica il numero massimo di passi che può eseguire
la funzione o il tempo trascorso prima di terminare
Indica il numero di passi attuali della funzione
Contiene il valore della costante utilizzata per il
calcolo delle correnti
La funzione che implementa la legge –B· accede a questo registro per leggere alcune informazioni
necessarie al suo funzionamento e restituire il suo stato.
Registro di stato dei magnetotorquer
Pol X
Indica la polarità del magnetotorquer X
Pol Y
Indica la polarità del magnetotorquer Y
Pol Z
Indica la polarità del magnetotorquer Z
Corrente X
Contiene l’informazione sulla corrente impostata in X
Corrente Y
Contiene l’informazione sulla corrente impostata in Y
Corrente Z
Contiene l’informazione sulla corrente impostata in Z
Questo registro svolge la funzione di interfaccia tra le funzioni che controllano i magnetotorquer e i
registri di pubblico accesso.
110
Registro di stato degli offset
Offset corrente X Offset di lettura sulla corrente del magnetometro X
Offset corrente Y Offset di lettura sulla corrente del magnetometro Y
Offset corrente Z
Offset di lettura sulla corrente del magnetometro Z
Offset motore X
Offset di lettura sulla corrente del motore 1
Offset motore Y
Offset di lettura sulla corrente del motore 2
Offset motore Z
Offset di lettura sulla corrente del motore 3
Nel momento in cui venga richiesta una lettura calibrata dei sensori, gli offset contenuti in questo
registro permettono di fornire valori più precisi.
Atri registri sono poi impiegati per l’esecuzione dei comandi. In particolare, per quel che riguarda i
motori, esiste il seguente registro:
Registro di stato degli offset
Richiesta stop
Indica se è stato richiesto lo stop di un motore prima
dell’esecuzione del comando inviato
Asse
Asse su cui si richiede di agire
Buffer Asse
Campo di buffer in cui salvare le informazioni inviate
relative al comando nel caso in cui ci sia un’azione
preliminare da eseguire
Accelera
Indica se è richiesta un’accelerazione
Decelera
Indica se è richiesta una decelerazione
Cambio dir.
Indica se si richiede un cambio di direzione
PR richiesto
Contiene il valore richiesto del timer, calcolato al
momento della ricezione del comando
Buffer PR
Campo di buffer in cui salvare il valore richiesto del
timer qualora sia necessaria un’azione preliminare
all’esecuzione del comando
Precaler richiesto Contiene il valore richiesto del prescaler, calcolato al
momento della ricezione del comando
Buffer prescaler Campo di buffer in cui salvare il valore richiesto del
prescaler qualora sia necessaria un’azione preliminare
all’esecuzione del comando
Su questo registro opera direttamente la funzione di interrupt, ricevendo i valori elaborati a seguito
della ricezione di un comando e utilizzandolo come buffer qualora sia necessario salvare
temporaneamente i dati ricevuti ed effettuare alcune azioni preliminari.
111
VII.7: Interfaccia LabView
Per poter effettuare lo sviluppo del software ed effettuare i primi test si è utilizzato un collegamento
via terminale, sfruttando il protocollo di comunicazione ASCII sviluppato appositamente per questa
fase di verifiche.
Per un utilizzo più agevole del sistema di controllo, tuttavia, è stata realizzata una semplice, ma
completa, interfaccia in LabView che permette di accedere in maniera rapida e intuitiva a tutte le
principali funzionalità implementate e può rappresentare una buona base di partenza per lo sviluppo
di un sistema di interfaccia più complesso. In questo paragrafo è descritta brevemente questa
interfaccia, citandone le caratteristiche più importanti.
Figura VII.10:Aspetto generale dell’interfaccia LabView
L’aspetto d’insieme dell’interfaccia è quello mostrato in figura VII.10. Nella parte superiore sinistra
si trova un riquadro che può ospitare, a seconda della selezione effettuata, una schermata riassuntiva
dei registri oppure il setup dell’interfaccia. A destra invece sono mostrati tramite indicatori gli stati
delle schede e dei motori. In basso a sinistra, a seconda della cartella selezionata, viene mostrata la
112
lettura dei magnetometri oppure
delle correnti. A destra infine si
trovano gli indicatori di velocità per
i motori.
Il pannello di setup è mostrato in
figura
VII.11.
Nella
parte
evidenziata con il numero 1 si
trovano
Figura VII.11: Pannello di setup
tutti
i
parametri
di
funzionamento della comunicazione
seriale, quali porta, velocità, etc. Tramite un pannello a lato (numero 2) è possibile inviare
manualmente una stringa di caratteri: questa funzione è utile nel caso in cui si voglia effettuare
qualche tipo di verifica manuale del funzionamento. Tramite il pannello indicato con il numero 3 si
abilita la lettura dei dati sulla porta e si può visualizzare nella casella di testo tutto il traffico che
viene ricevuto. L’interruttore identificato con il numero 4 permette poi di registrate tutto il traffico
dati su un file di testo per poterne poi analizzare il contenuto.
Il pannello mostrato nella figura
a lato permette di interfacciarsi
direttamente con i registri del
sistema di controllo d’assetto.
Il registro su cui si vuole operare
viene selezionato dalla lista
indicata con il numero 1. In base
al
registro
contenuto
Figura VII.12: Pannello dei registri
selezionato,
della
il
sezione
evidenziata con il numero 4
viene aggiornato con il significato dei vari campi del registro, abilitando le caselle dei registri in
scrittura e rendendo visibili le caselle dei campi che permettono la lettura. Nell’esempio riportato in
figura VII.12, si vede il contenuto del registro di controllo delle bobine, con i primi cinque campi
abilitati per la scrittura e gli ultimi tre disponibili per la sola lettura. Tramite il pulsante evidenziato
con il numero 2 è possibile quindi leggere il contenuto dell’interno registro selezionato, mentre con
il pulsante indicato dal numero 3 è possibile scrivere il contenuto del registro. La stringa inviata
viene mostrata nel riquadro sottostante.
113
Il resto dell’interfaccia sfrutta i dati ricevuti tramite la telemetria per aggiornarsi e quindi necessita
della sua abilitazione.
Il pannello di stato dei motori e dei sottosistemi, mostrato in figura VII.13, contiene tutte le
informazioni sullo stato delle varie schede e, appunto, dei motori.
Nel riquadro evidenziato dal numero 1, quattro led indicano lo stato di accensione o spegnimento
della scheda dei motori, della scheda dei magnetotorquer, dei suoi sensori di corrente e dei
magnetometri. Più sotto, indicato con il numero 2, una serie di led indica se i vari motori sono
fermi, quale si sta muovendo per raggiungere una velocità richiesta e quale abbia raggiunto la
condizione di funzionamento impostata. Due ulteriori led indicano la direzione della rotazione, se in
senso orario o in senso antiorario. Tre indicatori,
indicati dal numero 3, visualizzano la velocità di
rotazione del motore: il primo indica gli Hz, il
secondo il valore del prescaler del timer che genera
il clock del motore mentre il terzo il valore del suo
periodo. Immediatamente sotto tre barre orizzontali
indicano la corrente letta per i vari motori (numero
4) mentre un’altra casella riporta il valore
numerico della velocità di rotazione del motore
(numero 5).
Una serie di grafici permette poi di visualizzare le
letture delle correnti e dei campi magnetici. In
particolare, quello mostrato in figura VII.14,
selezionato la cartella relativa agli assi X, Y e Z
(numero 1) permette di mostrare le letture relative
a questi assi del campo magnetico. Tramite
l’interruttore indicato con il numero 2 è possibile
sovrapporre a queste letture il grafico della
Figura VII.13: Pannello dei motori
corrente comandata alle bobine. In questo modo è
possibile verificare il corretto funzionamento dei
magnetotorquer e gli effetti della corrente che scorre negli avvolgimenti nelle letture del campo
magnetico.
114
L’ultimo pannello, infine, mostrato
in figura VII.15, riporta le letture
delle correnti e dell’impostazione
effettuata. Tutte le letture sono
riportate nel grafico identificato dal
numero 1, mentre i valori numerici
sono riportati nelle caselle di testo
Figura VII.14: Pannello dei magnetometri
indicate dal numero 2. Tramite un
pulsante è possibile abilitare o
disabilitare nel grafico la sovrapposizione dei comandi inviati alle bobine con le letture delle
correnti.
Figura VII.15: Pannello delle correnti
VII.8: Esempio di funzionamento
In questo paragrafo sono riportate due prove di funzionamento, una relativa alla legge di controllo –
B· e un’altra relativa ai motori.
Per testare il funzionamento della legge di controllo è stato abilitato il controllo magnetico ed è
stato ruotato manualmente il sistema di controllo, registrando i dati relativi alla lettura dei campi
magnetici, ai parametri di controllo dei magnetotorquer e alla lettura delle varie correnti. I risultati
sono mostrati nei grafici seguenti:
115
4000
800
3500
600
400
3000
200
2500
0
2000
Corrente X
Campo X
-200
1500
Comando X
-400
1000
-600
500
-800
-1000
0
1
6
11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 161
3000
600
400
2500
200
2000
0
Corrente Y
Campo Y
1500
-200
Comando Y
1000
-400
500
-600
0
-800
1
6
11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 161
2000
500
1800
400
1600
300
1400
200
1200
100
Corrente Z
Campo Z
1000
0
800
Comando Z
-100
600
-200
400
-300
200
-400
0
1
6
11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 161
Figura VII.16: Test della legge di controllo
Sull’asse X sono indicati i campioni, ricevuti ad una distanza di 500mSec l’uno dall’altro. Sull’asse
Y di sinistra sono riportate le scale della lettura del campo magnetico e della lettura delle correnti
(rispettivamente linee viola e blu), mentre sull’asse Y di destra è riportata la scala dei valori di
controllo dei magnetotorquer (in giallo).
116
Innanzitutto si può notare come, in assenza di perturbazioni, il filtraggio eseguito sulla lettura del
campo magnetico sia più che sufficiente ad evitare che il rumore provochi l’attivazione indesiderata
dei magnetotorquer. Una volta messo in movimento il sistema di controllo, le letture del campo
magnetico seguono le rotazioni effettuate, comportando l’imposizione di una corrente proporzionale
alla variazione di campo magnetico. La lettura della corrente segue perfettamente l’andamento del
segnale di controllo, come si può apprezzare dai grafici. Nella visualizzazione grafica, la corrente
appare sempre positiva, anche se in realtà durante la prova cambia di verso: questo è dovuto al fatto
che il sensore di corrente si trova a monte del circuito di inversione di polarità e, per questo, rileva
sempre correnti positive. Per ottenere l’informazione completa è sufficiente estrarre dalla
telemetria, oltre al valore della corrente, anche il verso: nell’interfaccia di Labview questa
operazione è automatica e permette la corretta visualizzazione in tempo reale dell’andamento delle
correnti.
Il risultato di questo semplice test mostra quindi l’efficacia del sistema di controllo magnetico e la
sua corrispondenza con le attese.
Il secondo tipo test ha riguardato i motori.
In un primo caso è stata richiesta un’accelerazione fino a 100Hz, ricevendo i dati relativi al periodo
del segnale di clock e al prescaler e, da questi, ottenendo il valore della velocità angolare in Hz.
I dati sono riportati nei seguenti grafici:
Velocità angolare
120
100
80
Hz
60
Mot X
40
20
0
0,146,1512,218,224,230,236,242,248,254,260,266,272,278,284,290,296,2102108114120126132138144150156162168174180186192198
t
117
Periodo
3000
2500
2000
T3PR
1500
Mot X
1000
500
0
0,146,2912,418,624,730,937 43,249,355,561,667,873,980,186,292,498,5105111117123129135142148154160166172178 185191 197
t
Figura VII.17: Test di accelerazione sui motori
Sull’asse delle X sono riportati i tempi in secondi, mentre sull’asse Y sono riportate la velocità
angolare in Hz (primo grafico) e il valore del periodo del timer (secondo grafico).
I salti bruschi nel secondo grafico avvengono in corrispondenza dei cambiamenti di prescaler,
quando il periodo del timer deve essere variato di conseguenza per evitare cambiamenti nella
frequenza di clock finale. Si può apprezzare anche l’andamento non uniforme della variazione del
periodo, che rallenta sempre di più al diminuire del valore del periodo, in modo da mitigare in parte
l’accelerazione angolare sempre crescente.
Nel primo grafico, infatti, risulta chiaramente evidente l’andamento di tipo 1/x della frequenza di
rotazione del motore. Se non si fosse utilizzata la tecnica di variare il prescaler lungo l’intervallo di
frequenze si sarebbe arrivati rapidamente al punto di imporre accelerazioni angolari troppo elevate
per le possibilità del motore, perdendo il sincronismo tra il clock e la rotazione del motore stesso.
L’andamento finale non è certamente lineare, ma sufficientemente regolare per poter utilizzare il
motore fino ad alte velocità.
118
Test due motori
12
10
8
Hz
Mot X
6
Mot Y
4
2
0
0,146,4312,719 25,331,637,944,250,556,863,169,475,681,988,294,510110711312012613213914 151157164170176 183189195201
5
t
Figura VII.18: Test di velocità su due motori
Come spiegato in precedenza, a causa di limitazioni hardware è impossibile utilizzare due motori
alla volta. È stata quindi creata una procedura che, in caso di ricezione di un comando relativo ad un
motore quando un altro è già in movimento, ferma quest’ultimo prima di mettere in moto il primo.
Il test riportato in figura VII.18 mostra esattamente questa situazione: un primo motore (linea blu)
viene portato alla velocità di 10Hz. Successivamente, si invia il comando a un secondo motore
(linea viola) perché raggiunga anch’esso la velocità di 10Hz: il sistema prima rallenta il primo
motore fino a fermarlo, dopo di che abilita il secondo e lo fa accelerare fino alla velocità desiderata.
Anche questo test dimostra quindi le funzionalità del sistema di controllo delle ruote di momento.
Relativamente ai motori, è necessario fare alcune considerazioni sulla velocità massima
raggiungibile.
Secondo i dati riportati sul datasheet, mostrati in figura VII.19, la costante di velocità per i motori
della serie 1202 è pari a circa 6400rpm/v. Dato che i motori sono alimentati a 3.3V, questo
comporta una velocità massima teorica pari a 21120rpm, ossia 350Hz.
119
Figura VII.19: Estratto dal datasheet dei motori
È stato effettuato un test del motore privo della ruota di momento ed è stato possibile raggiungere la
velocità di 17360rpm, un po’ inferiore a quella massima teorica.
Figura VII.20: Segnale di clock alla velocità massima raggiunta dal motore
Come detto, con la ruota di momento installata sul motore non è stato possibile superare i 150Hz,
pari a 9000rpm.
Le ragioni di questo fatto possono essere molteplici, ma le più plausibili sono tre: tolleranze
meccaniche nella realizzazione delle parti in movimento, attrito tra la ruota e l’aria e tra il rotore e il
120
cuscinetto di sostegno ed eccessiva accelerazione angolare ad alte velocità una volta che sia stata
aggiunta l’inerzia della ruota.
Il primo aspetto è già stato discusso in precedenza.
Il secondo aspetto invece può essere quantificato in maniera abbastanza precisa. Per quel che
riguarda l’attrito volvente del cuscinetto, questo è specificato sul datasheet e risulta pari a 4.68*10-3
mNm, quindi trascurabile rispetto all’ordine di grandezza delle coppia fornita dal motore.
Per quel che riguarda l’attrito tra la ruota di momento e l’aria circostante, invece, si può considerare
la formula che permette di calcolare le perdite per attrito di un volano in rotazione in aria:
4
T    D  r 5   2  2D  r 4   2    h
5
dove:
-
D è una costante di proporzionalità che include la densità dell’aria e il coefficiente d’attrito,
pari ad ½ρCd
-
r è il raggio della ruota
-
h è lo spesso della ruota
-
ω è la velocità angolare espressa in radianti/sec
Il primo elemento dell’equazione tiene in considerazione l’attrito che si produce sulle due facce
piane della ruota, mentre il secondo elemento rappresenta l’attrito generato dalla faccia laterale.
Sostituendo nella formula tutti i valori relativi alla ruota di 39mm di diametro e 3mm di spessore,
in movimento a 150Hz, si ottiene il seguente valore di coppia resistente15:
T  1,89  105  7,26  106 Nm  0.026mNm
La coppia massima fornita dal motore si ricava dai dati presenti del datasheet: con una costante di
coppia pari a 1,485mNm/A, una tensione di alimentazione pari a 3.3V e una resistenza degli
avvolgimenti di 70Ω, si ottengono circa 0,07mNm.
L’attrito con l’aria riduce quindi la coppia disponibile per far accelerare la ruota a 0,044mNm.
15
Il valore del coefficiente Cd è abbastanza complicato da ricavare. Per ottenere una stima, ci si è basati sui coefficienti
riportati per una lamina piana parallela al flusso d’aria, che vanno da 0.001 per un flusso laminare a 0.005 per un flusso
turbolento. Se agli estremi della ruota la velocità lineare è abbastanza elevata per giustificare un flusso turbolento, ciò
non è vero per le parti di ruota più vicine all’asse di rotazione. Si è quindi considerato un coefficiente pari alla media dei
due estremi.
121
A questo punto entra in gioco l’ultimo fattore, ossia l’accelerazione angolare imposta dall’aumento
di un passo nella frequenza del segnale di clock.
Il fatto che il controllo avvenga sul periodo del segnale comporta che, per basse frequenze, una
diminuzione di un passo sul periodo comporti una variazione molto limitata di frequenza, mentre
per periodi molto brevi si ottiene una variazione elevata di frequenza.
Questo fenomeno risulta chiaro sia osservando i grafici riportati della velocità riportati in questo
stesso paragrafo, sia con un semplice esempio numerico: quando il motore sta ruotando alla velocità
di 1Hz, il valore del registro del periodo di clock è pari a 712. La diminuzione di un passo,
portandolo a 711, porta la frequenza di rotazione del motore a 1,0015Hz, con una variazione quindi
pari a 0,0015Hz.
Quando invece il motore sta ruotando a 99.94Hz, il valore del registro del periodo di clock è pari a
228. La diminuzione di un passo a 227 comporta una velocità di rotazione di 100,381Hz, con una
variazione di 0,44Hz rispetto al valore precedente, pari a quasi 300 volte quello che si era ottenuto
nel caso precedente.
Risulta chiaro, quindi, come sia sempre più difficile accelerare man mano che la velocità aumenta,
sia perché la forza disponibile del motore risulta minore a causa delle forze di attrito, sia perché si
richiedono accelerazioni angolari sempre più consistenti.
L’inerzia del rotore è riportata nel datasheet ed è pari a 0,125gcm2, ossia 1,25*10-8kgm2.
L’inerzia della ruota è stata calcolata in precedenza ed è pari a 1,335*10-6kgm2.
Il passaggio da una frequenza di clock all’altra avviene fondamentalmente in maniera istantanea,
dipendente dalla frequenza di clock del microcontrollore.
A 150Hz, la variazione di un passo nella frequenza di clock comporta una variazione di velocità
pari a 0,123Hz (il fatto che questo valore sia inferiore a quanto mostrato in precedenza per 100Hz
non deve sorprendere, dato che la variazione di prescaler è stata introdotta proprio per mitigare
l’ampiezza dei salti di frequenza e, mentre a 100Hz si utilizza un prescaler x8, a 150Hz si utilizza
un prescaler x1).
Dato che non è possibile conoscere a priori il tempo in cui avviene questo cambiamento, è più
comodo seguire il percorso inverso e calcolare l’accelerazione massima che può portare a questo
cambiamento data la coppia residua del motore.
In base ai calcoli effettuati poco sopra, la coppia residua è pari a 0,044mNm. In base all’inerzia
calcolata, questa coppia permette un’accelerazione massima di 32,65rad/S2, ossia 5,2Hz/S2. Data la
variazione di frequenza, questo si traduce in un tempo minimo di 23mSec per passare da una
velocità all’altra.
122
Per conoscere esattamente il comportamento del motore sarebbero necessari dati che il produttore
non fornisce. L’unico dato di confronto è la costante di tempo del motore, pari a 347mSec, che però
non può essere utilizzata immediatamente dato che si riferisce al motore privo di carico. In ogni
caso, il valore ottenuto dai calcoli è sensibilmente inferiore a questo dato, lasciando intuire di
trovarsi di fronte ad una limitazione causata da una parte dalle caratteristiche del motore e dall’altra
dall’impossibilità di effettuare variazioni più leggere di velocità.
In ogni caso, eliminando l’attrito con l’aria e migliorando la costruzione meccanica dovrebbe essere
possibile aumentare leggermente le prestazioni, anche se non è al momento possibile stabilire di
quanto.
Figura VII.21: Il dispositivo completato
123
Capitolo VIII: Test sul dispositivo finale
Per verificare il funzionamento del dispositivo realizzato si è utilizzata una piattaforma di test
sospesa su un cuscino d’aria, disponibile presso il Laboratorio di Sistemi Spaziali dell’Università
“La Sapienza di Roma”, coordinato dal prof. Santoni.
Questa piattaforma possiede due gradi di libertà, fornendo quindi la possibilità di provare gli effetti
delle ruote di momento e dei magnetotorquer con il sistema libero di muoversi su due assi.
Seppure la piattaforma è adatta a sistemi molto più grandi, ha permesso comunque di ottenere
risultati validi, confermando di fatto la validità del dimensionamento del progetto e la sua
realizzazione.
VIII.1: Caratteristiche della piattaforma di test
La piattaforma di test è realizzata tramite un piano di alluminio dotato di una base semisferica che
viene alloggiata su una colonna dotata di un alloggiamento complementare. Tramite un
compressore, un flusso d’aria viene emesso al di sotto
della sfera di appoggio, annullando l’attrito tra le due
superfici e lasciando il piano libero di muoversi su due
assi. La piattaforma comprende anche un sistema di
equilibratura automatica e di acquisizione dati che
però non sono stati impiegati durante i test.
La comunicazione tra il computer di controllo, dotato
dell’interfaccia descritta nel capitolo precedente, e il
sistema di controllo d’assetto è stata realizzata tramite
trasmettitori collegati direttamente sulla porta seriale.
Una serie di batterie hanno alimentato sia il
trasmettitore che il sistema di controllo, eliminando
quindi la necessità di qualunque cavo che disturbasse i
test.
Figura VIII.1: Piattaforma di test
124
Questa piattaforma è stata pensata per dispositivi molto più grandi rispetto a quello realizzato, per
cui sono state riscontrate delle limitazioni durante le prove.
Innanzitutto, il sistema è stato dimensionato per un satellite con un momento d’inerzia nell’ordine
di 10-2Kgm2, mentre la piattaforma è caratterizzata da un momento d’inerzia dell’ordine di 1Kgm2.
Gli effetti attesi del controllo, quindi, saranno due ordini di grandezza meno visibili rispetto a
quanto simulato, comportando variazioni minime nello stato della piattaforma di test che in alcuni
casi sono facilmente confondibili con le coppie di disturbo.
In particolare le coppie di disturbo esterne si sono rivelate dello stesso ordine di grandezza di quelle
applicate dal sistema di controllo d'assetto, rendendo difficoltoso separare i loro effetti da quelli
esterni. E’ stato dunque necessario caratterizzare i disturbi ripetibili in modo di calibrare il sistema
per effettuare i test ed essere capaci di evidenziare l’effetto del sistema di controllo.
VIII.2: Test sulle ruote di momento
I primi test effettuati sono stati rivolti alla verifica del funzionamento delle ruote di momento. È
stata attivata la ruota sul piano parallelo a quello della piattaforma ed è stato osservato l’effetto.
Figura VIII.2: Preparazione del test sulle ruote di momento
Per eliminare l’effetto dell’aria messa in movimento dalla ruota, il sistema di controllo d’assetto è
stato racchiuso all’interno di un contenitore di plastica, mostrato in figura VIII.2, in modo che tutte
le forze generate dallo spostamento d’aria diventassero interne al sistema e, complessivamente, si
annullassero.
125
Come spiegato nell’introduzione, la presenza costante delle coppie di disturbo ha reso difficile il
rilevamento immediato dei cambiamenti introdotti dall’accelerazione della ruota di momento. È
stato quindi installato sulla piattaforma un laser e, per calcolare la velocità di rotazione al termine
del test, si è misurata la proiezione del laser stesso su uno schermo a distanza nota e tramite una
semplice relazione trigonometrica si è calcolata la velocità angolare del sistema.
La piattaforma tendeva a ruotare, per effetto dei disturbi, in senso orario, quindi è stata effettuata
un’accelerazione della ruota in senso antiorario, per controbilanciarne la rotazione. La velocità della
ruota è stata portata fino a 5400rpm, pari a 90Hz, ed è stata rilevata una velocità angolare della
piattaforma di 0,684º/s, pari a 0,114rpm.
Successivamente, la piattaforma è stata nuovamente fermata e la ruota di momento è stata portata
alla velocità di 5400rpm, questa volta però in senso orario, generando una coppia che si è sommata
a quella di disturbo. In questo secondo test la velocità misurata della piattaforma è stata di 0,752º/s,
pari a 0,125rpm.
Dato che il tempo di accelerazione in entrambi i casi è stato il medesimo, lo stesso si può dire
sull’effetto della coppia di disturbo, che quindi ha generato una velocità angolare uguale in
entrambi i casi: sottraendo un risultato all’altro si ottiene l’effetto netto sul sistema dovuto
all’azione del sistema di controllo d’assetto.
La differenza di velocità angolari sulla piattaforma, quindi, è di 0,011rpm. La differenza totale di
velocità angolare della ruota di momento è stata pari a 10400rpm, visto che è stata portata a regime
prima in un senso poi nell’altro.
Il rapporto tra queste due velocità è dell’ordine di 10-6, esattamente come il rapporto tra i momenti
d’inerzia della piattaforma di test e della ruota di momento. Questo test ha quindi confermato le
capacità della ruota secondo quelli che erano stati i calcoli di progetto.
Il grafico riportato in figura VIII.3 mostra i dati ricavati durante uno dei test effettuati sulle ruote di
momento. Il grafico riporta l’andamento della velocità su una ruota, in viola, e le letture del campo
magnetico di uno dei sensori, in blu.
La ruota è stata fatta accelerare prima in senso antiorario, contribuendo assieme alla coppia di
disturbo a mettere in rotazione la piattaforma. La ruota è stata poi fermata e ne è stato invertito il
senso di rotazione, tendendo questa volta a frenare la rotazione della piattaforma. Quando è stata
poi nuovamente fermata, tutto il momento angolare assorbito dalla ruota è stato restituito alla
piattaforma che ha accelerato, portandosi alla velocità che avrebbe raggiunto in assenza di alcuna
azione del sistema di controllo.
Attraverso il grafico del campo magnetico è possibile notare l’evoluzione della velocità angolare
del sistema durante il test.
126
900
100
80
880
60
860
40
840
20
0
820
Mx
Vm
-20
800
-40
780
-60
760
-80
1695,408
1650,792
1561,56
1606,176
1516,944
1472,328
1427,712
1338,48
1383,096
1293,864
1249,248
1204,632
1115,4
1160,016
1070,784
1026,168
892,32
936,936
981,552
847,704
803,088
758,472
669,24
713,856
624,624
580,008
535,392
446,16
490,776
401,544
356,928
312,312
223,08
267,696
178,464
89,232
133,848
t
-100
44,616
740
Figura VIII.3: Grafico ricavato dalla telemetria durante i test delle ruote di momento
I test hanno quindi confermato le capacità attese del sistema di controllo d’assetto tramite le ruote di
momento, comportando una variazione di velocità angolari perfettamente in linea con le
caratteristiche determinate in fase di progettazione.
VIII.3: Test sugli attuatori magnetici
Se alcune accortezze al momento di effettuare le prove delle ruote di momento hanno permesso di
adattare la piattaforma di test al sistema di controllo d’assetto usando le ruote di momento, ciò non è
stato possibile per il test sugli attuatori magnetici.
Da un lato l’inerzia della piattaforma avrebbe portato ad un aumento dei tempi di assorbimento
delle velocità angolari da parte del controllo d’assetto magnetico, dall’altro la presenza delle coppie
di disturbo avrebbe sovrastato qualunque effetto generato dai magnetotorquer.
Ci si è quindi dovuti accontentare di verificare il corretto funzionamento della legge di controllo
implementata, osservando il comportamento delle correnti durante una rotazione del sistema di
controllo d’assetto. Inoltre, sulla base dei risultati ottenuti durante le letture dei campi magnetici nei
test precedenti, sono state eseguite alcune migliorie e calibrazioni sul circuito di lettura dei
magnetometri al fine di ottenere una maggiore dinamica del segnale. Il risultato è chiaramente
visibile confrontando la qualità dei grafici relativi alle componenti del campo magnetico.
127
Figura VIII.4: Preparazione della piattaforma per il test dei magnetotorquer
Per prima cosa è stato effettuato un test per valutare la qualità delle letture dei magnetometri di
bordo. La piattaforma è stata messa in rotazione ed è stato acquisito il campo magnetico. Il grafico
mostrato in figura VIII.5 riporta i valori inviati dal sistema di controllo d’assetto tramite la
telemetria, dove si vede chiaramente la rotazione della piattaforma e il conseguente andamento
sinusoidale del campo magnetico.
1,5
1
0,5
My
Mz
0
1
15 29 43 57 71 85 99 113 127 141 155 169 183 197 211 225 239 253 267 281 295 309 323 337 351 365 379 393 407 421 435 449 463
Mx
-0,5
-1
-1,5
Figura VIII.5: test di lettura dei magnetometri di bordo, valori normalizzati
Dopo due rotazioni la piattaforma è stata fermata ed è stata rimessa in movimento in senso
contrario: da qui la fase di campo costante a metà del grafico e la differente frequenza nelle ultime
128
due rotazioni. Il campo sull’asse Z presenta una minima variazione, dovuta al fatto che la rotazione
si svolge sul piano X-Y.
Successivamente, si è proceduto ad attivare la legge di controllo, impostando un guadagno pari a 5,
e si è rimessa in rotazione la piattaforma. I risultati sono mostrati nel grafico in figura VIII.6.
3
2,5
200
2
0
1,5
My
-200
1
Mz
Mx
0,5
-400
Ix
Iy
Iz
0
1
17 33 49 65 81 97 113 129 145 161 177 193 209 225 241 257 273 289 305 321 337 353 369 385 401 417 433 449 465 481 497 513 529 545 561 577
-600
-0,5
-800
-1
-1,5
-1000
Figura VIII.6: Telemetria del test sulla legge di controllo –B·, valori del campo magnetico
normalizzati e valori delle correnti in counts
Le linee blu, fucsia e gialle mostrano rispettivamente le letture effettuate dai magnetometri sugli
assi X, Y e Z, mentre le linee azzurre, viola e marrone mostrano la corrente imposta sui
magnetotorquer X, Y e Z.
Innanzitutto si può osservare come la corrente sia proporzionale alla derivata del campo magnetico:
dopo due rotazioni ad una velocità più bassa, la piattaforma è stata accelerata ed è chiaramente
visibile il cambiamento di ampiezza della corrente.
In secondo luogo si può notare come, in assenza di movimento, la corrente imposta sia pari a zero,
indicando un buon filtraggio del rumore e l’assenza di attivazioni dei magnetotorquer spurie dovute
a oscillazioni casuali nelle letture.
L’attivazione dei magnetotorquer causa necessariamente delle variazioni nel campo magnetico:
come spiegato nei capitoli precedenti, per evitare che le letture dei sensori fossero influenzate dalla
corrente imposta sugli attuatori magnetici –a sua volta determinata da dette letture, portando quindi
il sistema ad uno stato di instabilità- sono state presi alcuni accorgimenti al momento della scrittura
del software. In particolare, quando le routine della legge di controllo accedono ai magnetometri,
vengono disattivati i magnetotorquer, aggiungendo poi un ritardo per permettere la
smagnetizzazione dei nuclei in base a quanto osservato durante i test sull’elettronica.
129
Nel grafico riportato, si può notare come la lettura della componente X del campo magnetico non
sia minimamente influenzata dall’attivazione della legge di controllo. Un po’ più di rumore, invece,
viene introdotto sulla lettura della componente Y, senza però che questo implichi un
comportamento anomalo nel funzionamento della legge di controllo. Sulla componente Z, infine, si
nota un aumento dell’ampiezza delle oscillazioni, anche se il sistema non ne risulta influenzato,
come si evince dall’assenza di una corrente imposta sul magnetotorquer relativo a quell’asse.
Dato che il guadagno della legge di controllo può essere impostato via software tramite l’interfaccia
del sistema, è possibile adattarlo alle condizioni di funzionamento, imponendo correnti maggiori
quando le velocità di rotazione siano minori, a scapito di una maggior sensibilità al rumore, oppure
rendendo il sistema meno sensibile quando le condizioni lo richiedano.
Anche se per limitazioni strutturali non è stato possibile osservare lo smorzamento delle velocità di
rotazione tramite il sistema di controllo d’assetto, le prove fatto hanno comunque dimostrato la
validità dell’implementazione del controllo e hanno permesso di raccogliere dati che confermano il
buon funzionamento del progetto.
VIII.4: Verifiche sulla magnetizzazione residua
La presenza di attuatori magnetici dotati di un nucleo di materiale ferromagnetico all’interno dello
stesso dispositivo in cui si trovano anche i sensori di campo magnetico pone la necessità di
effettuare alcune verifiche per stimare l’effetto della magnetizzazione residua sulle letture
effettuate.
La magnetizzazione del materiale che compone i nuclei, ma in generale di qualunque materiale
ferromagnetico, segue un ciclo di isteresi che può essere più o meno ampio: ciò significa che,
prendendo il materiale privo di magnetizzazione, se si induce una magnetizzazione in un verso ed in
seguito si annulla l’agente esterno che la causa, il materiale presenterà una magnetizzazione residua.
Nel caso concreto, ciò significa che, anche con i magnetotorquer spenti, è possibile una interferenza
con i magnetometri, portando ad una misura con un certo offset.
Per verificare l’entità di questo fatto sono state eseguite diverse prove: per prima cosa, si è applicata
una corrente variabile il -100% e il +100%, a passi del 10%, spegnendo i magnetotorquer tra un
passo e l’altro.
Il grafico in figura mostra il risultato ottenuto:
130
2500
2000
1500
Magx
Magy
Magz
1000
500
0
1
93 185 277 369 461 553 645 737 829 921 1013 1105 1197 1289 1381 1473 1565 1657 1749 1841 1933 2025 2117 2209 2301 2393 2485 2577 2669 2761 2853 2945 3037 3129 3221 3313 3405 3497 3589 3681 3773 3865 3957 4049 4141 4233
Figura VIII.7: Letture dei magnetometri a seguito dell’applicazione graduale della corrente sui
magnetotorquer (scala X, campioni; scala Y, counts)
Già da questo grafico si apprezza come l’effetto della magnetizzazione residua sia molto limitato su
tutti tre gli assi: mentre l’effetto dei magnetotorquer accesi è ben visibile nei gradini che
corrispondono alla loro accensione, il valore della lettura a riposo rimane praticamente costante
durante tutta la prova.
Risulta anche ben evidente come l’influenza sui magnetometri sia diversa a seconda della
componente che si considera: l’effetto del campo magnetico varia secondo l’inverso del cubo della
distanza, per cui l’effetto registrato è estremamente sensibile alla posizione del sensore rispetto al
magnetotorquer. Si nota in particolare come l’asse più sensibile sia la Y, che arriva a saturare in
corrispondenza degli impulsi di magnetizzazione, mentre gli effetti sono molto più limitati per la Z
e ancor più per la X.
Per osservare in dettaglio l’impatto della magnetizzazione del nucleo è stato creato un grafico
affiancando le letture effettuate dopo ogni impulso di corrente. Tramite questi grafici è immediato
osservare l’influenza su ogni asse:
131
Magx
1914
1912
1910
1908
1906
Magx
1904
1902
1900
1898
1896
1
106
211 316 421
526 631 736 841
946 1051 1156 1261 1366 1471 1576 1681 1786 1891 1996 2101 2206
Magy
1175
1170
1165
1160
1155
Magy
1150
1145
1140
1135
1
106
211 316 421
526 631 736 841
946 1051 1156 1261 1366 1471 1576 1681 1786 1891 1996 2101 2206
Magz
1932
1930
1928
1926
Magz
1924
1922
1920
1918
1
106
211 316 421
526 631 736 841
946 1051 1156 1261 1366 1471 1576 1681 1786 1891 1996 2101 2206
Figura VIII.8: Grafici dell’effetto della magnetizzazione residua sui magnetometri a seguito della
sequenza di magnetizzazioni da -100% a +100%
132
Per poter valutare l’errore introdotto sulla misura è stato misurato il campo su tutti tre gli assi per
ottenere l’ampiezza massima del segnale. La seguente tabella riassume i valori massimi e minimi
registrati per ogni componente e la conseguente escursione (valori in counts):
Valore massimo X Valore massimo Y
Valore massimo Z
1922
1776
2032
Valore minimo X
Valore minimo Y
Valore minimo Z
429
150
486
Escursione X
Escursione Y
Escursione Z
1493
1626
1546
Ne consegue, quindi, che la variazione massima registrata sull’asse Y pari a circa 17 counts,
corrisponde ad un errore relativo dell’1% sulla lettura, rientrando senza problemi all’interno degli
errori attesi per il sistema. Le variazioni su X e Z, rispettivamente di 5 e 3 counts, risultano pari allo
0,3% e allo 0,2% dell’escursione massima dei rispettivi assi.
Per valutare ulteriormente l’effetto della magnetizzazione, sono state confrontate le letture
corrispondenti ai due casi estremi: il campo magnetico letto dopo un’attivazione dei magnetotorquer
al -100% e dopo un’attivazione a +100%.
Ognuna delle tre componenti è stata confrontata nei due casi e i risultati sono mostrati nei seguenti
grafici:
1900
1700
1500
1300
MagxMagx+
1100
900
700
500
1
23
45 67
89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507 529 551 573
133
1800
1600
1400
1200
Magy-
1000
Magy+
800
600
400
200
1
23
45 67
89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507 529 551 573
2040
2020
2000
1980
MagzMagz+
1960
1940
1920
1900
1
23
45 67
89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507 529 551 573
Figura VIII.9: Confronto delle componenti del campo magnetico lette dopo aver attivato i
magnetotorquer a -100% della potenza (segno ‘-’ nella legenda) e al +100% (segno ‘+’ nella
legenda).
L’elemento da confrontare è il valore di picco dei due casi, non il punto di partenza che era diverso
per i diversi casi. La seguente tabella riassume i valori massimi e minimi delle tre componenti,
confrontandoli nei due casi:
Max XMax YMax Z1911
1771
2032
Max X+ Max Y+ Max Z+
1912
1768
2032
Diff
Diff
Diff
-1
3
0
Min XMin YMin Z515
220
1921
Min X+
Min Y+
Min Z+
519
199
1919
Diff
Diff
Diff
-4
21
2
134
Nuovamente, la variazione su X e Z è minima, praticamente indistinguibile dal rumore. Nel caso di
Y, invece, la variazione è più sensibile e, tenendo in conto il rumore, risulta concorde con quanto
osservato in precedenza, confermando la sostanziale non influenza della magnetizzazione residua
sulle letture effettuate dai magnetometri.
In conclusione, questi test effettuati sul prototipo hanno dimostrato il corretto funzionamento del
dispositivo, corrispondente alle richieste del progetto, valutando l’impatto dell’elevata
miniaturizzazione sulle performance complessive del sistema e confermando la validità delle scelte
fatte e della loro implementazione.
135
Capitolo IX: Resistenza all’ambiente spaziale
Lo spazio rappresenta un ambiente estremamente ostile tanto per gli esseri viventi come per
l’elettronica. La presenza di radiazioni ionizzanti e di particelle accelerate rappresenta una sorgente
di malfunzionamenti e guasti potenzialmente distruttivi per qualunque dispositivo elettronico che ne
venga esposto. Per garantire una sufficiente immunità dei dispositivi all’ambiente spaziale, sono
state sviluppate una serie di procedure di fabbricazione e di progetto che possono arrivare a
garantire un’ottima sopravvivenza dei componenti elettronici, ma comportano dei costi
estremamente elevati. Un’alternativa è rappresentata dall’utilizzo di schermature opportunamente
dimensionate, ma oltre a rappresentare un notevole aumento della massa da trasportare in orbita,
questa soluzione può al più permettere l’uso di dispositivi con una minore tolleranza alle radiazioni
ma non elimina i problemi per dispositivi commerciali.
Si stanno sviluppando tuttavia alcune tecniche di progetto che permettono, se non una immunità,
almeno una tolleranza ai guasti causati dalle radiazioni ai dispositivi commerciali, aprendo la strada
ad un loro impiego in situazioni non eccessivamente critiche, come possono essere le orbite basse
terrestri.
In questo capitolo, dopo alcuni accenni teorici relativi a questa problematica e ad una analisi della
situazione attuale della tecnologia attraverso alcuni esempi riportati in letteratura, verrà descritto
una variante del sistema di controllo progettata secondo le linee guida evidenziate da questa
filosofia, la sua realizzazione e una serie di test a cui è stata sottoposta.
IX.1: Premesse teoriche
L’evoluzione tecnologica dei dispositivi elettronici ha portato, durante gli ultimi decenni, ad una
progressiva riduzione delle dimensioni fisiche dei componenti e all’utilizzo di tecnologie costruttive
sempre più raffinate, che arrivano ad operare su scale dell’ordine dei nanometri.
Se da una parte questa tendenza ha portato alla creazione di dispositivi sempre più potenti, dai
consumi sempre più ridotti e dalle maggiori prestazioni, dall’altra li ha resi sempre più vulnerabili
ad agenti esterni quali le radiazioni. Anche se questo è un problema che non coinvolge le
applicazioni terrestri, salvo quelle specifiche per ambienti speciali o militari, nel momento in cui si
voglia utilizzare una componentistica di tipo commerciale per applicazioni spaziali è necessario
tenerne conto.
136
Il motivo per cui i mosfet, che rappresentano la struttura di base di qualunque dispositivo digitale,
sono così sensibili alle radiazioni ha origine nella loro stessa struttura.
Figura IX.1: Struttura fisica di un MOSFET
In un mosfet, sia di tipo P che di tipo N, la regolazione della corrente che lo attraversa avviene
tramite il campo elettrico che si instaura tra il gate e il substrato. Quando viene applicata una
differenza di potenziale tra gate e source, si genera un campo elettrico che accumula cariche al di
sotto del gate stesso, generando un canale che permette lo scorrimento di corrente tra source e drain.
Non esiste quindi un contatto elettrico diretto tra il terminale di controllo e gli altri due terminali,
come avviene invece nei BJT, e se da un lato questa caratteristica è la fonte dei vantaggi del
MOSFET, dall’altro lato è anche la causa della delicatezza.
Figura IX.2: Effetti del passaggio di una particella carica all’interno di un MOSFET
137
L’isolamento del gate, infatti, è formato da un sottile strato d’ossido di silicio che, in condizioni
normali, garantisce una resistenza praticamente infinita. Qualunque danno a questo strato, tuttavia,
può mettere in contatto elettrico il gate con il substrato, comportando una degradazione o un
malfunzionamento del dispositivo o, nei casi più gravi, un cortocircuito. Anche un danno alla
struttura cristallina del substrato può impedire la formazione del canale di portatori di carica che
permette al MOSFET di funzionare, mentre l’accumulo di carica all’interno del substrato può
portare all’accensione indesiderata e a malfunzionamenti casuali.
A causa dell’interazione con radiazioni ionizzanti, si possono quindi distinguere i seguenti tipi di
eventi:
-
SEU: Singe Event Upset, si tratta del cambiamento di stato o di un transiente indotto
dall’impatto di una particella energetica o di raggi cosmici in un dispositivo. Si tratta di
eventi da cui il dispositivo si può riprendere, per esempio con un reset o semplicemente con
l’esaurimento della carica apportata dalla particella, e che causano un malfunzionamento
casuale e isolato del dispositivo;
-
SED: Single Event Disturb, un momentaneo disturbo dell’informazione salvata in una
memoria;
-
SET: Single Event Transient, un transitorio di corrente causato dal passaggio di una
particella carica attraverso il dispositivo e che può propagarsi attraverso le porte logiche
portando ad un errore nel valore di uscita;
-
SHE: Single Hard Error, un caso speciale di SEU in cui il cambiamento dello stato del
dispositivo diventa permanente, come nel caso di un bit di memoria bloccato ad un valore
specifico;
-
SEL: Single Event Latchup, una condizione che causa una perdita di funzionalità del
dispositivo a causa di un evento indotto da un transitorio di corrente elevato. Un SEL può
causare o meno un danno permanente, ma in ogni caso richiede un reset hardware del
dispositivo perchè ritorni al funzionamento nominale;
-
SEB: Single Event Burnout, una evento potenzialmente distruttivo che può causare la rottura
del componente a causa del passaggio di elevata corrente;
-
SEGR: Single Event Gate Rupture, un evento indotto dal passaggio di un singolo ione
all’interno di un MOSFET che comporta la creazione di un percorso conduttivo sull’ossido
tra il gate e il substrato.
138
Questo tipo di eventi non sono gli unici effetti delle radiazioni sui componenti elettronici. I BJT, per
esempio, sono immuni a tutti i Single Event elencati, ma presentano un calo del guadagno quando
vengono colpiti da particelle cariche. In generale, tutti i componenti tendono a subire cambiamenti
di valore e delle loro caratteristiche durante l’esposizione all’ambiente spaziale e per questo,
durante le fasi di preparazione di una missione, si calcola la dose totale assorbita durante la vita
utile del dispositivo e, in base a questa, si calcolano i requisiti per la resistenza a radiazioni.
Se banalmente la radiazione assorbita dipende dalla posizione del veicolo rispetto al sole, ci sono
alcuni dettagli a riguardo meno immediati da tenere in considerazione: innanzitutto il passaggio
attraverso le fasce di Van Allen rappresenta una fase molto critica per qualunque dispositivo
elettronico. Se è vero che per una missione interplanetaria il passaggio attraverso questa zona di
spazio può rappresentare una una tantum e non influisce seriamente sulla dose totale accumulata
durante la missione nel suo complesso, per apparati che rimangano in orbita terrestre, a seconda
dell’inclinazione dell’orbita stessa, possono rappresentare un problema: le fasce di Van Allen,
infatti, si avvicinano molto alla terra in corrispondenza dei poli magnetici e, di conseguenza, un
veicolo con orbita polare si troverebbe ad attraversarle molte volte nel corso della sua vita utile.
Figura IX.3: Le fasce di Van Allen
Un’altra sorgente di radiazioni è rappresentata dai raggi cosmici, che rappresentano una fonte
uniforme di irraggiamento. D’altra parte, ogni oggetto presente attorno ad un dispositivo
139
rappresenta una schermatura che diminuisce la dose totale di radiazioni assorbita. Per questo
motivo, si utilizza il concetto di schermatura sferica di alluminio equivalente, che quantifica con
una grandezza omogenea la schermatura attorno ad un oggetto.
Nell’esempio riportato in figura IX.4, che mostra il caso specifico di uno strumento per la sonda
ExoMars, si nota l’andamento della radiazione assorbita durante il viaggio e l’orbita attorno a Marte
nel periodo di due anni in funzione della schermatura sferica equivalente.
Figura IX.4: Requisiti di resistenza delle radiazioni per la missione ExoMars (dall’IRD della
missione)
Di conseguenza, per un dispositivo che fosse protetto da uno spessore equivalente di 4mm di
alluminio, sarebbe necessaria una certificazione di almeno 10kRad per poter giungere al termine
della vita utile della missione senza subire danni o variazioni rilevanti nelle prestazioni a causa delle
radiazioni.
Nelle missioni a basso costo questo tipo di dispositivi sono innaccessibili, poiché comporterebbero
costi di almeno un ordine di grandezza superiori a quelli di dispositivi commerciali. Come detto, la
maggior parte dei problemi derivanti dalle radiazioni derivano dall’interazione a livello fisico tra
particelle cariche e struttura del componente e, di conseguenza, non sono eliminabili una volta che
il dispositivo sia stato prodotto. Alcuni studi, tuttavia, suggeriscono la possibilità di affrontare
140
questo problema non tanto eliminandolo, quanto affrontandolo con opportune tecniche costruttive e
software. Nel paragrafo successivo si descriveranno gli studi reperiti in letteratura a riguardo.
IX.2: Analisi della letteratura
L’interesse verso soluzioni commerciali per missioni spaziali è ormai evidente in tutti gli ambiti.
Non solo le istituzioni universitarie tramite microsatelliti di ogni tipo e dimensioni, ma anche enti
come la NASA stanno compiendo studi ed esperimenti per valutare le potenzialità dell’elettronica
terrestre per applicazioni nello spazio.
Figura IX.5: Struttura e scheda elettronica dell’esperimento NASA SuitSat
141
In un esperimento della NASA chiamata SuitSat16, per esempio, sfruttando l’occasione della
dismissione di una vecchia tuta spaziale, è stato creato un semplice esperimento utilizzando le
capacità offerte da un PIC18F8722 per trasmettere la telemetria raccolta a bordo della tuta a terra.
L’esperimento non aveva chiaramente finalità scientifiche ma puramente didattiche, essendo rivolto
a scuole e radioamatori che avevano la possibilità di ricevere le trasmissioni emesse da questo
singolare satellite espulso dalla stazione spaziale, ma ha mostrato chiaramente le potenzialità di
questa soluzione.
Dovendosi trattare di un esperimento fondamentalmente a costo zero, come riportato da vari articoli
tecnici17, era molto importante ridurre al minimo le difficoltà di assemblaggio e la massa dei
componenti in modo che potessero essere assemblati direttamente sulla stazione spaziale. Come
detto, la scelta del microcontrollore è caduta su un PIC della famiglia 18F, su cui trovava spazio
tutto il software necessario. Il resto dell’hardware era composto da normali amplificatori
operazionali, timer, transceiver, convertitori DC/DC e una radio di tipo amatoriale.
Chiaramente la breve durata dell’esperimento (2-4 giorni), unita all’orbita bassa, non ha comportato
la necessità di affrontare fino in fondo problematiche di affidabilità dovute ai Single Event, ma il
suo successo ha comunque dimostrato la capacità di creare un sistema funzionate ad un costo
praticamente nullo se confrontato con i sistemi tradizionali.
Le tecniche di sviluppo di sistemi resistenti ai guasti, comunque, interessano fortemente anche il
software18. In breve, esistono molte tecniche per affrontare gli errori nel software, ognuna delle
quali risulta utile in determinati ambiti. In generale è possibile recuperare un dispositivo che sia
caduto in errore tramite un reset imposto dal watchdog timer opportunamente configurato,
effettuato un salto nel codice all’inizio del programma o effettuato un reset software. In ogni caso,
alcuni tipi di errori o di funzioni software molto difficilmente possono essere rese robuste con
queste semplici tecniche e il codice, se corrotto in maniera permanente, non può essere ripristinato
senza un intervento esterno.
Chi si è occupato in maniera approfondita di queste tematiche, comunque, sono due ricercatori
dell’università della California e del JPL, D. W. Caldwell e D. A. Rennels. In una serie di articoli
hanno analizzato il problema dell’affidabilità dell’elettronica commerciale impiegata in applicazioni
spaziali fino ad identificare delle linee guida di progetto per affrontare le limitazioni di cui si è
discusso.
16
http://science.nasa.gov/science-news/science-at-nasa/2006/26jan_suitsat/
Ad esempio., http://www.eetimes.com/design/automotive-design/4005738/Extreme-design-SuitSat-pushes-engineerslimits
18
“Techniques for Faul-Tolerant coding in embedded systems”, J. Fick, Westford MicroSystems, 04 aprile 2003,
application note.
17
142
Innanzitutto è da chiarire che, al di là dell’aspetto economico, l’interesse nell’uso di dispositivi
terrestri aprirebbe la possibilità di sfruttare un’enorme varietà di soluzioni e di potenzialità che i
dispositivi specifici per lo spazio non offrono. Nonostante la continua evoluzione tecnologica,
infatti, il mercato spaziale resta comunque molto indietro rispetto a quello commerciale, proprio per
le necessità di sicurezza e affidabilità che richiede. C’è inoltre un altro aspetto da tenere presente:
rispetto ad esempio ad un computer di volo progettato in maniera specifica per lo spazio, un
microcontrollore presenta una efficienza notevolmente più alta in termini di MIPS per potenza
consumata. Nella seguente tabella sono riportati alcuni valori che rendono evidente questa
caratteristica:
Produttore
Dispositivo
Word size
Clock
Throughput Power
Efficienza
Bits
MHz
MIPS
W
MIPS/W
LMFS(*)
MFC(**)
32
20
22
7.5
3
Intel
87C196CS
16
20
2
0.38
5
Dallas
DS87C520
8
33
8.3
0.15
55
Microchip
PIC16C73A 8
20
5
0.06
83
Tabella IX.1: Comparazione tra le efficienze computazionali di microprocessori e microcontrollori,
tratta da “A minimalist hardware architecture for using commercial microcontroller in space”,
D.W. Caldwell, D. A. Rennels
(*) Lockheed-Martin Federal Systems
(**) Mars Pathfinder Flight Computer
In un primo studio19 viene identificato un approccio minimalista per mitigare i punti deboli dei
microcontrollori di tipo terrestre utilizzando un’aggiunta di hardware minimo e implementando il
software in maniera opportuna.
L’idea di base è quella di creare un tipo di sistema distribuito, con un’architettura modulare,
evitando quindi di limitarsi ad un singolo esempio specifico ma ideando una serie di strumenti che
permettano l’implementazione di sistemi con un buon grado di affidabilità mantenendo però un
sufficiente equilibrio tra resistenza all’ambiente spaziale e complessità dell’hardware.
La scelta più ovvia per realizzare un sistema tollerante ai guasti è chiaramente l’utilizzo di più
sistemi in ridondanza, dove diversi microcontrollori eseguono una stessa applicazione in tempo
reale con una serie di interruzioni che permettono il confronto tra i risultati di ogni dispositivo, la
19
“A minimalist hardware architecture for using commercial microcontroller in space”, D.W. Caldwell, D. A. Rennels,
16th Digital Avionics System Conference, 28-30 ottobre 1997
143
votazione per l’identificazione di quelli esatti e la correzione di quelli errati. Anche se si tratta
dell’approccio più diretto, per dei dispositivi così altamente integrati come dei microcontrollori
diventa discutibile: le variazioni intrinseche, ad esempio, tra le letture di diversi convertitori
analogico-digitali porta a risultati diversi, non necessariamente frutto di errori. Ogni dispositivo poi
tende ad avere tolleranze proprie diverse dagli altri, quindi anche con un sistema perfetto di
coordinamento per l’esecuzione delle interruzioni ci sarebbero differenze nelle soglie di
rilevamento dei segnali che porterebbero a divergere anche con esecuzioni perfette delle istruzioni.
Inoltre, quando il sistema comprende più di due microprocessori, sarebbe utile poterne riportare uno
al funzionamento normale senza interferire con tutti gli altri che hanno dimostrato di funzionare
correttamente.
Di conseguenza, l’approccio all’implementazione del sistema deve essere impostato verso
microcontrollori indipendenti, ognuno con il suo clock locale, con una combinazione di votazione
software e combinazione esterna hardware delle uscite con il minimo possibile di complessità
aggiunta. Diversi problemi comunque emergono anche in questa soluzione a causa nuovamente
dell’alta integrazione dei microcontrollori, che non permette nessun controllo su una grande
quantità di funzioni che comunque devono essere il più possibile coperte dalla tolleranza ai guasti.
In particolare, deve essere prestata particolare cura al sistema di votazione e confronto dei risultati,
soprattutto quando i microcontrollori possono arrivare a leggere valori differenti da uno stesso
ingresso. Inoltre, nessun tipo di correzione degli errori è prevista per questo tipo di dispositivi, per
cui delle ruotine periodiche di verifica della memoria devono essere implementate all’interno del
codice del programma. Per condividere gli stessi collegamenti tra vari dispositivi, poi, è necessario
inserire qualche tipo di protezione per evitare che una porta bloccata in un microcontrollore la renda
inutilizzabile o ancora peggio provochi dei corto-circuiti sugli altri dispositivi. Infine, alcune
periferiche come i generatori di PWM o timer possono essere troppo veloci perché siano accessibili
alle routine di controllo software: di conseguenza, sono necessarie delle tecniche di progetto perché
questi segnali siano generati correttamente anche senza una supervisione software.
La figura IX.6 mostra l’implementazione di questo approccio tramite uno schema a blocchi astratto
che può rappresentare un qualunque elemento funzionale di un sistema più complesso. Il software
associato a questo tipo di architettura deve essere strettamente asimmetrico, dove il master è
considerato a tutti gli effetti l’unico microcontrollore del sistema, mentre gli altri dispositivi
funzionano come controllori che verificano la correttezza delle operazioni del master.
Se un microcontrollore non è d’accordo con i suoi pari, può essere scollegato e riportato
nuovamente on-line se dimostra di poter essere resettato con successo. L’assegnazione dello stato
144
dei vari dispositivi (master o checkers) non è statica, bensì dinamica, in modo da avere uno
svolgimento delle operazioni fluido.
Figura IX.6: Schema a blocchi di un nodo fault-tolerant secondo la filosofia di progetto di
Caldwell e Rennels20
Nello schema si distinguono due bus comuni tra tutti i microcontrollori: un normal I/O composto da
tutte le linee di interfaccia tra gli elementi funzionali del circuito (sensori, attuatori, etc) e i
20
“A minimalist hardware architecture for using commercial microcontroller in space”, D.W. Caldwell, D. A. Rennels,
16th Digital Avionics System Conference, 28-30 ottobre 1997
145
microcontrollori stessi, e un check I/O, utilizzato per implementare le funzioni di tolleranza ai
guasti.
Il normal I/O, che può essere composto da linee tanto analogiche come digitali, deve essere protetto
contro i guasti e il software deve essere a sua volta protetto dagli effetti di guasti su questo bus. Di
conseguenza, un sistema di isolamento separa fisicamente le varie linee in entrata e in uscita dai
vari microcontrollori, permettendo che ognuno di essi possa essere resettato in seguito ad un SEL ed
evitando influenze reciproche tra i vari segnali.
Alcune linee dei microcontrollori sono poi utilizzate per implementare un check I/O. Questo bus è
formato da tre canali: un Master Channel, uno Status Channel e un Assignment Channel.
Il Master Channel è il canale di trasmissione dati primario per la comunicazione tra il master e i
checkers. È utilizzato dalle funzioni che implementano la tolleranza ai guasti per scambiare
informazioni con gli altri dispositivi e confrontare i risultati delle operazioni o degli ingressi. Può
essere seriale o parallelo o basato in qualunque tipologia di rete sia supportata dai microcontrollori
usati, ma per convenienza è utile implementarlo con il minimo numero di pin possibile, preferendo
quindi UART o I2C per la loro semplicità e supporto da parte di praticamente tutti i
microcontrollori in commercio.
Lo Status Channel è usato per comunicare lo stato di una votazione ai vari microcontrollori. Nel
caso più semplice, è formato da due linee per ogni microcontrollore, dando la possibilità di avere
quattro combinazioni possibili. Questo canale può poi essere usato in caso di malfunzionamento del
Master Channel per richiedere reset software o reset hardware di uno o più dispositivi.
L’Assignment Channel, infine, indica quale dispositivo dovrà attuare come Master, quali saranno
checkers e quali saranno off-line. Deve soddisfare i seguenti requisiti: un solo master può essere
selezionato nel momento in cui ci siano più di due microcontrollori attivi; lo schema di selezione
non deve dare adito a conflitti dovuti a tempistiche di acquisizione del suo stato; ogni unità in grado
di essere un master che si colleghi al sistema non deve interferire con i processi in corso, quindi non
deve cercare di assumere lo stato di master.
La strategia di assegnazione dello stato, quindi, sarà del tipo first come, first claim, con una
risoluzione dei conflitti basata su un ID hardware di ogni dispositivo.
Per permettere ai dispositivi di essere spenti per mitigare gli effetti di un SEL, è necessario impedire
che possano essere alimentati in maniera parassitica attraverso i circuiti di collegamento delle porte.
Anche se esistono dispositivi in grado di garantire un totale isolamento, un limitatore di corrente
formato da una resistenza su ogni pin di I/O è sufficiente.
Oltre ad essere isolate, le uscite devono essere soggette a votazione. Anche se il Master sarà in
grado di sapere dai Checkers se i suoi risultati sono corretti, non può essere l’unico a generare una
146
determinato valore di uscita in quanto i flip-flop che comandano la linea sono essi stessi suscettibili
di SEU. Di conseguenza, tanto il Master come i Checkers dovranno generare il valore di uscita, che
dovrà essere votato esternamente. Anche se un circuito esterno di votazione sarebbe la soluzione
più diretta, si dovrebbero sacrificare la bidirezionalità delle porte tipica dei microcontrollori, oltre a
dover impiegare una consistente quantità di risorse per la sua implementazione. L’approccio
minimalista prevede l’implementazione di un sistema di votazione analogico utilizzando le stesse
resistenze di protezione descritte in precedenza. In questo modo, la maggioranza dei voti porta il
valore di uscita al di sopra o al di sotto della soglia di discriminazione del valore dell’uscita.
Questo approccio, tuttavia, ha una forte limitazione: i valori di tensione generati non saranno
compatibili con i livelli standard delle famiglie logiche in caso di malfunzionamento. Nel caso di tre
microcontrollori, ad esempio, i valori assunti da una uscita saranno pari a 1/3Vcc e 2/3Vcc. Sebbene
una tensione di 2/3Vcc possa essere considerata valida come bit alto, una tensione pari ad 1/3Vcc
non è considerata accettabile come bit basso.
Il problema può essere aggirato approfittando della struttura hardware stessa delle porte dei
microcontrollori. Nella grande maggioranza dei dispositivi, le porte sono bidirezionali e sono
necessarie due condizioni affinchè l’uscita sia a livello alto: il flip-flop di uscita deve essere
impostato ad ‘1’ e il pin deve essere configurato come uscita. Altre tre combinazioni garantiscono
che l’uscita sia a livello basso, quindi la distanza di Hamming tra lo stato attivo e spento è pari a
due. In altre parole, se l’uscita corretta è zero, due errori (uno sul flip-flop di uscita e l’altro sulla
configurazione della porta) devono essere presenti per avere un’uscita erronea. Perché questo sia
vero, è necessario però sostituire il classico pull-up presente nelle porte con un pull-down.
L’uso poi di logiche con una tensione di soglia per il valore positivo a basso voltaggio, come per
esempio per porte compatibili con le logiche TTL, risolvono anche eventuali problemi per valori di
tensione alti fuori dagli standard.
Questo approccio rende robuste le porte rispetto ai SEU che comportino un valore alto di uscita
erroneo, ma non previene gli errori computazionali effettuati da un Master o da un Checkers che
forzino ad ‘1’ una uscita che correttamente sarebbe a ‘0’. Un valore di tensione alto, infatti, risulta a
bassa impedenza rispetto ad un valore di tensione basso, che quindi risulterebbe perdente rispetto
anche ad un solo microcontrollore che porti l’uscita ad ‘1’. Questo caso di errore, comunque, può
essere gestito tramite funzioni software attraverso il Master Channel.
Tutte queste soluzioni, comunque, non proteggono contro un errore che interessi due bits. Per questi
casi, si può utilizzare la tecnica del scrubbing, una procedura che serve per ripulire dei dati affetti
da errori. La capacità di alcuni microcontrollori, come i PIC ad esempio, di leggere lo stato dei flipflop di uscita è molto utile in questo caso, ma ci sono situazioni in cui questa tecnica è
147
impraticabile: una porta di generazione di un PWM, ad esempio, o una linea di comunicazione
UART hanno frequenze di funzionamento troppo elevate perché il software possa effettuare
controlli efficaci. In una certa maniera, comunque, queste periferiche effettuano una sorta di
scrubbing automatico dal momento che cambiano stato ripetutamente ad una frequenza elevata e
sono, di conseguenza, autorigeneranti.
Questi studi hanno portato alla creazione di un sistema di prova21 basato sui principi sopra descritti
che rappresenta un ipotetico nodo di un sistema più ampio realizzato tramite microcontrollori.
La descrizione di questo prototipo e dei risultati ottenuti22,23 hanno permesso di progettare una
versione del circuito digitale del sistema di controllo di assetto rispondente alle linee guida teoriche
riportate in questo paragrafo.
IX.3: Requisiti della scheda del microcontrollore resistente all’ambiente spaziale
Il sistema di controllo d’assetto realizzato durante le attività del dottorato rientra nel tipo di
applicazioni che possono essere sviluppate e rese più robuste all’ambiente spaziale se progettate
secondo la filosofia descritta. È stato quindi ritenuto interessante ai fini del progetto l’ideazione di
un sistema fault-tolerant che potesse sostituire l’attuale scheda di controllo digitale.
I requisiti di tale sistema sono quindi i seguenti:
-
compatibilità con il sistema realizzato, in modo che possa sostituire la scheda di controllo
digitale senza apportare alcuna modifica hardware al resto dei sottosistemi, sia dal punto di
vista elettronico che dal punto di vista fisico;
-
un’architettura a tre microcontrollori con un master e due slave allocati secondo le tecniche
descritte nel paragrafo precedente;
-
l’integrazione di un sistema di supervisione in grado di effettuare il reset dei singoli
microcontrollori in base alle decisioni dei checkers;
21
“A fault-tolerant embedded microcontroller testbed”, D. A. Rennels, D. W. Caldwell, R. Hwang, M. Mesarina, Proc.
1997 Pacific Rim Int. Symp on fault-tolerant systems, Dec. 15-16, 1997, Taipei.
22
“Minimalist fault masking, detection and recovery tecniques for mitigating single event effects in spaceborne
microcontrollers”, D.W. Caldwell, D. A. Rennels, UCLA Computer Science Department Technical Report, TR-980025
23
“FTSM: A Fault-Tolerant spaceborne microcontroller”, D.W. Caldwell, D.A. Rennels, Proc. FTCS-28, 23-25 June
1998, Munich, Germany
148
-
la presenza di una interfaccia di comunicazione da utilizzare per simulare errori e
incongruenze nei calcoli effettuati dai vari dispositivi per poter verificare in seguito le
capacità di recupero del sistema.
IX.4: Progetto di un prototipo
Stabilite le caratteristiche di questo nuovo sistema, si è proceduto alla loro implementazione nel
circuito elettrico. Partendo dallo schema originario del microcontrollore, lo si è adattato perché
fosse compatibile con i nuovi requisiti pur mantenendo le stesse funzionalità. Nella figura IX.7, si
vede lo schema composto dai tre microcontrollori uguali, ognuno dotato del suo connettore per la
programmazione, del suo clock e dei collegamenti già presenti nello schema precedente. Alcuni pin
rimasti liberi, poi, sono stati utilizzati per creare lo Status Channel e il Master Channel secondo i
criteri descritti in precedenza.
Figura IX.7: Schema dei tre microcontrollori con le funzioni di master e checkers
Il Master Channel è implementato attraverso il bus I2C presente in ogni dispositivo ed è collegato
anche al microcontrollore con la funzione di risolutore di conflitti. Lo Status Channel, invece, è
149
formato da più linee: 6 linee di I/O, associate ad altrettanti interrupt, sono utilizzate per comunicare
tra un microcontrollore e l’altro lo stato di ognuno di essi, ossia la loro condizione di master,
checkers oppure offline. Altre dodici linee (quattro per ogni microcontrollore), poi, sono collegate
al risolutore di conflitti per comunicare i risultati delle votazioni.
Al di là dei messaggi inviati tramite il Master Channel, le linee dedicate allo Status Channel
permettono quindi l’invio di quattro diversi stati per quel che riguarda la funzione del dispositivo
all’interno del sistema e di sedici messaggi differenti per quel che riguarda invece la comunicazione
con il risolutore di conflitti. In quest’ultimo caso, i messaggi più importanti saranno del tipo:
-
accordo con i risultati di tutti i dispositivi
-
disaccordo con il risultato del master
-
richiesta di reset hardware
-
richiesta di offline
Gli altri sei slot rimasti liberi saranno utilizzati per messaggi che si renderanno necessari durante lo
sviluppo del software.
Per quel che riguarda invece le due linee di collegamento di ogni microcontrollore con gli altri
dispositivi, i messaggi implementati saranno:
-
stato offline
-
stato checkers
-
stato master
-
richiesta di diventare master
In questo modo, con un numero minimo di linee, sono state poste le basi per tutti i tipi di
organizzazione e di interazioni descritte nel paragrafo precedente.
Come detto, ognuno dei singoli microcontrollori può richiedere o può essere obbligato a subire un
reset hardware in seguito alle decisioni dei checkers. Ogni dispositivo, quindi, è dotato di una
alimentazione indipendente dagli altri, controllata dal circuito in figura IX.8.
150
Figura IX.8: Circuito di alimentazione di ogni singolo microcontrollore
Tramite la linea Enablen, dove n è l’indice del microcontrollore, il risolutore di conflitti può
abilitare o disabilitare l’alimentazione di ognuno degli altri microcontrollori.
Figura IX.9: Circuito di unione delle linee di I/O dei microcontrollori
151
Tutte le linee di I/O dei microcontrollori devono poi essere unite e, allo stesso tempo, protette dalle
interferenze che possono causare altri dispositivi in errore. Una resistenza, quindi, svolge la doppia
funzione di evitare corto circuiti tra linee con uscita alta e linee con uscita bassa ed impedire che
dispositivi offline vengano alimentati in maniera parassita dagli altri dispositivi in funzione.
Tutti i carichi collegati alle linee di I/O sono ad alta impedenza –gate di mosfet, in generale: la
presenza della resistenza non genera quindi problemi nella capacità di pilotaggio dei dispositivi
delle altre schede da parte dei microcontrollori.
La stessa cosa, tuttavia, non si può dire per i segnali PWM.
Queste uscite sono utilizzate per impostare la corrente dei magnetotorquer e la velocità di rotazione
dei motori e la presenza di una resistenza di elevato valore può portare alla degradazione del
segnale o al suo smorzamento per i duty cycle più brevi.
Figura IX.10: Circuito di unione delle linee PWM dei microcontrollori
Il circuito in figura IX.10 rappresenta una soluzione a questo problema, inserendo un buffer tra il
punto di unione di tutte le uscite dei microcontrollori e l’invio dei segnali PWM alle varie
periferiche. Questo buffer svolge quindi due funzioni: da una parte rafforza il segnale facendo in
modo che i dispositivi lo ricevano come se fosse uscito direttamente dai microcontrollori, e
dall’altra ripristina i valori di tensione corretti del segnale.
La tensione all’uscita, infatti, sarebbe stata uguale ad un terzo della tensione nominale. Questo
deriva dal fatto che i segnali PWM sono segnali estremamente veloci generati in hardware e
praticamente impossibili da sincronizzare tra i tre dispositivi. Tentare di generare lo stesso segnale
su tutti e tre i microcontrollori avrebbe portato ad un segnale finale praticamente inutilizzabile, data
152
la inevitabile mancanza di sincronismo tra il clock di ognuno dei tre dispositivi e i ritardi
ineliminabili durante l’elaborazione dei dati. Di conseguenza, solo il master attiverà l’uscita PWM,
mentre gli altri dispositivi resteranno in attesa. Le due linee non attive, quindi, renderanno il circuito
di unione delle uscite un partitore di tensione, riducendo la tensione finale del segnale. La presenza
del buffer, invece, consente di riportarlo ai valori nominali.
Anche la porta seriale utilizzata per comunicare con l’esterno è soggetta agli stessi requisiti di
ridondanza di tutti gli altri sistemi: anche in questo caso le linee sono unite tramite resistenze e,
nuovamente, solo il master attiverà la trasmissione di dati verso l’esterno per poter rispettare le
strette tempistiche di trasmissione del segnale. Non è stato necessario, tuttavia, inserire alcun buffer
come si vede dal circuito riportato in figura IX.11: i microcontrollori, infatti, possono disabilitare la
porta di trasmissione mettendola in uno stato di alta impedenza, evitando quindi di influenzare la
linea ad essa collegata.
Figura IX.11: Circuito delle linee di comunicazione seriale
Completamente nuova, invece, è la parte relativa al risolutore di conflitti.
Si tratta di un quarto microcontrollore, anch’esso dotato del suo sistema di programmazione,
alimentato direttamente dalla linea principale di alimentazione, collegato alle linee di stato degli
altri dispostivi.
153
Da qui partono le linee di controllo delle alimentazioni dei singoli microcontrollori, così come
quelle per il reset software. Su queste è stato inserito uno switch che permette di lasciarle libere,
dato che in fase di programmazione devono essere sotto il controllo del programmatore.
Una porta seriale indipendente permette al microcontrollore di comunicare con l’esterno per
interfacciarsi con un eventuale programma di controllo e per effettuare simulazioni, imponendo la
presenza di errori relativi ai vari dispositivi e verificando il comportamento del sistema.
Si può obiettare che questo microcontrollore sia suscettibile all’ambiente spaziale esattamente come
gli altri tre e, di conseguenza, non è adatto per svolgere questa funzione. L’osservazione è senza
dubbio fondata e in un esemplare di volo le funzioni svolte da questo dispositivo dovrebbero essere
inserite all’interno di una PLD, di una FPGA o utilizzando componenti sufficientemente affidabili.
Nel caso del prototipo in questione, è necessario avere un controllo maggiore su ciò che accade e la
soluzione migliore è rappresentata da un microcontrollore, mentre una volta che si siano eliminate
le funzioni utili per lo sviluppo del sistema e di debug, i compiti esclusivi del resolver sono
abbastanza semplici ed implementabili con logica combinatoria.
Figura IX.12: Circuito del microcontrollore risolutore di conflitti
154
Partendo da questo schema è stato quindi disegnato un circuito stampato.
La quantità di componenti e la natura innovativa e sperimentale del dispositivo ne rendono le
dimensioni incompatibili con quelle del sistema di controllo realizzato. Tuttavia, il circuito è stato
realizzato con una interfaccia della stessa forma e dimensione della scheda originale di controllo
digitale, in modo da potersi inserire all’interno del sistema di controllo d’assetto sostituendola.
La figura IX.13 mostra il circuito stampato finale.
Figura IX.13: Circuito stampato del sistema di controllo digitale fault-tolerant
155
Capitolo X: Test sulla scheda fault-tolerant
Stabilita, come descritto nei capitoli precedenti, la capacità del sistema di poter implementare tutte
le funzionalità richieste dal sistema di controllo d’assetto, l’aspetto più interessante da valutare
relativamente alla scheda fault-tolerant progettata è la sua capacità di reazione al malfunzionamento
di uno dei suoi componenti fondamentali, cioè i microcontrollori che la compongono.
La scheda è stata quindi gradualmente assemblata, ponendo in funzionamento uno alla volta e in
maniera indipendente tutti i suoi sistemi fondamentali, partendo dal risolutore di conflitti, dai
circuiti di controllo dell’alimentazione e del reset, fino ai singoli microcontrollori che
funzioneranno come master o slave.
In seguito è stato realizzato il software per integrare l’insieme e permettere a tutti i sistemi di
lavorare in maniera organica, implementando i vari bus di comunicazione, assegnando un
significato alle varie combinazioni di valori sulle porte e gestendo i vari eventi che si possono
presentare.
In questo capitolo si descrivono le caratteristiche finali del prototipo, con una particolare attenzione
al modo in cui sono state implementate, sia dal punto di vista hardware che dal punto di vista
software, le funzionalità che rendono la scheda fault-tolerant, terminando con una serie di test
funzionali per valutarne le effettive capacità di recupero in caso di guasto.
X.1: Assemblaggio della scheda
La scheda progettata è stata gradualmente montata fino a raggiungere l’aspetto mostrato in figura
X.1.
Sono stati inseriti una serie di led che permettono una rapida visualizzazione dello stato in cui si
trovano i vari sistemi. In particolare, tre led indicano lo stato dell’alimentazione di ognuno dei tre
microcontrollori master/slave o, in altre parole, lo stato dell’hard reset applicato dal resolver. Una
coppia di led è stata posizionata su ciascuno dei bus di stato dei tre microcontrollori, permettendo di
seguire l’evoluzione delle procedure di assegnazione dinamica dello stato di master o di slave
durante la fase di avvio e durante il funzionamento. Tre ulteriori led, tramite buffer, sono stati
collegati a tre uscite generiche dei microcontrollori, da utilizzare durante le fasi di test per segnalare
eventuali avvenimenti o effettuare prove di continuità del segnale.
Una serie di switch permette di abilitare o disabilitare il controllo della linea di soft-reset da parte
del resolver, dato che per la programmazione dei dispositivi è necessario che questa linea rimanga
156
sotto l’esclusivo controllo del programmatore: durante l’uso normale, è sufficiente chiudere i
contatti perché i diversi microcontrollori possano essere resettati dal resolver.
La scheda è dotata di due porte seriali, una collegata ai master/slave e condivisa tra loro, l’altra
dedicata al resolver, attraverso la quale è possibile ricevere i dati sullo stato della scheda, una copia
di tutto il traffico effettuato sui vari bus di comunicazione interni ed inviare comandi per il test o il
debug.
Figura X.1: Scheda fault-tolerant assemblata e in funzione
X.2: Architettura del sistema
Come descritto in fase di progetto, la scheda contiene quattro microcontrollori, tre con le funzioni di
master e slave, mentre uno dedicato alla risoluzione dei conflitti, alla supervisione del sistema e alla
interfaccia con l’utente per i test e il debug.
Lo schema a blocchi in figura X.2 descrive l’architettura del sistema: il Master bus, basato su I2C e
organizzato come multimaster collega tutti tre i microcontrollori ed è supervisionato dal resolver,
che ne controlla il traffico e lo reinvia sulla porta seriale; tramite questo bus avvengono tutte le
comunicazioni che richiedono uno scambio di informazione tra master e slave. Questi ultimi
157
condividono anche il bus di I/O attraverso un semplice sistema di protezioni sulle entrate e sulle
uscite, che impedisce l’alimentazione di uno dei microcontrollori spento dal resolver attraverso le
porte di uscita, così come limita l’interferenza di eventuali porte bloccate da malfunzionamenti sugli
slave. È importante notare come, diversamente da quanto ipotizzato nella letteratura consultata24,
per il modo in cui è stato previsto il funzionamento solo il master abbia effettivamente le uscite
abilitate: in questo modo, se da una parte si genera un piccolo intervallo di tempo tra la
disattivazione del master e il passaggio di uno degli slave alle sue funzioni in cui l’uscita può non
essere costante, si evitano tutte le problematiche relative alla validità della tensione di uscita nel
caso di output discordi tra master e slave.
Figura X.2: Schema a blocchi della scheda fault-tolerant
24
“A minimalist hardware architecture for using commercial microcontroller in space”, D.W. Caldwell, D. A. Rennels,
16th Digital Avionics System Conference, 28-30 ottobre 1997; “A Fault-Tolerant Embedded Microcontroller Testbed”,
David A. Rennels, Douglas W. Caldwell, Riki Hwang, and Malena Mesarina - University of California at Los Angeles,
Proc. 1997 Pacific Rim Int. Symp. on Fault-Tolerant Systems (PRFTS), Dec 15-16, 1997, Taipei
158
I master e slave condividono anche un ulteriore bus, chiamato bus di stato, attraverso il quale
comunicano agli altri dispositivi la funzione che stanno eseguendo nel sistema, come master o come
slave. In questo modo è possibile capire se la scheda sia rimasta priva di un master o se due
microcontrollori stiano tentando di assumere la funzione di master nello stesso momento ed agire di
conseguenza.
Ogni master/slave, poi, è collegato al resolver tramite un bus dedicato, separato per ogni
microcontrollore, attraverso il quale vengono trasmesse le risposte alle richieste di interrogazione da
parte del master, le operazioni interne che vengono eseguite ed eventuali richieste da parte del
dispositivo stesso per un reset hardware o software nel caso in cui il programma rilevi problemi che
possano richiedere un riavvio.
Il resolver, a sua volta, ha il controllo del sistema di alimentazione di ognuno dei tre master/slave,
oltre alla possibilità di effettuare un software reset.
Come appare evidente dall’organizzazione del sistema, il conflict resolver non partecipa
direttamente alle funzioni eseguite dalla scheda ma i suoi compiti sono i seguenti:
-
regolare l’avvio della scheda, accendendo in sequenza i microcontrollori e permettendo un
avvio controllato;
-
controllare tramite il resolver bus l’esecuzione delle funzioni di inizializzazione della scheda
ed intervenire nel caso in cui si presentino conflitti, come per esempio due microcontrollori
che cerchino di assumere le funzioni di master nello stesso tempo e non risolvano tra loro il
problema;
-
supervisionare il master bus, da un lato per controllare l’insorgere di eventuali problemi
come il timeout nelle risposte da parte di un dispositivo e dall’altro per reinviare i dati
all’esterno;
-
ricevere le risposte da parte degli slave delle interrogazioni sulla validità delle uscite
effettuate dal master, tenendo un registro del numero di errori rilevati per ciascun dispositivo
ed intervenire di conseguenza, con reset hardware o software a seconda delle statistiche.
Per quel che riguarda, invece, la gestione del sistema da parte dei master/slave, sono implementate
le seguenti funzioni:
-
Assegnazione dinamica master/slave, a seconda che sia già presente un master nel sistema o
no;
159
-
Rilevamento dei conflitti relativi alla assegnazione concorrente di due master, con sistema di
arbitraggio per la risoluzione;
-
Rilevamento della mancanza di un master nel sistema e passaggio automatico di uno degli
slave allo stato di master;
-
Sincronizzazione dell’esecuzione dei processi, affinché tutti i microcontrollori eseguano lo
stesso codice in maniera sincronizzata e vengano limitati i glitch in caso di esclusione del
master;
-
Richieste di verifica degli output agli slave;
-
Verifiche interne di funzionamento ed eventuale richiesta di un reset al resolver nel caso di
rilevamento di incongruenze.
Come accennato, queste funzionalità si avvalgono di diversi bus di comunicazione. In particolare,
tutto ciò che riguarda l’assegnazione master/slave utilizza il bus di stato che unisce i tre
microcontrollori master/slave. Questo bus è composto da due linee per ogni microcontrollore, che
permettono la generazione di quattro segnali diversi, di cui solo tre si utilizzano. La tabella riassume
il loro significato:
OP0n
OP1n Stato
0
0
Offline
1
0
Slave
0
1
Master
1
1
N/A
Tabella X.1: Implementazione del bus di stato, dove l’indice “n” si riferisce al microcontrollore
Ogni microcontrollore ha quindi il controllo delle sue due linee, sulle quali imposta il proprio stato,
mentre legge quelle degli altri due dispositivi, conoscendo in questa maniera la configurazione del
sistema e sapendo chi ha assunto le funzioni di master e chi di slave. Tramite un controllo
periodico, che con apposita assegnazione delle linee può essere passato ad interrupt per una più
veloce reazione ai cambiamenti di stato, il programma principale verifica la corretta configurazione
di tutti i dispositivi.
Accanto a questo bus, dedicato ai master/slave, ogni microcontrollore è dotato di un bus dedicato
per comunicare con il resolver. Questo bus è formato da quattro linee e permette, quindi, la
trasmissione di sedici diversi messaggi. La tabella seguente ne illustra il significato:
160
R3
R2
R1
R0
Significato
0
0
0
0
N/A (Dispositivo offline)
0
0
0
1
Avviso di richiesta imminente di diventare Master
0
0
1
0
Passaggio alle funzioni di Master effettuato
0
0
1
1
Passaggio alle funzioni di Slave effettuato
0
1
0
0
Accensione del microcontrollore, venuta online
0
1
0
1
0
1
1
0
Idle, nessuna operazione interna in corso
0
1
1
1
Richiesta di un soft-reset
1
0
0
0
Richiesta di una verifica in corso
1
0
0
1
Risultato della verifica, concordanza con il risultato del master
1
0
1
0
Risultato della verifica, disconcordanza con il risultato del master
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
Richiesta di un hard-reset
Tabella X.2: Implementazione del bus resolver
A seconda, quindi, di ciò che sta avvenendo internamente al master/slave, per quel che riguarda le
funzioni di fault-tolerant e la gestione della struttura della scheda, il microcontrollore comunica il
suo stato o le sue decisioni al resolver, il quale prenderà le decisioni necessarie in base a tutti i dati
che saranno stati raccolti.
Il terzo bus di comunicazione è basato su I2C ed è utilizzato ogni qual volta si richieda una
trasmissione di dati associata ad una richiesta di comando.
Il bus è organizzato come multimaster, permettendone quindi l’utilizzo da parte di ogni dispositivo,
anche se in condizioni normali è solo il microcontrollore master ad averne il controllo. Il resolver è
collegato al bus, ma svolge principalmente l’attività di supervisore per catturarne in traffico e
reinviarlo alla porta seriale.
161
La tabella seguente illustra le funzioni che sono state implementate su questo bus:
Funzione
Parametri
Sincronizzazione
Punto di sincronizzazione
Richiesta di controllo output
Output da verificare e valori di controllo
Richiesta di controllo operazioni
Operazione, input ed output
Tabella X.3: Funzioni implementate su bus I2C
Il codice eseguito dal master e dagli slave è stato realizzato il più simile possibile, per evitare
perdita di sincronizzazione ed un più facile passaggio da uno stato all’altro. Esistono tuttavia
piccole, inevitabili, differenze causate dai diversi compiti che devono essere eseguiti. In particolare:
-
Al master spetta il compito di inviare le richieste di sincronizzazione, mentre gli slave
devono eseguire le procedure necessarie una volta ricevuta detta richiesta;
-
Al master spetta il compito di richiedere un controllo del suo funzionamento, mentre agli
slave spetta il compito di effettuare la verifica ed inviare il risultato al resolver;
-
Al master spetta il compito di verificare internamente la corrispondenza tra i valori inviati
alle sue uscite e i valori effettivamente presenti, mentre per gli slave questo non è
necessario.
Nel paragrafi seguenti verranno esaminate nel dettaglio le funzionalità qui riassunte.
X.3: Funzionalità di base
In questo paragrafo saranno descritte nel dettaglio tutte le funzionalità relative alle caratteristiche
fault-tolerant che sono state implementate nel prototipo.
X.3.1 Assegnazione dinamica di master e slave
L’assegnazione dello stato di master può avvenire in due casi: all’accensione del microcontrollore,
qualora si accorga che non esiste un master nel sistema, o quando il master perde le sue funzioni. Il
passaggio da master a slave non è mai una decisione presa dal master stesso, dato che è frutto
dell’esclusione effettuata del Resolver, tranne in un caso: se due microcontrollori cercano di
162
assumere nello stesso momento le funzioni di master, un sistema di arbitraggio fa in modo che uno
dei due passi ad essere slave.
Il diagramma a blocchi in figura X.3 rappresenta la semplice sequenza di operazioni che avvengono
al momento dell’inserimento di un microcontrollore nel sistema: se sul bus OP viene rilevata la
presenza di un master, il sistema viene inizializzato come slave; altrimenti, prende le funzioni di
master. In entrambi i casi, il nuovo stato viene comunicato agli altri dispositivi tramite il bus OP e al
resolver tramite il bus Rn.
Attivazione del
microcontrollore
Esiste già un
Master su OP?
No
Abilitazione
come master
Si
Abilitazione
come slave
Comunicazioni
tramite OP e Rn
Figura X.3: Schema a blocchi delle operazioni svolte all’attivazione di un microcontrollore
Controllo su OP
Si tratta del micro
(n+1) o (n-1)?
Esiste già un
altro master?
Si
n+1
No
n-1
Torna alle normali
operazioni
Sarà l’(n-1) a
passare a slave
Figura X.4: Funzione di arbitraggio per l’assegnazione del master
163
Passa a slave
Comunicazioni
tramite OP e Rn
Subito dopo l’assegnazione dello stato di master, e in maniera ciclica durante il normale
funzionamento, viene eseguita la funzione che controlla l’eventuale conflitto con un altro
microcontrollore che abbia assunto in contemporanea lo stato di master a causa di inevitabili
eventuali coincidenza nelle operazioni, il cui schema a blocchi è riportato in figura X.4:
Nel caso in cui il controllo effettuato sul bus OP rilevi la presenza di un altro master, visto che ogni
microcontrollore è dotato di linee dedicate sul bus ed è possibile, per un dispositivo, capire quale
altro abbia assunto le funzioni di master, viene effettuata una semplice verifica: dato che ogni
dispositivo ha il suo indice, il microcontrollore con indice più alto ha la precedenza rispetto a quello
con indice più basso. Così, se i microcontrollori “1” e “3” assumono contemporaneamente la
funzione di master, il sistema farà in modo che quello con l’indice “1” torni ad essere slave.
Nel caso in cui ciò non avvenga per qualche motivo, il resolver ha comunque un rapporto della
situazione tramite il bus Rn e può intervenire mettendo offline il master che non voglia cedere i suoi
privilegi.
Lo stesso tipo di procedura entra in azione anche qualora si rilevi l’assenza di un master sul bus: in
questo caso, uno o più microcontrollori cercheranno di assumerne le funzioni e, se necessario,
entrerà nuovamente in gioco il sistema di arbitraggio.
Nelle linee di progetto originarie di Caldwell e Rennels, anche per ragioni legate alla struttura dei
microcontrollori PIC disponibili all’epoca, era previsto che i microcontrollori avessero sempre le
linee di uscita abilitate, con l’introduzione di alcuni accorgimenti per evitare gli effetti dei SEL (si
veda paragrafo IX.2). Nel progetto attuale, invece, si è preferito abilitare solo le uscite del master,
sfruttando le capacità dei PIC di leggere lo stato dei latch di uscita e dell’effettivo valore presente
sulla porta, cosa non possibile nei dispositivi della stessa famiglia disponibili negli anni ’90.
In questa maniera si risolvono i problemi derivanti da eventuali tensioni incompatibili con i livelli
standard, soprattutto lavorando a 3.3V, introducendo routines di controllo software dello stato delle
uscite, sia nel master che negli slaves, che possono così campionare i valori di output generati dal
master.
X.3.2 Sincronizzazione del codice
Nonostante le differenze tra il codice eseguito nel master e negli slave siano state ridotte al minimo,
con il tempo è inevitabile che le operazioni eseguite nei vari dispositivi vadano fuori sincronismo,
soprattutto a causa di operazioni asincrone come possono essere le richieste di verifiche o i
cambiamenti di funzioni di master e slave, o l’accensione in momenti diversi dei vari dispositivi.
164
Per questo motivo è stata implementata una funzione di sincronizzazione, che fa uso del bus I2C per
avviare la procedura ed indicare il punto di sincronizzazione, e di una linea di I/O generica per
indicare il momento di sincronizzarsi.
Il principio è il seguente: ognuna delle normali funzioni implementate nel codice, quelle che
genereranno i segnali di controllo prodotti dal circuito, è identificata da un indice. La
sincronizzazione avviene tramite la richiesta di eseguire la funzione identificata da un determinato
indice nello stesso momento. Non è però possibile bloccare l’esecuzione del codice principale per
attendere che tutti i dispositivi arrivino a quel punto, perché la sincronizzazione non può
interrompere le normali operazioni nel master, così come non è possibile utilizzare semplicemente
un impulso come se si trattasse di un segnale di clock perché, se da un lato espone il sistema ad una
notevole vulnerabilità nel caso di malfunzionamento del master che potrebbe bloccare anche tutti
gli slave, il programma potrebbe trovarsi all’interno di qualche funzione e non poterne uscire
istantaneamente per raggiungere il punto indicato.
In figura X.5 è illustrato lo schema a blocchi delle operazioni svolte dal master: ipotizzando che il
programma principale sia formato da quattro funzioni, “a”, “b”, “c” e “d”, in maniera autonoma, per
esempio essendo trascorso un certo tempo dall’ultima sincronizzazione, prima di entrare nella
funzione “a” il master richiede agli slave di sincronizzarsi sulla funzione “c”.
Richiesta di
sincronizzazione su “c”
Invio di una master
call su I2C
Si sta per entrare
in “c”?
Torna alle normali
operazioni
Si
No
Torna alle normali
operazioni
Invio impulso
Figura X.5: Funzione di sincronizzazione eseguita dal master
Viene inviata una master call, cioè un messaggio ricevuto da tutti i dispositivi collegato sul bus
indipendentemente dal loro indirizzo, contenente il comando di sincronizzazione e l’identificatore
165
del punto. Il master prosegue l’esecuzione del codice, controllando se sta entrando nella funzione
identificata da “c”: quando questo avviene, manda l’impulso di sincronizzazione sulla linea dedicata
e prosegue con il programma senza interruzioni.
La figura X.6 mostra ciò che avviene negli slave quando si riceve il messaggio: la richiesta di
sincronizzazione viene registrata e il programma termina l’esecuzione della funzione in cui si trova.
A questo punto, invece di proseguire normalmente, salta tutte le altre funzioni del programma fino
ad arrivare a quella indicata nel messaggio, la “c” nell’esempio. Si mette quindi in attesa di ricevere
l’impulso che sbloccherà nuovamente l’esecuzione del codice, eseguendo quindi la funzione
richiesta nello stesso momento del master. È stato implementato un timeout per evitare che una
mancanza nella ricezione dell’impulso possa portare ad un blocco indefinito di uno slave: questo
può accadere qualora, per esempio, lo slave impieghi più tempo per arrivare il punto di
sincronizzazione rispetto a quanto impieghi il master, che avrà quindi già inviato l’impulso nel
momento in cui lo slave si metterà in attesa. Questa condizione può verificarsi in determinate
combinazioni di esecuzione del codice del master e degli slave e di particolari tempistiche di
sincronizzazione, per cui se anche può verificarsi a seguito di una serie di combinazioni casuali, la
pausa che introduce l’attesa di un impulso porta necessariamente ad un cambiamento nella
sincronizzazione del codice, o meglio detto della non-sincronizzazione, evitando che si ripeta la
volta successiva che si richieda l’operazione.
Termina l’esecuzione
della funzione in cui si
trova
Ricezione di richiesta di
sincronizzazione su “c”
Salta tutte le funzioni fino
ad arrivare alla “c”
Attesa impulso
Impulso
arrivato?
Si
No
No
Si
Timeout?
Figura X.6: Funzione di sincronizzazione eseguita dagli slave
166
Torna alle normali
operazioni
X.3.3: Autocontrollo
L’architettura hardware dei microcontrollori prodotti dalla Microchip prevede la presenza di due
circuiti separati per l’impostazione del valore sulle uscite digitali e per la lettura del valore presente
sulle stesse porte. In altre parole, il valore prodotto ad una determinata porta dipende
dall’impostazione della porta, che deve essere configurata come porta di uscita, e dal valore
impostato sul latch, mentre un circuito separato legge la tensione sulla porta, indipendentemente dal
fatto che sia impostata come ingresso o come uscita.
In questo modo è possibile verificare se l’uscita desiderata sia effettivamente prodotta,
confrontando il valore del registro dei latch con il valore del registro delle porte.
Questa caratteristica è sfruttata per implementare una funzione di controllo automatico dello stato
delle porte del master: per un qualche malfunzionamento, che può essere transitorio oppure
permanente, il circuito di controllo dell’uscita potrebbe essere danneggiato, mantenendo un valore
costante a “1” o a “0”, oppure impedendo il controllo della porta.
Ciclicamente, quindi, il master esegue questa verifica e, in base al risultato, può richiedere al
resolver un reset hardware, dato che un SEU può produrre un temporaneo blocco delle porte logiche
risolvibile con un reset.
Chiaramente, in caso di un malfunzionamento più profondo, il resolver si renderà conto di un
continuo invio di richiesta di reset hardware da parte di un determinato microcontrollore ogni volta
che assume il compito di master, potendo arrivare a decidere di escluderlo in maniera permanente
dal circuito.
X.3.4: Richiesta di controllo standard
Il master può richiedere una verifica delle sue uscite da parte degli slave.
Per farlo, invia un messaggio tramite il bus I2C agli slaves, nel quale specifica quale porta è da
verificare, lo stato delle varie uscite di quella porta e il punto del programma a cui si riferisce detto
valore. Quest’ultima informazione è necessaria perché, nonostante l’esecuzione del codice sia
sincronizzato nel modo descritto in precedenza, le piccole inevitabili differenze nell’esecuzione
delle varie istruzioni può portare ad effettuare la verifica in un momento in cui il valore delle porte
sia stato cambiato a causa del differente codice eseguito: in questo modo, non appena lo slave
passerà nel punto indicato dal master, effettuerà la verifica. Chiaramente, ciò può comportare un
167
ritardo pari, al massimo, all’intera esecuzione del programma, ma data la rapidità con cui questo
viene eseguito è lecito supporre che lo stato delle porte non varierà tra una esecuzione e la seguente.
Il risultato dell’operazione di controllo viene inviato dagli slaves al resolver tramite il bus resolver a
quattro linee, specificando se concordano o meno con i dati inviati dal master.
Il resolver, a sua volta, registra questi eventi e, qualora il numero di discordanze superi una soglia
prefissata, interverrà per eseguire un reset del master.
Nel caso in cui il master non richieda un controllo per un tempo superiore ad un valore impostato,
inoltre, il resolver supporrà un malfunzionamento e provvederà a resettare il master. In questo
senso, la verifica delle porte ha anche una funzione da watchdog software perché evita che un
blocco del master senza un rilascio del bus di stato provochi una interruzione indefinita nelle
funzioni della scheda.
È importante notare come da questo controllo siano escluse le uscite controllate da funzioni
hardware, come per esempio quelle associate ad uscite PWM o alla porta seriale. Per queste uscite
la sincronizzazione è impossibile, dato che il loro stato è determinato da moduli hardware interni
con tempistiche strettamente legate al clock di sistema e spesso operanti a velocità troppo elevate
per poter essere confrontate con il sistema descritto. In questo caso, si utilizza la successiva
funzionalità descritta.
X.3.5: Richiesta di controllo avanzata
La richiesta di controllo avanzata delle porte è simile a quella precedente ma, invece di operare a
livello dei latch che determinano lo stato delle porte, esegue un controllo sui registri hardware del
micro che generano le uscite nei moduli esclusi nel controllo precedente.
Anche in questo caso, il controllo è avviato tramite un messaggio sul bus I2C inviato dal master,
dove si specifica su che registro si deve effettuare il controllo e il valore del registro stesso.
Non viene indicato un punto specifico del programma in cui effettuare il controllo, perché in questo
caso si suppone che la variazione del contenuto dei registri delle varie periferiche venga modificato
di rado durante l’esecuzione del software e la sincronizzazione effettuata di routine è considerata
sufficiente.
La risposta degli slave, nuovamente, è inviata tramite il bus resolver.
168
X.3.6: Richiesta di controllo di operazione
Non tutte le operazioni effettuate durante il programma hanno un riflesso sullo stato delle porte di
I/O: i dati possono essere acquisiti ed utilizzati per essere inviati tramite la porta seriale, oppure
possono essere impiegati per prendere delle decisioni sullo svolgimento delle operazioni.
In questo senso, può essere importante poter effettuare una verifica sulla capacità del
microcontrollore di effettuare correttamente delle operazioni matematiche, il cui corretto risultato
può essere influenzato da un problema nella memoria o nella logica interna della CPU allo stesso
modo delle porte di uscita.
Data l’impossibilità di prevedere un numero arbitrario di operazioni su cui effettuare la verifica, nel
messaggio di richiesta di controllo viene inviato un identificatore dell’operazione da eseguire: in
questa fase di test, si prevede di verificare le quattro operazioni matematiche di base, ovverosia
addizione, sottrazione, somma e divisione.
Accanto all’identificatore dell’operazione, vengono inviati i due operandi e il risultato calcolato dal
master. Nemmeno in questo caso si richiede un punto specifico del programma per effettuare il
controllo, dato che tutti i valori sono inviati tramite I2C agli slaves.
Nel momento in cui gli slaves ricevono questa richiesta, eseguono l’operazione indicata sui dati
trasmessi e confrontano il loro risultato con quello del master, inviando il risultato della loro
verifica al resolver.
X.4: Conflict resolver
In base a quanto descritto, in condizioni di normale funzionamento i compiti del conflict resolver
sono limitati alla supervisione delle attività di controllo effettuate dai microcontrollori, controllando
l’esattezza delle procedure di assegnazione master e slave, verificando l’accordo tra i diversi
dispositivi a seguito delle verifiche periodiche che vengono effettuate ed agire di conseguenza.
Il resolver mantiene una registrazione di tutti gli eventi che vengono rilevati, come per esempio il
numero di volte in cui un determinato microcontrollore è stato messo offline a causa di una
votazione sfavorevole, oppure di quante volte uno slave ha votato per l’esclusione del master
risultando poi essere nel torto. Tutte queste statistiche possono essere utilizzate per implementare
delle funzionalità avanzate attraverso cui sia possibile, per esempio, escludere in maniera definitiva
un microcontrollore qualora si rilevi un numero eccessivo di errori, oppure in sistemi con più di tre
dispositivi assegnare un peso differente ai vari slave in base al loro comportamento precedente.
169
A parte questi compiti, per la fase di test sono state implementate alcune altre funzionalità utili per
una rapida supervisione dello stato della scheda.
In particolare, attraverso una porta seriale il resolver comunica con l’utente tutti gli eventi che
rileva, da cambiamenti sullo stato del bus resolver al traffico sul bus I2C, dallo stato delle
alimentazioni al risultato delle votazioni degli slave.
Il resolver può inoltre rispondere ad alcuni comandi di base inviati dal computer, come la richiesta
di abilitare o disabilitare uno dei microcontrollori, effettuare un reset hardware, simulare una
votazione sfavorevole per il master, etc.
X.5: Test
In questo paragrafo sono descritti alcuni dei test effettuati sulla scheda con lo scopo di mostrare le
caratteristiche e le capacità del sistema che è stato sviluppato.
La prima caratteristica analizzata è la sequenza di avvio, che già mostra il funzionamento della
procedura di assegnazione dinamica delle funzioni di master e slave, assieme al sistema di
arbitraggio automatico.
Di seguito è riportato il log tipico restituito dal resolver all’accensione:
Conflict Resolver 0.2
UART Initialized OK.
SAM 00000000 1 0 0
SAM 00000003 1 1 0
SAM 00000004 1 1 1
RCD 00000047 R1 0100
RCD 00000050 R2 0100
RCD 00000050 R3 0100
RCD 00000071 R1 0001
RCD 00000073 R2 0001
RCD 00000073 R2 0001 R3 0001
RCD 00000093 R1 0010
RCD 00000096 R2 0010
RCD 00000096 R3 0010
RCD 00000116 R1 0011
RCD 00000117 R1 0011
170
RCD 00000119 R2 0011
RCD 00000119 R2 0011 R3 0110
RCD 00000149 R1 0110
RCD 00000151 R2 0110
La struttura del messaggio è organizzata nel seguente modo: un indicatore del tipo di evento che
viene descritto, un timestamp espresso in millisecondi il cui zero corrisponde al momento di avvio
del resolver e un messaggio che descrive ciò che si è rilevato, la cui forma dipende dall’evento
stesso.
In particolare, il primo evento descritto corrisponde ad un’azione compiuta dal resolver stesso,
ovverosia l’accensione dei tre microcontrollori:
SAM 00000000 1 0 0
SAM 00000003 1 1 0
SAM 00000004 1 1 1
L’evento SAM indica l’impostazione dell’alimentazione ed è seguita dallo stato dell’alimentazione
dei micro, dove a 0 corrisponde l’alimentazione spenta, mentre ad 1 l’alimentazione accesa.
Si vede quindi come i tre microcontrollori vengano accesi in sequenza.
Più o meno in contemporanea, i tre micro si inizializzano e prendono il controllo delle uscite,
comunicando la loro venuta online nel sistema:
RCD 00000047 R1 0100
RCD 00000050 R2 0100
RCD 00000050 R3 0100
Il suffisso RCD indica il rilevamento di un cambio sul bus del resolver attraverso il quale i vari
microcontrollori comunicano i loro eventi interni. R1, R2 ed R3 indicano a quale dispositivo si
riferisce lo stato del bus indicato nel campo successivo, che riporta lo stato delle quattro linee che
formano il bus. Nel caso attuale, lo stato 0100 corrisponde all’avviso di venuta online del
microcontrollore, come descritto nella tabella X.2.
Dato che non esiste un Master, tutti e tre i dispositivi cercano di assumerne le funzioni e
comunicano la loro intenzione al Resolver:
RCD 00000071 R1 0001
171
RCD 00000073 R2 0001 R3 0001
Dato che l’accensione è stata quasi contemporanea, tutti e tre i microcontrollori arrivano ad
assegnarsi lo stato di Master, come indica la successiva parte del log:
RCD 00000093 R1 0010
RCD 00000096 R2 0010
RCD 00000096 R3 0010
Dato che non può esistere più di un Master attivo nel sistema, entra in funzione il sistema di
arbitraggio automatico dei microcontrollori, senza la necessità di alcun intervento esterno:
attraverso il bus di stato, si accorgono che esiste già un Master e cedono la funzione al dispositivo
con la priorità, rispetto ad una scala implementata internamente:
RCD 00000117 R1 0011
RCD 00000119 R2 0011
RCD 00000119 R2 0011 R3 0110
Mentre i microcontrollori 1 e 2 passano alla funzione di slave, indicata dallo stato 0011, il
microcontrollore 3 mantiene la sua funzione di master e segnala che si trova nella condizione
normale di funzionamento, 0110, in cui esegue il programma principale.
A breve distanza, anche gli altri due microcontrollori passano nello stesso stato:
RCD 00000149 R1 0110
RCD 00000151 R2 0110
La scheda si trova quindi in condizioni nominali, con un master e due slave.
Il log seguente mostra cosa accade se il master viene resettato:
RCD 00015487 R3 0000
RCD 00015535 R2 0010
RCD 00015568 R2 0110
RCD 00015779 R3 0100
RCD 00015802 R3 0011
172
RCD 00015825 R3 0110
Quando il microcontrollore 3, che era master, viene spento rilascia le linee del bus resolver, che
vengono rilevate come 0000. Uno dei due slave si accorge della mancanza di un master, dato che
assieme alle linee del bus resolver sono state rilasciate anche quelle del bus di stato e ne assume le
funzioni (0010), dopo di che ritorna in funzionamento normale (0110).
Quando il microcontrollore che era stato resettato torna online (0100) si accorge che c’è già un
master nel sistema, quindi assume immediatamente le funzioni di slave (0011) prima di entrare in
fase di idle (0110).
L’assegnazione delle funzioni di master e slave coinvolge anche la configurazione delle porte di
I/O: per evitare conflitti, solo il master ha le uscite abilitate.
Quando uno slave passa ad essere master, il valore delle uscite è già caricato nei latch delle sue
porte, perché il programma che sta eseguendo è uguale e il più possibile sincronizzato a quello del
master, e deve solo abilitare le uscite per ripristinare il valore delle varie linee.
Il tempo per effettuare questo passaggio dipende da molti fattori e non è facilmente prevedibile: il
momento in cui avviene il passaggio a master può avere un ritardo rispetto al momento in cui il
master precedente va offline che dipende da ciò che sta facendo il microcontrollore e dalla distanza
tra il punto di controllo del bus di stato dal punto del codice in cui si trova.
Sono state effettuate diverse misure per valutare il tempo minimo in cui questo passaggio può
avvenire e un tempo ragionevole, che si può considerare medio.
La prima condizione è stata ottenuta con un programma molto semplice, che non esegue
praticamente nulla se non il controllo dello stato del sistema. Una delle uscite è stata collegata
all’oscilloscopio e tenuta a livello alto dal master: nel tempo in cui il master viene portato offline e
uno degli slave ne assume le funzioni, la linea rimane a livello basso ed è possibile misurare il
tempo richiesto per l’operazione.
L’immagine in figura X.7 mostra esattamente il momento descritto: il valore alto della linea indica
la presenza di un master attivo, mentre il valore basso l’intervallo trascorso tra la disattivazione e
l’attivazione del nuovo master.
173
Figura X.7: Test sul tempo di ripristino del master nella condizione più favorevole
Come si vede, l’uscita rimane inattiva per circa 1uS, un tempo estremamente breve se si tiene in
conto che il tempo di istruzione dei microcontrollori sulla scheda è di 0,25 uS.
Come detto, in questo caso l’unico scopo del firmware era quello di ripristinare l’output e questo
risultato rappresenta un limite inferiore, al di sotto del quale non è possibile andare.
Per rendere la prova più vicina alla situazione reale si sono inserite varie funzioni nel programma
principale, con il compito di generare due onde quadre in opposizione di fase via software. In
questo caso, ognuna delle funzioni richiede quale mSec per essere eseguita, impedendo quindi
l’immediato rilevamenti della perdita del master.
In figura X.8 si mostra il risultato di uno di questi test: il gradino sulla linea verde rappresenta il
momento in cui il micro riceve il reset; le linee gialle e blu rappresentano le uscite su cui vengono
generate le onde quadre.
Nel caso riportato, il tempo di recupero è dell’ordine dei 280mSec, ma l’analisi all’oscilloscopio
mostra anche un effetto indipendente dal software: anche dopo il reset, il microcontrollore mantiene
per un certo tempo lo stato delle linee così com’erano al momento dello spegnimento. Dato che il
rilevamento della mancanza di un master avviene proprio grazie al rilascio delle linee del bus di
stato, questo comportamento ritarda l’entrata in funzione di uno degli slave.
174
Figura X.8: Test sul tempo di ripristino del master in una condizione reale di funzionamento
Il tempo complessivo di 280mSec, quindi, si deve scomporre in due parti: una di circa 240mSec
dipendente dall’hardware interno del microcontrollore, su cui non c’è controllo, che va dal
momento in cui avviene il reset (gradino sulla traccia verde in figura X.8) al momento il cui
l’hardware del microcontrollore rilascia le porte (gradino sulla traccia blu), e una di circa 40mSec
che è quella effettivamente dovuta al firmware, pari alla differenza tra il momento in cui le linee
vengono rilasciate, corrispondente al tratto di traccia blu al livello basso, e il momento in cui
l’uscita viene ripristinata.
Il test successivo ha riguardato gli effetti della sincronizzazione dei processi nei vari
microcontrollori sulla capacità di proseguire in maniera regolare un segnale in caso di esclusione
del master.
Le figure X.9 e X.10 mostrano il comportamento di un segnale nel momento in cui il master viene
resettato. Questo segnale è generato via software dalle funzioni che compongono il main, in cui due
uscite vengono portate alternativamente a 1 e a 0 in opposizione di fase.
La prima immagine riporta ciò che accade al momento del reset del master: dopo un breve
intervallo di tempo, uno degli slave prende il suo posto proseguendo il segnale.
175
Figura X.9: Comportamento dei segnali in uscita al momento del reset del master
Figura X.10: Misurazione dello sfasamento dei segnali a seguito del reset del master
La seconda immagine, invece, mostra la misura dello sfasamento tra il segnale iniziale e quello
finale. Per poterlo osservare meglio, è stato riportato nella parte inferiore il grafico di come sarebbe
proseguita l’uscita nel caso in cui non ci fosse stata nessuna interruzione. Come si vede, la
differenza tra la fase dei due segnali è minima, nell’ordine del millisecondo.
Come spiegato, questo risultato si ottiene grazie ad una procedura di sincronizzazione del codice
eseguito. Dato che la richiesta di sincronizzazione inviata dal master passa attraverso il bus I2C,
viene vista anche dal resolver che provvede a segnalare anche questo tipo di traffico all’utente.
176
Il pacchetto che viene ricevuto, infatti, è di questo tipo:
I2CRR 00001898 00 SR3 0030
L’identificatore I2CRR, in questo caso, indica il rilevamento di un messaggio sul bus. Anche in
questo caso segue un timestamp che indica il momento in cui è stato rilevato il messaggio.
Successivamente è presente l’indirizzo del destinatario: dato che si tratta di una general call,
l’indirizzo è 00. SR3 è il messaggio trasmesso, che indica una richiesta di sincronizzazione nel
punto contrassegnato dall’indice 3 del software. Chiude il log lo stato del bus I2C, ininfluente in
questo caso.
Il test successivo riguarda la verifica da parte degli slave delle uscite generate dal master.
Un log tipico di questo evento è il seguente:
I2CRR 00081209 00 OC2 0030
RCD 00081210 R1 1001 R2 1001
RCD 00081220 R2 0110
RCD 00081220 R1 0110
Questo messaggio riassume i seguenti eventi: I2CRR indica nuovamente il rilevamento di un
messaggio sul bus I2C, inviato come general call (indirizzo di destinazione 00), il cui contenuto è
OC2. Il messaggio in realtà è più lungo, perché OC rappresenta l’indicatore della richiesta di un
controllo delle porte di I/O, 2 è l’indentificatore della porta su cui effettuare il controllo; seguono il
valore della porta letto dal master e il punto del programma in cui effettuare il controllo che,
essendo trasferiti in binario, non vengono visualizzati dal terminale.
Immediatamente, come si evince dal timestamp, sia R1 che R2 mandano il responso del controllo
sul bus resolver, che in entrambi i casi è positivo: 1001 indica infatti una conferma del valore
inviato dal master. Successivamente, R1 ed R2 tornano nello stato di idle.
Si deduce inoltre che il master è il microcontrollore 3, dato che è quello che non ha risposto alla
richiesta di controllo.
Inserendo in maniera artificiale un errore nel calcolo del valore delle porte del master, si crea una
situazione in cui gli slave votano contro il master. Il log seguente mostra ciò che accade in questa
situazione:
177
I2CRR 00003143 00 OC2 0030
RCD 00003144 R1 1010 R3 1010
HR 00003144 2
SAM 00003144 1 0 1
SAM 00003155 1 1 1
RCD 00003155 R1 0110 R3 0110
RCD 00003164 R3 0010
RCD 00003168 R3 0110
RCD 00003169 R2 0000
RCD 00003202 R2 0100
RCD 00003225 R2 0011
RCD 00003225 R2 0011
RCD 00003248 R2 0110
Il resolver rileva una richiesta di verifica dello stato delle uscite, identificata dalla sigla OC2, a
seguito della quale riceve le risposte negative da parte di R1 ed R3:
RCD 00003144 R1 1010 R3 1010
Poiché entrambi gli slave hanno votato contro al master, il resolver decide di escludere il master
della sue funzioni e riportarlo al livello di slave effettuando un hard reset:
HR 00003144 2
dove “2” indica l’indice del microcontrollore a cui viene applicato.
La parte successiva del log segnala la variazione di stato delle alimentazioni:
SAM 00003144 1 0 1
SAM 00003155 1 1 1
in cui si vede come l’alimentazione del secondo microcontrollore venga disattivata per un certo
tempo prima di essere riattivata.
178
Il resto del log è dedicato alle linee del bus resolver: i microcontrollori 1 e 3 tornano in idle dopo la
votazione, il 3 assume le funzioni di master, quindi il 2 si riavvia e rientra nel sistema con le
funzioni di slave.
Questi test effettuati sulle capacità di base del sistema fault tolerant mostrano la capacità della
scheda di far fronte a guasti in uno o più dei suoi componenti. Per questo prototipo il conflict
resolver è stato realizzato tramite un microcontrollore come gli altri, ma in applicazioni spaziali
dovrà essere implementato tramite sistemi più resistenti alle radiazioni, essendo l’unico elemento
singolo del sistema. Il fatto, però, che non debba occuparsi delle operazioni svolte dai
microcontrollori ma solo eseguire un compito di supervisione, rende possibile la sua
implementazione anche attraverso logiche programmabili e quindi non richiede l’uso di dispositivi
estremamente complessi o costosi.
L’occupazione delle risorse fisiche dei microcontrollori dovuta alle funzioni fault-tolerant è limitata
al 4% della memoria di programma e meno dell’1% della memoria RAM. Nei prototipi realizzati,
l’occupazione di risorse propria delle funzioni di gestione del sistema di controllo d’assetto
corrispondono all’11% della memoria di programma e al 15% della memoria RAM, rendendo
quindi i due sistemi perfettamente compatibili l’uno con l’altro e integrabili semplicemente unendo
il software.
179
Capitolo XI: Versioni avanzate
Il dispositivo realizzato e descritto nei capitoli precedenti è un sistema di controllo completo e
funzionante. L’esperienza acquisita sia in fase di progettazione che in fase di test ha permesso di
avanzare alcune ipotesi su versioni avanzate del sistema, in cui vengono rivisti alcuni aspetti
dell’implementazione, previste nuove funzionalità e integrati nuovi dispositivi.
In questo capitolo saranno analizzate alcune possibili varianti, spiegando le loro caratteristiche
principali e i vantaggi che possono presentare.
XI.1: Struttura meccanica
La struttura meccanica realizzata svolge la sua funzione e, nelle simulazioni, ha mostrato un ottimo
comportamento. È possibile, tuttavia, una semplice modifica nel supporto del motore, il quale, nella
versione attuale, si trova a sopportare completamente qualunque sollecitazione venga applicata sulla
ruota di momento.
L’idea quindi è di modificare la ruota affinché presenti un perno sulla faccia opposta al motore e
creare una struttura da fissare al di sopra della faccia del sistema di controllo d’assetto all’interno
della quale possa ruotare detto perno.
La figura XI.1 mostra una possibile implementazione di questo sistema:
Figura XI.1: sostegno ausiliare per la ruota di momento
Chiaramente questa soluzione comporta un leggero aumento delle dimensioni complessive, stimato
in 2.5mm per ogni faccia.
180
Il vantaggio di questo supporto dovrebbe risentirsi anche nella massima velocità di rotazione
raggiungibile dal motore, dato che le vibrazioni prodotte dalle tolleranze di lavorazione della ruota
andrebbero a scaricarsi sul cuscinetto inserito nel supporto invece che solo su quello presente nel
motore.
XI.2: Nuova versione del motore
Nel corso del 2011 il produttore dei motori scelti all’inizio del progetto ha reso disponibile una
nuova versione degli stessi, dotati di sensori ad effetto Hall, come mostrato in figura XI.2.
Come spiegato nel capitolo dedicato al firmware di bordo, l’assenza di una lettura della velocità del
motore ha richiesto una serie di attenzioni nell’implementazione del controllo della velocità che
risultano inutili nel momento in cui la lettura della stessa diventi disponibile.
Figura XI.2: caratteristiche del nuovo modello dei motori, con evidenziata la presenza dei sensori ad
effetto Hall
Attraverso un comparatore che rilevi l’uscita dei tre sensori ad effetto Hall integrati nel motore,
come ad esempio il MAX9034, è infatti possibile per il microcontrollore calcolare l’effettiva
velocità di rotazione del motore. Tramite questa lettura il calcolo della rampa di accelerazione può
essere effettuato sui valori reali e non su una stima prudente, garantendo l’assenza di perdita di
sincronismo, un’accelerazione più rapida e il raggiungimento di velocità più elevate, potendo
protrarre l’accelerazione per un tempo più lungo senza timore di richiedere coppie troppo elevate.
181
XI.3: Elettronica avanzata
Il circuito di lettura dei magnetometri è stato realizzato seguendo i suggerimenti descritti nel
relativo datasheet e comprende uno stadio di amplificazione differenziale realizzato tramite un solo
amplificatore operazionale, con un offset aggiunto per centrare il rango di lettura e permettere il
rilevamento di campi positivi e negativi.
Questa soluzione, seppur semplice e funzionale, ha mostrato alcune limitazioni nel guadagno e
nell’intervallo di valori d’uscita raggiungibili.
Dall’esperienza accumulata su questo e su altri progetti, si è pensato ad un nuovo schema per
implementare questa parte di circuito, mostrata in figura XI.3. Questa soluzione, oltre a garantire
sulla carta migliori prestazioni, richiede anche un numero di componenti –e quindi una quantità di
superficie- minore per essere implementata.
Figura XI.3: circuito alternativo per la lettura dei magnetometri
Il circuito mostrato si riferisce ad un solo canale, Z in questo caso, ed è ripetuto senza alcun tipo di
modifica anche per gli altri due assi. La lettura viene effettuata con un amplificatore differenziale
nella configurazione “per strumentazione”, realizzato quindi tramite tre operazionali, due di entrata
182
ed uno di uscita, contenuti all’interno dell’integrato INA155. Il guadagno è fissato attraverso una
unica resistenza e può raggiungere valori molto elevati a seconda dell’integrato utilizzato, senza
doversi preoccupare di regolare la componente continua di offset per mantenere l’uscita centrata.
Una tensione di riferimento permette anche in questo caso la lettura di campi magnetici positivi e
negativi con una alimentazione singola.
Se si vuole mantenere la compatibilità con sistemi di tipo Cubesat, prima di pensare di aggiungere
nuove periferiche è necessario ridurre lo spazio dell’elettronica già presente per non aumentare
eccessivamente le dimensioni.
Una parte di circuito che presenta una occupazione di area relativamente elevata e che può essere
soggetta a modifiche è quella dedicata al controllo dei magnetotorquer. In particolare, si può
pensare di eliminare la parte dedicata al cambio di polarità della corrente ed implementare la legge
di controllo con sole correnti positive: quando la variazione di campo magnetico avrebbe
comportato una corrente negativa, semplicemente gli attuatori rimarranno spenti.
Sono state effettuate alcune simulazioni preliminari con questo scenario che hanno mostrato risultati
incoraggianti.
I parametri del controllo, in particolare il guadagno, mostrano avere una influenza molto forte sul
risultato della simulazione. La figura XI.4 mostra un risultato delle simulazioni effettuate riducendo
il guadagno:
Figura XI.4: risultati della simulazione del controllo magnetico nel caso di non inversione della
polarità della corrente, con guadagno ridotto rispetto al caso precedente; a sinistra le correnti sugli
attuatori e a destra le velocità angolari
183
In questo caso il comportamento è sufficientemente regolare e il tempo di smorzamento accettabile.
È da osservare come l’andamento delle velocità angolari non sia più monotono verso lo zero ma,
mancando la parte “negativa” del controllo, esistano una serie di oscillazioni smorzate fino ad
arrivare a zero.
Queste simulazioni, pur senza poter dare una valutazione quantitativa delle performance di questa
configurazione, mostrano la possibilità di implementare un controllo alternativo eliminando la parte
di circuito necessaria per l’inversione di polarità.
Lo spazio ricavato da queste modifiche può servire per l’installazione di nuove periferiche. Tra le
varie possibilità, quella che può risultare più interessante è un GPS25.
Esistono moduli miniaturizzati, pensati per applicazioni terresti come quello mostrato in figura
XI.5, che tramite un collegamento seriale possono comunicare al microcontrollore le informazioni
sui satelliti GPS in vista tramite il protocollo NMEA. Le versioni pensate per lo spazio, come il
modulo Phoenix sviluppato dal DLR, sono tuttavia di dimensioni ancora troppo grandi per essere
integrati all’interno del sistema di controllo d’assetto.
Figura XI.5: Modulo GPS miniaturizzato Phoenix prodotto dal DLR
25
GPS FOR MICROSATELLITES – STATUS AND PERSPECTIVES, Oliver Montenbruck, Markus Markgraf,
Miquel Garcia-Fernandez, Achim Helm, DLR, German Space Operations Center, IAA-B6-0501; 6th IAA Symposium
on Small Satellites for Earth Observation, April 23-26, Berlin (2007)
184
In ambito terrestre, esistono già moduli molto più miniaturizzati e facilmente integrabili nello
spazio disponibile, come quello mostrato in figura XI.6, tuttavia sono soggetti alle limitazioni del
GPS commerciale in termini di altezza e velocità massima rilevabile. Nulla vieta di pensare ad una
versione custom appositamente programmata per questo tipo di applicazioni.
Figura XI.6: Esempio di modulo GPS miniaturizzato integrato di tipo commerciale
XI.4: Software avanzato
L’introduzione di nuove periferiche hardware apre la possibilità anche di nuovi sviluppi nel
software di bordo. Esiste tuttavia una applicazione che non richiede grandi cambiamenti dato che il
sistema è già completamente predisposto per implementarla: il controllo d’assetto indipendente
dagli input da terra.
Il sistema in parte implementa già una parte del controllo automatica, ovvero la legge di controllo –
Bdot. È però possibile, tramite modifiche esclusivamente software, automatizzare anche la fase di
controllo d’assetto in orbita tramite le ruote di momento: attraverso il bus di comunicazione seriale,
il sistema digitale può ricevere le informazioni delle correnti erogate dai pannelli solari come se
fosse dotato di un sensore di sole. Sempre attraverso la porta seriale, nel caso in cui non sia
185
integrato il GPS, può ricevere i dati relativi all’orbita del satellite e propagarla per determinare la
sua posizione.
Unendo tutte queste informazioni alle letture del campo magnetico, il sistema di controllo è capace
di determinare l’assetto del satellite e, di conseguenza, mantenerlo puntato verso un obiettivo
specifico, come può essere la terra.
186
Capitolo XII: Conclusioni
Lo scopo di questo progetto di dottorato è stato quello di realizzare un sistema di controllo d’assetto
per nanosatelliti, in particolare Cubesat, compatibile con le loro limitazioni di dimensioni e di
potenza, ma in grado di fornire lo stesso tipo di controllo offerto da sistemi di dimensioni più
grandi.
Le specifiche richiedevano la realizzazione di un sistema dotato di controllo magnetico, per
effettuare le manovre di stabilizzazione d’assetto delle prime fasi dell’entrata in orbita, di un
sistema di controllo basato sulle ruote di momento, per le manovre orbitali, e della sensoristica e
l’elettronica necessaria per operare in maniera autonoma, sia implementando una legge di controllo
per la fase di detumbling, sia ricevendo i comandi in tempo reale da terra.
Dopo una fase preliminare di analisi delle possibili soluzioni tecnologiche che potessero far fronte a
queste necessità, si è proceduto con una serie di campagne di simulazione numeriche atte a
determinare la validità delle scelte fatte, le loro capacità operative e determinare i requisiti di
progetto della parte elettronica.
Il lavoro è proseguito con la stesura dei circuiti e con la realizzazione di un prototipo in ABS della
struttura, utile per verificare la migliore disposizione dei componenti all’interno del volume
disponibile. I diversi prototipi realizzati, fino ad arrivare a quello definitivo, sono serviti per affinare
gli schemi elettrici, realizzare la scrittura del firmware e testare l’interfaccia utente.
Nella sua versione definitiva, il sistema include tre attuatori magnetici e tre ruote di momento, un
magnetometro su tre assi, tutti i circuiti di controllo, di supervisione, di alimentazione e di
interfaccia con il sistema ospite. Il firmware implementato è in grado di gestire l’intero sistema,
acquisendo i dati dai sensori e rendendoli disponibili nella telemetria, ricevendo i comandi e le
impostazioni dall’esterno ed inviando le relative risposte, generando i segnali di controllo per i
magnetotorquer e gestendo le rampe di accelerazione e decelerazione dei motori. È stata realizzata
anche una interfaccia Labview per un rapido accesso a tutte le funzionalità del sistema di controllo
d’assetto da parte dell’utente.
Nell’ottica della realizzazione di un sistema spaziale con elettronica terrestre, inoltre, è stato
approfondito l’aspetto della resistenza all’ambiente spaziale da parte della componentistica
commerciale. Il risultato di questi studi è stata la realizzazione di un sistema dimostrativo faulttolerant, basato su un’architettura dinamica di master e slave, capace di sostituire la scheda di
controllo digitale del dispositivo realizzato. Come dimostrato dai test effettuati, questo sistema è in
187
grado di sopperire al guasto di uno o più dispositivi, riconoscendo e cercando di risolvere i problemi
derivati dall’esposizione alle radiazioni dei semiconduttori.
Al termine del progetto, sono state poi analizzate alcune possibilità per il progetto di versioni
avanzate del sistema di controllo d’assetto, che vanno da una nuova versione della struttura
meccanica in grado di meglio sopportare le sollecitazioni, all’inclusione di nuovi dispositivi come
GPS per la determinazione della posizione del veicolo.
188
189
Appendice A: Missioni BEXUS REXUS
Nel
corso
delle
attività
di
dottorato
dedicate
principalmente allo svolgimento del progetto scelto, si è
partecipato alle missioni BEXUS e REXUS, promosse
dall’Agenzia Spaziale Europea nell’ambito dei suoi
programmi formativi indirizzati agli studenti universitari.
Queste missioni prevedono il progetto, la realizzazione e
il lancio di esperimenti universitari, realizzati interamente
da studenti, su palloni-sonda stratosferici e su missili balistici.
La partecipazione a questi progetti ha avuto da una parte lo scopo di testare alcune soluzioni
circuitali ed informatiche che sono poi state sviluppate ed impiegate durante la realizzazione del
sistema di controllo d’assetto, ma soprattutto di prendere dimestichezza e affrontare i severi
standard qualitativi richiesti dall’Agenzia Spaziale Europea, apprenderne il sistema organizzativo e
toccare con mano ciò che viene richiesto durante lo sviluppo di una missione.
Nei paragrafi seguenti verranno descritti brevemente gli esperimenti realizzati.
A.1: BEXUS – Esperimento COMPASS
Il programma BEXUS prevede l’invio di esperimenti nell’alta atmosfera tramite palloni-sonda
stratosferici. L’università di Bologna ha partecipato al programma attraverso il team COMPASS26,
con l’omonimo esperimento con lo scopo principale di effettuare misure del campo magnetico
terrestre per il loro confronto a livello locale con il modello IGRF. Obiettivi secondari
dell’esperimento erano la verifica della funzionalità di un sensore di sole basato su celle solari, la
gestione di telecamere come sensori di orizzonte e di un magnetometro, che rappresentava il
payload più significativo per quel che riguarda il progetto del sistema di controllo d’assetto per
microsatelliti.
Per la gestione dei dati e l’interfaccia con il bus di comunicazione di bordo si è scelto l’uso di un
computer industriale, progettato per ambienti ostili e con una buona resistenza alle sollecitazioni
meccaniche.
26
Membri del COMPASS Team: Riccardo Ravaglia, team leader; Serena Donati, responsabile della meccanica;
Tommaso Cardona, responsabile del software; Gian Paolo Candini, responsabile dell’elettronica e del firmware.
190
La parte di progetto elettronico ha riguardato invece la scheda incaricata di gestire l’alimentazione, i
riscaldatori, il magnetometro, la IMU, la telemetria e una unità di backup dei dati.
La scheda è basata su un PIC della famiglia 18F. Dal punto di vista prettamente hardware, il
circuito è stato predisposto per l’acquisizione di tutte le grandezze relative al sistema elettrico,
quindi tensioni in entrata e nelle varie uscite e correnti su tutti i vari rami di alimentazione, le
temperature di funzionamento e gestione automatica dei riscaldatori, l’acquisizione del tempo della
missione e la generazione di tutte le alimentazioni necessarie per i diversi strumenti ad essa
collegati.
Figura A.1: Scheda di controllo realizzata per l’esperimento COMPASS
Per quel che riguarda invece il firmware, il compito principale del programma era di acquisire tutti i
valori necessari per la telemetria ed interfacciarsi con il magnetometro. La telemetria doveva poi
essere mandata, su richiesta, al computer principale perché fosse rimandata a terra via radio. Uno
dei requisiti imposti dall’Agenzia Spaziale Europea in fase di progetto, tuttavia, era anche la
resistenza dell’esperimento ad una eventuale caduta in acqua, eventualità non così improbabile a
causa della presenza di numerosi laghi nel territorio al di sopra del quale si svolgeva l’esperimento.
Per questo motivo, ad intervalli regolari la telemetria veniva salvata su una serie di EEProm inserite
in un contenitore appositamente progettato per essere a tenuta stagna. Su questa memoria, venivano
inoltre salvati un certo numero di campioni provenienti dalle letture effettuate dal magnetometro di
bordo, anche queste mandate su richiesta al computer centrale.
191
Figura A.2: L’esperimento COMPASS installato sulla gondola di BEXUS
L’esperimento è stato sottoposto ad una serie di test, tra cui una prova nel vuoto, ed è stato infine
assemblato presso la base di lancio di Kiruna, in Svezia. Il lancio è stato effettuato con successo
l’11 ottobre 2009 e l’esperimento ha funzionato come richiesto.
80
70
60
50
T Board
40
T Alim
30
20
10
0
1
13
25 37 49
61 73 85 97 109 121 133 145 157 169 181 193 205 217 229 241 253 265 277 289 301 313 325 337 349 361 373 385 397 409
Figura A.3: Grafico della telemetria delle temperature registrate dalla scheda di controllo
dell’esperimento COMPASS
192
Il grafico in figura A.3 mostra un esempio della telemetria recuperata dalla memoria interna di
backup della scheda, riportando i valori di temperatura registrati sulla scheda e all’interno del
contenitore dell’esperimento durante il volo.
Figura A.4: Lancio dell’esperimento COMPASS
A.2: REXUS – Esperimento BUGS
Se nell’esperimento lanciato su BEXUS è stato possibile fare una prima esperienza con gli standard
organizzativi dell’Agenzia Spaziale Europea, sicuramente nella missione REXUS ci si è dovuti
confrontare con gli standard qualitativi richiesti da un esperimento imbarcato su un razzo. Il BUGS
Team27 dell’università di Bologna ha voluto studiare, tramite l’omonimo esperimento, il
dispiegamento di due boom progettati all’interno dell’università destinati alla stabilizzazione per
gradiente gravitazionale di microsatelliti.
27
Membri del BUGS Team: Maria Libera Battagliere, team leader; Jacopo Piattoni, responsabile della meccanica;
Emanuele Paolini, responsabile acquisizione dati; Gian Paolo Candini, responsabile dell’elettronica e del firmware.
193
Nonostante la durata dell’esperimento fosse breve, nell’ordine di pochi minuti, se confrontata con la
precedente missione, l’elettronica si è rivelata molto più critica. In questo caso, infatti, alla scheda
progettata per l’occasione non era stato delegato solo un compito di acquisizione dati, ma anche la
gestione di tutta la tempistica dell’esperimento.
Basandosi sui requisiti descritti nell’IRD della missione, è stato quindi progettato un circuito in
grado in primo luogo di interfacciarsi con il bus di comunicazione e di alimentazione del missile.
Questa interfaccia richiede, per motivi di sicurezza, un completo isolamento tra l’esperimento e il
modulo di servizio del missile: tramite foto-accoppiatori i segnali di sincronizzazione della missione
(Lift-Off, Start-Of-Experiment, …) vengono acquisiti ed inviati al microcontrollore di bordo.
Il cuore della scheda è composto, infatti, da un dsPIC della famiglia 30F di Microchip: un
dispositivo a 16bit, capace di fornire tutte le periferiche, la memoria e la potenza di calcolo
necessarie per lo svolgimento della missione. È da notare che anche il microcontrollore utilizzato
nel progetto del sistema di controllo d’assetto è un dsPIC, quindi con la stessa architettura e le
stesse linee guida per la programmazione.
Figura A.5: Esperimento BUGS installato all’interno del modulo di REXUS. Sul fondo è visibile la
scheda di controllo realizzata.
I dispositivi da attuare durante l’esecuzione dell’esperimento erano di tipo meccanico, quindi è stato
necessario progettare un thermal cutter per permettere l’apertura e il successivo rilascio dei boom.
Delle resistenze di potenza, quindi, venivano scaldate fino a tagliare uno speciale filo che, rilasciato,
dava il via ad ogni distinta fase dell’esperimento (apertura, rilascio, etc). Nella scheda elettronica
194
sono stati quindi inclusi una serie di interruttori a stato solido in grado di sostenere la corrente
necessaria all’apertura dei thermal cutter, oltre ad abilitare le periferiche di acquisizione.
Completano la scheda i circuiti per la generazione di tutte le alimentazioni richieste
dall’esperimento.
Dal punto di vista del firmware, il programma prevede un sistema di funzionamento basato su una
macchina a stati in grado di riconoscere la fase dell’esperimento in cui si trova e di ripristinare lo
svolgimento dell’esperimento stesso in caso di un reset o di una perdita di potenza.
La timeline dell’esperimento è stata divisa quindi in diverse fasi, cominciando dall’attesa del
segnale di lancio fino al rilascio dell’ultimo boom. Il passaggio da una fase all’altra avveniva o in
corrispondenza di un evento esterno associato ad un interrupt, come per esempio cambiamento di
stato su una delle linee di interfaccia con il modulo di servizio, o allo scadere di timer hardware
interni, come lo spegnimento di un thermal cutter dopo la sua accensione.
Una EEProm interna registrava costantemente lo stato in cui si trovava il programma, permettendo
così di riprendere l’esecuzione dove era stata interrotta anche qualora si fosse persa l’alimentazione.
La missione è stata lanciata con successo da Kiruna il 2 marzo 2010, raggiungendo tutti gli obiettivi
specificati.
Figura A.6: Lancio di REXUS con a bordo l’esperimento BUGS
195
A.3: REXUS – Esperimento REDEMPTION
Per la nuova campagna di REXUS del 2012 è stato selezionato l’esperimento REDEMPTION,
dell’omonimo team28 dell’Università di Bologna, con lo scopo di testare il comportamento in
assenza di gravità e nel vuoto di schiume bi-componente da utilizzare per la rimozione di detriti
spaziali dall’orbita terrestre.
Il lancio di questo esperimento è previsto per Marzo 2012. Per alcuni aspetti l’elettronica progettata
è simile a quella del precedente esperimento BUGS, tuttavia la maggior complessità dei sistemi
sotto test, la differenza di dispositivi da attivare e alcune nuove funzionalità implementate, tra cui
l’invio di telemetria a terra tramite il link radio del missile, hanno richiesto diversi cambiamenti.
Figura A.7: Progetto meccanico dell’esperimento REDEMPTION
Le limitazioni fisiche sul numero di connessioni disponibili per il microcontrollore hanno portato
alla necessità di accorpare diverse periferiche, portando però ad una richiesta istantanea di corrente
superiore a quanto permesso dal modulo di servizio: per ovviare a questo inconveniente, è stata
prevista una batteria ausiliaria da utilizzare per l’attivazione dei dispositivi più onerosi, quali i
thermal cutter. Su richiesta dell’Agenzia Spaziale Europa, è stata inserita una serie di protezioni
aggiuntive per evitare qualunque interferenza tra il sistema elettrico collegato alla batteria interna
dell’esperimento e il sistema di alimentazione del modulo di servizio.
28
Membri del team: Stefania Toschi, team leader; Marcello Valdatta, gestione esperimento e materiali; Antonio
Spadanuda, progetto meccanico; Jacopo Piattoni, responsabile della meccanica; Federico Romei, sviluppo
dell’elettronica; Gian Paolo Candini, responsabile dell’elettronica e del firmware.
196
Date le caratteristiche chimiche delle sostanze imbarcate nel modulo, è stato poi necessario
implementare un sistema di lettura delle temperature dei contenitori in cui verrà immagazzinata e un
sistema di riscaldatori da attivarsi quando necessario.
Lo stato dell’esperimento e di tutti i sottosistemi verrà monitorato durante tutto lo svolgimento
dell’esperimento, mandando una serie di pacchetti di telemetria a terra: per questo, dal lato
hardware sono stati previsti una serie di sensori per acquisire le grandezze di interesse, mentre dal
punto di vista software è stata prevista una serie di routines in background per la loro acquisizione e
trattamento, strutturata in maniera tale da non interferire con lo svolgimento dell’esperimento
stesso.
Alla data attuale, l’elettronica è stata assemblata e testata con successo; il software di bordo è stato
realizzato in buona parte ed è stata creata una interfaccia su PC per poter controllare l’esperimento
ed effettuare i vari test tramite la connessione di debug presente sulla scheda.
Figura A.8: Scheda di controllo realizzata per l’esperimento REDEMPTION
197
Figura A.9: Interfaccia di controllo realizzata per l’esperimento REDEMPTION
198
Appendice B: Strumentazione di appoggio al progetto
Per poter svolgere al meglio i test sul funzionamento del sistema di controllo d’assetto ideato, si è
proceduto con la realizzazione di un sistema di prova adeguato.
Per testare le capacità delle ruote di momento, non sono necessari particolari strumenti, dato che gli
effetti sono chiaramente visibili ad occhio nudo. Un discorso diverso è da fare invece per quel che
riguarda il sistema di controllo basato sugli attuatori magnetici, che richiedono la simulazione
dell’ambiente magnetico in cui si troverà il satellite lungo il suo percorso.
Già in passato era stato progettato e realizzato un piccolo simulatore di campi magnetici29, che si
era mostrato all’altezza delle aspettative ma presentava diverse limitazioni, principalmente nel
volume utile per l’inserimento dello strumento sotto test.
La necessità di generare campi magnetici di maggior potenza e in uno spazio notevolmente più
ampio ha portato ad una profonda revisione del progetto precedente, arrivando alla realizzazione di
un nuovo dispositivo con caratteristiche ideali per il test del sistema sviluppato.
In questa appendice è brevemente descritto il progetto, le caratteristiche e la realizzazione del nuovo
simulatore di campi magnetici.
B.1: Accenni teorici e requisiti di progetto
La maniera più efficiente per generare un campo magnetico costante all’interno di un volume è
utilizzare delle bobine montate nella configurazione cosiddetta di Helmoltz. Con questo tipo di
costruzione, due bobine uguali, percorse dalla stessa corrente, di lato L devono essere poste ad una
distanza pari a 0.5445L e permettono di generare un campo magnetico uniforme in un volume
cubico di lato pari a circa 2/5 del lato delle bobine.
La ragione per cui si è scelto di utilizzare una configurazione con tre coppie di bobine di Helmoltz
disposte perpendicolarmente sui tre assi è la necessità di azzerare il campo magnetico terrestre,
generalmente presente su tutte e tre le componenti ortogonali, all’interno del volume di test. Sempre
per questo motivo, il campo magnetico minimo generabile dal simulatore deve essere pari al doppio
del campo magnetico terrestre, in modo da poterlo invertire di polarità.
29
Fabrizio Piergentili, Gian Paolo Candini, Marco Zannoni: Design, Manufacturing, and Test of a Real-Time, ThreeAxis Magnetic Field Simulator, IEEE TRANSACTIONS ON AEROSPACE AND ELECTRONIC SYSTEMS VOL.
47, NO. 2 APRIL 2011
199
Di conseguenza, il primo parametro del progetto è la necessità di generare un campo pari ad almeno
0.9 Gauss.
Al centro della zona di test, il campo magnetico ha un modulo direttamente proporzionale al
numero di spire e alla corrente e inversamente proporzionale alla dimensione delle spire stesse. Per
ottenere un volume di test utile di un metro cubo, si è fissata quindi la dimensione delle bobine a 2,5
metri: effettuando i calcoli, ciò comporta una corrente minima di 2A che percorra ogni coppia di
bobine, ognuna composta da 80 avvolgimenti.
Dal perimetro di ogni avvolgimento e dal tipo di cavo impiegato, si ricava una resistenza di circa
6,8Ω per ogni bobina, per un totale di 13,6Ω per coppia. La tensione minima di alimentazione dovrà
quindi essere maggiore di 27,2V, più la caduta ai capi del circuito di regolazione della corrente.
Aggiungendo a tutti questi valori minimi i dovuti margini di sicurezza, anche per permettere in
futuro una sufficiente flessibilità allo strumento, si è arrivati a definire queste caratteristiche:
-
Alimentatore +40V 10A lineare per le bobine con soft-start
-
Alimentatore +5V 2A commutato per la sezione digitale
-
Alimentatore +5V lineare e riferimento +3V stabilizzato per parte analogica e di
acquisizione
-
Controllo delle bobine tramite DAC a quattro uscite
-
Lettura con ADC della corrente erogata su ogni bobina e indicazione visuale con 4 led
-
Controllo della polarità delle bobine con ponte a mosfet
-
Controllo digitale tramite dsPIC30F4013
-
Una porta seriale RS232 dedicata alla comunicazione con PC
-
Due porte seriali RS232 multiplexate per il collegamento dei magnetometri
-
Real time clock
-
EEprom 1Mbit per salvataggio dati, impostazioni, etc
B.2: Descrizione del circuito
Il circuito che compone lo strumento si divide fondamentalmente in tre sezioni: una prima parte di
alimentazione, una parte di controllo e infine il circuito di pilotaggio delle bobine.
200
La sezione di alimentazione riceve in ingresso la tensione di uscita del trasformatore,
opportunamente raddrizzata, da cui ricava tutte le tensioni necessarie.
All’accensione dell’interruttore principale, il primo circuito che viene alimentato è un alimentatore
switching, riportato in figura B.1, basato sul controller U3 che fornisce l’alimentazione a tutti i
sistemi digitali del simulatore.
Figura B.1: Circuito dell’alimentazione switching
Uno stabilizzatore lineare di tensione (U4) fornisce, inoltre, una tensione di riferimento per la parte
di acquisizione analogico-digitale. Una volta che la tensione di uscita dell’alimentatore switching
abbia raggiunto i 5V, dopo un tempo stabilito dal circuito formato da R13 e C5 si attiva, tramite il
transistor Q6, il relè che fornisce l’alimentazione piena al circuito di potenza. Questo ritardo è stato
introdotto per dare tempo al microcontrollore di inizializzarsi, portando in una condizione nota i
circuiti di controllo della corrente ed evitando sbalzi di tensione sui carichi che, essendo
fondamentalmente di tipo induttivo, possono generare picchi di tensione e corrente potenzialmente
dannosi per il circuito: fin quando il sistema non si è stabilizzato, una resistenza in serie
all’alimentazione limita la corrente e previene qualunque tipo di problema.
Nella sezione di potenza mostrata in figura B.2, lo stabilizzatore U2 fissa la tensione di uscita di
40V, mentre la corrente viene invece fornita attraverso i transistor di potenza Q1-4. Q5 compone il
circuito di limitazione della corrente di protezione: qualora dovessero passare più di 10A attraverso
questi transistor, entrerebbe in azione limitando automaticamente la corrente.
201
Figura B.2: Circuito dell’alimentazione di potenza
La sezione digitale del circuito è basata sul microcontrollore dsPIC30F4013. Tra i compiti
principali svolti da questo dispositivo si trova il controllo del DAC che fornisce le tensioni di
controllo ai circuiti di pilotaggio delle bobine.
Figura B.3: Convertitore Digitale Analogico
Questo convertitore digitale-analogico è dotato di quattro uscite, di cui solo tre vengono usate.
Attraverso una interfaccia SPI riceve la configurazione relativa alle varie uscite, generando una
tensione di uscita con una risoluzione di 12 bits. Attraverso degli amplificatore integrati all’interno
del dispositivo stesso, viene regolato il guadagno di tensione delle uscite. Per avere una buona
stabilità nel segnale di uscita è necessario disporre di una tensione di riferimento estremamente
stabile: per questo motivo uno stabilizzatore di precisione e a basso rumore fornisce i 2.5V di
riferimento per il convertitore.
202
Oltre a questo dispositivo, è stato inserito un orologio in tempo reale, sempre su bus SPI, utile per
permettere l’esecuzione di simulazioni automatiche con una pianificazione temporale dei valori del
campo magnetico da generare. Inoltre, una EEProm permette il salvataggio dei parametri della
simulazione.
Il microcontrollore dispone di solo due porte seriali: una è stata dedicata al collegamento con il PC,
per l’interfaccia utente, mentre la seconda, tramite un multiplexer, fornisce il collegamento per due
magnetometri che possono essere impiegati come strumenti di lettura del campo magnetico
generato o come strumenti sotto test.
Figura B.4: Generatore di corrente
Ogni bobina è dotata di un generatore di corrente come quello mostrato in figura B.4, dove è
riportato il circuito relativo ad una delle tre bobine.
Il segnale di controllo prodotto dal DAC controlla uno dei due operazionali contenuti nell’integrato
LT1490. Questa tensione, compresa tra 0 e 5V, viene trasformata tramite Q23 in una tensione
variabile tra 0 e 40V. Il secondo operazionale controlla direttamente il mosfet di potenza Q24, che
regola il passaggio della corrente.
La resistenza R72, oltre a servire da riferimento per il generatore di corrente, viene utilizzata anche
come sensore di corrente per il circuito di lettura, evitando così l’interposizione di un ulteriore
elemento in serie alla bobina che comporterebbe una perdita di tensione.
I capi di questa resistenza sono portati ad un amplificatore differenziale la cui uscita è letta dal
microcontrollore e viene utilizzata, tramite un comparatore a più livelli, per pilotare un indicatore a
LED posto sul pannello frontale che permette una lettura visuale della corrente.
203
Figura B.5: Circuito di inversione della polarità
Dato che la corrente deve poter scorrere in entrambi i versi, la soluzione più ovvia sarebbe stata
un’alimentazione duale. Tuttavia, questo avrebbe comportato una elevata complessità nel circuito di
controllo e una oggettiva difficoltà del trovare componenti che potessero sopportare una tensione
complessiva di 80V. Per questo motivo, approfittando anche dell’esperienza accumulata con la
precedente versione dello strumento, si è progettato un circuito capace di invertire il carico,
mostrato in figura B.5, permettendo così l’inversione del verso di scorrimento della corrente senza
dover aumentare la tensione.
B.3: Realizzazione
Il circuito è stato stampato e montato, per poi essere inserito all’interno di un mobile adatto.
Sono stati effettuati una serie di test a vuoto e sotto carico per mettere a punto le tarature necessarie
per il miglior funzionamento dello strumento.
Le bobine sono state realizzate presso l’Università La Sapienza di Roma.
204
Figura B.6: Lo strumento montato
Sul pannello frontale sono presenti vari indicatori: lo stato delle alimentazioni, il verso di ogni
bobina, un indicatore della corrente e vari indicatori dello stato delle porte seriali.
205
Figura B.7: Le bobine e lo strumento installato presso l’Università La Sapienza di Roma
B.4: Software
L’interfaccia utente dello strumento è stata realizzata in Labview.
È organizzata in cinque schermate differenti che permettono di accedere a tutte le funzionalità che
sono state previste per la macchina. Una parte della schermata dove sono posti gli indicatori di stato
e i pulsanti di stop è comune per tutte le differenti sezioni, mentre la parte centrale è differente a
seconda del tipo di funzione che si vuole utilizzare.
206
Figura B.8: Schermata di setup dell’interfaccia utente
Nel dettaglio, come mostrato in figura B.8, la parte tratteggiata in rosso delimita la sezione comune
ad ogni schermata. Il pulsante END chiude l’applicazione, mentre il pulsante STOP arresta
l’esecuzione di qualunque comando il corso, riportando istantaneamente la corrente di tutte tre le
bobine a zero. L’interruttore Reading, con il relativo indicatore, attiva le letture automatiche delle
correnti da parte dello strumento. L’indicatore Running AUTO mostra se è attualmente in corso una
simulazione automatica.
Gli indicatori posti in basso, infine, mostrano le letture della corrente dei vari canali, assieme alla
polarità della bobina.
Nella parte centrale della schermata si trovano invece le varie finestre attivabili a seconda delle
funzioni che si vogliano controllare. In figura B.8, ad esempio, è visibile la schermata per impostare
la comunicazione seriale con lo strumento.
207
Figura B.9: Schermata di debug dell’interfaccia utente
La schermata successiva è quella di debug, mostrata in figura B.9. In questo modo, è possibile
inviare comandi direttamente allo strumento ed osservarne la risposta.
La scheda seguente, mostrata in figura B.10, permette l’uso in manuale del simulatore. Tramite tre
manopole graduate in mA è possibile impostare la corrente di ogni canale. Un interruttore inoltre
regola il verso della corrente. Un indicatore riporta il valore in bit del DAC, ossia il parametro che
realmente viene inviato alla macchina.
Tramite l’apposita interfaccia, mostrata in figura B.11, è poi possibile importare un file di testo
contenente le informazioni per effettuare una simulazione automatica.
Il formato dei dati da inserire nel file di testo è del tipo:
Corrente
Corrente
Corrente
bobina 1
bobina 2
bobina 3
(mA)
(mA)
(mA)
Verso bobina Verso bobina Verso bobina
1
208
2
3
Durata passo
Figura B.10: Schermata per le impostazioni manuali dell’interfaccia utente
Figura B.11: Schermata per le simulazioni automatiche dell’interfaccia utente
209
La simulazione può essere messa in pausa in qualunque momento, mantenendo i valori impostati in
quell’istante, oppure fermata. Un indicatore mostra il tempo rimasto per ogni passo, mentre una
tabella mostra i passi rimanenti prima del termine della simulazione.
Un interruttore permette la selezione dell’unità di tempo della simulazione, tra secondi e
millisecondi.
L’ultima schermata, mostrata in figura B.12, permette di utilizzare alcuni preset per l’impostazione
della corrente, quali un’onda sinusoidale, triangolare o dente di sega, e configurarli con i relativi
parametri.
Figura B.12: Schermata per le impostazioni dei preset dell’interfaccia utente
210
B.5: Schemi completi
211
212
213
Appendice C: Pubblicazioni in cui si è trattato del sistema di controllo
d’assetto
Sono di seguito elencate le pubblicazioni interamente o parzialmente dedicate al sistema di
controllo d’assetto realizzato:
-
“Design, manufacturing and test of a self-contained and autonomous
nanospacecraft attitude control system”, Gian Paolo Candini, Fabrizio
Piergentili, Fabio Santoni, IEEE Transaction on Aerospace and Electronics
System, in review;
-
“Miniaturized attitude control system for nanosatellites”, Gian Paolo Candini,
Fabrizio Piergentili, Fabio Santoni, Acta Astronautica, in review;
-
“Plastic Cubesat for micropropulsion and active debris removal test”, Jacopo
Piattoni, Marco Balucani, Barbara Betti, Gian Paolo Candini, Rocco Crescenzi,
Francesco Nasuti, Marcello Onori, Fabrizio Piergentili, Fabio Santoni, 63rd
International Astronautical Congress 2012, 16th SYMPOSIUM ON SMALL
SATELLITE MISSIONS
-
“Miniaturized three-axis attitude control system for nanosatellites and cubesats”,
Gian Paolo Candini, Fabrizio Piergentili, Fabio Santoni, 63rd International
Astronautical Congress 2012, 16th SYMPOSIUM ON SMALL SATELLITE
MISSIONS
-
“Plastic Cubesat: an innovative and low-cost way to perform applied space
research and hands-on education”, Jacopo Piattoni, Gian Paolo Candini, Giulio
Pezzi, Fabio Santoni, Fabrizio Piergentili, in Acta Astronautica, in review
-
“Plastic Cubesat: an innovative and low-cost way to perform applied space
research and hands-on education”, J. Piattoni, G. P. Candini et al., 62nd
International Astronautical Congress, 3-7 Oct. 2011.
214
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement