progettazione, realizzazione e controllo di un sistema cart and beam

66
Universit` a degli Studi di Trieste DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA Corso di Laurea Triennale in Ingegneria dell’Informazione Progetto, realizzazione e controllo di un sistema Cart and Beam Candidato: Gian Mauro Musso Relatore: Gianfranco Fenu Correlatore: Felice Andrea Pellegrino Anno Accademico 2014-2015

Upload: gian-mauro-musso

Post on 19-Feb-2017

398 views

Category:

Engineering


10 download

TRANSCRIPT

Page 1: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Universita degli Studi di Trieste

DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA

Corso di Laurea Triennale in Ingegneria dell’Informazione

Progetto, realizzazione e controllo di un sistema Cart andBeam

Candidato:

Gian Mauro MussoRelatore:

Gianfranco Fenu

Correlatore:

Felice Andrea Pellegrino

Anno Accademico 2014-2015

Page 2: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Sommario

Lo scopo di questo elaborato è quello di costruire e progettare un sistemadel tipo Ball & Beam, famoso problema didattico della teoria del controllo.Infatti, nonostante il sistema sia di facile comprensione, non è altrettantoimmediato il progetto del controllore, poichè si tratta di un sistema instabilein anello aperto e si presta a varie tecniche per il progetto del regolatore,classiche e moderne. A seguito di alcune modifiche riguardanti la strutturadel sistema, è stato successivamente rinominato in Cart and Beam.

Page 3: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Ringraziamenti

Desidero ringraziare tutti coloro che hanno contribuito in qualunque forma alcompletamento di questo lavoro e percorso.

Anzitutto vorrei ringraziare la mia famiglia, per il loro costante suppor-to e comprensione, anche nei momenti più difficili. Vorrei ringraziare anche imiei amici, a partire da quelli di una vita, fino a quelli che lo sono diventatidurante il mio corso di studi, per tutte le avventure passate assieme in questianni.

Ringrazio calorosamente anche il relatore, il prof. Gianfranco Fenu, peril costante supporto e per le sue preziose indicazioni nell’arco di questo per-corso di tesi, e il correlatore prof. Felice Andrea Pellegrino.

Un dovuto ringraziamento va inoltre a Davide, al prof. Antonio Boscoloe a tutti gli altri ragazzi del laboratorio APL che mi hanno aiutato, ascoltatoe fornito suggerimenti, oltre ad aver sopportato i continui rumori provenientidagli esperimenti che ho svolto.

Infine, ringrazio tutte le altre persone che ci sono state e che ci saranno.

Gian Mauro Musso

1

Page 4: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Indice

1 Introduzione 41.1 Generalità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Rassegna bibliografica . . . . . . . . . . . . . . . . . . . . . . 51.3 Configurazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4 Sensori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4.1 Sensori di posizione . . . . . . . . . . . . . . . . . . . . 81.4.2 Sensori angolari . . . . . . . . . . . . . . . . . . . . . . 9

1.5 Microcontrollore . . . . . . . . . . . . . . . . . . . . . . . . . . 111.6 Materiali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.7 Modello fisico del sistema . . . . . . . . . . . . . . . . . . . . 12

1.7.1 Modello matematico del vagoncino . . . . . . . . . . . 121.7.2 Modello matematico della barra . . . . . . . . . . . . . 151.7.3 Modello matematico del motore DC . . . . . . . . . . . 16

2 Operazioni preliminari 172.1 Scelta e descrizione dei componenti . . . . . . . . . . . . . . . 17

2.1.1 Sensore ultrasonico . . . . . . . . . . . . . . . . . . . . 172.1.2 Motore DC . . . . . . . . . . . . . . . . . . . . . . . . 192.1.3 Albero motore, giunto e cuscinetti . . . . . . . . . . . . 202.1.4 Driver motore . . . . . . . . . . . . . . . . . . . . . . . 202.1.5 Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2 Caratterizzazione del sensore ultrasonico . . . . . . . . . . . . 222.3 Costruzione del sistema . . . . . . . . . . . . . . . . . . . . . . 242.4 Sviluppo del software per l’encoder . . . . . . . . . . . . . . . 26

3 Identificazione del sistema 283.1 Differenziazione numerica . . . . . . . . . . . . . . . . . . . . 283.2 Stima della funzione di trasferimento . . . . . . . . . . . . . . 31

2

Page 5: Progettazione, realizzazione e controllo di un sistema Cart and Beam

INDICE 3

4 Problemi riscontrati e nuovo motore 354.1 Backlash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2 Effetti del backlash sul controllo . . . . . . . . . . . . . . . . . 364.3 Motore passo-passo . . . . . . . . . . . . . . . . . . . . . . . . 374.4 Pilotaggio del motore passo-passo . . . . . . . . . . . . . . . . 39

4.4.1 Accelstepper . . . . . . . . . . . . . . . . . . . . . . . . 424.4.2 Multithreading software . . . . . . . . . . . . . . . . . 42

5 Progetto del regolatore del sistema 455.1 Regolatori PID . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1.1 PID a segnali campionati . . . . . . . . . . . . . . . . . 485.1.2 Anti-windup . . . . . . . . . . . . . . . . . . . . . . . . 49

5.2 Taratura del regolatore PID . . . . . . . . . . . . . . . . . . . 50

6 Conclusioni e sviluppi futuri 53

Appendici 56

A 56A.1 Codice di comunicazione seriale fra Matlab e Arduino . . . . . 56A.2 Interfacciamento encoder con Arduino . . . . . . . . . . . . . 57A.3 Programma del sistema Cart and Beam . . . . . . . . . . . . . 58

Page 6: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Capitolo 1

Introduzione

1.1 GeneralitàIl sistema denominato "Ball & Beam" è largamente usato in molti laboratorididattici per l’apprendimento delle teorie del controllo. La sua ideazione èlegata a problemi reali come la stabilizzazione orizzontale di un aeroplanodurante l’atterraggio o turbolenze.

Ci sono due gradi di libertà in questo sistema: uno è la dinamica dellapalla che rotola sopra la barra, mentre l’altro è la barra che ruota rispetto alsuo baricentro. Lo scopo di questo sistema è quello di controllare la posizionedella palla rispetto ad un desiderato punto di riferimento stabilito. Il segnaledi controllo, derivato dal confronto fra la posizione effettiva misurata dellapalla e la posizione desiderata della stessa, viene utilizzato per pilotare unazionamento: la coppia generata dal motore produce la rotazione della barraverso l’angolo desiderato, fino alla stabilizzazione della palla nella posizioneobiettivo.

Il sistema è instabile in anello aperto e non lineare. L’instabilità in anelloaperto può essere ovviata mediante un controllore ad anello chiuso, mentreper quanto riguarda la non linearità del problema, essa non è significativa sela barra si inclina di un piccolo angolo rispetto alla posizione orizzontale.

A seguito di alcuni test preliminari svolti sul sensore di posizione, è sta-ta scelta una leggera modifica al sistema: in sostituzione della palla, è statoposto un vagoncino che si sposterà lungo la barra su dei binari. Di fatto ilsistema potrebbe essere quindi d’ora in poi chiamato Cart and Beam.

4

Page 7: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 5

1.2 Rassegna bibliograficaIl sistema "Ball & Beam", come detto, è già stato costruito precedentementeda varie organizzazioni. Di seguito una panoramica riguardante le variesoluzioni adottate da alcune di esse [11].

Arroyo nel 2005 costruì il sistema adottando un cavo resistivo come sen-sore per misurare la posizione della palla, che si può comportare alla streguadi un potenziometro, se la palla è di materiale conduttore. Il segnale dalsensore è processato da un DSP, fornendo la tensione adeguata da un motorein continua provvisto di riduttore.

La posizione della palla è controllata da un regolatore PD semplice da pro-gettare ma, non essendovi stato inserito alcun sensore per la misurazionedell’inclinazione della barra, conseguentemente non è stato progettato alcunregolatore per l’inclinazione di essa; per questo motivo, il sistema potrebbenon essere robusto alla variabilità dei parametri.

Figura 1.1: "Ball on balancing beam" costruito da Arroyo

Page 8: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 6

Il dipartimento di Ingegneria Elettrica della Lakehead University1 ha proget-tato un sistema con un motoriduttore in continua, un sensore a cavo resistivoper la posizione della palla e un encoder digitale per la misurazione dell’angolodi inclinazione della barra. Questo sistema ha un ingresso (la tensione fornitaal motore) e due uscite (la posizione della palla e l’angolo della barra) ed ècontrollato da un regolatore LQR.

Figura 1.2: "Ball and Beam Balancer" costruito dall’Università di Lakehead

Quanser (2006) ha presentato il suo prodotto commerciale denominato Balland Beam Module2, consistente in un sensore a cavo resistivo e un servomotorein continua con riduttore. Il sistema può essere controllato da un regolatorea base stato o PID.

Come si vede in Figura 1.3, questo sistema presenta una differente confi-gurazione, con il motore che agisce ad una estremità della barra (anzichèessere posto al centro), mentre l’altra estremità è fissata. Grazie all’effettoleva, può essere impiegato un motore meno potente, ma diventa più difficileda costruire, poiché diventa necessaria la presenza di un braccio meccanicoche accoppi barra e motore.

Robert Hirsh nel 1999 ha costruito il suo Ball on Beam System3, utilizzandoun sensore ultrasonico per la misura della posizione della palla, mentre

1Elaborato disponibile su: http://flash.lakeheadu.ca/~amalyshe/5969/report-official.pdf

2Pagina ufficiale: http://www.quanser.com/products/ball_beam3Elaborato disponibile su http://www.ro.feri.uni-mb.si/predmeti/skup_sem/

projekt1/shandor.pdf

Page 9: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 7

Figura 1.3: Modulo Ball & Beam prodotto da Quanser

l’angolazione della barra è misurata con un potenziometro. Un motoriduttoreDC (un motore in continua provvisto di un riduttore integrato), come si vedein Figura 1.4, è stato montato direttamente al baricentro della barra e ilsistema è controllato da un regolatore PD.

Figura 1.4: "Ball on Beam System" di Hirsh

1.3 ConfigurazioniAnalizzando i progetti già effettuati in precedenza, si può facilmente intuireche ci sono due principali configurazioni per la costruzione del sistema:

• barra supportata dal motore direttamente collegato al suo baricentro

• barra supportata da due braccia alle sue estremità, uno fisso e unomobile con il motore

Page 10: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 8

La prima configurazione è sicuramente la più facile da realizzare fisicamente,oltre al vantaggio che il motore non subisce alcun momento meccanico causatodalla barra. La seconda è, invece, più difficile da costruire ma, grazie all’effettoleva, per ruotare la barra può essere sufficiente un motore meno potente.In sede di progetto, è stata preferita la prima configurazione proprio a causadella sua semplicità realizzativa.

1.4 SensoriIl sistema Cart and Beam, per essere stabilizzabile e più facilmente controllabi-le, necessita di due sensori di misura: quello della posizione del vagoncino sullabarra e quello dell’angolo di inclinazione della barra rispetto alla direzioneorizzontale, di fatto un sensore lineare ed uno angolare.

1.4.1 Sensori di posizione

Dei possibili sensori per la posizione del vagoncino sono:

• sensore a cavo resistivo: realizzato mediante la posa di due cavi resistivilungo il tratto percorso dal vagoncino, a cui si applica una differenzadi potenziale. Se il vagoncino fosse anch’esso di materiale conduttore,si potrebbe rilevare un potenziale diverso a seconda della posizionedel vagoncino: di fatto, il suo funzionamento ricorda quello di unpotenziometro lineare.

• sensore ultrasonico: sfrutta la riflessione delle onde sonore. La distan-za viene misurata valutando il tempo del ritorno dell’eco ultrasonicoprodotto.

• sensore ad infrarossi : misura l’intensità della luce infrarossa riflessa pervalutare la distanza.

Sia il sensore ultrasonico che quello ad infrarossi presentano un più o me-no esteso punto cieco in prossimità del sensore stesso: la misurazione dellaposizione del vagoncino viene correttamente effettuata solamente superatatale distanza minima. Inoltre la caratteristica del sensore infrarosso non èlineare con la distanza: l’accuratezza della misurazione è ottima per distanzeprossime, ma cala drasticamente oltre un certo valore. Il cavo resistivo, invece,presenta delle problematiche legate al rumore per sfregamento del vagoncinosul cavo stesso.

Page 11: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 9

Figura 1.5: Descrizione del funzionamento di un sensore ultrasonico

Tra tutte le possibili opzioni, è stata scelta quella del sensore ultrasonico persemplicità di interfacciamento con il microcontrollore, per la sua caratteristicalineare e per la possibilità di utilizzare una palla che non sia necessariamentedi materiale conduttore. Il problema del punto cieco è stato ovviato con unaleggera modifica alla struttura del sistema, posizionando adeguatamente ilsensore sufficientemente al di fuori della barra, ma fissato su un supportodirettamente collegato con essa.

A causa però della necessità di ottenere una ottima riflessione dell’eco ultraso-nico, a seguito di alcuni test svolti con alcune palle di diverse dimensioni, si èreso necessario l’utilizzo di un bersaglio a forma di parallelepipedo, che per-mette una più perfetta riflessione sonora. Per questa ragione è stato scelto unvagoncino in sostituzione della palla, mutando leggermente le caratteristichedel sistema.

1.4.2 Sensori angolari

Sono stati esaminati preliminarmente tre possibili sensori angolari per lamisurazione dell’inclinazione della barra:

• accelerometro

• potenziometro angolare

• encoder digitale

Page 12: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 10

E’ stato scelto l’encoder digitale poiché preciso, dotato di ottima risoluzione(dipendente dal numero di bit di precisione) e facilmente interfacciabile conil microcontrollore, presentando un segnale d’uscita digitale. Inoltre è statoscelto un encoder magnetico contactless, per ridurre al minimo la coppiaresistente di questo verso il motore.

Esistono due tipi di encoder digitale:

• encoder assoluto

• encoder incrementale

Figura 1.6: Struttura basilare di un encoder rotativo magnetico

La tipologia di encoder ideale per questo progetto sarebbe quella di encoderassoluto, poiché presenta il grosso vantaggio di non perdere la posizione ango-lare in assenza di alimentazione ma, per cause principalmente economiche,è stato scelto un encoder incrementale, provvisto di tre canali, due per ladeterminazione del verso di rotazione (detti A e B) e il terzo che stabiliscel’indice di zero del sistema, anche se quest’ultimo non è stato utilizzato. I duecanali di uscita dell’encoder presentano un segnale ad onda quadra e sono inquadratura fra di loro.

Un encoder incrementale magnetico è composto da un tamburo magnetizzatoe da un dispositivo magnetoresistivo; i materiali magnetoresistivi hanno laproprietà di variare la propria resistenza all’applicazione di un campo magne-tico. La superficie esterna del tamburo presenta delle cave, che causano unavariazione periodica nel tempo del flusso di induzione magnetica, che investe

Page 13: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 11

il dispositivo magnetoresistivo (fisso), mentre il tamburo ruota sul suo asse.Per ottenere i due segnali in quadratura, si utilizzano due tamburi coassiali.

1.5 Microcontrollore

Figura 1.7: La scheda Arduino

Le varie informazioni fornite dai sensori e il conseguente comando del motorein continua utilizzato per lo spostamento angolare della barra necessitano diuno strumento di elaborazione dati, più precisamente di un microcontrollore.Tra i più disparati modelli di schede di prototipazione elettronica disponibilisul mercato è stato scelto Arduino4, famoso prodotto italiano, per la suagrande semplicità e la facile reperibilità di informazioni su di esso nella rete,grazie ad una ricca ed attiva community.

Arduino Uno è la scheda utilizzata per questo progetto, basato sul microcon-trollore ATmega328 a 28pin e 8bit. E’ dotato di 14 ingressi/uscite digitali(di cui 6 possono essere uscite PWM), 6 ingressi analogici, un oscillatore inquarzo a 16MHz, una connessione USB per alimentazione/comunicazioneseriale, un header ICSP e un pulsante di reset. La sua tensione di lavoro è 5V,mentre la tensione di alimentazione raccomandata è di 7-12V ed è in grado dierogare 40mA per pin.

Il microcontrollore ATmega328 è fornito inoltre di memoria flash da 32KB,una EEPROM da 1KB e una memoria volatile SRAM da 2KB. Arduino ha

4Sito ufficiale: http://www.arduino.cc

Page 14: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 12

6 ingressi analogici ed è dotato di un convertitore analogico-digitale (ADC)con risoluzione 10bit, settato di default ad acquisire valori tra 0 V e 5 V: vuoldire che l’intervallo 0-5 V è discretizzato in 1024 valori.

1.6 MaterialiLa scelta dei materiali per la costruzione del sistema deve tener conto di:

• peso specifico del materiale

• costo del materiale

• facilità di reperimento e lavorazione

A causa degli stretti vincoli sulla facilità di reperimento e lavorazione, lepossibilità di scelta sono esigue e, poiché il progetto è strettamente didattico,il legno è stato designato come materiale costruttivo.

1.7 Modello fisico del sistema

1.7.1 Modello matematico del vagoncino

Per determinare il modello fisico del sistema, ci si rifà alla teoria di un carrelloche si muove su un piano inclinato [5]. Considerando un carrello di massa Mc

con 4 ruote, ciascuna di massa mc << Mc, definito come θ l’angolo di inclina-zione del piano rispetto alla direzione orizzontale, il sistema è schematizzatoin Figura 1.8.

Si definisca come r il raggio delle ruote e come T la forza di trazione tra lamassa Mc e ciascuna delle 4 ruote. Quest’ultima forza è una forza interna alsistema, e si esercita tra carrello e ruote in corrispondenza degli assi di tra-smissione. Si ignorano in questa trattazione l’attrito dovuto allo scorrimentofra le parti meccaniche e si ipotizzi che le ruote girino senza strisciare.

Si esplicitano dunque le equazioni del moto del centro di massa del car-rello e la seconda equazione cardinale della meccanica per il moto di ciascunaruota rispetto al centro istantaneo di rotazione. L’equazione del carrello è:

Mca = Mcgsenθ − 4T (1.1)

ove a è la accelerazione del carrello. La equazione che regola la dinamica dellaruota è, invece, con α l’accelerazione angolare della ruota e J il momento di

Page 15: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 13

Figura 1.8: Schema delle forze che agiscono sul carrello.

inerzia di una ruota:

Jα = rT +mcgrsenθ − vmcgcosθ (1.2)

in cui si è espresso la reazione vincolare ponendo a zero la risultante delleforze nella direzione normale al piano. Il parametro v è lo spostamentovettoriale dal centro delle reazioni vincolari che, in generale, è diverso dalcentro istantaneo di rotazione. Maggiore è il modulo di v, maggiore è losquilibrio tra la fase di compressione e di rilassamento del piano su cui laruota scorre e quindi maggiore è l’energia dissipata in attrito. Utilizzando larelazione

α =a

r(1.3)

che esprime la condizione di "puro rotolamento", si possono risolvere le dueequazioni scritte sopra con quest’ultimo vincolo, rispetto alle incognite a e T.Si ricava prima T dalla 1.2 e quindi la si sostituisce nella 1.1:

T =1

r

[Ja

r−mcg(rsenθ − vcosθ

)](1.4)

Mca = Mcgsenθ − 4Ia

r2+ 4mcgsenθ − 4

v

rmcgcosθ (1.5)

Ora, tenendo conto che il momento di inerzia di un cilindro rispetto all’asseistantaneo di rotazione è dato da

J =3

2mr2 (1.6)

Page 16: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 14

si ha, raccogliendo opportunamente

a(Mc + 6mc) = (Mc + 4mc)gsenθ − 4vmcg

rcosθ (1.7)

Se, come di fatto avverrà nel sistema preso in esame, l’angolo θ assume valorimolto piccoli, si può effettuare la seguente approssimazione:

cosθ ≈ 1 (1.8)

senθ ≈ θ (1.9)

Allora, otteniamo in questo caso specifico, chiamando x la posizione delcarrello sul piano inclinato:

a = x =Mc + 4mc

Mc + 6mc

gθ − 4v

r

mc

Mc + 6mc

g (1.10)

che costituisce l’equazione di una retta sul piano a-θ, con coefficiente angolarequasi pari a g nel caso limite di mc«Mc (come è di fatto il caso in esame),perdendo la dipendenza dalla massa. Nella stessa condizione, l’intercetta puòessere definita come g moltiplicato per un coefficiente di attrito dinamicoradente, che sarà inferiore ai valori tipici di attrito radente, risultando unvalore tra 0.1 e 0.3.

µd = 4v

r

mc

Mc

(1.11)

A questo punto può essere ricavata una rappresentazione in equazioni di statodi questo sistema, considerando u = θ come l’ingresso, y = x come l’uscitadel sistema (la posizione del vagoncino) e sia d = −µdg il disturbo costanteche vi agisce. La sua espressione è quella di 1.12:

x1 = gu+ dx2 = x1y = x2

(1.12)

Volendo invece rappresentare il sistema con una funzione di trasferimento chemette in relazione l’ingresso u con l’uscita, chiamando G1(s) la FdT in esame,si perviene alla espressione 1.13:

G1(s) =g

s2(1.13)

Page 17: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 15

1.7.2 Modello matematico della barra

Per quanto riguarda il sistema della barra, invece, si considera un modellosemplificato, che non tiene conto di componenti di forze non inerziali perquanto riguarda il moto del vagoncino sopra la barra.

Il bilancio delle coppie agenti sulla barra, nell’ipotesi che il riduttore delmotore non presenti alcun gioco, ha espressione:

τbeam = τmotor + τcart (1.14)

Figura 1.9: Diagramma di corpo libero del sistema Ball & Beam [1]

La coppia motrice del motore può essere espressa come segue:

τmotor = KI − Jmotorθ − bθ (1.15)

dove K è la costante della forza elettromotrice indotta del motore in conti-nua, I è la corrente che fluisce all’interno del motore, Jmotor è il momento diinerzia del motore, b è la costante di smorzamento del sistema rotativo, θ èl’accelerazione angolare della barra mentre θ è la sua velocità angolare.

Il momento meccanico dato dal vagoncino sulla barra, nell’ipotesi di tra-scurare le componenti non inerziali considerando trascurabile la velocità dirotazione della barra, dipende dalla sua posizione corrente, oltre che dal-l’angolo di inclinazione della barra ed è di fatto una sorta di disturbo nelsistema:

Page 18: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 1. INTRODUZIONE 16

τcart = −xMcgcosθ (1.16)

Ora, considerando la barra come un parallelepipedo di lunghezza Lbeam emassa Mbeam, il suo momento di inerzia sarà:

Jbeam =1

12MbeamL

2beam (1.17)

Allora, combinando questa equazione con la 1.15, si ottiene il seguente risultato,che descrive l’accelerazione angolare della barra:

θ =KI − xMcgcosθ − bθ

Jbeam + Jmotor

(1.18)

che, sempre nell’ipotesi di piccoli angoli, diventa più semplicemente

θ =KI − xMcg − bθJbeam + Jmotor

(1.19)

1.7.3 Modello matematico del motore DC

Considerando un motore in continua comandato dalla tensione di armatura(eccitazione in derivazione), l’equazione elettrica della maglia del circuito diarmatura è

LdI

dt+RI = V −Keθ (1.20)

ove L è il coefficiente di autoinduzione di armatura, I è la corrente che vifluisce, V è la tensione applicata ai morsetti, Ke è la costante del motorerelativa alla forza contro elettromotrice e R è la resistenza di armatura. Dacui, si ricava molto semplicemente:

I =V −RI −Keθ

L(1.21)

Page 19: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Capitolo 2

Operazioni preliminari

2.1 Scelta e descrizione dei componentiAl fine della realizzazione del sistema, è stato necessario l’acquisto di tutti icomponenti che lo costituiscono, che sono stati scelti con delle considerazionidi carattere sia tecnico che economico. La reperibilità e la funzionalità deicomponenti acquistati è stato uno dei problemi principali per la realizzazionedi questo progetto.

2.1.1 Sensore ultrasonico

Il sensore ad ultrasuoni scelto per questo progetto è il HC-SR04, poichéeconomico e facilmente interfacciabile con Arduino.

Figura 2.1: Il sensore HC-SR04 e il suo funzionamento

17

Page 20: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 18

Il sensore è costituito, nella parte frontale, da due "capsule", una emittente(Trigger) ed una ricevente (Echo), composte da un quarzo da 4 MHz. Sulretro del dispositivo ci sono un amplificatore operazionale LMC6034 e unintegrato MAX232 per l’elevazione del segnale ricevuto dalla capsula ricevente,entrambi prodotti da Texas Instruments, oltre ad un microcontrollore ad 8bitEM78P153 della Elan, che gestisce il conteggio del tempo di ritorno dell’ecoultrasonico. Il sensore HC-SR04 è inoltre dotato di 4 pin di interfaccia con il"mondo esterno": alimentazione (Vcc, che deve essere di 5 V), massa (GND),Trigger (onda emittente) ed Echo (ricevitore).

Consultando il datasheet1 del componente, il produttore dichiara un range dirilevazione che va dai 2 cm ai 400 cm, oltre ad un angolo di misura di circa15°.

Figura 2.2: Grafico dei segnali elettrici del sensore HC-SR04

Per quanto riguarda il funzionamento, si tiene il pin Trigger a livello logicoTTL basso, dopodichè si fornisce un impulso a livello logico alto della duratadi 10 µs e lo si riporta a livello basso. La capsula emetterà un burst a circa40 kHz (la massima frequenza udibile dall’orecchio umano è di circa 20 kHz):quest’onda ultrasonica, riflessa dal bersaglio, viene rilevata dalla capsularicevente. Il tempo di ritorno dell’eco viene elaborato dal microcontrolloreintegrato e il pin Echo emetterà una tensione a livello logico alto con durataproporzionale al tempo rilevato.

Il calcolo della distanza si effettua sulla base di considerazioni sulla velo-1Datasheet: http://www.micropik.com/PDF/HCSR04.pdf

Page 21: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 19

cità del suono in aria, che è circa di 340 m s−1 alla temperatura di 20 ◦C.Dunque, poiché il sensore restituisce il tempo di ritorno dell’eco in micro-secondi e la distanza viene espressa in cm, si può convertire la velocità delsuono in cm µs−1.

340 m s−1 = 3.4 · 10−2cm µs−1 (2.1)

La distanza dell’oggetto bersaglio è ottenuta semplicemente moltiplicandoquesta velocità per il tempo rilevato e dividendo per 2, poiché il tempo rilevatodal microcontrollore si riferisce a quello di andata e ritorno dell’eco ultrasonico,mentre è di interesse semplicemente il tempo di impatto.

2.1.2 Motore DC

Il motore in corrente continua è una parte fondamentale di questo progetto,poiché è l’attuatore che è controllato direttamente dal microcontrollore chedetermina lo spostamento angolare della barra e, quindi, il moto del vagoncinopostovi.

Le caratteristica richiesta è, oltre ad un costo contenuto, quella di unacoppia sufficiente a sollevare la barra nel caso peggiore, ossia con vagoncinoposto alla sua estremità (25 cm dal baricentro). A seguito di alcuni calcoli pre-liminari semplificati ed aumentando il valore della coppia richiesta in manieracautelativa, è stato scelto un motoriduttore DC 420109 della Micromotors2,avente una coppia di esercizio massima di circa 0.6 N m.

Figura 2.3: Misure in sezione del motoriduttore

Il rapporto di riduzione del motoriduttore è di 94.37:1, la tensione nominale èdi 12 V e la massima corrente assorbita è di 580 mA. Inoltre, il suo asse ha

2Acquistabile da: http://www.robot-italy.com/it/gearmotor-12vdc-66rpm.html

Page 22: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 20

un diametro di 6 mm e lungo 14 mm: ciò rende necessario l’acquisto di unalbero motore che ne estenda la lunghezza. Date le dimensioni contenute, sitratta di un motore a magneti permanenti ed è controllato dalla tensione diarmatura.

2.1.3 Albero motore, giunto e cuscinetti

Come evidenziato in precedenza, dopo l’acquisto del motore si è evidenziatal’esigenza di allungare l’asse del motore, in modo da potervi alloggiare labarra trasversalmente. Di conseguenza, sono necessari in aggiunta un giuntodi accoppiamento meccanico fra l’asse proprio del motore e quello aggiuntivoe due cuscinetti a sfera per due colonne di supporto verso la base del sistema.

Figura 2.4: Il giunto universale Huco Uni-Lat®

E’ stato acquistato un albero della Bosch Rexroth, in acciaio inox, di diametro6 mm e lunghezza 400 mm. Per effetto di questo, il giunto e i cuscinettidovranno essere provvisti di un foro identico di 6 mm: sono stati scelti dunqueun giunto universale Huco Uni-Lat® e due cuscinetti a sfera SKF 626-2Z/C3,di diametro esterno pari a 19 mm.

2.1.4 Driver motore

Scelto ed acquistato il motore, si è reso necessario l’acquisto di un opportunodriver per il pilotaggio del motore, poiché Arduino può generare una tensionenon superiore a 5 V o erogare una corrente superiore a 40 mA per pin. Per

Page 23: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 21

Figura 2.5: Arduino Motor Shield Rev3

questa necessità, sono disponibili le cosiddette shield, ossia delle schede cheespandono le funzionalità di Arduino, fra le quali c’è la Arduino MotorShield3, progettata esclusivamente per la alimentazione e il controllo deimotori elettrici in corrente continua.

La scheda è in grado di pilotare motori con tensioni di alimentazione fi-no a 12 V ed è in grado di erogare fino a 2 A per canale, risultando perciò piùche sufficiente per il motore acquistato. Possiede inoltre l’integrato L298, unfull-bridge driver ideato per il pilotaggio di carichi induttivi mediante PWM(Pulse Width Modulation) e per la inversione della polarità della tensione dialimentazione, permettendo la rotazione del motore in entrambi i versi.

2.1.5 Encoder

L’encoder rotativo è necessario per ottenere un feedback della posizione ango-lare dell’asse del motore, in modo da poterla controllare. Le caratteristichefondamentali sono, oltre ad un prezzo non troppo elevato, una adeguatarisoluzione, la presenza di due tracce per la rilevazione del senso di rotazionee la dimensione fisica adatta per l’alloggiamento sull’asse del motore. Proprioper soddisfare il vincolo di un prezzo economico, sono da escludersi encoderassoluti, assai più costosi degli incrementali.

3Pagina ufficiale: https://www.arduino.cc/en/Main/ArduinoMotorShieldR3

Page 24: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 22

Figura 2.6: Encoder incrementale di Avago

L’encoder acquistato è il AEAT-601B-F064 di Avago Technologies, cheè un encoder incrementale magnetico contactless, dotato di 3 canali (dueper la individuazione del moto e il terzo che funge da indice), capace diruotare fino a 12 000 RPM e dotato di una risoluzione di 256 impulsi perrivoluzione. Il conteggio degli impulsi è effettuato da Arduino via softwaremediante l’utilizzo degli interrupts ed è alimentato a 5 V dallo stesso Arduino.

I segnali elettrici dei due canali per la individuazione del moto sono inquadratura fra loro, ossia sono sfasati fra loro di 90° elettrici, situazione checonsente di raggiungere risoluzioni maggiori.

2.2 Caratterizzazione del sensore ultrasonicoIl sensore di posizione del vagoncino è un componente fondamentale per larealizzazione pratica di questo progetto, perciò, una volta acquistato, è statonecessario effettuare dei test per verificare le sue prestazioni effettive.

Per la lettura del tempo di ritorno dell’eco ultrasonico processato dal microcon-trollore sul retro del sensore, si è utilizzata una libreria software denominataNewPing5, scritta appositamente per HC-SR04.

4Datasheet: http://www.farnell.com/datasheets/1884438.pdf5Pagina di riferimento: http://playground.arduino.cc/Code/NewPing

Page 25: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 23

Posto il sensore ultrasonico su di una breadboard e posizionato il vagon-cino su un piano graduato con della carta centimetrata, utilizzando il SerialMonitor di Arduino sul computer si sono letti i valori rilevati e riportati suuna tabella. Anzitutto si è analizzato il punto cieco: il datasheet dichiaraesplicitamente che la sua ampiezza è di 2 cm, ma dopo alcune prove si èverificato che in realtà il punto cieco eccede sicuramente i 3.5 cm di distanza.Per questo motivo, si è deciso che il sensore andrà posto, cautelativamente,ad almeno 4 cm dal fondo corsa del vagoncino sul binario.

Partendo da 4 cm, si è dunque posto il vagoncino a distanze crescenti, conpasso 1 cm, in modo da formare una retta di regressione lineare con il meto-do di approssimazione dei minimi quadrati, effettuata con l’apposito CurveFitting Tool su Matlab.

Scala [cm]5 10 15 20 25 30 35 40 45 50

Se

nsore

[cm

]

5

10

15

20

25

30

35

40

45

50

Sensore vs. ScalaRegressione lineare

Scala [cm]5 10 15 20 25 30 35 40 45 50

Sen

sore

[cm

]

-0.6

-0.4

-0.2

0

0.2

0.4

0.6Regressione lineare - residuals

Figura 2.7: Retta di regressione lineare del sensore ultrasonico

Osservando la Figura 2.7 si nota come, ad eccezione di alcuni valori con ilvagoncino posizionato vicino al sensore, le misure siano piuttosto accurate e ilsensore si comporti, specialmente nella zona centrale che è quella cruciale peril progetto, discretamente bene e similmente a quanto riportato sulla schedatecnica.

Page 26: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 24

Considerando che la caratteristica di un sensore ideale presenterebbe una rettapassante per l’origine e bisettrice del primo e terzo quadrante, osservando laretta di regressione lineare del sensore ultrasonico si possono individuare duetipologie di errori:

• L’errore di guadagno

• L’errore di offset

Il primo corrisponde alla inclinazione angolare della retta rispetto alla ret-ta ideale (coefficiente angolare unitario), mentre il secondo si riferisce alladifferenza fra il valore della retta reale e quello di riferimento ideale, che èparticolarmente elevato in virtù del fatto che il sensore è posto ben al di fuoridei binari su cui scorre il vagoncino. La calibrazione del sensore ultrasonicoè effettuata dividendo la lettura della distanza per l’errore di guadagno esottraendovi l’errore di offset.

Per contrastare la variabilità delle misurazioni dovuto al rumore è statoinoltre utilizzato un filtro mediano mobile, che ha lo scopo di elidere quantopiù possibile il rumore impulsivo presente. Un filtro mediano preleva Ncampioni del segnale da filtrare e, dopo un ordinamento, propone in uscital’elemento centrale se N è dispari, altrimenti fornisce la media fra i dueelementi di posto centrale se N è pari.

Scelta una lunghezza con N pari a 5, il filtro mediano mobile è statoimplementato usufruendo della libreria apposita per Arduino denominataRunningMedian6, che gestisce l’operazione di filtraggio.

Infine, poiché il sensore talvolta rileva un valore nullo, corrispondente ad unamisurazione out of range, il filtro mediano elabora solo le misurazioni corrette.

2.3 Costruzione del sistemaAcquistati tutti i componenti necessari per il progetto, si è proceduto con lacostruzione fisica del sistema. L’intera struttura è stata realizzata in legno,tagliando opportunamente pezzi di varie dimensioni, in particolare la base,tre "colonne" che supportano asse e motore e la barra orizzontale, sopra laquale sono stati incollati i binari del vagoncino.

6Pagina di riferimento: http://playground.arduino.cc/Main/RunningMedian

Page 27: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 25

Figura 2.8: Il sistema Cart and Beam costruito

Page 28: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 26

Particolare attenzione è stata prestata nell’alloggiamento dell’encoder che,date le dimensioni del suo foro di 6 mm, deve essere posto all’estremo oppostodel motore, sul lato carico. Il requisito fondamentale è quello che la parte mo-bile del dispositivo ruoti solidale con l’asse, mentre la parte fissa sia immobilee vincolata ad un supporto verticale (la seconda colonna con cuscinetto).

Infine, data la necessità di svolgere alcuni test sul motore rotante a ciclo con-tinuo, è stata preposta una piccola base fissata all’asse del motore, sulla qualesi avvita la barra con i binari, rendendola dunque estraibile a piacimento.

2.4 Sviluppo del software per l’encoderCi sono varie tecniche per la elaborazione delle informazioni ottenibili dal-l’encoder, dotate di risoluzione e costi computazionali assai differenti. Comeesposto precedentemente, l’encoder incrementale è provvisto di due canalidi uscita (detti A e B), che producono due onde quadre nel dominio deltempo in quadratura fra loro. La presenza di due canali è fondamentale percomprendere il verso di rotazione, confrontando il valore di un’onda di uncanale con il valore corrente di quella corrispondente dell’altro canale.

Figura 2.9: Andamento segnali dei canali A e B di un encoder rotativo

Definito come x il numero di impulsi per rivoluzione dell’encoder (nel casodell’encoder acquistato si ha x = 256), ci sono tre modi di elaborare leinformazioni dell’encoder in modo da determinare lo scostamento angolare,ognuna con il suo livello di risoluzione:

• Conteggio degli impulsi (x)

Page 29: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 2. OPERAZIONI PRELIMINARI 27

• Conteggio delle transizioni (2x)

• Conteggio doppio delle transizioni (4x)

Il conteggio degli impulsi consiste semplicemente nell’incrementare di unaunità la posizione angolare rilevata ogni qual volta si rilevi un segnale allostato logico alto, il conteggio delle transizioni invece incrementa il conteggioad ogni transizione tra valore alto e valore basso del segnale e viceversa,raddoppiando la risoluzione. Per avere una risoluzione invece quattro voltesuperiore, è necessario valutare ogni transizione di entrambi i canali, per poiconfrontarne gli stati in modo da determinare il senso di rotazione.

Per valutare in tempo reale le variazioni di tensione sui due canali e con-temporaneamente svolgere altre operazioni, Arduino permette l’utilizzo dihardware interrupts che effettuano il polling su dei particolari pin abilitati(Arduino Uno ne ha due, il pin 2 e il pin 3): se per i primi due metodi di con-teggio è sufficiente un interrupt collegato ad uno dei due canali, per ottenereuna risoluzione 4x è necessario che entrambi i canali siano connessi a dei pinprovvisti di interrupt7; ciò comporta anche un maggiore costo computazionale.

Se si utilizza quest’ultimo metodo, si ha una risoluzione all’incirca paria 0.35°.

7Pagina di riferimento su Arduino Playground: http://playground.arduino.cc/Main/RotaryEncoders

Page 30: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Capitolo 3

Identificazione del sistema

Terminata la costruzione del sistema, prima di effettuare il progetto di con-trollo, è utile conoscere un modello che descriva la dinamica del motore.Poiché il costruttore non ha dichiarato alcun parametro di targa del motoreacquistato, se non la tensione nominale e la corrente massima assorbita, unasoluzione è quella di procedere con delle tecniche di identificazione del sistema.

Si tratta, quindi, di fornire una tensione a gradino in ingresso al motoree, mediante l’encoder, valutare il comportamento in uscita del motore, stiman-do successivamente, con una certa accuratezza, una funzione di trasferimentoche, sollecitata dal medesimo ingresso, fornisca l’uscita rilevata. Al fine dieffettuare una buona stima, è necessario che l’uscita rilevata sia una grandezzache giunge ad uno stato di regime, perciò invece della posizione angolare, siconsidera come uscita la velocità angolare.

3.1 Differenziazione numericaLa velocità angolare può essere ricavata a partire da valori discreti dellaposizione angolare del motore, campionati ad un intervallo fissato, mediantedifferenziazione numerica. Il metodo più banale consisterebbe semplicementenell’effettuare differenze prime, ad intervalli di tempo costanti, fra i valori diposizione angolari rilevati, ma così facendo il segnale risultante soffrirebbeeccessivamente di rumore di misura. Per questa ragione sono state consideratetecniche di differenziazione più elaborate, che consistono nell’elaborare un nu-mero maggiore di campioni e nella soppressione del rumore ad alta frequenza.

Una soluzione numerica di questo tipo è stata proposta da Pavel Holobrodko[8], che ha realizzato dei filtri per la differenziazione numerica con soppressione

28

Page 31: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 3. IDENTIFICAZIONE DEL SISTEMA 29

di rumore ed efficiente struttura computazionale.

Detti N (dispari) la lunghezza del filtro, {ck} i coefficienti del filtro, al-lora i valori della funzione campionati su N punti equidistanti attorno ad x*

con passo h sono

fk = f(xk), xk = x∗ + kh, k = −M, ...,M,M =N − 1

2(3.1)

La differenziazione numerica può essere scritta in forma generale come

f ′(x∗) ≈ 1

h

M∑k=1

ck(fk − f−k) (3.2)

Sia {ck} un filtro anti-simmetrico di tipo III, la sua risposta in frequenza è (h= 1)

H(ω) = 2iM∑k=1

cksin(kω) (3.3)

Lo scopo è quello di scegliere dei coefficienti {ck} in modo che H(ω) sia piùvicino possibile alla risposta di un differenziatore ideale Hd(ω) = iω nellaregione a bassa frequenza e che tenda il più possibile a zero verso la frequenzapiù alta ω = π. Il modo più intuitivo di fare questo è quello di imporre cheH(ω) abbia un alto ordine di tangenza con Hd a ω = 0, mentre abbia un altoordine di tangenza con l’asse ω a ω = π. Questo conduce al seguente sistemalineare su {ck}

∂iH(ω)

∂ωi

∣∣∣∣0

=∂iHd(ω)

∂ωi

∣∣∣∣0

i = 0, ..., n

∂jH(ω)

∂ωj

∣∣∣∣π

= 0 j = 0, ...,m

Considerando che è necessaria la differenziazione di polinomi non superiorial grado 2 (n = 2), si perviene alla seguente tabella contenente i filtri dautilizzare, a seconda della lunghezza N del filtro prescelta

Page 32: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 3. IDENTIFICAZIONE DEL SISTEMA 30

N Smooth central noise robust differentiators (n = 2, exact on 1,x,x2)

52(f1 − f−1) + f2 − f−2

8h

75(f1 − f−1) + 4(f2 − f−2) + f3 − f−3

32h

914(f1 − f−1) + 14(f2 − f−2) + 6(f3 − f−3) + f4 − f−4

128h

Le caratteristiche in frequenza del differenziatore sono delineate nel grafico,ove la linea tratteggiata rossa corrisponde alla risposta di un differenziatoreideale Hd(ω) = iω

Figura 3.1: Risposta in frequenza del filtro differenziatore al variare di N

La tecnica finora esposta fa uso di differenze centrate, processando valori sia"nel passato" che "nel futuro" del punto da differenziare. Un’altra tecnica da

Page 33: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 3. IDENTIFICAZIONE DEL SISTEMA 31

prendere in esame è quella delle differenze all’indietro, che considera solamentei valori "nel passato", la cui espressione è del tipo

f ′(xi) ≈1

h

N∑k=0

ckfi−k (3.4)

Mentre la tabella con le espressioni del filtro al crescere della sua lunghezza è

N Smooth one-sided noise robust differentiators (n = 2, exact on 1,x)

3fi + fi−1 − fi−2 − fi−3

4h

5fi + 3fi−1 + 2fi−2 − 2fi−3 − 3fi−4 − fi−5

16h

7fi + 5fi−1 + 9fi−2 + 5fi−3 − 5fi−4 − 9fi−5 − 5fi−6 − fi−7

64h

Come si può notare, come in Figura 3.2, che sia nel caso di differenze centraliche nel caso di differenze all’indietro, maggiore è il numero di N, maggiore èla soppressione delle alte frequenze e quindi del rumore.

Tornando al progetto, il problema era quello di determinare l’andamentodella velocità nel tempo a partire da valori discreti ad intervalli fissati dellavelocità angolare. Piuttosto di implementare i filtri direttamente su Arduino,si è dimostrato molto più semplice scriverli su MATLAB come funzioni eprocessare offline i valori discreti di posizione angolare acquisiti da Arduino ecomunicati a MATLAB mediante serial communication. Poiché il filtro cheimplementa differenze all’indietro richiede valori da elaborare "nel passato",il gradino di tensione è stato fornito con un leggero ritardo, corrispondente a10 campioni nulli.

A seguito di prove a diversi valori di velocita’ e con differenti tecniche didifferenziazioni, le differenze all’indietro con N = 7 si è dimostrato il migliorfiltro per la determinazione della velocità con una accettabile soppressione delrumore di misura. Scelto come 10ms il tempo di campionamento (quindi h =0.01), il risultato della differenziazione del segnale al variare della tensione dialimentazione è in Figura 3.3.

3.2 Stima della funzione di trasferimentoOttenuti l’andamento della velocità nel tempo in risposta ad un gradino ditensione, si tratta ora di stimare una funzione di trasferimento descrivente la

Page 34: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 3. IDENTIFICAZIONE DEL SISTEMA 32

Numero del campione0 50 100 150 200 250 300 350 400 450

Ve

locità

mo

tore

[im

pu

lsi/s]

-250

-200

-150

-100

-50

0

50

100

150

200

250Confronto filtri differenziatori a differenze centrate

N = 5N = 7N = 9

Figura 3.2: Confronto fra filtri di differenziazione numerica con diverse lunghezze

Figura 3.3: Grafico tempo/velocità ad alimentazione crescente

Page 35: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 3. IDENTIFICAZIONE DEL SISTEMA 33

dinamica del motore utilizzando il System Identification Tool di MATLAB.

Esplicitando il segnale di input e il segnale di output del sistema, assie-me ad indicazioni temporali, il System Identification Tool permette di stimareuna funzione di trasferimento che descriva il sistema, con un numero sceltodi zeri e poli. Per ragioni di semplicità, si è deciso di stimare la funzione ditrasferimento tensione/velocità del motore come un sistema del primo ordine,dotato cioè di un solo polo. Il sistema avrà una funzione di trasferimento deltipo

G(s) =µ

s+ τ(3.5)

con µ costante di guadagno e τ costante di tempo del sistema, che avràquindi un solo polo in s = -τ . Successivamente, per trovare l’espressione dellafunzione di trasferimento tensione/posizione, sarà sufficiente semplicementeeffettuare la moltiplicazione con un integratore (ossia con un fattore 1/s).Considerando il caso di alimentazione a 4V, la funzione di trasferimentostimata dal tool ha andamento visibile in Figura 3.4 ed espressione

G(s) =1450

s+ 25.45(3.6)

Page 36: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 3. IDENTIFICAZIONE DEL SISTEMA 34

Figura 3.4: Confronto fra risposta al gradino simulata e reale

Page 37: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Capitolo 4

Problemi riscontrati e nuovomotore

In questo capitolo verranno esposte tutte le problematiche riscontrate per ilcontrollo del motore in continua acquistato e le ragioni per le quali si è optatoper l’acquisto di un nuovo motore in sede avanzata di progetto.

4.1 BacklashIl backlash è il gioco presente fra le parti adiacenti di un meccanismo (peresempio fra i denti di ingranaggi). Il backlash è presente in qualsiasi sistemameccanico dove il membro trainante (il motore) non è direttamente collegatocon il membro trainato (il carico), che è il caso della maggior parte dei sistemirobotici. Nel caso di motore elettrico provvisto di riduttore, il backlash è ladistanza fra i denti metallici del riduttore.

Il controllo di un carico sotto l’effetto di backlash è particolarmente complicatose si desidera una elevata precisione, poiché vi sono istanti in cui è apertala lacuna di backlash e il motore perde contatto con il carico. Questo puòcapitare a seguito di un disturbo che agisce sul carico o quando il motoredeve effettuare una azione correttiva invertendo il proprio moto.Quando la lacuna di backlash è aperta, il moto del carico è autonomo e, inaggiunta, la forza o il momento generato dal motore traina solo il motorestesso (e le parti della trasmissione prima del backlash), ma non il carico.

I sistemi controllati affetti da backlash spesso mostrano errori statici a regimeo, peggio, periodi limitati in cui il sistema oscilla, spesso in maniera irregolare,

35

Page 38: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 36

con una ampiezza picco-picco che può eccedere l’ampiezza totale della lacunadi backlash.

4.2 Effetti del backlash sul controlloIl controllo della posizione angolare del motore DC acquistato si è rivelatoparticolarmente complesso, proprio a causa dell’errore di backlash, stimatoattorno ai 3°. Questo errore di fatto ha reso inutile il tentativo di identifi-cazione del sistema, poiché l’inversione del moto del motore ha provocatodegli effetti non modellizzati, che si sono manifestati sia in errore statico aregime sia in gravi oscillazioni a causa del rimbalzo della barra sugli estremidell’apertura di backlash.

Nonostante tentativi di controllo basati sul gain scheduling, adattando iparametri di un regolatore PID secondo l’ampiezza istantanea dell’errore,l’inversione del moto ha provocato andamenti della risposta al gradino insod-disfacenti a carico inserito.

Tempo [s]0 1 2 3 4 5 6

Da

ti d

a e

nco

de

r/D

uty

cycle

PW

M

-50

-45

-40

-35

-30

-25

-20

-15

-10

-5

0Dati da Arduino

Figura 4.1: Andamento della risposta al gradino affetta da backlash, in cui laposizione obiettivo è 30 impulsi dell’encoder

Page 39: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 37

A seguito della analisi di queste problematiche, piuttosto che esplorare delletecniche di compensazione del backlash, si è preferito optare per l’acquistodi un nuovo motore, un passo-passo, più semplice da controllare e con unminore errore di backlash.

Il problema del backlash è molto studiato nella letteratura relativa allo svi-luppo di strategie di controllo, alcune tecniche di compensazione del backlashsono presentate per esempio nell’articolo "Controlling mechanical systemswith backlash - a survey".[9]

4.3 Motore passo-passoIl motore passo-passo, chiamato anche stepper motor, è un motore acorrente continua che è capace di suddividere il proprio moto rotatorio insequenze di passi (step) e di bloccarsi in tali posizioni, utili per consentireposizionamenti di grande precisione.

Figura 4.2: Struttura di un motore passo-passo bipolare

La struttura di questi motori prevede un rotore composto da un magnetepermanente (quindi sprovvisto di avvolgimenti) dotato di un certo numero di"denti", mentre lo statore è provvisto di varie espansioni polari, alimentate daaltrettanti avvolgimenti. Questi avvolgimenti sono opportunamente connessifra loro, in modo da fornire esternamente un certo numero di fili conduttori,

Page 40: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 38

necessari per un corretto pilotaggio.

A questi conduttori viene applicata una corretta sequenza di impulsi alfine di provocare l’avanzamento del motore in uno dei due versi di rotazionecon la frequenza di ripetizione degli impulsi che determina la velocità dirotazione del motore. Di fatto la velocità di rotazione massima di un motorepasso-passo dipende dal clock che scandisce la sincronizzazione dei vari impulsi.

Il motore acquistato è il NEMA-11 di Phidget1, che è un motore passo-passo bipolare, ossia dotato di 4 conduttori esterni, collegati a 4 sequenze diavvolgimenti in parallelo a due a due in serie fra loro: mediante i ponti H indotazione alla Motor Shield, si può invertire la polarità della tensione fornitaagli avvolgimenti in serie.

Figura 4.3: Il motore passo-passo NEMA-11 di Phidget

Il NEMA-11 possiede una coppia nominale di circa 1.37 N m, una coppia ditenuta di 1.57 N m ed una velocità massima di 120 RPM. Questo motore sod-disfa inoltre un requisito fondamentale, ossia quello di possedere un diametro

1Pagina ufficiale: http://www.phidgets.com/products.php?product_id=3321_0

Page 41: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 39

dell’asse pari esattamente a 6 mm, che permette di mantenere invariato ilresto della struttura del sistema già costruito.

Il riduttore ha un rapporto di riduzione pari a 1:27 e le specifiche tecni-che dichiarano un errore di backlash pari a 1.5° che, assieme ad una elevatacoppia di tenuta, è in grado di evitare le problematiche riscontrate con ilmotore precedente nell’atto di inversione del moto e di stabilizzazione a regime.

Infine, ad ogni step dovrebbe corrispondere uno scostamento angolare di0.067°, grazie all’azione del riduttore.

4.4 Pilotaggio del motore passo-passoPer generare il moto rotazionale del motore passo-passo, la corrente attraversole armature deve cambiare nell’ordine corretto. Ciò è ottenuto utilizzando undriver che fornisce la corretta sequenza di impulsi e il segnale di direzione. Siapplica dunque una tecnica di controllo a velocità lineare.[3]

Per ruotare il motore a velocità costante, gli impulsi devono essere gene-rati ad una frequenza costante. Un clock genera gli impulsi con frequenza fte periodo Tt, perciò se c è il contatore, il tempo che intercorre fra un impulsoe il successivo è

δt =c

ft(4.1)

Perciò l’angolo α di ogni step, la posizione θ e la velocità ω dell’asse delmotore, chiamato come spr il numero di step per rivoluzione, sono dati da:

α =2π

spr[rad] θ = nα [rad] ω =

α

δt[rad/s] (4.2)

Per azionare e fermare il motore in modo fine, è necessario un controllo diaccelerazione e decelerazione, tale da generare una rampa lineare di velocità,come evidenziato in Figura 4.4

Il ritardo di tempo δt fra gli impulsi del motore passo-passo controlla lavelocità e deve essere variato opportunamente per seguire nel miglior modopossibile l’andamento lineare della velocità. La risoluzione di questi ritardi ditempo è data dalla frequenza del timer.

Osservando la Figura 4.5, il primo clock c0 e i clock successici cn, sono datida:

Page 42: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 40

Figura 4.4: Accelerazione ω, velocità ω, posizione θ[3]

Figura 4.5: Profilo della rampa di velocità[3]

Page 43: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 41

c0 =1

Tt

√2α

ωcn = c0(

√n+ 1−

√n) (4.3)

La potenza computazionale di un microcontrollore è limitata e il calcolodi due radici quadrate è dispendioso, perciò si considera una espressioneapprossimata con un minor costo computazionale, utilizzando lo sviluppo inserie di Taylor:

cn = cn−1 −2cn−1

4n+ 1(4.4)

Osservando la equazione 4.3, si nota che la accelerazione angolare ω, dipendesia da c0 che da n. Il tempo tn e il numero di passi n in funzione dellaaccelerazione, velocità e posizione angolari, sono dati da:

tn =ωnω

n =ωt2n2α

(4.5)

L’unione di queste due espressioni, fornisce la relazione

nω =ω2

2α(4.6)

che mostra la relazione inversamente proporzionale fra il numero di passinecessari a raggiungere una determinata velocità e la accelerazione, ossia

n1ω1 = n2ω2 (4.7)

Questo significa che il cambiamento di accelerazione fra ω1 e ω2 è effettuatomediante il cambiamento di n.

Figura 4.6: Andamento della rampa di velocità[3]

Page 44: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 42

Dato un numero n di passi da effettuare, quindi, la decelerazione deve iniziareal corretto step per giungere a velocità nulla.

Una strategia di controllo così fatta permette, in molti casi, di controlla-re la posizione del motore passo-passo in anello aperto, ossia senza ricorreread alcun feedback.

4.4.1 Accelstepper

Una implementazione del metodo di pilotaggio di un motore passo-passo sopraesposta, è stata sviluppata da AirSpayce appositamente per Arduino, con ilnome di Accelstepper2.

Accelstepper è un regolatore ad anello aperto, basato su posizioni relativerispetto a quella iniziale, posta a 0 all’inizio della esecuzione del programma.Scelte la accelerazione e la velocità massima (che su Arduino Uno non puòeccedere i 4000 passi per secondo, avendo un clock di 16 MHz), Accelsteppereffettua una regolazione della accelerazione per giungere in maniera fine allostep obiettivo dichiarato.

L’andamento della risposta del motore con uno step obiettivo di 100 è ri-portata in Figura 4.7, dalla quale si può notare che questa non presentaalcun overshoot e ha una elevata velocità di risposta. Il controllo sul motorepasso-passo acquistato si è rivelato efficace e, quindi, il sistema del motorecon il relativo regolatore si può approssimare con un sistema a trasferenzaunitaria e dotato di un ritardo finito, dipendente dalla escursione angolaredell’asse.

4.4.2 Multithreading software

La libreria Accelstepper, affinché il motore ruoti ad una velocità opportuna,richiede che, nel corso dell’esecuzione del programma, una sua particolarefunzione run() sia eseguita il più frequentemente possibile. Ciò può nonverificarsi a causa del costo computazionale dovuto alla esecuzione del restodel programma, che può diminuire notevolmente la frequenza di richiamo ditale funzione, portandola al di sotto del valore richiesto.

Per tale motivo è stato implementato a livello software un sistema di multi-threading, per la gestione di processi paralleli che devono essere eseguiti a

2Sito ufficiale: http://www.airspayce.com/mikem/arduino/AccelStepper/

Page 45: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 43

Tempo [s]0 1 2 3 4 5 6 7 8 9 10

Nu

mero

di ste

p d

el m

oto

re

0

10

20

30

40

50

60

70

80

90

100Dati da Arduino

X: 0.78Y: 100

Figura 4.7: Andamento della risposta al gradino dello stepper, con il passo 100definito come setpoint

Page 46: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 4. PROBLEMI RISCONTRATI E NUOVO MOTORE 44

frequenze differenti, non essendovi la possibilità di un multithreading hardware.E’ stata quindi utilizzata la libreria Arduino Threads3, che ha permesso diseparare il richiamo della funzione run() dal resto del programma e, grazie alsuo thread controller, di stabilire frequenze di esecuzione precise per ognunodei due thread definiti.

3Pagina di riferimento: https://github.com/ivanseidel/ArduinoThread

Page 47: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Capitolo 5

Progetto del regolatore delsistema

Realizzato mediante la strategia esposta precedentemente un regolatore per laposizione angolare del motore (e quindi l’inclinazione della barra), è necessariala progettazione di un regolatore per il controllo dell’inclinazione della barraal variare della posizione lineare del vagoncino lungo i suoi binari.

x + e1C1(s)

θ + e2C2(s)

u2A2(s)

Tr

+

−TmG2(s)

θm

−G1(s)

xm

H(s)

Figura 5.1: Schema a blocchi del sistema pensato originariamente

In Figura 5.1 è riportato lo schema a blocchi relativo al sistema progettatoinizialmente, in cui il sistema complessivo è stato pensato come suddividibilein due sottosistemi posti in cascata, quello che descrive la dinamica del motoree della barra (A2(s) l’attuatore e G2(s) il sistema della barra) e quello chedescrive la dinamica del vagoncino che scorre sui binari (G1(s)). Ad ognisistema corrisponde il suo relativo regolatore C e lo schema a blocchi è com-posto da un doppio feedback (fisicamente realizzato dai sensori).

Il sistema A2(s) riceve in ingresso la variabile u2, che corrisponde al se-gnale sotto forma di tensione che alimenta il motore, mentre ha in uscita lacoppia motrice resa all’asse. E’ presente un disturbo sull’attuatore, chiamato

45

Page 48: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 46

Tr, determinato dalla coppia resistente del vagoncino sulla barra, che è di-pendente dalla distanza istantanea di questi dal centro di massa della barraattraverso l’azione del blocco H(s). Il sistema G2(s) riceve in ingresso lacoppia risultante dalla differenza fra la coppia motrice e la coppia resistente,mentre l’uscita è la posizione angolare θm istantanea della barra.

Inoltre, θ è la posizione angolare di riferimento verso cui l’asse del moto-re deve convergere per azione del regolatore, quindi e2 è l’errore istantaneofra la posizione angolare obiettivo e quella corrente.

Per una maggior semplicità del modello, successivamente è stato suppo-sta la coppia resistente come costante, ossia eliminando la sua dipendenzadalla posizione del vagoncino. Inoltre, poiché la coppia del nuovo motoreacquistato è notevolmente superiore della coppia resistente causata dal motorenel caso peggiore (ossia con vagoncino a fondo corsa), il contributo della coppiaresistente diventa meno rilevante. Si perviene quindi alla rappresentazione diFigura 5.2.

x + e1C1(s)

θ + e2C2(s)

u2A2(s)

Tr

+

−TmG2(s)

θm

−G1(s)

xm

Figura 5.2: Schema a blocchi del sistema con coppia resistente costante

Il sistema G1(s) riceve in ingresso la posizione istantanea angolare della barraθm, mentre in uscita ha la posizione istantanea lineare del vagoncino xmche, rilevata dal sensore ultrasonico, è riportata in ingresso al regolatoreC1(s), che si vuole progettare. Il regolatore C1(s) produrrà in uscita unaazione di controllo che sarà corrispondente all’angolo θ di cui la barra dovràinclinarsi: di fatto questa uscita diventa il riferimento per il regolatore C2(s).Inoltre, x è la posizione scelta come riferimento verso la quale si vuole conver-gere, mentre e1 è l’errore istantaneo fra la posizione obiettivo e quella corrente.

Il regolatore C2(s), per il motore passo-passo acquistato in corso di pro-getto, è semplicemente costituito dall’algoritmo di regolazione della libreriaAccelStepper implementata e, poiché lavora in anello aperto, il feedback dellaposizione angolare non è più necessario. Lo schema a blocchi che, quindi,rappresenta il sistema è quello di Figura 5.3.

Page 49: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 47

x + e1C1(s)

θC2(s)

u2A2(s) G2(s)

Tr−

+Tm θm

G1(s)xm

Figura 5.3: Schema a blocchi definitivo del sistema

Come visto nel Capitolo 1, il sistema relativo al vagoncino che scorre sullabarra inclinata è instabile in anello aperto, perciò il regolatore da progettaredovrà, mediante l’anello chiuso, stabilizzare il sistema garantendo un errorenullo a regime. In aggiunta, al fine di esercitare un controllo adeguato, ènecessario che il regolatore assicuri che:

• Il sistema possegga una buona velocità di risposta

• Vi sia poco overshoot

• Il sistema abbia una buona reiezione ai disturbi, quali ad esempio lospostamento del vagoncino dalla posizione desiderata

La tipologia di regolatore scelta per questo progetto è un regolatore PID,in quanto di semplice comprensione, realizzazione e diffusione.

5.1 Regolatori PIDI regolatori PID sono la tipologia di regolatori SISO ad anello chiuso piùutilizzati nelle applicazioni industriali e realizzano una azione di controllodipendente dall’errore, combinazione di tre contributi:

• Una azione Proporzionale all’errore

• Una azione Integrale sull’errore

• Una azione Derivativa sull’errore

L’azione di controllo u(t) esercitata per effetto della regolazione PID, sel’errore è chiamato e(t), ha espressione

u(t) = KP e(t) +KI

∫ t

0

e(τ)dτ +KDde(t)

dt(5.1)

dove KP , KI , KD sono i guadagni rispettivi alle tre azioni di controllosull’errore.

Page 50: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 48

5.1.1 PID a segnali campionati

La legge di controllo di un regolatore PID descritta nella equazione 5.1 èrelativa ad un regolatore a tempo continuo, mentre se si vuole implementaretale legge di controllo su uno strumento digitale come Arduino è necessariauna elaborazione tempo-discreta della legge di controllo.[6]

Il regolatore PID digitale lavora su campioni discreti del segnale di ingresso,ad una opportuna e fissata frequenza di campionamento scelta. A pattoche questa frequenza di campionamento rispetti il teorema di Shannon delcampionamento, si può pensare al regolatore PID digitale come alla discretiz-zazione della versione a tempo continuo. Dunque a partire dalla espressionedifferenziale nel dominio del tempo del regolatore PID, si vuole perveniread una sua approssimazione a tempo discreto mediante una equazione alledifferenze.

Definito come ∆ il periodo di campionamento (l’inverso della frequenzadi campionamento prescelta), la approssimazione del termine proporzionale èassai immediata:

e(t) ≈ e(h) h∆ = t (5.2)

La approssimazione del termine integrale si effettua mediante la formula diEulero in avanti, approssimando un integrale definito con una sommatoria diaree di rettangoli: ∫ t

0

e(τ)dτ ≈h∑k=1

e(k) ·∆ h∆ = t (5.3)

Il termine derivativo invece si approssima mediante la formula di Euleroall’indietro, approssimando la derivata mediante un rapporto incrementale:

de(t)

dt≈ e(h)− e(h− 1)

∆h∆ = t (5.4)

Nella implementazione di un regolatore PID a segnali campionati su Arduino,è stata implementata però una leggermente diversa tecnica di approssimazio-ne differenziale, già vista nel Paragrafo 3.1, cioè un filtro differenziatore adifferenze all’indietro, con N = 3, ossia:

de(t)

dt≈ e(h) + e(h− 1)− e(h− 2)− e(h− 3)

4∆(5.5)

Il codice scritto in linguaggio per Arduino è disponibile nelle appendici.

Page 51: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 49

5.1.2 Anti-windup

Il fenomeno del windup, nell’ambito dei regolatori PID, si riferisce alla si-tuazione in cui vi è una eccessiva azione integrale nel controllo a causa dellasaturazione della variabile di controllo. Quando l’attuatore è in saturazione,l’azione di controllo è limitata, mentre l’azione integrale, che effettua unasomma nel tempo degli errori, continua ad aumentare la sua grandezza.

Figura 5.4: Effetti del fenomeno del windup sul controllo mediante regolatore PID[4]

Ciò provoca un calo delle prestazioni del sistema, poichè potrebbero verificarsigrosse sovraelongazioni a causa del ritardo dello scarico della azione integralein seguito al cambiamento di segno dell’errore. Esistono varie tecniche per laeliminazione di questo fenomeno, che sono dette tecniche di anti-windup.

Nel sistema Cart and Beam, l’angolo di inclinazione massima della barra inentrambi i versi deve essere limitato, sia per semplificare l’azione di controllosia per permanere in una zona in cui l’angolo di inclinazione sia piccolo, po-tendo così considerare, in modo approssimato, il sistema come lineare. Sonoperciò definiti, all’interno del programma, i limiti inferiori e superiori della

Page 52: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 50

azione di controllo che, se superati, portano l’azione di controllo in saturazione.

Una semplice tecnica di anti-windup, adottabile nel caso di regolatori PID atempo discreto e implementata nel programma, è quella di bloccare la sommanel tempo dell’errore nel termine integrale in caso di saturazione della azionedi controllo.

5.2 Taratura del regolatore PIDI tre parametri Kp, Ki e Kd, costituenti la legge di controllo di un regolatorePID, devono essere opportunamente scelti per garantire le prestazioni richieste:questo processo è detto taratura. Diverse tecniche di taratura sono descrittenel testo "Handbook of PI and PID Controller Tuning Rules" [10], a partireda quelle classiche (come Ziegler-Nichols e Cohen-Coon) fino a quelle piùmoderne.

La taratura è stata effettuata in maniera empirica attraverso vari esperi-menti, partendo da un regolatore puramente proporzionale (P), passandopoi ad un proporzionale-integrale (PI) e infine ad un proporzionale-integrale-derivativo (PID). Grazie all’interfacciamento eseguito con Matlab, è statopossibile visualizzare la risposta allo scalino nel tempo e, di conseguenza,variare opportunamente i valori dei coefficienti per migliorarne l’andamentoempiricamente.

A partire da una condizione iniziale nulla (vagoncino a fondo scala vici-no al sensore), il sistema è eccitato da un riferimento a scalino e la suarisposta è visualizzata su Matlab. Impostato il riferimento a scalino associatoal setpoint di 25 cm, in Figura 5.5 sono mostrati i diversi andamenti dellarisposta a seconda della tipologia di regolatore implementato.

La Figura 5.5 mostra che, con il regolatore puramente proporzionale (curva inblu), la ascesa del segnale di risposta sia rapida, ma possiede un overshoot del40%, un undershoot di circa 20% e un errore statico a regime. Il regolatorePI, con azione proporzionale ed integrale, migliora le prestazioni statiche,mostrando di fatto un errore a regime pressoché nullo, tuttavia presenta degliovershoot e undershoot maggiori ed è più lento nel portarsi a regime.

Infine, il regolatore PID mostra un andamento migliore dei sopracitati, conuna buona velocità di risposta (raggiunge il setpoint in circa 1.75 s ed uninferiore overshoot (circa 12%), senza alcun undershoot. In definitiva, il

Page 53: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 51

Tempo [s]0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Po

siz

ion

e [

cm

]

0

5

10

15

20

25

30

35

40Risposta allo scalino con Kp = 10, Ki = 0.001, Kd = 0.001

PPIPID

X: 1.755Y: 24.92

Figura 5.5: Andamento della risposta allo scalino a seconda della tipologia diregolatore utilizzato

Page 54: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 5. PROGETTO DEL REGOLATORE DEL SISTEMA 52

regolatore PID con coefficienti Kp = 10, Ki = 0.001 e Kd = 0.001 si è dimo-strato un regolatore abbastanza efficace per l’inseguimento di un riferimentoa scalino a partire da una condizione iniziale nulla.

Un’altra caratteristica interessante per il sistema Cart and Beam è la suacapacità di reagire ai disturbi. Posto quindi il vagoncino nella posizione disetpoint, si vuole studiare l’andamento della risposta ad un disturbo, effet-tuato in questo caso mediante un tocco con un dito.

Tempo [s]0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Po

siz

ion

e [

cm

]

10

15

20

25

30

35Reiezione del disturbo con Kp = 10, Ki = 0.001, Kd = 0.001

Figura 5.6: Andamento della risposta al disturbo con il regolatore PID

La Figura 5.6 mostra come il sistema, nonostante una sovraelongazione, siain grado di riportare a regime il vagoncino in tempi accettabili.

Page 55: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Capitolo 6

Conclusioni e sviluppi futuri

L’obiettivo di progettare, realizzare e controllare il sistema Cart and Beamsi può dire raggiunto: il controllo si è dimostrato sufficientemente efficacecon diverse condizioni iniziali e capace di reagire ai disturbi. La sostituzio-ne del motore in continua con un motore passo-passo ha significativamentesemplificato il lavoro, in virtù della maggior attitudine di quest’ultimo ad uncontrollo di precisione.

E’ stato inoltre sviluppato, anche se non ancora completato, un sistemadi taratura automatica dei coefficienti del PID basato su un modello di otti-mizzazione quadratica, effettuato mediante l’interfacciamento di Arduino conMatlab mediante serial communication e con una simulazione Hardware-In-The-Loop del sistema Cart and Beam. Posti come variabili decisionali i trecoefficienti del regolatore PID, una opportuna funzione su Matlab effettua laminimizzazione dello scarto quadratico medio della differenza fra il la rispostadel sistema campionata e misurata dal sensore ultrasonico e il segnale diriferimento a gradino, variando opportunamente su varie iterazioni i valoridei coefficienti.

Figura 6.1: Schema della comunicazione Matlab-Arduino per HIL

53

Page 56: Progettazione, realizzazione e controllo di un sistema Cart and Beam

CAPITOLO 6. CONCLUSIONI E SVILUPPI FUTURI 54

Nell’arco di tempo speso per lo sviluppo di questo progetto sono stati adottatimolti approcci differenti inerenti a diverse branche dell’ingegneria, arricchendoil bagaglio di conoscenze acquisito. La applicazione pratica di tecniche dicontrollo su un sistema completamente realizzato da zero ha evidenziatomarcatamente le grandi differenze presenti fra la idealità dei modelli didatticicon la realtà.

Il lavoro svolto si presta anche come base per successivi sviluppi in am-bito di tesi o di semplice progetto individuale, in particolare possono essereesplorate le seguenti tecniche di controllo:

• Controllo su base stato

• Controllo con tecniche fuzzy

• Controllo adattativo

Possono esssere esplorate altre tipologie di regolatori diverse da un PID,oppure possono essere implementati un grande numero di metodi di taraturadei coefficienti PID per valutarne gli effetti di controllo.

Infine può essere prodotta la realizzazione del sistema Cart and Beam conil motore DC acquistato inizialmente, implementando delle strategie dicompensazione del backlash.

Page 57: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Appendici

55

Page 58: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Appendice A

A.1 Codice di comunicazione seriale fra Matlabe Arduino

1 % I n i z i a l i z z o l a s e r i a l por t2 s = s e r i a l ( ’ /dev/cu . usbmodemFD131 ’ ) ;3 set ( s , ’ BaudRate ’ , 9600 ) ;4 set ( s , ’ DataBits ’ , 8 ) ;5 set ( s , ’ StopBits ’ , 1 ) ;6 fopen ( s ) ;7 s . ReadAsyncMode = ’ cont inuous ’ ;8

9 % Var i a b i l i10 numberOfDatas = 2000 ;11 sampleTime = 0 . 0 0 5 ;12 data = zeros (1 , numberOfDatas ) ;13 i = 1 ;14

15 % Figura16 f igure ( 1 ) ;17 hold on ;18 t i t l e ( ’ Dati ␣da␣Arduino ’ ) ;19 xlabel ( ’Tempo␣ [ s ] ’ ) ;20 ylabel ( ’ Dati ␣da␣HC−SR04␣ [ cm] ’ ) ;21

22 readasync ( s ) ;23

24 while ( i<=numberOfDatas )25

26 % Pre leva i d a t i d a l l a comunicazione s e r i a l e

56

Page 59: Progettazione, realizzazione e controllo di un sistema Cart and Beam

APPENDICE A. 57

27 data ( i ) = fscanf ( s , ’%f ’ ) ;28

29 i=i +1;30

31 end32

33 % Chiudi l a comunicazione s e r i a l e34 fc lose ( s ) ;35

36 % Genera l a v a r i a b i l e tempo37 t=0: sampleTime : ( ( sampleTime ∗( numberOfDatas))−sampleTime ) ;38

39 % Lancia l a f i g u r a40 plot ( t , data ) ;41

42 return ;

A.2 Interfacciamento encoder con Arduino

1 void doEncoderA ( ) {2 /∗ Cont ro l l a una t r an s i z i o n e low−h igh s u l cana le A∗/3 i f ( d i g i t a lRead ( encoderPinA ) == HIGH) {4 /∗ Cont ro l l a i l cana le B∗/5 i f ( d i g i t a lRead ( encoderPinB ) == LOW) {6 encoderPos = encoderPos + 1 ; // senso orario7 }8 else {9 encoderPos = encoderPos − 1 ; // senso antiorario

10 }11 }12 else // dovra’ essere una transizione high-low sul canale A13 {14 // controlla il canale B per capire la direzione del moto15 i f ( d i g i t a lRead ( encoderPinB ) == HIGH) {16 encoderPos = encoderPos + 1 ; // senso orario17 }18 else {19 encoderPos = encoderPos − 1 ; // senso antiorario20 }21 }22 }

Page 60: Progettazione, realizzazione e controllo di un sistema Cart and Beam

APPENDICE A. 58

23

24 void doEncoderB ( ) {25 /∗Simmetrico a l caso A∗/26 i f ( d i g i t a lRead ( encoderPinB ) == HIGH) {27 i f ( d i g i t a lRead ( encoderPinA ) == HIGH) {28 encoderPos = encoderPos + 1 ;29 }30 else {31 encoderPos = encoderPos − 1 ;32 }33 }34 else {35 i f ( d i g i t a lRead ( encoderPinA ) == LOW) {36 encoderPos = encoderPos + 1 ;37 }38 else {39 encoderPos = encoderPos − 1 ;40 }41 }42 }

A.3 Programma del sistema Cart and Beam

1 #include <Acce lStepper . h>2 #include <NewPing . h>3 #include <Thread . h>4 #include <ThreadContro l l e r . h>5 #include <RunningMedian . h>6

7 /∗De f in i z i one pin sensore u l t r a s on i c o ∗/8 #define t r i gP in 79 #define echoPin 6

10

11 /∗De f in i z i one pin motore∗/12 #define pwmA 313 #define pwmB 1114 #define brakeA 815 #define brakeB 916

17 /∗De f in i z i one c o s t a n t i d i tempo∗/18 unsigned long lastTime = 0 ;

Page 61: Progettazione, realizzazione e controllo di un sistema Cart and Beam

APPENDICE A. 59

19

20 /∗De f in i z i one parametri PID∗/21 double angMin , angMax ;22 double l a s tAng l e ;23 double Setpoint , Sensor , Angle ;24 double errSum , la s tEr r1 , l a s tErr2 , l a s tE r r 3 ;25 double Kp, Ki , Kd;26

27 /∗Tempo d i campionamento∗/28 int sampleTime = 5 ;29

30 /∗De f in i z i one o g g e t t i motore e sensore ∗/31 Acce lStepper s t epper (2 , 12 ,13 ) ;32 NewPing s en so r e ( t r i gP in , echoPin , 500 ) ;33

34 /∗De f in i z i one o g g e t t i mu l t i t h r ead ing ∗/35 ThreadContro l l e r c on t r o l = ThreadContro l l e r ( ) ;36 Thread pidThread = Thread ( ) ;37 Thread motorThread = Thread ( ) ;38

39 /∗De f in i z i one f i l t r o mediano∗/40 RunningMedian mediana = RunningMedian (5 ) ;41

42 /∗ E f f e t t u a l a computazione PID∗/43 void Computa ( ) {44

45 double e r r o r = Setpo int − Sensor ; //errore proporzionale46 i f ( l a s tAng l e < angMax && las tAng l e > angMin ) { //

sommo solo se l’azione di controllo è all’interno della regioneammissibile

47 errSum += e r r o r ∗sampleTime ; //errore integrale48 }49 double dErr = ( e r r o r + l a s tE r r 1 − l a s tE r r 2 −

l a s tE r r 3 ) /(4∗ sampleTime ) ; //errorederivativo

50

51 Angle = Kp∗ e r r o r + Ki∗errSum + Kd∗dErr ; //valoredell’angolo

52 l a s tAng l e = Angle ;53

54 /∗ Saturaz ione s u l l ’ u s c i t a ∗/

Page 62: Progettazione, realizzazione e controllo di un sistema Cart and Beam

APPENDICE A. 60

55 i f ( Angle > angMax) {56 Angle = angMax ;57 }58 i f ( Angle < angMin ) {59 Angle = angMin ;60 }61

62 /∗Comando l a ro t a z i one de l motore∗/63 s t epper .moveTo( Angle ) ;64

65 /∗Modif ica l e v a r i a b i l i per l a seguente i t e r a z i o n e∗/

66 l a s tE r r 3 = l a s tE r r 2 ;67 l a s tE r r 2 = l a s tE r r 1 ;68 l a s tE r r 1 = e r r o r ;69 }70

71 /∗Funzione che e f f e t t u a i l s e t t a g g i o de i c o e f f i c i e n t iPID∗/

72 void SetTuning (double kp , double ki , double kd ) {73 Kp = kp ;74 Ki = k i ;75 Kd = kd ;76 }77

78 /∗Funzione che sa tura l ’ u s c i t a d e l r e g o l a t o r e PID∗/79 void SaturateOutput (double outmin , double outmax ) {80 angMin = outmin ;81 angMax = outmax ;82 }83

84 /∗Funzione chiamata da l Thread Con t ro l l e r d e l PID∗/85 void pidCal lback ( ) {86 double input = 0.017∗ s en so r e . ping ( ) − 7 . 5 ;87 mediana . add ( input ) ;88 i f (mediana . getMedian ( ) > 0) {89 Sensor = mediana . getMedian ( ) ;90 S e r i a l . p r i n t l n ( Sensor ) ;91 }92 Computa ( ) ;93 }

Page 63: Progettazione, realizzazione e controllo di un sistema Cart and Beam

APPENDICE A. 61

94

95 /∗Funzione chiamata da l Thread Con t ro l l e r d e l motore∗/96 void motorCallback ( ) {97 s t epper . run ( ) ;98 }99

100 void setup ( ) {101

102 /∗ I n i z i a l i z z a z i o n e monitor s e r i a l e ∗/103 S e r i a l . begin (9600) ;104

105 /∗ I n i z i a l i z z a z i o n e pin motore∗/106 pinMode (pwmA, OUTPUT) ;107 pinMode (pwmB, OUTPUT) ;108 pinMode ( brakeA , OUTPUT) ;109 pinMode ( brakeB , OUTPUT) ;110

111 d i g i t a lWr i t e (pwmA, HIGH) ;112 d i g i t a lWr i t e (pwmB, HIGH) ;113 d i g i t a lWr i t e ( brakeA , LOW) ;114 d i g i t a lWr i t e ( brakeB , LOW) ;115

116 /∗ I n i z i a l i z z a z i o n e Acce lS tepper ∗/117 s t epper . setMaxSpeed (3000) ;118 s t epper . setSpeed (3000) ;119 s t epper . s e tAc c e l e r a t i o n (3000) ;120

121 /∗ I n i z i a l i z z a z i o n e v a r i a b i l i d e l s i s tema ∗/122 Angle = 0 ;123 Setpo int = 25 ;124

125 /∗ I n i z i a l i z z a z i o n e PID∗/126 SetTuning ( 10 , 0 . 0 01 , 0 . 0 01 ) ;127 SaturateOutput (−100 ,100) ;128

129 /∗ I n i z i a l i z z a z i o n e threads ∗/130 pidThread . onRun( pidCal lback ) ;131 pidThread . s e t I n t e r v a l ( sampleTime ) ;132 motorThread . onRun( motorCallback ) ;133 motorThread . s e t I n t e r v a l ( 0 . 0 1 ) ;134

Page 64: Progettazione, realizzazione e controllo di un sistema Cart and Beam

APPENDICE A. 62

135 /∗ I n i z i a l i z z a z i o n e ThreadConrto l l er ∗/136 c on t r o l . add(&pidThread ) ;137 c on t r o l . add(&motorThread ) ;138 delay (500) ;139 }140

141 /∗Main program∗/142 void loop ( ) {143 c on t r o l . run ( ) ;144 }

Page 65: Progettazione, realizzazione e controllo di un sistema Cart and Beam

Bibliografia

[1] Mohammad Rasoul Abazari. Analysis and design of ball & beam systemrespecting to the equations of motion of dc motor. Technical report,Isfahan University of Technology, 2013.

[2] Jaakko Ala-Paavola. Software development with hardware inthe loop. http://embeddedexperience.blogspot.it/2014/01/software-development-with-hardware-in.html.

[3] D. Augustin. Generate stepper-motor speed profiles in real time.Embedded Systems Programming, 2005.

[4] Brett Beauregard. Improving the beginner’s pid: Reset windup. http://brettbeauregard.com/blog/2011/04/improving-the-beginner\T1\textquoterights-pid-reset-windup/.

[5] Cesare Bini. Complementi di fisica per laboratorio di meccanica. http://www.roma1.infn.it/people/bini/complementi_meccanica.pdf.

[6] Gianfranco Fenu. Controllo digitale. http://control.units.it/it/downloads-it/send/37-lezioni-cd/354-parte-9.html. Parte 9.

[7] Martin Gomez. Hardware-in-the-loop simulation. Technical report, JohnsHopkins University’s Applied Physics Lab, 2001.

[8] Pavel Holoborodko. Smooth noise robust differentiators.http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/,February 2008.

[9] Mattias Nordin and Per-Olof Gutman. Controlling mechanical systemswith backlash - a survey. Automatica, 38:1633–1649, 2002.

[10] Aidan O’Dwyer. Handbook of PI and PID Controller Tuning Rules (3rdEdition). Imperial College Press, 2009.

63

Page 66: Progettazione, realizzazione e controllo di un sistema Cart and Beam

BIBLIOGRAFIA 64

[11] Wei Wang. Control of a ball and beam system. Master’s thesis, Universityof Adelaide, South Australia 5005.