Tes i Alessandro s Baragli A
-
Upload
marco-lisi -
Category
Documents
-
view
12 -
download
0
description
Transcript of Tes i Alessandro s Baragli A
-
UNIVERSITA` DEGLI STUDI DI ROMA
TOR VERGATA
FACOLTA` DI INGEGNERIA
CORSO DI LAUREA IN INGEGNERIA
DELLAUTOMAZIONE
A.A. 2009/2010
Tesi di Laurea
SISTEMA DI CONTROLLO SU MICROCONTROLLORE
PER MOTORI CC ED ENCODER MAGNETICI
RELATORE CANDIDATO
Prof. Daniele Carnevale Alessandro Sbaraglia
-
A Mamma, Papa` e Nelly,
a tutte le persone che da sempre ci sono state fino ad adesso,
e soprattutto...a me stesso!
-
Indice
Ringraziamenti 1
Introduzione 2
1 Apparato sperimentale 4
1.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Specifiche tecniche . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Piattaforma software e uso I/O . . . . . . . . . . . . . . . . . 7
1.2 Encoder magnetico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Costruzione e taratura . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Motore CC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1 Collegamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Identificazione del modello 17
2.1 Ricostruzione segnale e filtraggio . . . . . . . . . . . . . . . . . . . . 18
2.1.1 Funzione getAngolo( ) . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2 Funzione DoEncoder . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Set-up sperimentale e dati . . . . . . . . . . . . . . . . . . . . . . . . 21
INDICE I
-
INDICE
2.3 Calcolo della funzione di trasferimento del motore . . . . . . . . . . . 23
3 Analisi stabilita` sistema 30
3.1 Generalita` del controllore . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.1 Progetto dei controllori . . . . . . . . . . . . . . . . . . . . . . 31
3.1.2 Tecniche di discretizzazione del compensatore . . . . . . . . . 31
3.2 I Controllore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Controllore PID con approssimazione dellazione derivativa . . . . . . 35
3.3.1 Discretizzazione del PID approssimato . . . . . . . . . . . . . 36
3.3.2 Tuning dei parameri con il metodo Ziegler-Nichols . . . . . . . 37
3.3.3 Approssimazione dellazione derivativa . . . . . . . . . . . . . 39
3.4 Controllore PID ottimizzato . . . . . . . . . . . . . . . . . . . . . . . 41
3.5 Verifica stabilita` digitale . . . . . . . . . . . . . . . . . . . . . . . . . 44
4 Saturazione 49
4.1 Desaturazione dellazione integrale . . . . . . . . . . . . . . . . . . . 49
4.1.1 Il fenomeno del wind-up . . . . . . . . . . . . . . . . . . . . . 50
4.1.2 Uno schema di desaturazione per regolatori PID . . . . . . . . 51
5 Confronto risultati simulati e sperimentali 54
File Matlab - Identification.m 59
Elenco delle figure 72
Bibliografia 74
INDICE II
-
Ringraziamenti
I ringraziamenti sono per tutte le persone che mi sono state vicine durante la realiz-
zazione di questo lavoro di tesi, a partire in primis dagli amici/colleghi del laboratorio
pesante di automatica e tesisti, i quali mai hanno lesinato su un aiuto, un consiglio o
su una parola di conforto nei momenti di difficolta`. Ognuno di loro ha saputo inseg-
narmi qualcosa, dal punto di vista umano e professionale, a suggellare il periodo piu`
bello della mia carriera universitaria.
Un ringraziamento particolare, infine, a colui che piu` di tutti mi ha seguito in
questo lungo percorso, parlo di Daniele Carnevale, professore mirabile per competenza,
professionalita` e come persona, prima di tutto.
A tutti voi, GRAZIE!
Introduzione 1
-
Introduzione
E` ben noto, dato che rientra nellesperienza comune, che per ottenere un determinato
obiettivo, la causa agente debba essere ad esso commisurata. Sfugge invece, assai spes-
so, la necessita` che la causa agente, se si vuole raggiungere effettivamente lobiettivo,
debba tener conto anche degli effetti che essa stessa provoca sul sistema su cui agisce.
E proprio questa e` lidea alla base del concetto di controreazione o retroazione (in
inglese feedback): il segnale che agisce su un sistema, cos` che questo si comporti nel
modo desiderato, deve dipendere sia da un segnale di comando che stabilisce quanto
desiderato, sia dal comportamento effettivo del sistema. E questo puo` avvenire soltan-
to attraverso unazione allindietro, o retroazione, che riporti allingresso del sistema
linformazione relativa alla sua uscita.
Quando simpiega la controreazione, in altre parole, la grandezza che agisce effet-
tivamente sul sistema proviene dal confronto fra i valori che rappresentano luscita
del sistema e di quella di comando, che rappresenta il valore desiderato della risposta;
questo confronto spesso si riduce ad eseguire la differenza fra le due grandezze, che
costituisce il cosiddetto errore del sistema.
Qui va notato subito che la controreazione non sarebbe necessaria se tutto cio`
che riguarda quanto interessa fosse noto e calcolabile esattamente, cioe` se i sistemi si
comportassero secondo leggi matematiche perfettamente note, immutabili nel tempo e
non soggette a variazioni per altre cause. Ma nel mondo naturale questo non avviene
Introduzione 2
-
Introduzione
e di tutto linsieme delle inevitabili incertezze, inclusi i disturbi, la controreazione
consente di tener conto al fine di ottenere quanto si desidera.
Il controllo automatico di un dato sistema alla fine, si prefigge di modificare il
comportamento del sistema da controllare, attraverso la manipolazione delle grandezze
dingresso in relazione a quelle di uscita. Il controllo del sistema in esame viene
affidato al regolatore, che viene progettato dopo uno studio preliminare del sistema
da controllare, per individuarne il modello matematico esatto su cui andare in seguito
ad operare.
Il lavoro presentato in questa tesi e` la riproduzione di unesperienza improntata
su un problema di controllo automatico, nel quale la ricerca di un modello matem-
atico che descriva il piu` fedelmente possibile landamento del processo, limplemen-
tazione del sistema di controllo, lo studio della stabilita` del sistema a ciclo chiuso e
losservazione dei risultati sperimentali costituiscono le fasi piu` importanti.
Introduzione 3
-
Capitolo 1
Apparato sperimentale
In questo primo capitolo si analizzeranno gli strumenti e le tecnicheutilizzate per assemblare il sistema considerato; verranno introdottedunque delle specifiche sul microcontrollore Arduino, la coppia En-coder magnetico AS5045 e motore Micro Motors RH158, il sistemadi pilotaggio motore ponte H.
1.1 Arduino
Arduino e` una piattaforma di prototipazione elettronica open-source che si basa su
hardware e software flessibili e facili da usare. Arduino e` basato su una semplicissima
scheda di I/O e su un ambiente di sviluppo, che per la scrittura usa programmi in C
e C++ da far girare sulla scheda il cui microprocessore e` programmabile utilizzando
un ambiente di sviluppo basato su Processing (linguaggio simil-C).
Arduino e` in grado di comunicare con lambiente in cui si trova attraverso una
moltitudine di sensori analogici e digitali azionando contemporaneamente luci, mo-
tori e qualsiasi altro tipo di attuatore; puo` essere utilizzato per limplementazione di
progetti stand-alone ma puo` anche interagire con software gia` esistenti sul computer.
1.1.1 Specifiche tecniche
L Arduino Mega e` la versione utilizzata per la realizzazione del progetto.
4
-
Cap. 1 Apparato sperimentale 1.1 Arduino
Figura 1.1: La scheda Arduino Mega.
Questo dispositivo1, e` basato sul microcontrollore ATmega1280 capace di 54 pin
digitali ingresso/uscita (14 dei quali utilizzabili come uscita di un segnale PWM), 16
pin analogici in ingresso, 4 porte seriali, un oscillatore a cristalli a una frequenza di
16 MHz e una connessione Usb che fornisce lalimentazione al dispositivo e un rapido
collegamento al computer.
Di seguito si riporta un breve sommario delle caratteristiche tecniche dellArduino
Mega.
1In commercio ne esistono altri modelli, piu` o meno complessi, se ne citano alcuni: Nano,Duemilanove, Mini, Pro, etc. .
5
-
Cap. 1 Apparato sperimentale 1.1 Arduino
Parametro Valori riferimentoMicrocontrollore ATmega1280Alimentazione 5VTensione ingresso (raccomandata) 7-12VTensione ingresso (massima) 6-20VPin I/O Digitali 54 (di cui 14 in uscita PWM)Pin ingresso Analogici 16Corrente Continua per Pin I/O 40mACorrente Continua per Pin a 3.3V 50mAMemoria Flash 128 KB (di cui 4 usati dal bootloader)SRAM 8KBEEPROM 4KBFrequenza Clock 16 MHz
Figura 1.2: Schema microcontrollore ATmega1280
6
-
Cap. 1 Apparato sperimentale 1.2 Encoder magnetico
1.1.2 Piattaforma software e uso I/O
Il software di Arduino e` distribuito come strumento open source espandibile. Il lin-
guaggio di programmazione utilizza apposite librerie per la gestione dei segnali digitali
ed analogici ed e` unimplementazione di Wiring, una piattaforma di physical comput-
ing simile, che e` a sua volta basato su un altro ambiente multimediale di program-
mazione chiamato Processing,. Il linguaggio puo` crescere attraverso le librerie C++
e chiunque voglia capire i dettagli tecnici puo` passare direttamente da Arduino all
AVR-C, il linguaggio di programmazione su cui si basa.
Per permettere la stesura del codice sorgente, la scheda include un editor di testo
in grado di compilare e lanciare il programma eseguibile. I programmi di Arduino
sono scritti in C/C++, ma, per poter creare un file eseguibile, allutilizzatore non e`
chiesto altro se non definire due funzioni:
Setup(): una funzione invocata una sola volta allinizio di un programma chepuo` essere utilizzata per inizializzare le variabili, impostare la velocita` di scam-
bio dati della porta seriale e le modalita` di funzionamento dei pin nonche`
lattivazione di un gran numero di funzioni di libreria .
Loop(): e` la funzione principale e viene chiamata ripetutamente fino a che lascheda non viene spenta.
1.2 Encoder magnetico
Lencoder utilizzato per la realizzazione del progetto e` di tipo magnetico modello
AS5045 della casa produttrice Austria Microsystem. Questo strumento e` un encoder
magnetico rotativo per una accurata misura angolare di un giro completo di 360 gradi;
si tratta di un sistema che combina in un unico chip sensori di Hall, un Digital Signal
7
-
Cap. 1 Apparato sperimentale 1.2 Encoder magnetico
Processing (Dsp) e circuiti per la generazione di segnali analogici. Per la misura del-
l angolo e` necessario un semplice magnete bipolare (magnetizzato diametralmente)
rotante sopra il centro del chip. La misurazione dellangolo assoluto fornisce una in-
dicazione istantanea della posizione angolare con una risoluzione di 0.0879 dividendo
langolo giro in 4096 parti, il cui segnale e` ottenibile come un flusso binario con una
risoluzione a 12 bit o come un segnale modulato in larghezza PWM.
Figura 1.3: Configurazione dei pin.
Il DSP viene anche utilizzato per capire se il magnete si sta allotanando oppure
avvicinando alla superficie dellintegrato; questo avviene grazie allutilizzo dei due
piedini digitali nominati MagINCn e MagDECn
1.2.1 Costruzione e taratura
Il punto di partenza per la costruzione dellencoder e` stata la scelta del magnete da
montare sul motore. Il magnete utilizzato e` costituito da materiale N-35SH la cui
magnetizzazione e` orientata perpendicolarmente all asse passante per il centro del
magnete in verso uscente; le dimensioni del magnete raccomandate per il funziona-
mento dellencoder devono essere di 6mm di diametro e ai 2mm di altezza, in mododa consentire la creazione di un campo magnetico che va da un minimo di 45mT ad
8
-
Cap. 1 Apparato sperimentale 1.2 Encoder magnetico
un massimo di 75mT (valore di picco). Durante l esperienza e` stato verificato chelesposizione dell encoder ad un campo magnetico superiore a quello raccomandato
puo` creare danni irreversibili ai componenti del microchip e quindi causarne la rottura.
Caratteristica fondamentale ai fini del montaggio risulta essere il posizionamen-
to del magnete rispetto al microchip. La realizzazione di questo progetto risulta
condizionata da una elevata sensibilita` ai disallineamenti chip-magnete; lobiettivo
consiste nel posizionare le facce dei due parallelamente lun laltra e cercare di far
coincidere i loro centri, considerando che il massimo spostamento consentito dalla
zona centrale e` di 0.25mm e la distanza dal dispositivo a cui il magnete deve essere
posizionato e` compresa tra i 0.5mm e gli 1.5mm. Il circuito integrato, una volta incol-
lato su un apposito adattatore SMD che facilita il collegamento dei pin con lesterno
deve essere collocato nella migliore posizione possibile.
Per raggiungere questo risultato e` stato costruito un supporto metallico costitutito
da una basetta di supporto avvitata al motore sulla quale sono state fissate due aste
funzionanti da guida per il piazzamento della SMD (Figura 1.4.).
La tensione con cui si alimenta lencoder e` di 3.3V ; a questo fine il regolatore
di tensione deve essere bypassato cortocircuitando i piedini VDD3V3 con VDD5V
e mettendo il primo piedino a massa attraverso un condensatore di buffer con un
capacita` di 100nF .
1.2.2 PWM
Il segnale con cui viene analizzata la misura del dispositivo e` di tipo PWM.
Un segnale di tipo PWM, Pulse width modulation, viene generato da un tipo di
modulazione analogica in cui linformazione e` codificata sotto forma di durata nel
tempo di ciascun impulso del segnale ed e` costituito da un onda quadra di Duty cycle
9
-
Cap. 1 Apparato sperimentale 1.2 Encoder magnetico
Figura 1.4: Supporto al motore.
variabile; questultima grandezza, come si deduce dalla Figura 1.5., e` il rapporto tra
il tempo in cui londa assume valore alto e il periodo T (linverso della frequenza:
T=1/f); ne segue che un duty cycle del 50% corrisponde ad unonda quadra che
assume valore alto per il 50% del tempo, pari al 100% sempre alto, pari allo 0%
sempre basso.
La relazione seguente permette di stabilre il legame che ce` tra langolo considerato
e la rispettiva onda quadra, con ton e tof f i tempi di alto e basso del segnale.
Position =ton4097
ton + tof f 1 (1.2.1)
I valori caratteristici del segnale PWM considerato, cioe` quello proveniente dal-
lencoder, avranno le seguenti grandezze:
10
-
Cap. 1 Apparato sperimentale 1.3 Motore CC
Figura 1.5: PWM e Duty cycle di un segnale.
PWM Valori riferimentoFrequenza 244 HzLivello di quantizzazione minima 1 microsecondoLivello di quantizzazione massima 4096 microsecondo
1.3 Motore CC
Un motore CC alimentato con tensioni di statore e di rotore esercita una coppia sul-
lalbero del motore. Questa coppia agisce sulla struttura meccanica, caratterizzata
dallinerzia di rotore J e dal coefficiente di attrito viscoso F . Inoltre, per considerare
un ambito operativo generico, e` opportuno tener conto di una coppia di carico eserci-
tata sullalbero del motore. Se Tl denota tale coppia di carico, allora si ha la seguente
equazione del moto:
Tm Tl = J ddt
+ f (1.3.1)
In figura 1.6 viene rappresentato un diagramma a blocchi nonlineare che descrive
il funzionamento del motore. Nello schema, la variabile rappresenta la posizione
angolare del rotore. Il modello nonlineare corrisponde ad un sistema con due ingressi
11
-
Cap. 1 Apparato sperimentale 1.3 Motore CC
Figura 1.6: Diagramma a blocchi nonlineare di un motore CC
ed una uscita, avente un ingresso di disturbo corrispondente alla coppia di carico Tl
e quattro variabili di stato corrispondenti a
lenergia immagazzinata nellinduttanza Le
lenergia immagazzinata nellinduttanza La
lenergia cinetica del rotore (associata a J)
la posizione del rotore.
Il motore utlizzato e` un motore elettrico a corrente continua modello RHE158
prodotto dalla Micro Motors, di cui di seguito sono riportate le caratteristiche fonda-
mentali:
12
-
Cap. 1 Apparato sperimentale 1.4 Ponte H
Parametro Valori riferimentoTensione nominale 12-24VRapporto:1 94.37Coppia massima 60NcmVelocita` (senza carico) 66rpmVelocita` (con coppia max.) 45rpmCorrente (senza carico) 70-140mACorrente (con coppia max.) 340-680mA
La scelta di utilizzare un motore a corrente continua (CC o in inglese DC)
discende dal fatto che questo genere di dispositivo e` estremamente utilizzato e a basso
costo e se collegato ad unopportuna scheda di controllo (vedi sezione 3.1.) puo` essere
controllato con un segnale PWM, in grado di regolare la corrente che scorre allinterno
del motore, e quindi la velocita` e il verso di rotazione.
1.4 Ponte H
Il pilotaggio del motore e` stato effettuato tramite il sistema H-Bridge, un circuito che
permette di comandarne lo stato. Qui sotto viene riportato lo schema concettuale
Figura 1.7: Schema concettuale H-Bridge.
Questo circuito e` una quaterna di interruttori collegati in modo da pilotare un
carico sfruttando la PWM, con il carico posto al centro ad unire i due rami, formando
cos` unipotetica H. ll vantaggio principale e` che la potenza che si scambiano il carico
con il generatore puo` fluire in entrambi i sensi. Nello studio effettuato e` stato utilizzato
13
-
Cap. 1 Apparato sperimentale 1.4 Ponte H
un H-Bridge integrato, il pic della Texas Instruments L293D, progettato per fornire
una corrente bidirezionale fino a 600mA ad una tensione variabile tra i 4.5/36V.
Figura 1.8: Schema dell H-Bridge integrato L293D.
I motori vengono abilitati o disabilitati ponendo in ingresso ai piedini 1,2EN e
3,4EN un segnale di livello logico altoo basso rispettivamente. Lintensita` con cui
viene generata le corrente da far fluire nel carico viene regolata attraverso un segnale
PWM prodotto dal piedino 1A.
1.4.1 Collegamenti
Il riferimento inseguito dal sistema viene inserito dallutente sulla Serial Monitor di
Arduino che permette la comunicazione seriale tra dispositivo e pc.
Il valore letto da Arduino attraverso la funzione di libreria Serial.read viene con-
frontato ad ogni ciclo con il valore emesso dallencoder attraverso la funzione getAn-
14
-
Cap. 1 Apparato sperimentale 1.4 Ponte H
Figura 1.9: Il PonteH costruito.
golo (vedi paragafo 2.1.1.), che ricostruisce istantaneamnete il valore di posizione
relativa asse-motore corrente.
Lerrore dato dalla differenza tra il riferimento e la posizione attuale viene dato in
ingresso al sistema di controllo implementato direttamente sul codice di Arduino, che
rielabora questa variabile gestendo il controllo motore attraverso il PonteH.
Arduino attraverso le istruzioni DigitalWrite(Enable1, HIGH) e DigitalWrite(Enable2,
LOW) abilita il piedino EN1 del PonteH, disabilitando lEN2, in modo da costrin-
gere il motore a ruotare in una direzione prestabilita; infine con listruzione Analog-
Write(PWM1, n), invia al PonteH un comando che impone il flusso della corrente
che deve scorrere nel motore, regolandolo con un segnale PWM di modulo pari ad n.2
2Si ricorda che la scrittura analogica puo` inviare allattuatore un valore n compreso tra 0 e 255.
15
-
Cap. 1 Apparato sperimentale 1.4 Ponte H
Figura 1.10: Schema a blocchi dei collegamenti.
La sequenza appena elencata di istruzioni si ripete finche` lerrore non diventa nullo,
cioe` il motore ha raggiunto la posizione desiderata.
Nella figura 1.10 viene mostrato lo schema a blocchi dei collegamenti effettuati ai
fini della costruzione del sistema.
16
-
Capitolo 2
Identificazione del modello
In questo capitolo verra` trattata lidentificazione del modello, cioe`la fase in cui si calcola la funzione di trasferimento che descrivelandamento del sistema a ciclo chiuso.
Lidentificazione del sistema nasce dalla necessita` di stimare un modello matem-
atico che descriva le caratteristiche del sistema a partire da dati sperimentali. Ven-
gono scelte delle opportune sequenze di ingresso (gradini, rampe, ecc.) e misurate le
rispettive sequenze in uscita:
u(t) = u(1), u(2), u(3)....u(N) Ingressi al motorey(t) = y(1), y(2), y(3)....y(N) Uscite dallencoder
dove N rappresenta il numero di misure.
Gli ingressi in tensione al motore, saranno in tutto tre, di cui due segnali a gradino
costante (uno verra` usato solo per la validazione del modello) e unonda quadra; le
uscite misurate costituiscono il valore angolare dellasse del motore utilizzando la
variabile Dtime, risultato di una funzione che verra` spiegata in modo esaustivo nel
paragrafo 2.1.2..
Per quanto riguarda la fase di stima, essa dipende ovviamente dal tipo di procedura
scelta e tra le svariate metodolgie e` stato utilizzato un algoritmo basato sul metodo
dei minimi quadrati.
17
-
Cap. 2 Identificazione del modello 2.1 Ricostruzione segnale e filtraggio
La procedura di identificazione deve necessariamente prevedere una fase di vali-
dazione del modello ottenuto, tramite la quale si stabilisce la bonta` del modello ed
eventualmente se ne cambia la funzione di trasferimento o si effettuano nuovi esperi-
menti. La validazione verra` eseguita non con gli stessi dati usati per lidentificazione
ma con una nuova misura, da qu` il nome cross-validazione.
Tutto il processo sopra descritto e` stato realizzato grazie ad un file (Identifica-
tion.m) compilato su Matlab.
2.1 Ricostruzione segnale e filtraggio
Una sezione fondamentale relativa al lavoro svolto e` stata la ricostruzione del segnale
emesso dallencoder magnetico ed il relativo filtraggio. La sua importanza e` dovuta
al fatto che potendo ricostruire il segnale PWM, in ogni istante si e` in grado di poter
capire in che posizione si viene a trovare lasse del motore, cos` da poterne controllare
agevolmente la posizione. La frequenza del segnale PWM emesso dallencoder e` pari
a fc = 244Hz con una sensibilita` di passo pari a 1micros e quindi un tempo di
campionamento pari a Tc = 4.098ms.
Teorema 2.1.1. Teorema di Shannon: Sia s =2piTc
la pulsazione di campionamen-
to (detta pulsazione di Nyquist) ove Tc il periodo di campionamento, e sia c la piu`
alta componente spettrale del segnale tempo continuo x(t). Il segnale x(t) e` completa-
mente ricostruibile a partire dal segnale campionato x*(t) se e solo se la pulsazione di
campionamento e` maggiore del doppio della pulsazione c:
s > 2c (2.1.1)
18
-
Cap. 2 Identificazione del modello 2.1 Ricostruzione segnale e filtraggio
Considerando i parametri del motore vm = 66rpm velocita` giri/minuto e ratio :
1 = 94.7 rapporto di riduzione e` evidente che secondo il Teorema di Shannon siamo
vicini alla frequenza limite:
244 > 2(94.766
60) (2.1.2)
244 > 208.34 (2.1.3)
Questo e` il motivo per cui il magnete da cui rilevare la posizione relativa dellasse
rispetto al motore sia stato posizionato a monte del riduttore, cioe` la velocita` di
rotazione dellasse non ridotto risulta troppo elevata per poter ricostruire in maniera
fedele il segnale dallencoder.
2.1.1 Funzione getAngolo( )
Il segnale dalle caratteristiche di cui si e` fatta menzione nel paragrafo precedente, viene
mandato in output dallencoder e processato dallArduino come input in ingresso ad
una porta di tipo Analog in e acquisito grazie alla funzione di libreria AnalogRead.
Questa funzione che gestisce segnali analogici trasformandoli in digitali, mappa le
tensioni in ingresso tra 0 e 5V in un valore intero corrispondente tra 0 e 1023 (valore
corrispondente al massimo del Duty Cycle); avendo in ingresso un valore massimo di
3.3V il corrispettivo valore mappato sara` dato dalla relazione
x =3.3 1023
5(2.1.4)
e quindi tra 0 e 675.
Una volta rilevato il segnale, con listruzione 3.1.2. su di esso viene effettuato un
controllo incrementando un contatore ogni qual volta sulla porta di ingresso viene
19
-
Cap. 2 Identificazione del modello 2.1 Ricostruzione segnale e filtraggio
letto un fronte di segnale alto, non facendo nulla quando il segnale si trova in uno
stato di basso.
Allinterno della variabile contatore verranno a trovarsi dei valori interi corrispon-
denti alla sequenza di lettura dei soli fronti alti andando cos` a costituire una sorta
di storia dellevoluzione dellonda e quindi del cambiamento della posizione relativa
asse del motore-magnete.
2.1.2 Funzione DoEncoder
In questo paragrafo verra` illustrato come, attraverso alcune funzioni di libreria Ar-
duino, sia stato possibile effettuare il riconoscimento angolare con una elevatissima
precisione.
Arduino possiede delle porte specifiche per la gestione degli Interrupt esterni1;
collegando il segnale PWM ad uno dei pin specifici per ingressi interrupt, viene uti-
lizzata la funzione di libreria AttachInterrupt impostata in modalita` Change, la cui
attivazione viene eseguita ogni qual volta linterrupt ricevuto cambia la sua logica
dal basso allalto e viceversa. Quando occorre un interrupt esterno di questo tipo, il
microprocessore va ad attivare la funzione doEncoder che con un semplice control-
lo tramite una AnalgRead sullo stato alto del segnale, non fa altro che salvare nella
variabile Time attraverso la funzione micros() il tempo in cui la funzione stessa viene
invocata ; non appena la logica del segnale di interrupt cambia, nella nuova variabile
Dtime viene calcolata la differenza tra il tempo attuale e il valore salvato in Time,
in modo da avere una cifra che possa avere una stima di quanto tempo il segnale e`
stato alto. Ottenuto il Dtime per ottenere langolo sufficiente convertire e applicare
la relazione
1La maggior parte dei dispositivi Arduino ne posseggono due, la versione Mega addirittura sei.
20
-
Cap. 2 Identificazione del modello 2.2 Set-up sperimentale e dati
angolo =Dtime 360
4098(2.1.5)
con il valore 4098 pari alla risoluzione dellencoder magnetico.
2.2 Set-up sperimentale e dati
Come gia` accennato il primo passo consiste nelleccitazione del motore a due diversi
ingressi, unonda quadra ed un segnale a gradino; il terzo, anchesso di tipo a gradi-
no, servira` per la conferma dei risultati ottenuti. Eseguendo questi esperimenti in
maniera ripetuta e` stata ottenuta una buona sequenza di dati sperimentali utili alla
modellizzazione del sistema. La creazione di questo tipo di segnali, grazie alla siner-
gia Arduino-Ponte H, servira` semplicemente a far muovere il motore sotto due diversi
ingressi, in modo tale da poterne studiare la diversa reazione.
Lidea e` stata quella di generare attraverso Arduino i due ingressi, ognuno dei
quali costituito da N input (con N fissato a 800), e rilevare le rispettive N uscite
prodotte dallencoder rispetto alle due eccitazioni; i risultati di questo procedimento
costituiscono la raccolta dei dati sperimentali che salvati in appositi files saranno in
seguito utilizzati per lelaborazione dei dati sperimentali e la creazione delle routine
atte allidentificazione del sitema.
Di seguito vengono mostrate le immagini generate dallimplementazione Matlab.
Nella Figura 2.1 si osserva la raccolta e lelaborazione dei dati sprimentali: con la
linea blu viene contrassegnato linput, con la linea rossa loutput. Da notare come nel
primo grafico una volta terminato leffetto dellimpulso, la variabile di uscita rimanga
costante, mentre nel secondo e terzo con ingressi a gradino costante il valore delluscita
aumenti in maniera lineare.
21
-
Cap. 2 Identificazione del modello 2.2 Set-up sperimentale e dati
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.60
2000
4000
AnalogW
rite
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.60
1
2x 104
AnalogW
rite
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.60
1
2x 104
AnalogW
rite
inout
Figura 2.1: Raccolta dei dati sperimentali.
Nella 2.2 vengono mostrati lingresso e luscita invertiti, con il primo normalizzato
ad uno nel punto in cui raggiunge il suo valore massimo; da notare come nel caso
dellimpulso esso abbia una caduta immediata a zero nel momento in cui viene -
staccata la tensione in ingresso al motore.
22
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.60
0.5
1
AnalogW
rite
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.60
0.5
1
AnalogW
rite
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.60
0.5
1
AnalogW
rite
Time (sec)
Filtered normalized data
outputinput
Figura 2.2: Raccolta dei dati sperimentali con ingresso normalizzato.
2.3 Calcolo della funzione di trasferimento del mo-
tore
Il metodo dei minimi quadrati e` una tecnica di ottimizzazione che permette di trovare
una funzione che si avvicini il piu` possibile ad uninterpolazione di un insieme di
dati. In particolare la funzione trovata deve essere quella che minimizza la somma
dei quadrati delle distanze dai punti dati. Si puo` riformulare il problema dicendo che
data una certa distribuzione di dati sperimentali, supponiamo che questa possa essere
approssimata da una retta che, in qualche modo, sia allineabile fra detti punti.
Il criterio su cui si basa lindividuazione della retta di regressione e` abbastanza
23
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
intuitivo. Si parte dallipotesi ragionevole che la retta migliore sia quella che ha
distanza minore da tutti i punti del diagramma. Questa retta si ottiene costruendo,
per ogni punto sperimentale, un quadrato che ha un lato costituito dalla distanza
verticale del punto dalla retta. Si ripete quindi il procedimento per ogni punto del
grafico e si sommano le aree di tutti i quadrati. La retta che approssima meglio la
distribuzione dei punti e` quella che determina la minore superficie dei quadrati (di
qui il termine metodo dei minimi quadrati).
Figura 2.3: Metodo dei minimi quadrati
Analiticamente lobiettivo e` quello di minimizzare una certa funzione di costo
V =Nk=1
e2k (2.3.1)
con e lerrore di modello, ed N il numero di campioni misurati.
La funzione di trasferimento calcolata dal grazie allalgoritmo sopracitato ed im-
plementato in Matlab e` la seguente:
24
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
W (z) =0.058122(z 2.958)
(z 1)(z 0.6671)(z2 + 0.548z + 0.2061) (2.3.2)
Nella figura 2.4 vengono comparati la raccolta dati sperimentali in linea blu,
con quelli stimati dal sistema in rosso in base alla funzione di trasferimento appena
calcolata.
Appare evidente come il modello stimato e quello reale siano abbastanza simili
nel secondo e terzo grafico. Questo non avviene nel primo, in cui la linea che stima
landamento del sistema risulta traslata di poco piu` in basso rispetto alla curva reale.
Questo andamento e` dovuto al fatto che limpulso durante la discesa dal valore di
picco, produce larresto del motore non in zero, ma in un valore pari a 0.588V , al
di sotto del quale le forze dovute allattrito statico causate dallo strisciamento tra le
parti metalliche del motore non consentono lattivazione del motore. Questa proprieta`
che definisce la Deadzone produce il discostamento dalla linea di stima.
25
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.65000
0
5000
AnalogW
rite
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.62
0
2x 104
AnalogW
rite
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.62
0
2x 104
AnalogW
rite
Time (sec)
Experimental dataEstimated data
Figura 2.4: Confronto dati sperimentali con dati stimati.
Nella figura 2.5 viene mostrato il diagramma di Bode della funzione di trasferi-
mento calcolata in cui troviamo i poli nei punti z = 1, z 0.66, due poli complessi econiugati in z 0.27 + 0.25j e z 0.27 0.25j e uno zero in z 2.9. La presenzadegli zeri a parte reale positiva, che non trova riscontro nel sistema fisico reale, e`
dovuta al processo di discretizzazione.
26
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
20
10
0
10
20
30
40M
agni
tude
(dB)
100 101 102 103540
360
180
0
180
360
Phas
e (de
g)Identified model bode diagram
Frequency (rad/sec)
Figura 2.5: Diagramma di Bode.
Nella 2.6. e 2.7. vengono mostrati i fit dei dati sui due diversi ingressi in cui viene
evidenziato il confronto tra la funzione W(z) che meglio approssima i dati sperimentali
e quella calcolata in base al modello trovato.
27
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
0.5 1 1.50
2000
4000
6000
8000
10000
12000
14000
16000
18000y1. (sim)
y1
data; measuredmodellototale; fit: 97.55%
Figura 2.6: Fitting dei dati sul primo ingresso.
0.5 1 1.50
2000
4000
6000
8000
10000
12000
14000
16000
Compare (it uses proper initial conditions for matchings)
y1
data; measuredmodellototale; fit: 97.28%
Figura 2.7: Fitting dei dati sul secondo ingresso.
Nel piano Z viene graficato il luogo delle radici che mostra la stabilita` del sistema
28
-
Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore
per un certo valore di guadagno K che verra` esplicitato nel capitolo 3 (Figura 2.8)
2 1.5 1 0.5 0 0.5 1 1.5 2
3
2
1
0
1
2
3
Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 2.8: Luogo delle radici
29
-
Capitolo 3
Analisi stabilita` sistema
In questo capitolo verra` trattato il problema della stabilita` del sis-tema ad un ingresso e ad unuscita, partendo dalla ricostruzionedel segnale la cui stima produrra` il calcolo dellerrore, passando perla realizzazione di due diversi controllori, uno realizzato empirica-mente, e laltro costruito grazie allutilizzo delle funzioni di libreriaMatlab.
3.1 Generalita` del controllore
Il controllore e` lorgano che determina landamento delle variabili di controllo in un
problema di controllo automatico. Il controllore, in generale, acquisisce in ingresso
un valore da un processo, e lo confronta con un valore di riferimento. La differenza, il
cosiddetto segnale di errore, viene quindi usata per determinare il valore di uscita del
controllore, che e` la variabile manipolabile del processo. Il suo obiettivo e` quello di far
s` che landamento della variabile controllata non si discosti troppo dallandamento
del segnale di riferimento. Quando il controllore possiede informazioni solo sul segnale
di riferimento o eventualmente anche sul disturbo, si dice ad anello aperto, mentre se
possiede anche informazioni sulla variabile controllata (o eventualmente su variabili
dipendenti da quella controllata) si dice ad anello chiuso o in retroazione.
30
-
Cap. 3 Analisi stabilita` sistema 3.1 Generalita` del controllore
3.1.1 Progetto dei controllori
I controllori costruiti ai fini della realizzazione del progetto saranno in tutto tre e
verranno esposti nellordine:
1 I Controllore
2 Controllore PID con approssimazione dellazione derivativa
3 Controllore PID ottimizzato
Il I Controllore viene costruito con metodo diretto, cioe` il regolatore viene proget-
tato direttamente nel dominio discreto, in cui viene in seguito valutata la stabilita`
asintotica del sistema retroazionato.
I controllori 2 e 3 vengono costruiti con metodo indiretto, che prevede un progetto
preliminare del regolatore nel dominio delle trasformate di Laplace, e quindi una sua
successiva trasformazione per discretizzazione nel digitale.
3.1.2 Tecniche di discretizzazione del compensatore
Le tecniche utilizzate per la discretizzazione del compensatore progettato a tempo
continuo sono essenzialmente due.
La prima tecnica descritta chiamata Integrazione trapezoidale o Metodo di Tustin
viene effettuata attraverso la seguente approssimazione dellintegrale:
kTc(k1)Tc
y(t) dt [y(kTc) + y((k 1)Tc]Tc2
(3.1.1)
Lapprossimazione introdotta e` rappresentata in Fig. 3.1,
31
-
Cap. 3 Analisi stabilita` sistema 3.1 Generalita` del controllore
Figura 3.1: Approssimazione dellintegrale con la trasformzione bilineare
dove la variabile a tempo continuo s viene trasformata nella variabile a tempo
discreto z secondo la relazione:
s =2
T
z 1z + 1
(3.1.2)
La seconda tecnica descritta chiamata Metodo delle differenze allindietro viene
effettuata considerando la segente approssimazione dellintegrale
kTc(k1)Tc
y(t) dt Tcy(kTc). (3.1.3)
Lapprossimazione introdotta e` rappresentata in Fig. 3.2, dove la variabile a tempo
continuo s viene trasformata nella variabile a tempo discreto z secondo la relazione:
s =z 1Tz
(3.1.4)
32
-
Cap. 3 Analisi stabilita` sistema 3.2 I Controllore
Figura 3.2: Approssimazione dellintegrale con il metodo delle differenze allindietro
3.2 I Controllore
Il primo controllore, progettato sulla base della funzione di trasferimento discreta
del sistema con T = 0.004ms, viene progettato direttamente nel piano Zeta, cioe` la
stabilita` del sistema a ciclo chiuso viene valutata attraverso lo studio del luogo delle
radici. La scelta di cancellare un polo nel punto z = 0.6671 e metterlo nellorigine
deriva dal voler rendere il sistema migliore in quanto a velocita` di risposta e robustezza.
C(z) =z 0.6671
z(3.2.1)
Assumendo un controllore della forma sopra descritta, la funzione di trasferimento
discreta diventa
W (z) =0.058122(z 2.958)
z(z 1)(z2 + 0.548z + 0.2061) (3.2.2)
33
-
Cap. 3 Analisi stabilita` sistema 3.2 I Controllore
a cui corrisponde il luogo delle radici riportato in figura 3.4.
Dalla simulazione effettuata e` evidente come la cancellazione del polo in z = 0.6671
e laggiunta di di un polo in z = 0 modificano in maniera sostanziale il tracciamento del
luogo positivo; appare chiaro come aver sostituto il polo in 0.6671 con uno nellorigine
ha permesso di spostare il punto singolare verso sinistra, in modo da attrarre il ramo
del luogo positivo allinterno del cerchio unitario.
2 1.5 1 0.5 0 0.5 1 1.5 2
3
2
1
0
1
2
3
Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.3: Luogo delle radici del sistema non controllato.
Nella figura 3.5. il raffronto tra i diagrammi di Bode del sistema originale e quello
controllato mette in luce le sostanziali modifiche apportate in quanto a margine di
fase e margine dampiezza che sono aumentati con un mg = 8.77dBm = 64deg.
Nello Step-response invece viene visualizzato linseguimento a gradino del sistema,
34
-
Cap. 3 Analisi stabilita` sistema3.3 Controllore PID con approssimazione dellazione derivativa
1 0.5 0 0.5 1
1.5
1
0.5
0
0.5
1
1.5
Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.4: Luogo delle radici del sistema controllato.
mostrando come in soli 0.07 secondi sia completato il tempo di salita e che le specifiche
richieste sul transitorio siano soddisfatte (Figura 3.6.).
3.3 Controllore PID con approssimazione dellazione
derivativa
Il controllo Proporzionale-Integrale-Derivativo a tempo continuo, comunemente ab-
breviato come PID, generalmente viene espresso attraverso la relazione:
C(s) = Kp +Kis
+Kds (3.3.1)
con
u(t) = Kpe(t) +Ki
t0
e() d +Kdd
dte(t). (3.3.2)
35
-
Cap. 3 Analisi stabilita` sistema3.3 Controllore PID con approssimazione dellazione derivativa
20
10
0
10
20
30
40M
agni
tude
(dB)
100 101 102 103540
360
180
0
180
360
Phas
e (de
g)Bode Diagram
Gm = 8.77 dB (at 570 rad/sec) , Pm = 64 deg (at 32.8 rad/sec)
Frequency (rad/sec)
FCF
Figura 3.5: Confronto tra diagrammi di Bode del sistema controllato e sistemaoriginale
I parametri fondamentali ai fini del progetto di un controllore PID sono:
Kp Lazione proporzionale offre un contributo proporzionale allerrore e diminuisceman mano che lerrore si avvicina a zero.
Ki Lazione integrale fa s` che il controllore si ricordi dei valori passati delsegnale derrore.Inserendo un polo nelloriginetrasforma il sistema in un sistema
di tipo 2, ovvero permette di avere riferimento nullo a fronte di riferimenti a
rampa.
Kd Lazione derivativa serve a smorzare le oscillazioni.
3.3.1 Discretizzazione del PID approssimato
Lequazione 3.3.2 a seguito della discretizzazione assume la forma:
36
-
Cap. 3 Analisi stabilita` sistema3.3 Controllore PID con approssimazione dellazione derivativa
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.090.2
0
0.2
0.4
0.6
0.8
1
1.2Step Response
Time (sec)
Ampl
itude
Figura 3.6: Step response - Inseguimento del gradino unitario
u(kTc) = Kpe(kTc) +Ki(kj=1
(e(jTc) + e((j 1)Tc)2
Tc) +Kd(e(kTc) e(k 1)Tc)
Tc.
(3.3.3)
La parte relativa allazione proprozionale viene discretizzata immediatamente es-
sendo identicamente uguale alla trasformata Z di una costante.
La parte relativa allazione integrale viene discretizzata attraverso il metodo di
trasformazione di Tustin.
La parte relativa allazione derivativa invece viene discretizzata utilizzando il
metodo delle differenze allindietro.
3.3.2 Tuning dei parameri con il metodo Ziegler-Nichols
Per la stima dei parametri del PID non si e` potuto operare direttamente sul motore
a causa della saturazione dellattuatore che impedisce al dispositivo di entrare in
37
-
Cap. 3 Analisi stabilita` sistema3.3 Controllore PID con approssimazione dellazione derivativa
oscillazione sostenuta.
Per questo motivo, una volta trasformato il sistema da Tempo discreto a Tempo
continuo attraverso il comando Matlab d2c (digital to continous), ci si e` riferiti al
metodo di Ziegler-Nichols.
Questa tecnica, che viene considerata tra le piu` importanti per la stima dei parametri
di un controllore PID, e` un algoritmo impostato sui seguenti punti:
1. Inizialmente il processo viene fatto controllare da un controllore esclusiva-mente proporzionale (Ki e Kd vengono impostati a zero).
2. Il guadagno K del controllore proporzionale viene gradualmente aumentato.
3. Il guadagno critico Kc e` il valore del guadagno per cui la variabile controllatapresenta oscillazioni autosostenute.
4. Si registra il periodo critico Tc delle oscillazioni autosostenute.
5. Secondo la seguente tabella, si determinano le costanti per il controllore PID.
Kp Ki Kd0.6Ku Tu/2 Tu/8
.
A seguito di numerosi esperimenti e` stato verificato che la presenza nel sistema di
zeri a fase non minima causati dalla discretizzazione del processo rende impossibile
lattuazione di questa tecnica.
Si e` cercato quindi, di stimare i parametri attraverso una sintesi per tentativi.
Considerando il PID approssimato della forma
38
-
Cap. 3 Analisi stabilita` sistema3.3 Controllore PID con approssimazione dellazione derivativa
Kp +Kis
+Kds
1 +Ns=Kps(1 +Ns) +Ki(1 +Ns) +Kds
2
s(1 +Ns)(3.3.4)
=s2(KpN +Kd) + s(Kp +KiN) +Ki
s(1 +Ns)(3.3.5)
La sintesi per tentativi ha condotto alla costruzione del seguente compensatore:
PID(s) =0.00625s2 + 0.25s+ 2.5
0.0025s2 + s(3.3.6)
ponendo in N = 1400
un polo ad alta frequenza che rende fisicamente realizzabile
il controllore e non disturba le dinamiche del processo nella banda di interesse.
Facendo un matching tra lequazione generale del PID approssimato (Equazione
3.4.5) e quella del PID sperimentale (Equazione 3.4.6) si perviene al seguente sistema:
KpN +Kd = 0.00625Kp +Ki = 0.25
Ki = 2.5
Risolvendo tale sistema si ottiene il calcolo dei parametri Kp Ki Kd.
Kp = 0.2437Ki = 0.0056Ki = 2.5
3.3.3 Approssimazione dellazione derivativa
Nel classico schema di controllo in retroazione in figura 3.8 lazione derivativa e` ef-
fettuata sullerrore e; in questo caso, in presenza di uno scalino del segnale di rifer-
imento w, luscita del derivatore, e di conseguenza la variabile di controllo u, hanno
un andamento impulsivo. Questa brusca variazione e` in contrasto con il requisito di
39
-
Cap. 3 Analisi stabilita` sistema3.3 Controllore PID con approssimazione dellazione derivativa
moderazione del controllo e puo` provocare la saturazione dellattuatore e lallontana-
mento del sistema dalla condizione di linearita` con la quale normalmente si progetta
il regolatore.
Per queste ragioni frequentemente lazione derivativa e` esercitata sulla sola vari-
abile di uscita y, come mostrato nella figura 4.2.
Poiche` quella considerata e` luscita di un sistema che usualmente ha le caratter-
istiche di un filtro passa-basso, le sue variazioni istantanee (e quindi la sua derivata)
sono in genere contenute e la presenza dellazione derivativa non provoca il suddetto
andamento impulsivo della variabile di controllo.
Figura 3.7: PID con derivazione dellerrore
Figura 3.8: PID con derivazione delluscita
40
-
Cap. 3 Analisi stabilita` sistema 3.4 Controllore PID ottimizzato
3.4 Controllore PID ottimizzato
Il design del controllore PID e` stato tuttavia ottimizzato mediante luso del sisotool, il
comando Matlab che permette di vedere in maniera interattiva il risultato dei tentativi
di progetto, e si ottiene, sulla base del sistema di controllo a tempo continuo con il
controllore PID appena costruito, un nuovo controllore PID ottimizzato secondo i
parametri scelti dal calcolatore.
Il nuovo regolatore con i parmetri di guadagno ottimizzati via software assume la
forma:
PIDopt=0.10875(0.0023s+ 1)(4.7s+ 1)
s(1 + 0.0039s)(3.4.1)
Nelle immagini seguenti verranno mostrati diversi grafici che metteranno a con-
fronto il semplice sistema a tempo continuo ricavato dalla trasformazione da tempo
discreto a tempo continuo della funzione di trasferimento W (z) con Matlab, il sis-
tema controllato con il PID con approssimazione dellazione derivativa, e infine il PID
ottimizzato dal calcolatore.
500 0 500 1000 1500 20001000
800
600
400
200
0
200
400
600
800
1000Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.9: Luogo delle radici del sistema a tempo continuo
41
-
Cap. 3 Analisi stabilita` sistema 3.4 Controllore PID ottimizzato
Nella figura 3.9 viene mostrato il luogo delle radici del sistema tempo continuo,
mentre nelle successive immagini e` possibile fare un confronto con i luoghi delle radici
dei sistemi in retroazione con PID approssimato, figura 3.10, e con il controllore PID
ottimizzato, figura 3.11.
500 0 500 1000 1500 2000 25001000
800
600
400
200
0
200
400
600
800
1000Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.10: Luogo delle radici del sistema con controllore PID approssimato
500 0 500 1000 1500 2000800
600
400
200
0
200
400
600
800Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.11: Luogo delle radici del sistema con controllore PID ottimizzato
Nella figura 3.12 viene mostrato il margine di guadagno mg = 6.95dB (nella fiigura
M.G.) e margine di fase m = 39.9deg (nella figura M.F.) del sistema non controllato.
42
-
Cap. 3 Analisi stabilita` sistema 3.4 Controllore PID ottimizzato
100 101 102 103 1040
360
720
Frequency (rad/sec)
40
20
0
20Bode Editor for Closed Loop 1 (CL1)
100 1050
180
360
540
720
P.M.: 39.9 degFreq: 45.8 rad/sec
Frequency (rad/sec)
50
40
30
20
10
0
10
20
30
G.M.: 6.95 dBFreq: 89.4 rad/secStable loop
OpenLoop Bode Editor for Open Loop 1 (OL1)
0.6 0.4 0.2 0 0.2 0.4
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
Root Locus Editor for Open Loop 1 (OL1)
Figura 3.12: Vista stretta grafici del sistema tempo continuo
Appare evidente (figura 3.13) come linserimento in retroazione del controllore
PID sperimentale, migliori sostanzialmente il diagramma di Bode a ciclo chiuso,
apportando variazioni sia al mg = 8.31dB che al m = 44.5deg
Nel sistema controllato con PID ottimizzato (vedi figura 3.14) aumentano margine
di fase e margine di guadagno con dei valori di mg = 12dB e m = 60deg.
Nelle figure di inseguimento a gradino, figure 3.15 3.16 3.17 viene e mostrato
come nei due controllori diminuisca il tempo di assestamento e allo stesso tempo la
sovraelongazione ridotte effettivamente dallinserimento di un termine derivativo che
ha la capacita` di smorzare le oscillazioni. Con la linea blu viene tracciato landamento
del sistema ciclo chiuso ingresso-uscita, con quella verde landamento del sistema a
ciclo chiuso ingresso-controllo; nella figura sottostante e` tracciata in rosso la sensitivita`
sullingresso, con la celeste la sensitivita` sulluscita. Infine vengono mostrati i confronti
dei diagrammi di Bode del sistema con i tre controllori.
43
-
Cap. 3 Analisi stabilita` sistema 3.5 Verifica stabilita` digitale
100 1050
360
720
Frequency (rad/sec)
50
0
50Bode Editor for Closed Loop 1 (CL1)
102 100 102 104 1060
180
360
540
720
P.M.: 44.5 degFreq: 11.3 rad/sec
Frequency (rad/sec)
60
40
20
0
20
40
60
G.M.: 8.31 dBFreq: 871 rad/secStable loop
OpenLoop Bode Editor for Open Loop 1 (OL1)
0.6 0.4 0.2 0 0.2 0.4
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
Root Locus Editor for Open Loop 1 (OL1)
Figura 3.13: Vista stretta grafici del sistema con controllore PID approssimato
3.5 Verifica stabilita` digitale
Terminato il design analitico dei due controllori PID(s) e PIDOP T (s) nel dominio di
Laplace, si verifica a posteriori il comportamento dinamico dellintero sistema digitale
con controllore discretizzato, con uno dei metodi gia` spiegati nella sezione 3.1.2.
Nelle figure 3.19 e 3.20 viene mostrato il luogo delle radici dellintero sistema
digitale nel piano zeta, evidenziando come la stabilita` del sistema sia mantenuta a
seguito della trasformazione.
Nelle figure 3.21 e 3.22 viene visualizzato il diagramma di Bode con particolare
interesse verso il margine di fase e margine dampiezza.
Nelle fugure 3.22 e 3.23 viene mostrato il diagramma di Bode dei sistemi con i tre
differenti controllori.
44
-
Cap. 3 Analisi stabilita` sistema 3.5 Verifica stabilita` digitale
102 100 102 1040
360
720
Frequency (rad/sec)
50
0
50Bode Editor for Closed Loop 1 (CL1)
102 100 102 1040
180
360
540
720
P.M.: 60 degFreq: 24.3 rad/sec
Frequency (rad/sec)
50
0
50
100
G.M.: 12 dBFreq: 81 rad/secStable loop
OpenLoop Bode Editor for Open Loop 1 (OL1)
0.6 0.4 0.2 0 0.2 0.4
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
Root Locus Editor for Open Loop 1 (OL1)
Figura 3.14: Vista stretta grafici del sistema con controllore PID ottimizzato
Step Response
Time (sec)
Ampl
itude
Step Response
Time (sec)
Ampl
itude
0 0.05 0.1 0.15 0.2 0.250.5
0
0.5
1
1.5
0 0.05 0.1 0.15 0.2 0.250.5
0
0.5
1
1.5
Figura 3.15: Inseguimento a gradino del sistema a tempo continuo
45
-
Cap. 3 Analisi stabilita` sistema 3.5 Verifica stabilita` digitale
Step Response
Time (sec)
Ampl
itude
Step Response
Time (sec)
Ampl
itude
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.61
0
1
2
3
0 0.2 0.4 0.6 0.8 1 1.2 1.41
0
1
2
3
Figura 3.16: Inseguimento a gradino del sistema con controllore PID approssimato
Step Response
Time (sec)
Ampl
itude
Step Response
Time (sec)
Ampl
itude
0 5 10 15 20 25 301
0
1
2
3
0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.180.5
0
0.5
1
1.5
Figura 3.17: Inseguimento a gradino del sistema con controllore PID ottimizzato
46
-
Cap. 3 Analisi stabilita` sistema 3.5 Verifica stabilita` digitale
100
0
100
Mag
nitu
de (d
B)
100 101 102 103 104 1050
360
720
Phas
e (de
g)
Bode DiagramGm = 6.95 dB (at 89.4 rad/sec) , Pm = 39.9 deg (at 45.8 rad/sec)
Frequency (rad/sec)
Processo
100
0
100
Mag
nitu
de (d
B)
101 100 101 102 103 104 1050
360
720
Phas
e (de
g)Bode Diagram
Gm = 8.31 dB (at 871 rad/sec) , Pm = 44.5 deg (at 11.3 rad/sec)
Frequency (rad/sec)
Processo e controllore PID per tentativi
Figura 3.18: Confronti 1 tempo continuo
100
0
100
Mag
nitu
de (d
B)
102 101 100 101 102 103 1040
360
720
Phas
e (de
g)
Bode DiagramGm = 11.9 dB (at 80.9 rad/sec) , Pm = 59.9 deg (at 24.4 rad/sec)
Frequency (rad/sec)
Processo e controllore PID ottimizzato
50
0
50
Mag
nitu
de (d
B)
100 101 102 103720360
0360
Phas
e (de
g)
Bode DiagramGm = 8.77 dB (at 570 rad/sec) , Pm = 64 deg (at 32.8 rad/sec)
Frequency (rad/sec)
Processo e controllore a cancellazione
Figura 3.19: Confronti 2 tempo continuo
4 3 2 1 0 1 21
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.20: Luogo delle radici del sistema digitale con PID(z)
47
-
Cap. 3 Analisi stabilita` sistema 3.5 Verifica stabilita` digitale
1 0 1 2 3 4 5 6 72.5
2
1.5
1
0.5
0
0.5
1
1.5
2
2.5Root Locus
Real Axis
Imag
inar
y Ax
is
Figura 3.21: Luogo delle radici del sistema digitale con PIDOP T (z)
100
0
100
Mag
nitu
de (d
B)
100 101 102 103 104 1050
360
720
Phas
e (de
g)
Bode DiagramGm = 6.95 dB (at 89.4 rad/sec) , Pm = 39.9 deg (at 45.8 rad/sec)
Frequency (rad/sec)
Processo
100
0
100
Mag
nitu
de (d
B)
101 100 101 102 103720360
0360
Phas
e (de
g)
Bode DiagramGm = 8.74 dB (at 566 rad/sec) , Pm = 50.6 deg (at 10.5 rad/sec)
Frequency (rad/sec)
Processo e controllore PID per tentativi
Figura 3.22: Confornti 1 tempo discreto
100
0
100
Mag
nitu
de (d
B)
102 101 100 101 102 103720360
0360
Phas
e (de
g)
Bode DiagramGm = 10.2 dB (at 67.9 rad/sec) , Pm = 55.8 deg (at 24.3 rad/sec)
Frequency (rad/sec)
Processo e controllore PID ottimizzato
50
0
50
Mag
nitu
de (d
B)
100 101 102 103720360
0360
Phas
e (de
g)
Bode DiagramGm = 8.77 dB (at 570 rad/sec) , Pm = 64 deg (at 32.8 rad/sec)
Frequency (rad/sec)
Processo e controllore a cancellazione
Figura 3.23: Confronti 2 tempo discreto
48
-
Capitolo 4
Saturazione
Nella pratica, luscita di qualsiasi regolatore viene applicata ad undispositivo che presenta saturazione, cioe` il comando con cui vieneattuato e` vincolato a dei valori massimi e minimi. Questo fattore,alla base della nonlinearita` dei sistemi e della degradazione delleleggi di controllo, ha avuto un importanza rilevante ai fini dellostudio del sistema. Nel seguente capitolo verra` illustrato il problemae unapproccio alla risoluzione dello stesso.
4.1 Desaturazione dellazione integrale
La presenza combinata dellazione integrale e di una saturazione dovuta allattua-
tore provoca un effetto di tipo non lineare che puo` deteriorare significativamente le
prestazioni del sistema di controllo. Per analizzare piu` in dettaglio questo fenomeno,
si ipotizzi inizialmente e per semplicita` che il regolatore sia puramente integrale e che
lattuatore, con ingresso u e uscita m sia descritto dalla relazione
u(m)=
uM u(t) < uMu(t) |u(t)| uMuM u(t) > uM
come mostrato in figura 4.3, dove P (s) e` la funzione di trasferimento del processo.
49
-
Cap. 4 Saturazione 4.1 Desaturazione dellazione integrale
Figura 4.1: Schema di controllo con attuatore saturante
4.1.1 Il fenomeno del wind-up
Quando lerrore e si mantiene dello stesso segno per un certo periodo, lo stato dellin-
tegratore, che coincide con la sua uscita u, cresce in modulo sempre piu`. Cio` avviene
anche se leffettiva variabile di inigresso m del sistema sotto controllo viene limitata
al valore uM o uM dalla sturazione dovuta allattuatore. Quando questo accade,se lerrore cambia segno e` necessario attendere che lo stato u dellintegratore torni
ad assumere valori in modulo inferiori a uM prima che lattuatore riprenda a oper-
are in zona lineare, cioe` si abbia m(t) = u(t). In altri termini, si deve attendere la
scarica dellazione integrale. Sarebbe invece molto piu` opprtuno che la variabile di
controllo effettiva lasciasse il valore di saturazione non appena lerrore cambia segno.
Il fenomeno sopra descritto prende il nome di carica integrale o, piu` comunemnete
dallinglese di integral wind-up.
50
-
Cap. 4 Saturazione 4.1 Desaturazione dellazione integrale
0 1 2 3 4 5 6 7 8 9 1020
0
20
40
60
80
100
120
140Controllore con semplice cancellazione
linearsaturated
Figura 4.2: Uscita sistema controllato con I controllore lineare e saturata
Nelle immagini seguenti vengono mostrate le simulazioni dei sistemi a tempo con-
tinuo del sistema controllato dai tre regolatori, in cui viene messa in contrasto luscita
del sistema con andamento lineare (linea blu), con quella saturata (linea rossa).
0 1 2 3 4 5 6 7 8 9 1020
0
20
40
60
80
100
120
140
160
180Controllore PID per tentativi
linearsaturated
Figura 4.3: Uscita sistema controllato con PID(s) lineare e saturata
4.1.2 Uno schema di desaturazione per regolatori PID
Il fenomeno del wind-up e` dovuto al fatto che la dinamica del regolatore non e` in-
fluenzata delleventuale presenza di limitazioni sulla sua variabile di uscita. Se queste
limitazioni sono attive si usa dire che lo stato del regolatore non e` congruente con
51
-
Cap. 4 Saturazione 4.1 Desaturazione dellazione integrale
0 1 2 3 4 5 6 7 8 9 1020
0
20
40
60
80
100
120
140Controllore PID con guadagni ottimizzati
linearsaturated
Figura 4.4: Uscita sistema controllato con PIDOP T (s) lineare e saturata
leffettiva variabile m. Per ovviare a cio`, tutti i vari schemi proposti in letteratura
per attenuare il wind-up hanno in comune la caratteristica di alimentare il regolatore
anche con il segnale a valle della saturazione, in modo che il suo stato possa evolvere
coerentemente con landamento della variabile che effettivamente agisce sul processo.
Viene ora presentato uno shema di desaturazione per i regolatori PID.
Figura 4.5: Schema di realizzazione di regolatore PID con desaturazione
Si consideri lo schema di figura 4.4 e si noti preliminarmente che, poiche` usual-
mente lazione derivata e` esercitata sulluscita y, lo schema di desaturazione riguarda
52
-
Cap. 4 Saturazione 4.1 Desaturazione dellazione integrale
unicamente le azioni proporzionali e integrale. Si osservi inoltre che alinterno del
regolatore viene applicata la caratteristica nonlineare dellattuatore.
Si supponga che Kp > 0, che lerrore si mantenga positivo pe run certo periodo di
tempo e che la variabile b sia saturata al valore uM ; allora anche c e` uguale ad uM e la
vaiabile z tende al valore uM con la dinamica di un sistema del primo ordine. Se poi e
cambia segno, anche q assume segno negativo e la variabile b = q+ z diventa inferiore
al limite di saturazione uM , cioe` il sistema torna a funzionare con comportamento
lineare.
53
-
Capitolo 5
Confronto risultati simulati esperimentali
In questultima sezione verranno messi a confronto i risultati ottenuti dalle simulazioni
effettuate su Simulink di Matlab dei tre controllori discretizzati, con le prove effettuate
sul sistema reale, a seguito dellimplementazione dei regolatori su microcontrollore.
Il riferimento che faremo inseguire sia al simulatore che al motore e` un ingresso
costante pari a 120 gradi.
Nelle prime due immagini(figure 5.1 e 5.2) viene mostrata la simulazione del
sistema con il I Controllore e limplementazione di esso sul sistema reale.
Nelle immagini(figure 5.4 e 5.5) viene mostrata la simulazione del sistema con il
Controllore PID con approssimazione dellazione derivativa e limplementazione di
esso sul sistema reale. sperimapprox
Nelle immagini(figure 5.7 e 5.8) viene mostrata la simulazione del sistema con il
Controllore PID ottimizzato e limplementazione di esso sul sistema reale.
Qui sotto riportata limplementazione di I Controllore su microprocessore con p
uguale al valore del polo da cancellare.
double Icontrollore(double desiderato, double angolo) {
54
-
Cap. 5 Confronto risultati simulati e sperimentali
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6x 103
0
20
40
60
80
100
120
140
160
180
Angolo
uscitaingresso
Figura 5.1: Implementazione di I Controllore sul sistema reale
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 520
0
20
40
60
80
100
120
140Controllore con semplice cancellazione
linear
Figura 5.2: Simulazione sistema con I Controllore
errattuale = desiderato-angolo ;
return ((Kp*errattuale)-(Kp*p*errprecedente));
errprecedente = errattuale;
}
Ora limplementazione del PID con approssimazione dellazione derivativa e del
PID ottimizzato con i parametri Kp, Ki Kd, calcolati rispettivamente nella sezione
3.3.2. e nella sezione 3.4.
55
-
Cap. 5 Confronto risultati simulati e sperimentali
0.2 0 0.2 0.4 0.6 0.8 1 1.2
80
85
90
95
100
105
110
115
120
125
Controllore con semplice cancellazione
linear
Figura 5.3: Simulazione sistema con I Controllore vista zoom
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6x 103
0
20
40
60
80
100
120
140
160
180
Angolo
uscitaingresso
Figura 5.4: Implementazione del PID con approssimazione dell azione derivativa sulsitema reale
double Function_Pid(int a, int b) {
double var=0.0;
err_attuale = a - b ;
var = (err_attuale*Kp + Ki * Integrale(err_attuale , err_precedente) + Kd*((err_attuale - err_precedente) / T_campionamento));
err_attuale = err_precedente;
return var;
}
56
-
Cap. 5 Confronto risultati simulati e sperimentali
0 0.5 1 1.5 2 2.5 3 3.5 4
20
40
60
80
100
120
140
160Controllore PID per tentativi
linear
Figura 5.5: Simulazione sistema con PID con approssimazione dell azione derivativa
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
90
100
110
120
130
140
150
Controllore PID per tentativi
linear
Figura 5.6: Simulazione sistema con PID con approssimazione dell azione derivativavista zoom
double Integrale(double c, double d) {
static double errore_integrale =0;
errore_integrale = errore_integrale + ((c - d)/2)* T_campionamento;
return errore_integrale;
}
57
-
Cap. 5 Confronto risultati simulati e sperimentali
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6x 103
0
20
40
60
80
100
120
140
160
180
Angolo
uscitaingresso
Figura 5.7: Implementazione del PID ottimizzato sul sistema reale
0 0.5 1 1.5 2 2.5
20
40
60
80
100
120
140Controllore PID con guadagni ottimizzati
linear
Figura 5.8: Simulazione sistema con PID ottimizzato
0.2 0.1 0 0.1 0.2 0.3 0.4 0.590
95
100
105
110
115
120
125
130
135
Controllore PID con guadagni ottimizzati
linear
Figura 5.9: Simulazione sistema con PID ottimizzato vista zoom
58
-
File Matlab - Identification.m
ANALISI DATI SPERIMENTALI E IDENTIFICAZIONE MODELLO LINEARE
Segue la spiegazione con commenti e codice(sfondo pagina grigia)
dellelaborazione dei dati sperimentali e le routine
per identificare la funzione di trasferimento (fdt)
che lega il valore del segnale PWM alla posizione dellasse del motore
clc
clear all
close all
CARICAMENTO DATI
seleziona i dati corrispondenti alle prove da raggruppare: devono avere
stringa = {dati/prova_1/, dati/prova_2/,dati/prova_3/};
59
-
Cap. 5 Confronto risultati simulati e sperimentali
I files delle misure (misure.txt) contegono un primo numero intero,
il tempo di campionamento in millisecondi,
e poi due colonne di numeri float separati da tabulazione semplice
CountsXrad = 5200*(2/5) /(2*pi)
Nfig = 1;
figure(Nfig)
Nfig = Nfig +1;
for i=1:length(stringa)
%caricamento dati
filep =fopen(strcat(char(stringa(i)),measures.txt),r);
Ts = 0.001*fscanf(filep, %f %d,1); %Time Sampling legge il primo valore
measures = fscanf(filep, %f %f,[2 inf]); %reading two columns of floats
measures = measures;
fclose(filep);
time(:,i) = Ts*[0:1:length(measures(:,1))-1];
dati_output(:,i) = measures(:,2); %input
dati_input(:,i) = measures(:,1);%CountsXrad*measures(:,2);
%output in radianti
dati_output(1,i) = 0;
DeltaTOld = measures(2,2); %measures(1,2);
60
-
Cap. 5 Confronto risultati simulati e sperimentali
for j=2:length(dati_output(:,i))
if(abs(measures(j,2)-measures(j-1,2)) > 3000)
dati_output(j,i) = dati_output(j-1,i) - measures(j-1,2);%
((measures(j,2)-measures(j-1,2))-4128);
else
dati_output(j,i) = dati_output(j-1,i) - (measures(j,2)-
measures(j-1,2));
end
DeltaTOld = dati_output(j,i);
end
subplot(length(stringa),1,i)
plot(time(:,i),dati_input(:,i),-r,time(:,i),dati_output(:,i),
-b,linewidth,2)
ylabel($AnalogWrite$,Interpreter,Latex)
end
legend(in,out)
% %% FILTRAGGIO DEI SEGNALI
% % Viene utilizzato un filtro passa basso
%
% %%%PARAMETRI FILTRO
%
% %guadagno statico del filtro
% K = 1; %ricorda che 1 => 20 log_{10}(1) = 0 db
% %prima pulsazione di rottura, zero
61
-
Cap. 5 Confronto risultati simulati e sperimentali
% omega1 = 2*pi * 0.0001;
% %seconda pulsazione di rottura, polo
% omega2 = 2*pi * 0.00001;
%
% tau1 = 1/omega1;
% tau2 = 1/omega2;
%
% Fs = tf([1],[tau1 1])*tf([1],[tau2 1]);
%
% Filtro = K * Fs;
%
% %%
% % Vengono calcolati i segnali filtrati
%
figure(Nfig)
Nfig = Nfig +1;
%
% for i=1:length(stringa)
%
% % %ricalcolo il vettore dei tempi
% % iinf = 1;
% % isup = length(time);
% % for j = 0:isup-iinf %length(time)
% tsim(j+1,i) = time(iinf,i) - time(1,i) + j*Ts;
end
62
-
Cap. 5 Confronto risultati simulati e sperimentali
tsim = time;
for i=1:length(stringa)
ysim(:,i) = interp1(time(:,i)-time(1,i),dati_output(:,i),tsim(:,i));
usim(:,i) = interp1(time(:,i)-time(1,i),dati_input(:,i),tsim(:,i));
yfiltrata(:,i)=ysim(:,i);
ufiltrata(:,i)=usim(:,i);
subplot(length(stringa),1,i)
plot(tsim(:,i),yfiltrata(:,i)/max(abs(yfiltrata(:,i))),-r,tsim(:,i),
ufiltrata(:,i)/max(abs(ufiltrata(:,i))),-b,linewidth,2)
ylabel($AnalogWrite$,Interpreter,Latex)
end
xlabel(Time (sec),Interpreter,Latex)
legend(output,input);
title(Filtered normalized data)
% %
%
% %ingresso filtrato
% ufiltrata(:,i) = lsim(Filtro,usim(:,i),tsim(:,i));
% %uscita (posizione) filtrata
% yfiltrata(:,i) = lsim(Filtro,ysim(:,i),tsim(:,i));
% %
% subplot(length(stringa),1,i)
% plot(tsim(:,i),ufiltrata(:,i),tsim(:,i),yfiltrata(:,i),
linewidth,1.5)
% ylabel($rad$,Interpreter,Latex)
63
-
Cap. 5 Confronto risultati simulati e sperimentali
% %title(Ingresso (sedile) e uscita(testa) filtrate)
%
% end
% xlabel(Time (sec),Interpreter,Latex)
% legend(Motor(power system too) input,Shaft angle)
%
IDENTIFICAZIONE
La funzione di trasferimento viene identificata mediante la funzione "armax"
che utilizza un algoritmo di proiezione ai minimi quadrati robustificato
in cui vengono passati il numero dei poli _na_
che si suppone abbia la funzione di trasferimento (fdt)
vera del motore-azionamento (radici del denominatore),
il numero degli zeri _nb_ (radici del numeratore),
relax
ovvero la forma della fdt reale si assume essere pari a:
%
% $\frac{b_{nb}s^{nb} + b_{nb-1}s^{nb-1}+ \dots +
b_{0}}{a_{na}s^{na} + a_{na-1}s^{na-1}+ \dots + a_{0}}.$
%
%
%%
% Passati i dati sperimentali di ingresso-uscita,
64
-
Cap. 5 Confronto risultati simulati e sperimentali
% lalgoritmo fornisce i coefficienti della fdt.
%Identifico il modello con i 2/3 dei dati acquisiti e utilizzo laltra
met~A per
%validare i risultati
for i=1:length(stringa)
for j=1:length(ufiltrata)*(2/3)-1
ufiltmeta(j,i)=ufiltrata(j,i);
yfiltmeta(j,i)=yfiltrata(j,i);
end
end
%prepara i dati unendo le diverse prove sperimentali
(TUTTI I CAMPIONI)
data = merge(iddata(yfiltrata(:,1),ufiltrata(:,1),Ts),...
iddata(yfiltrata(:,2),ufiltrata(:,2),Ts),...
iddata(yfiltrata(:,3),ufiltrata(:,3),Ts));
%prepara i dati unendo le diverse prove sperimentali
(PARTE dei CAMPIONI SPERIMENTALI)
datameta = merge(iddata(yfiltmeta(:,1),ufiltmeta(:,1),Ts),...
iddata(yfiltmeta(:,2),ufiltmeta(:,2),Ts),...
iddata(yfiltmeta(:,3),ufiltmeta(:,3),Ts));
65
-
Cap. 5 Confronto risultati simulati e sperimentali
% dataid = iddata(yfiltrata(1:floor(length(yfiltrata)/2))
,ufiltrata(1:floor(length(ufiltrata)/2)),Ts)
% datatest = iddata(yfiltrata(floor(length(yfiltrata)/2)
:length(yfiltrata)),
ufiltrata(floor(length(ufiltrata)/2),length(yfiltrata)),Ts)
% %Estimating Model Orders
% NN = struc(2:12,1:10,1:3)
% V = arxstruc(dataid,datatest,NN)
% %To find the structure that minimizes Akaikes
Information Criterion, use the following command:
% nn = selstruc(V,AIC)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%PARAMETRI DA MODIFICARE
%
% Parametri buoni ARMAX [ 4 2 0 0] pem [4 2 0 0 1 0] [8 6 0 3]
%OTTIMO [7 8 0 0]
%
na = 4%grado denominatore
nb = 2%grado numeratore
nc = 0 %e il grado del numeratore che si
66
-
Cap. 5 Confronto risultati simulati e sperimentali
associa al disturbo (vedi help)
nk = 0 %RITARDO in campioni (ad esempio se
nk=1 allora luscita risente dei dati precedenti
%al tempo nk-1)
nf = 0 %grado denominatore ingresso , per il metodo PEM
nd = 0 %grado denominatore errore , per il metodo PEM
focuses = {simulation,prediction};
focus = 2; %seleziona
%tolleranza
idtol = 1e-8; %seleziona
%numero massimo di iterazioni
maxiter = 500; %seleziona
metodo = {arx,armax,pem};
scelta = 3; %seleziona
FINE SCELTA PARAMETRI
LANCIO ALGORITMI DI IDENTIFICAZIONE
67
-
Cap. 5 Confronto risultati simulati e sperimentali
switch char(metodo(scelta))
case arx
%A(q) y(t) = B(q) u(t-nk) + e(t)
orders = [na nb nc]
modello_totale = arx(datameta,orders,focus,
char(focuses(focus)),tolerance,idtol,maxiter,maxiter)
case armax
orders = [na nb nc nk]
modello_totale = armax(datameta,orders,focus,
char(focuses(focus)),tolerance,idtol,maxiter,maxiter)
case pem
% A(q) y(t) = [B(q)/F(q)] u(t-nk) + [C(q)/D(q)] e(t)
orders =[na nb nc nd nf nk]
modello_totale = pem(datameta,orders,focus,
char(focuses(focus)),tolerance,idtol,maxiter,maxiter)
end
%Fmodello = tf(modello_totale.b,modello_totale.a,Ts)
Fmodello = zpk([2.958],[1.00000000000, 0.6671],
-0.058122,0.004)*tf([1],[1 0.5484 0.2061],0.004)
68
-
Cap. 5 Confronto risultati simulati e sperimentali
[bb aa] = tfdata(Fmodello);
num = cell2mat(bb)
den = cell2mat(aa)
% omega_n = 2*pi* (0.01)^-1;
% zeta = 0.001;
% Fmodello = 0.01*tf([1 ],[1 0])*5886,7*tf([1],
[1/omega_n^2 2*zeta/omega_n 1]);
% Fmodello = c2d(Fmodello,Ts)
Nfig = Nfig +1;
figure(Nfig)
bode(Fmodello)%,[0.1:0.1:2*pi*1/Ts*1.1])
grid on
title(Identified model bode diagram )
Nfig = Nfig +1;
figure(Nfig)
title(Exeperimental Vs Simulated )
for i=1:length(stringa)
ymodello(:,i) = lsim(Fmodello,ufiltrata(:,i),tsim(:,i));
subplot(length(stringa),1,i)
plot(tsim(:,i),yfiltrata(:,i),-b,tsim(:,i),ymodello(:,i),
-r,linewidth,2)
ylabel($AnalogWrite$,Interpreter,Latex)
end
69
-
Cap. 5 Confronto risultati simulati e sperimentali
xlabel(Time (sec),Interpreter,Latex)
legend(Experimental data,Estimated data)
%l2 = legend(Ref$_{new}$,Ref$_{old}$,
Ref$_{experimental}$)
%set(l2,Interpreter,Latex)
advice(modello_totale)
Nfig = Nfig +1;
figure(Nfig)
compare(data,modello_totale) %utilizza tutti i valori con data
title(Compare (it uses proper initial conditions for matchings))
%
% Nfig = Nfig +1;
% figure(Nfig)
% e = resid(data,modello_totale,fr)
% me = arx(e,[10 10 0]);
% bode(me,[1:0.1:180],sd,3,fill)
% title()
% grid on
%
% e = resid(data,modello_totale,corr)
% resid(datameta,modello_totale)
% title(Residui su met~A dei dati sperimentali)
% Nfig = Nfig +1;
70
-
Cap. 5 Confronto risultati simulati e sperimentali
% figure(Nfig)
% resid(data,modello_totale)
% title(Residui su tutti i dati sperimentali)
%Fcontinuous = d2c(Fmodello)
Nfig = Nfig +1;
figure(Nfig)
rlocus(Fmodello)
[nfmod,dfmod,k]=zpkdata(Fmodello,v)
71
-
Elenco delle figure
1.1 La scheda Arduino Mega. . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Schema microcontrollore ATmega1280 . . . . . . . . . . . . . . . . . 6
1.3 Configurazione dei pin. . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Supporto al motore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 PWM e Duty cycle di un segnale. . . . . . . . . . . . . . . . . . . . . 11
1.6 Diagramma a blocchi nonlineare di un motore CC . . . . . . . . . . . 12
1.7 Schema concettuale H-Bridge. . . . . . . . . . . . . . . . . . . . . . . 13
1.8 Schema dell H-Bridge integrato L293D. . . . . . . . . . . . . . . . . 14
1.9 Il PonteH costruito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.10 Schema a blocchi dei collegamenti. . . . . . . . . . . . . . . . . . . . 16
2.1 Raccolta dei dati sperimentali. . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Raccolta dei dati sperimentali con ingresso normalizzato. . . . . . . . 23
2.3 Metodo dei minimi quadrati . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 Confronto dati sperimentali con dati stimati. . . . . . . . . . . . . . . 26
2.5 Diagramma di Bode. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 Fitting dei dati sul primo ingresso. . . . . . . . . . . . . . . . . . . . 28
2.7 Fitting dei dati sul secondo ingresso. . . . . . . . . . . . . . . . . . . 28
2.8 Luogo delle radici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
72
-
ELENCO DELLE FIGURE ELENCO DELLE FIGURE
3.1 Approssimazione dellintegrale con la trasformzione bilineare . . . . . 32
3.2 Approssimazione dellintegrale con il metodo delle differenze allindietro 33
3.3 Luogo delle radici del sistema non controllato. . . . . . . . . . . . . . 34
3.4 Luogo delle radici del sistema controllato. . . . . . . . . . . . . . . . . 35
3.5 Confronto tra diagrammi di Bode del sistema controllato e sistema
originale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6 Step response - Inseguimento del gradino unitario . . . . . . . . . . . 37
3.7 PID con derivazione dellerrore . . . . . . . . . . . . . . . . . . . . . 40
3.8 PID con derivazione delluscita . . . . . . . . . . . . . . . . . . . . . 40
3.9 Luogo delle radici del sistema a tempo continuo . . . . . . . . . . . . 41
3.10 Luogo delle radici del sistema con controllore PID approssimato . . . 42
3.11 Luogo delle radici del sistema con controllore PID ottimizzato . . . . 42
3.12 Vista stretta grafici del sistema tempo continuo . . . . . . . . . . . . 43
3.13 Vista stretta grafici del sistema con controllore PID approssimato . . 44
3.14 Vista stretta grafici del sistema con controllore PID ottimizzato . . . 45
3.15 Inseguimento a gradino del sistema a tempo continuo . . . . . . . . . 45
3.16 Inseguimento a gradino del sistema con controllore PID approssimato 46
3.17 Inseguimento a gradino del sistema con controllore PID ottimizzato . 46
3.18 Confronti 1 tempo continuo . . . . . . . . . . . . . . . . . . . . . . . 47
3.19 Confronti 2 tempo continuo . . . . . . . . . . . . . . . . . . . . . . . 47
3.20 Luogo delle radici del sistema digitale con PID(z) . . . . . . . . . . . 47
3.21 Luogo delle radici del sistema digitale con PIDOP T (z) . . . . . . . . 48
3.22 Confornti 1 tempo discreto . . . . . . . . . . . . . . . . . . . . . . . . 48
3.23 Confronti 2 tempo discreto . . . . . . . . . . . . . . . . . . . . . . . . 48
73
-
ELENCO DELLE FIGURE ELENCO DELLE FIGURE
4.1 Schema di controllo con attuatore saturante . . . . . . . . . . . . . . 50
4.2 Uscita sistema controllato con I controllore lineare e saturata . . . . . 51
4.3 Uscita sistema controllato con PID(s) lineare e saturata . . . . . . . 51
4.4 Uscita sistema controllato con PIDOP T (s) lineare e saturata . . . . . 52
4.5 Schema di realizzazione di regolatore PID con desaturazione . . . . . 52
5.1 Implementazione di I Controllore sul sistema reale . . . . . . . . . . . 55
5.2 Simulazione sistema con I Controllore . . . . . . . . . . . . . . . . . . 55
5.3 Simulazione sistema con I Controllore vista zoom . . . . . . . . . . . 56
5.4 Implementazione del PID con approssimazione dell azione derivativa
sul sitema reale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.5 Simulazione sistema con PID con approssimazione dell azione derivativa 57
5.6 Simulazione sistema con PID con approssimazione dell azione derivati-
va vista zoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.7 Implementazione del PID ottimizzato sul sistema reale . . . . . . . . 58
5.8 Simulazione sistema con PID ottimizzato . . . . . . . . . . . . . . . . 58
5.9 Simulazione sistema con PID ottimizzato vista zoom . . . . . . . . . 58
74
-
Bibliografia
[1] P. Bolzern - R. Scattolini - N. Schiavoni Fondamenti di controlli automatici,
McGraw-Hill, 2008.
[2] C. Bonivento - C. Melchiorri - R. Zanasi, Sistemi di controllo digitale, Progetto
Leonardo, 1995.
75