Tes i Alessandro s Baragli A

download Tes i Alessandro s Baragli A

of 79

description

tesi

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