Sei sulla pagina 1di 79

` DEGLI STUDI DI ROMA

UNIVERSITA
TOR VERGATA
` DI INGEGNERIA
FACOLTA

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, Pap`a e Nelly,


a tutte le persone che da sempre ci sono state fino ad adesso,
e soprattutto...a me stesso!

Indice

Ringraziamenti

Introduzione

1 Apparato sperimentale

1.1

Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1

Specifiche tecniche . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2

Piattaforma software e uso I/O . . . . . . . . . . . . . . . . .

Encoder magnetico . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

Costruzione e taratura . . . . . . . . . . . . . . . . . . . . . .

1.2.2

PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Motore CC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.4

Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.4.1

14

1.2

Collegamenti . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Identificazione del modello


2.1

2.2

INDICE

17

Ricostruzione segnale e filtraggio . . . . . . . . . . . . . . . . . . . .

18

2.1.1

Funzione getAngolo( ) . . . . . . . . . . . . . . . . . . . . . .

19

2.1.2

Funzione DoEncoder . . . . . . . . . . . . . . . . . . . . . . .

20

Set-up sperimentale e dati . . . . . . . . . . . . . . . . . . . . . . . .

21

INDICE

2.3

Calcolo della funzione di trasferimento del motore . . . . . . . . . . .

3 Analisi stabilit`
a sistema
3.1

23
30

Generalit`a 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 stabilit`a digitale . . . . . . . . . . . . . . . . . . . . . . . . .

44

4 Saturazione
4.1

Desaturazione dellazione integrale

49
. . . . . . . . . . . . . . . . . . .

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 realizzazione 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 difficolt`a. Ognuno di loro ha saputo insegnarmi qualcosa, dal punto di vista umano e professionale, a suggellare il periodo pi`
u
bello della mia carriera universitaria.
Un ringraziamento particolare, infine, a colui che pi`
u di tutti mi ha seguito in
questo lungo percorso, parlo di Daniele Carnevale, professore mirabile per competenza,
professionalit`a e come persona, prima di tutto.
A tutti voi, GRAZIE!

Introduzione

Introduzione
` ben noto, dato che rientra nellesperienza comune, che per ottenere un determinato
E
obiettivo, la causa agente debba essere ad esso commisurata. Sfugge invece, assai spesso, la necessit`a 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 pu`o avvenire soltanto 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 effettivamente 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 ci`o
che riguarda quanto interessa fosse noto e calcolabile esattamente, cio`e 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

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 matematico che descriva il pi`
u fedelmente possibile landamento del processo, limplementazione del sistema di controllo, lo studio della stabilit`a del sistema a ciclo chiuso e
losservazione dei risultati sperimentali costituiscono le fasi pi`
u importanti.

Introduzione

Capitolo 1
Apparato sperimentale
In questo primo capitolo si analizzeranno gli strumenti e le tecniche
utilizzate per assemblare il sistema considerato; verranno introdotte
dunque delle specifiche sul microcontrollore Arduino, la coppia Encoder magnetico AS5045 e motore Micro Motors RH158, il sistema
di 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, motori e qualsiasi altro tipo di attuatore; pu`o essere utilizzato per limplementazione di
progetti stand-alone ma pu`o anche interagire con software gi`a 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.
1

In commercio ne esistono altri modelli, pi`


u o meno complessi, se ne citano alcuni: Nano,
Duemilanove, Mini, Pro, etc. .

Cap. 1 Apparato sperimentale

Parametro
Microcontrollore
Alimentazione
Tensione ingresso (raccomandata)
Tensione ingresso (massima)
Pin I/O Digitali
Pin ingresso Analogici
Corrente Continua per Pin I/O
Corrente Continua per Pin a 3.3V
Memoria Flash
SRAM
EEPROM
Frequenza Clock

1.1 Arduino

Valori riferimento
ATmega1280
5V
7-12V
6-20V
54 (di cui 14 in uscita PWM)
16
40mA
50mA
128 KB (di cui 4 usati dal bootloader)
8KB
4KB
16 MHz

Figura 1.2: Schema microcontrollore ATmega1280

Cap. 1 Apparato sperimentale

1.1.2

1.2 Encoder magnetico

Piattaforma software e uso I/O

Il software di Arduino `e distribuito come strumento open source espandibile. Il linguaggio di programmazione utilizza apposite librerie per la gestione dei segnali digitali
ed analogici ed `e unimplementazione di Wiring, una piattaforma di physical computing simile, che `e a sua volta basato su un altro ambiente multimediale di programmazione chiamato Processing,. Il linguaggio pu`o crescere attraverso le librerie C++
e chiunque voglia capire i dettagli tecnici pu`o 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 che
pu`o essere utilizzata per inizializzare le variabili, impostare la velocit`a di scambio dati della porta seriale e le modalit`a di funzionamento dei pin nonch`e
lattivazione di un gran numero di funzioni di libreria .
Loop(): `e la funzione principale e viene chiamata ripetutamente fino a che la
scheda 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 dell angolo `e necessario un semplice magnete bipolare (magnetizzato diametralmente)
rotante sopra il centro del chip. La misurazione dellangolo assoluto fornisce una indicazione 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 funzionamento dellencoder devono essere di 6mm di diametro e ai 2mm di altezza, in modo
da consentire la creazione di un campo magnetico che va da un minimo di 45mT ad

Cap. 1 Apparato sperimentale

1.2 Encoder magnetico

un massimo di 75mT (valore di picco). Durante l esperienza `e stato verificato che


lesposizione dell encoder ad un campo magnetico superiore a quello raccomandato
pu`o creare danni irreversibili ai componenti del microchip e quindi causarne la rottura.
Caratteristica fondamentale ai fini del montaggio risulta essere il posizionamento del magnete rispetto al microchip. La realizzazione di questo progetto risulta
condizionata da una elevata sensibilit`a 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 incollato 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
capacit`a 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

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 c`e tra langolo considerato
e la rispettiva onda quadra, con ton e tof f i tempi di alto e basso del segnale.

P osition =

ton 4097
1
ton + tof f

(1.2.1)

I valori caratteristici del segnale PWM considerato, cio`e quello proveniente dallencoder, avranno le seguenti grandezze:

10

Cap. 1 Apparato sperimentale

1.3 Motore CC

Figura 1.5: PWM e Duty cycle di un segnale.


PWM
Frequenza
Livello di quantizzazione minima
Livello di quantizzazione massima

1.3

Valori riferimento
244 Hz
1 microsecondo
4096 microsecondo

Motore CC

Un motore CC alimentato con tensioni di statore e di rotore esercita una coppia sullalbero 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 esercitata sullalbero del motore. Se Tl denota tale coppia di carico, allora si ha la seguente
equazione del moto:

Tm Tl = J

d
+ f
dt

(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 fondamentali:

12

Cap. 1 Apparato sperimentale

Parametro
Tensione nominale
Rapporto:1
Coppia massima
Velocit`a (senza carico)
Velocit`a (con coppia max.)
Corrente (senza carico)
Corrente (con coppia max.)

1.4 Ponte H

Valori riferimento
12-24V
94.37
60Ncm
66rpm
45rpm
70-140mA
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.) pu`o essere
controllato con un segnale PWM, in grado di regolare la corrente che scorre allinterno
del motore, e quindi la velocit`a 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 pu`o 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. Lintensit`a 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 confrontato 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 costringere il motore a ruotare in una direzione prestabilita; infine con listruzione AnalogWrite(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
2

Si ricorda che la scrittura analogica pu`o 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 finch`e lerrore non diventa nullo,
cio`e 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 verr`a trattata lidentificazione del modello, cio`e
la fase in cui si calcola la funzione di trasferimento che descrive
landamento del sistema a ciclo chiuso.
Lidentificazione del sistema nasce dalla necessit`a di stimare un modello matematico che descriva le caratteristiche del sistema a partire da dati sperimentali. Vengono 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)
y(t) = y(1), y(2), y(3)....y(N)

Ingressi al motore
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 verr`a 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 verr`a 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 validazione del modello ottenuto, tramite la quale si stabilisce la bont`a del modello ed
eventualmente se ne cambia la funzione di trasferimento o si effettuano nuovi esperimenti. La validazione verr`a 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 (Identification.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 sensibilit`a 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 =

2
Tc

la pulsazione di campionamen-

to (detta pulsazione di Nyquist) ove Tc il periodo di campionamento, e sia c la pi`


u
alta componente spettrale del segnale tempo continuo x(t). Il segnale x(t) `e completamente 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 velocit`a 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.7

66
)
60

244 > 208.34

(2.1.2)

(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, cio`e la velocit`a 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 sar`a 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 corrispondenti 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 verr`a illustrato come, attraverso alcune funzioni di libreria Arduino, 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 utilizzata la funzione di libreria AttachInterrupt impostata in modalit`a 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 controllo 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
1

La maggior parte dei dispositivi Arduino ne posseggono due, la versione Mega addirittura sei.

20

Cap. 2 Identificazione del modello

angolo =

2.2 Set-up sperimentale e dati

Dtime 360
4098

(2.1.5)

con il valore 4098 pari alla risoluzione dellencoder magnetico.

2.2

Set-up sperimentale e dati

Come gi`a 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 gradino, servir`a 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 sinergia Arduino-Ponte H, servir`a 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

AnalogW rite

Cap. 2 Identificazione del modello

2.2 Set-up sperimentale e dati

4000
2000
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

0.2

0.4

0.6

0.8

1.2

1.4

1.6

AnalogW rite

x 10

1
0

AnalogW rite

x 10

in
out

1
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

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

AnalogW rite

AnalogW rite

Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore

1
0.5
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1
0.5
0

AnalogW rite

Filtered normalized data


1
output
input

0.5
0

0.2

0.4

0.6

0.8
Time (sec)

1.2

1.4

1.6

Figura 2.2: Raccolta dei dati sperimentali con ingresso normalizzato.

2.3

Calcolo della funzione di trasferimento del motore

Il metodo dei minimi quadrati `e una tecnica di ottimizzazione che permette di trovare
una funzione che si avvicini il pi`
u 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 pu`o 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 =

N
X

e2k

(2.3.1)

k=1

con e lerrore di modello, ed N il numero di campioni misurati.


La funzione di trasferimento calcolata dal grazie allalgoritmo sopracitato ed implementato 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)(z 2 + 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 pi`
u 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 propriet`a
che definisce la Deadzone produce il discostamento dalla linea di stima.

25

AnalogW rite

Cap. 2 Identificazione del modello 2.3 Calcolo della funzione di trasferimento del motore

5000
0
5000
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

0.2

0.4

0.6

0.8

1.2

1.4

1.6

AnalogW rite

x 10

0
2
0

AnalogW rite

x 10

Experimental data
Estimated data

0
2
0

0.2

0.4

0.6

0.8
Time (sec)

1.2

1.4

1.6

Figura 2.4: Confronto dati sperimentali con dati stimati.

Nella figura 2.5 viene mostrato il diagramma di Bode della funzione di trasferimento calcolata in cui troviamo i poli nei punti z = 1, z 0.66, due poli complessi e
coniugati in z 0.27 + 0.25j e z 0.27 0.25j e uno zero in z 2.9. La presenza
degli 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

Identified model bode diagram


40

Magnitude (dB)

30
20
10
0
10
20
360

Phase (deg)

180
0
180
360
540
0
10

10

10

10

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

y1. (sim)
18000

data; measured
modellototale; fit: 97.55%

16000
14000
12000

y1

10000
8000
6000
4000
2000
0

0.5

1.5

Figura 2.6: Fitting dei dati sul primo ingresso.

Compare (it uses proper initial conditions for matchings)


data; measured
modellototale; fit: 97.28%

16000
14000
12000

y1

10000
8000
6000
4000
2000
0
0.5

1.5

Figura 2.7: Fitting dei dati sul secondo ingresso.

Nel piano Z viene graficato il luogo delle radici che mostra la stabilit`a 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 verr`a esplicitato nel capitolo 3 (Figura 2.8)

Root Locus

Imaginary Axis

1.5

0.5

0.5

1.5

Real Axis

Figura 2.8: Luogo delle radici

29

Capitolo 3
Analisi stabilit`
a sistema
In questo capitolo verr`a trattato il problema della stabilit`a del sistema ad un ingresso e ad unuscita, partendo dalla ricostruzione
del segnale la cui stima produrr`a il calcolo dellerrore, passando per
la realizzazione di due diversi controllori, uno realizzato empiricamente, e laltro costruito grazie allutilizzo delle funzioni di libreria
Matlab.

3.1

Generalit`
a 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 stabilit`


a sistema

3.1.1

3.1 Generalit`
a del controllore

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, cio`e il regolatore viene progettato direttamente nel dominio discreto, in cui viene in seguito valutata la stabilit`a
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

y(t) dt
(k1)Tc

[y(kTc ) + y((k 1)Tc ]Tc


2

(3.1.1)

Lapprossimazione introdotta `e rappresentata in Fig. 3.1,

31

Cap. 3 Analisi stabilit`


a sistema

3.1 Generalit`
a 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 z1
T z+1

(3.1.2)

La seconda tecnica descritta chiamata Metodo delle differenze allindietro viene


effettuata considerando la segente approssimazione dellintegrale

kTc

y(t) dt Tc y(kTc ).

(3.1.3)

(k1)Tc

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=

z1
Tz

(3.1.4)

32

Cap. 3 Analisi stabilit`


a 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, cio`e la
stabilit`a 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 velocit`a 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)(z 2 + 0.548z + 0.2061)

(3.2.2)

33

Cap. 3 Analisi stabilit`


a 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.

Root Locus

Imaginary Axis

1.5

0.5

0.5

1.5

Real Axis

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 stabilit`


a sistema
3.3 Controllore PID con approssimazione dellazione derivativa

Root Locus

1.5

Imaginary Axis

0.5

0.5

1.5

0.5

0.5

Real Axis

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 abbreviato come PID, generalmente viene espresso attraverso la relazione:

C(s) = Kp +

Ki
+ Kd s
s

(3.3.1)

con

Z
u(t) = Kp e(t) + Ki

e( ) d + Kd
0

d
e(t).
dt

(3.3.2)

35

Cap. 3 Analisi stabilit`


a sistema
3.3 Controllore PID con approssimazione dellazione derivativa

Bode Diagram
Gm = 8.77 dB (at 570 rad/sec) , Pm = 64 deg (at 32.8 rad/sec)
40

Magnitude (dB)

30
20
10
0
10
20
360
F
CF

Phase (deg)

180
0
180
360
540
0
10

10

10

10

Frequency (rad/sec)

Figura 3.5: Confronto tra diagrammi di Bode del sistema controllato e sistema
originale
I parametri fondamentali ai fini del progetto di un controllore PID sono:
Kp Lazione proporzionale offre un contributo proporzionale allerrore e diminuisce
man mano che lerrore si avvicina a zero.
Ki Lazione integrale fa s` che il controllore si ricordi dei valori passati del
segnale 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 stabilit`


a sistema
3.3 Controllore PID con approssimazione dellazione derivativa

Step Response
1.2

Amplitude

0.8

0.6

0.4

0.2

0.2

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

0.09

Time (sec)

Figura 3.6: Step response - Inseguimento del gradino unitario

k
X
(e(jTc ) + e((j 1)Tc )
(e(kTc ) e(k 1)Tc )
Tc ) + Kd
.
u(kTc ) = Kp e(kTc ) + Ki (
2
T
c
j=1

(3.3.3)
La parte relativa allazione proprozionale viene discretizzata immediatamente essendo 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 stabilit`


a sistema
3.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 pi`
u 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 esclusivamente 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 controllata
presenta 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
0.6Ku

Ki
Kd
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 stabilit`


a sistema
3.3 Controllore PID con approssimazione dellazione derivativa

Kp +

Ki
Kd s
Kp s(1 + N s) + Ki (1 + N s) + Kd s2
+
=
s
1 + Ns
s(1 + N s)
2
s (Kp N + Kd ) + s(Kp + Ki N ) + Ki
=
s(1 + N s)

(3.3.4)
(3.3.5)

La sintesi per tentativi ha condotto alla costruzione del seguente compensatore:

P ID(s) =
ponendo in N =

1
400

0.00625s2 + 0.25s + 2.5


0.0025s2 + s

(3.3.6)

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:

Kp N + Kd = 0.00625
Kp + Ki = 0.25

Ki = 2.5

Risolvendo tale sistema si ottiene il calcolo dei parametri Kp Ki Kd .

Kp = 0.2437
Ki = 0.0056

Ki = 2.5

3.3.3

Approssimazione dellazione derivativa

Nel classico schema di controllo in retroazione in figura 3.8 lazione derivativa `e effettuata sullerrore e; in questo caso, in presenza di uno scalino del segnale di riferimento 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 stabilit`


a sistema
3.3 Controllore PID con approssimazione dellazione derivativa

moderazione del controllo e pu`o provocare la saturazione dellattuatore e lallontanamento del sistema dalla condizione di linearit`a con la quale normalmente si progetta
il regolatore.
Per queste ragioni frequentemente lazione derivativa `e esercitata sulla sola variabile di uscita y, come mostrato nella figura 4.2.
Poich`e quella considerata `e luscita di un sistema che usualmente ha le caratteristiche 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 stabilit`


a sistema

3.4

3.4 Controllore PID ottimizzato

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:

P IDopt= 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 confronto il semplice sistema a tempo continuo ricavato dalla trasformazione da tempo
discreto a tempo continuo della funzione di trasferimento W (z) con Matlab, il sistema controllato con il PID con approssimazione dellazione derivativa, e infine il PID
ottimizzato dal calcolatore.
Root Locus
1000
800
600

Imaginary Axis

400
200
0
200
400
600
800
1000
500

500

1000

1500

2000

Real Axis

Figura 3.9: Luogo delle radici del sistema a tempo continuo

41

Cap. 3 Analisi stabilit`


a 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.
Root Locus
1000
800
600

Imaginary Axis

400
200
0
200
400
600
800
1000
500

500

1000

1500

2000

2500

Real Axis

Figura 3.10: Luogo delle radici del sistema con controllore PID approssimato

Root Locus
800

600

400

Imaginary Axis

200

200

400

600

800
500

500

1000

1500

2000

Real Axis

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 stabilit`


a sistema

3.4 Controllore PID ottimizzato

Root Locus Editor for Open Loop 1 (OL1)

OpenLoop Bode Editor for Open Loop 1 (OL1)


30

0.6

20

0.4
10

0.2
0

0.2

10

0.4

20

0.6
30
0.8
0.6

0.4

0.2

0.2

G.M.: 6.95 dB
40 Freq: 89.4 rad/sec
Stable loop
50
720

0.4

Bode Editor for Closed Loop 1 (CL1)


20
0

540
20
40
720

360

180

360

P.M.: 39.9 deg


Freq: 45.8 rad/sec
0
0
10

0
1

10

10
10
Frequency (rad/sec)

10

10

10
Frequency (rad/sec)

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 capacit`a 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 sensitivit`a
sullingresso, con la celeste la sensitivit`a sulluscita. Infine vengono mostrati i confronti
dei diagrammi di Bode del sistema con i tre controllori.

43

Cap. 3 Analisi stabilit`


a sistema

3.5 Verifica stabilit`


a digitale

Root Locus Editor for Open Loop 1 (OL1)

OpenLoop Bode Editor for Open Loop 1 (OL1)


60

0.6
40

0.4
0.2

20
0
0.2

0.4
20

0.6
0.8
0.6

0.4

0.2

0.2

40 G.M.: 8.31 dB
Freq: 871 rad/sec
Stable loop
60
720

0.4

Bode Editor for Closed Loop 1 (CL1)


50

540

50
720

360

180

360

P.M.: 44.5 deg


Freq: 11.3 rad/sec
0

0
0
10

10
Frequency (rad/sec)

10

10

10
10
Frequency (rad/sec)

10

Figura 3.13: Vista stretta grafici del sistema con controllore PID approssimato

3.5

Verifica stabilit`
a digitale

Terminato il design analitico dei due controllori P ID(s) e P IDOP T (s) nel dominio di
Laplace, si verifica a posteriori il comportamento dinamico dellintero sistema digitale
con controllore discretizzato, con uno dei metodi gi`a 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 stabilit`a 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 stabilit`


a sistema

3.5 Verifica stabilit`


a digitale

Root Locus Editor for Open Loop 1 (OL1)

OpenLoop Bode Editor for Open Loop 1 (OL1)


100

0.6
0.4
0.2
50
0
0.2
0.4
0

0.6
0.8
0.6

0.4

0.2

0.2

G.M.: 12 dB
Freq: 81 rad/sec
Stable loop

0.4

Bode Editor for Closed Loop 1 (CL1)


50

50
720

540

50
720

360

180

360

P.M.: 60 deg
Freq: 24.3 rad/sec
0
2
10

0
0

10
10
Frequency (rad/sec)

10

10

10
10
Frequency (rad/sec)

10

Figura 3.14: Vista stretta grafici del sistema con controllore PID ottimizzato

Step Response
1.5

Amplitude

1
0.5
0
0.5
0

0.05

0.1

0.15

0.2

0.25

0.15

0.2

0.25

Time (sec)
Step Response
1.5

Amplitude

1
0.5
0
0.5
0

0.05

0.1
Time (sec)

Figura 3.15: Inseguimento a gradino del sistema a tempo continuo

45

Cap. 3 Analisi stabilit`


a sistema

3.5 Verifica stabilit`


a digitale

Step Response
3

Amplitude

2
1
0
1
0

0.2

0.4

0.6

0.8

1.2

1.4

Time (sec)
Step Response
3

Amplitude

2
1
0
1
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

Time (sec)

Figura 3.16: Inseguimento a gradino del sistema con controllore PID approssimato

Step Response
1.5

Amplitude

1
0.5
0
0.5
0

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16

0.18

Time (sec)
Step Response
3

Amplitude

2
1
0
1
0

10

15

20

25

30

Time (sec)

Figura 3.17: Inseguimento a gradino del sistema con controllore PID ottimizzato

46

3.5 Verifica stabilit`


a digitale

Bode Diagram
Gm = 6.95 dB (at 89.4 rad/sec) , Pm = 39.9 deg (at 45.8 rad/sec)
100
0
100
720

Phase (deg)

Magnitude (dB)

Cap. 3 Analisi stabilit`


a sistema

Processo

360
0
0
10

10

10

10

10

10

Bode Diagram
Gm = 8.31 dB (at 871 rad/sec) , Pm = 44.5 deg (at 11.3 rad/sec)
100
0
100
720

Phase (deg)

Magnitude (dB)

Frequency (rad/sec)

Processo e controllore PID per tentativi

360
0
1
10

10

10

10

10

10

10

Frequency (rad/sec)

Bode Diagram
Gm = 11.9 dB (at 80.9 rad/sec) , Pm = 59.9 deg (at 24.4 rad/sec)
100
0
100
720

Phase (deg)

Magnitude (dB)

Figura 3.18: Confronti 1 tempo continuo

Processo e controllore PID ottimizzato

360
0
2
10

10

10

10

10

10

10

Phase (deg)

Magnitude (dB)

Frequency (rad/sec)
Bode Diagram
Gm = 8.77 dB (at 570 rad/sec) , Pm = 64 deg (at 32.8 rad/sec)
50
0
50
360
0

Processo e controllore a cancellazione

360
720
0
10

10

10

10

Frequency (rad/sec)

Figura 3.19: Confronti 2 tempo continuo

Root Locus
1
0.8
0.6

Imaginary Axis

0.4
0.2
0
0.2
0.4
0.6
0.8
1
4

Real Axis

Figura 3.20: Luogo delle radici del sistema digitale con P ID(z)

47

Cap. 3 Analisi stabilit`


a sistema

3.5 Verifica stabilit`


a digitale

Root Locus
2.5
2
1.5

Imaginary Axis

1
0.5
0
0.5
1
1.5
2
2.5
1

Real Axis

Bode Diagram
Gm = 6.95 dB (at 89.4 rad/sec) , Pm = 39.9 deg (at 45.8 rad/sec)
100
0
100
720

Phase (deg)

Magnitude (dB)

Figura 3.21: Luogo delle radici del sistema digitale con P IDOP T (z)

Processo

360
0
0
10

10

10

10

10

10

Phase (deg) Magnitude (dB)

Frequency (rad/sec)
Bode Diagram
Gm = 8.74 dB (at 566 rad/sec) , Pm = 50.6 deg (at 10.5 rad/sec)
100
0
100
360
0

Processo e controllore PID per tentativi

360
720
1
10

10

10

10

10

Frequency (rad/sec)

Phase (deg) Magnitude (dB)

Figura 3.22: Confornti 1 tempo discreto


Bode Diagram
Gm = 10.2 dB (at 67.9 rad/sec) , Pm = 55.8 deg (at 24.3 rad/sec)
100
0
100
360
0

Processo e controllore PID ottimizzato

360
720
2
10

10

10

10

10

10

Phase (deg)

Magnitude (dB)

Frequency (rad/sec)
Bode Diagram
Gm = 8.77 dB (at 570 rad/sec) , Pm = 64 deg (at 32.8 rad/sec)
50
0
50
360
0

Processo e controllore a cancellazione

360
720
0
10

10

10

10

Frequency (rad/sec)

Figura 3.23: Confronti 2 tempo discreto

48

Capitolo 4
Saturazione
Nella pratica, luscita di qualsiasi regolatore viene applicata ad un
dispositivo che presenta saturazione, cio`e il comando con cui viene
attuato `e vincolato a dei valori massimi e minimi. Questo fattore,
alla base della nonlinearit`a dei sistemi e della degradazione delle
leggi di controllo, ha avuto un importanza rilevante ai fini dello
studio del sistema. Nel seguente capitolo verr`a illustrato il problema
e unapproccio alla risoluzione dello stesso.

4.1

Desaturazione dellazione integrale

La presenza combinata dellazione integrale e di una saturazione dovuta allattuatore provoca un effetto di tipo non lineare che pu`o deteriorare significativamente le
prestazioni del sistema di controllo. Per analizzare pi`
u in dettaglio questo fenomeno,
si ipotizzi inizialmente e per semplicit`a che il regolatore sia puramente integrale e che
lattuatore, con ingresso u e uscita m sia descritto dalla relazione

uM u(t) < uM
u(m)= u(t) |u(t)| uM

uM
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 dellintegratore, che coincide con la sua uscita u, cresce in modulo sempre pi`
u. Ci`o 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 operare in zona lineare, cio`e si abbia m(t) = u(t). In altri termini, si deve attendere la
scarica dellazione integrale. Sarebbe invece molto pi`
u 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, pi`
u comunemnete
dallinglese di integral wind-up.

50

Cap. 4 Saturazione

4.1 Desaturazione dellazione integrale

Controllore con semplice cancellazione


140
linear
saturated

120
100
80
60
40
20
0
20
0

10

Figura 4.2: Uscita sistema controllato con I controllore lineare e saturata


Nelle immagini seguenti vengono mostrate le simulazioni dei sistemi a tempo continuo 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).
Controllore PID per tentativi
180
linear
saturated

160
140
120
100
80
60
40
20
0
20
0

10

Figura 4.3: Uscita sistema controllato con P ID(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 influenzata 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

Controllore PID con guadagni ottimizzati


140
linear
saturated

120
100
80
60
40
20
0
20
0

10

Figura 4.4: Uscita sistema controllato con P IDOP T (s) lineare e saturata
leffettiva variabile m. Per ovviare a ci`o, 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, poich`e usualmente 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 , cio`e il sistema torna a funzionare con comportamento
lineare.

53

Capitolo 5
Confronto risultati simulati e
sperimentali
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

180
uscita
ingresso

160
140

Angolo

120
100
80
60
40
20
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6
3

x 10

Figura 5.1: Implementazione di I Controllore sul sistema reale


Controllore con semplice cancellazione
140
linear
120
100
80
60
40
20
0
20
0

0.5

1.5

2.5

3.5

4.5

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

Controllore con semplice cancellazione


linear

125
120
115
110
105
100
95
90
85
80
0.2

0.2

0.4

0.6

0.8

1.2

Figura 5.3: Simulazione sistema con I Controllore vista zoom


180
uscita
ingresso

160
140

Angolo

120
100
80
60
40
20
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6
3

x 10

Figura 5.4: Implementazione del PID con approssimazione dell azione derivativa sul
sitema 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

err_attuale = err_precedente;
return var;
}

56

Cap. 5 Confronto risultati simulati e sperimentali

Controllore PID per tentativi


160
linear
140
120
100
80
60
40
20

0.5

1.5

2.5

3.5

Figura 5.5: Simulazione sistema con PID con approssimazione dell azione derivativa
Controllore PID per tentativi
linear
150
140
130
120
110
100
90

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

Figura 5.6: Simulazione sistema con PID con approssimazione dell azione derivativa
vista 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

180
uscita
ingresso

160
140

Angolo

120
100
80
60
40
20
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6
3

x 10

Figura 5.7: Implementazione del PID ottimizzato sul sistema reale


Controllore PID con guadagni ottimizzati
140
linear
120

100

80

60

40

20

0.5

1.5

2.5

Figura 5.8: Simulazione sistema con PID ottimizzato


Controllore PID con guadagni ottimizzati
135

linear

130
125
120
115
110
105
100
95
90
0.2

0.1

0.1

0.2

0.3

0.4

0.5

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:

% <latex>
% $\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}}.$
% </latex>
%
%%
% 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. . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Schema microcontrollore ATmega1280 . . . . . . . . . . . . . . . . .

1.3

Configurazione dei pin. . . . . . . . . . . . . . . . . . . . . . . . . . .

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 P ID(z) . . . . . . . . . . .

47

3.21 Luogo delle radici del sistema digitale con P IDOP 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 P ID(s) lineare e saturata . . . . . . .

51

4.4

Uscita sistema controllato con P IDOP 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 derivativa 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