C:/Users/User/Desktop/tesi/Tesi di...

80
UNIVERSIT ` A DEGLI STUDI DI ROMA TOR VERGATA FACOLT ` A DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA DELL’AUTOMAZIONE A.A. 2010/2011 Tesi di Laurea CONTROLLO IN CORRENTE DI UN MOTORE DC RELATORE CANDIDATO prof. Daniele Carnevale Pierluigi Di Franco

Transcript of C:/Users/User/Desktop/tesi/Tesi di...

Page 1: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

UNIVERSITA DEGLI STUDI DI ROMA

TOR VERGATA

FACOLTA DI INGEGNERIA

CORSO DI LAUREA IN INGEGNERIA

DELL’AUTOMAZIONE

A.A. 2010/2011

Tesi di Laurea

CONTROLLO IN CORRENTE

DI UN MOTORE DC

RELATORE CANDIDATO

prof. Daniele Carnevale Pierluigi Di Franco

Page 2: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Alla mia fidanzata

Alessia Rosa

Page 3: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Indice

Ringraziamenti 1

Introduzione 2

1 Azionamento motore 4

1.1 I motori DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.1 Circuito equivalente elettrico . . . . . . . . . . . . . . . . . . . 5

1.1.2 Caratterizzazione del carico meccanico . . . . . . . . . . . . . 8

1.2 Pilotaggio ON-OFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3 Pilotaggio PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 Il ponte ad H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Realizzazione hardware 16

2.1 L298N: specifiche tecniche . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.1 Dimensionamento Rsense . . . . . . . . . . . . . . . . . . . . . 19

2.2 Acquisizione dati: misura di Vsense . . . . . . . . . . . . . . . . . . . . 20

2.2.1 Amplificatore operazionale . . . . . . . . . . . . . . . . . . . . 21

2.2.2 Configurazione non invertente . . . . . . . . . . . . . . . . . . 23

2.2.3 Configurazione con filtro attivo . . . . . . . . . . . . . . . . . 24

2.3 Acquisizione dati: posizione e verso di rotazione . . . . . . . . . . . . 26

INDICE I

Page 4: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

INDICE

2.3.1 Encoder tachimetrico . . . . . . . . . . . . . . . . . . . . . . . 26

2.3.2 Verso di rotazione . . . . . . . . . . . . . . . . . . . . . . . . . 27

3 Realizzazione software 29

3.1 Arduino Duemilanove . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.1.1 Linguaggio di programmazione . . . . . . . . . . . . . . . . . 30

3.1.2 Impostare la frequenza PWM . . . . . . . . . . . . . . . . . . 33

3.1.3 Procedura di azionamento . . . . . . . . . . . . . . . . . . . . 34

3.2 Identificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.2.1 Il problema della Dead Zone . . . . . . . . . . . . . . . . . . . 38

3.2.2 Stima della velocita angolare . . . . . . . . . . . . . . . . . . . 39

3.2.3 System Identification Toolbox . . . . . . . . . . . . . . . . . . 40

3.2.4 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4 Progetto di regolatori 46

4.1 Controllo in posizione . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.2 Controllo in corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5 Conclusioni e sviluppi futuri 55

Appendice A - Schema elettrico circuito di potenza 57

Appendice B - Codice Arduino 59

Appendice C - Codice MatLab 70

Elenco delle figure 74

Bibliografia 74

INDICE II

Page 5: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Ringraziamenti

I ringraziamenti sono per mio padre Eduardo per avermi dato l’opportunita di stu-

diare, e per la mia fidanzata Alessia per il costante supporto morale nella vita di

tutti i giorni. Ringrazio tutte le persone con cui ho condiviso le ore nel laboratorio

di robotica pesante, che mi hanno aiutato con la loro esperienza quando ne ho avuto

bisogno. In particolare ringrazio Andrea, i due Paolo, Danilo per il loro aiuto, e un

ringraziamento speciale per Fausto che all’ inizio della tesi mi ha assistito insegnan-

domi la saldatura e la comunicazione Arduino MatLab. Ovviamente ringrazio il prof.

Carnevale Daniele per l’ opportunita che mi ha dato con questa tesi e per il costante

aiuto e supporto.

Introduzione 1

Page 6: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Introduzione

Con la definizione "azionamenti elettrici" si indica una vasta gamma di sistemi compo-

sti da attuatori elettrici (i motori) utilizzati per generare il movimento, dai rispettivi

moduli di controllo, nonche degli organi di trasmissione e trasformazione del moto.

Questi azionamenti sono utilizzati nei piu disparati settori applicativi che comprendo-

no, tra l’altro, elettrodomestici, trazione ferroviaria, impiantistica industriale e civile

(pompe, ascensori, ... ), robot industriali, macchine a controllo numerico, strumenta-

zione elettronica, periferiche di calcolatori (testine di stampanti, unita dischi, scanner,

...) , accessori automobilistici (vetri elettrici, tergicristalli, pompe della benzina) e

molti altri. Ciascuna di queste applicazioni ha requisiti differenti in termini di po-

tenza installata e caratteristiche di comando. Inoltre, ci sono applicazioni in cui e

necessario regolare la velocita del motore (ad esempio mandrino di un trapano, pom-

pa, ventilatore) ed altre in cui il motore va pilotato in posizione (ad esempio assi di

un robot industriale o di una fresa a controllo numerico), piu raramente si utilizza un

controllo di coppia. Talvolta la regolazione e grossolana (ad esempio ventilatore acce-

so/spento a una o due velocita), altre volte e richiesta una regolazione molto precisa

(ad esempio macchina a controllo numerico). Per far fronte a questa enorme varieta

di esigenze sono state sviluppate differenti tipologie di motori e di relativi sistemi di

regolazione. Nei decenni scorsi, prima che cominciasse lo sviluppo dell’elettronica di

bassa ed alta potenza i sistemi di regolazione erano piu semplici e ciascuno di essi

Introduzione 2

Page 7: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Introduzione

dedicato a specifici campi applicativi. Le prospettive sono profondamente mutate

durante la seconda meta degli anni 80; infatti, lo sviluppo di nuovi semiconduttori di

potenza (in particolare MOSFET e IGBT) ha permesso di realizzare, con costi decisa-

mente competitivi, inverter caratterizzati da un elevato grado di affidabilita. Inoltre

lo sviluppo dei microprocessori (ed in particolare modo quello dei Microcontrollori e

dei Digital Signal Processors) ha consentito di impiegare tecniche di controllo molto

piu sofisticate di quelle tradizionali. L’obbiettivo di questa tesi e la realizzazione di

un dispositivo elettronico di pilotaggio di un motore in corrente continua , e di con-

trollare, tramite microcontrollore, le fondamentali grandezze meccaniche: posizione,

velocita angolare e coppia motrice. In particolare il lavoro svolto e stato suddiviso in

quattro capitoli, poiche quattro sono state le tematiche studiate:

1. Il primo capitolo introduce il funzionamento di un motore DC e le tecniche di

pilotaggio, descrivendo le problematiche da affrontare;

2. Nel secondo capitolo e descritta la realizzazione del circuito elettrico di comando

del motore e dei dispositivi per l’acquisizione delle grandezze di interesse, con

particolare attenzione alle scelte di dimensionamento dei componenti elettrici;

3. Il terzo capitolo descrive il programma software implementato su microcon-

trollore e PC per la fase di identificazione: tramite i dati di ingresso e uscita

e infatti possibile identificare, sfruttando opportuni algoritmi, la funzione di

trasferimento del dispositivo elettronico e del motore DC;

4. Nell’ultimo capitolo, avendo una buona approssimazione del comportamento

dinamico del motore, vengono presentati gli algoritmi di controllo di posizione,

velocita e coppia.

Introduzione 3

Page 8: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Capitolo 1

Azionamento motore

Questo capitolo ha lo scopo di introdurre il lettore all’azionamen-to di un motore DC. Dopo una descrizione dei principi di fun-zionamento di un motore DC e della sua modellazione matema-tica, seguira una spiegazione delle tecniche di pilotaggio utilizzate,introducendo in via teorica le problematiche affrontate.

1.1 I motori DC

Il motore in corrente continua (brevemente motore DC, dall’inglese: direct current)

e molto usato per piccole potenze e trova largo utilizzo nel settore dell’automazione

di asservimento e nella robotica. Il principio di funzionamento di un motore elettrico

e basato sull’interazione di due campi magnetici che si attraggono e respingono a

vicenda. Il motore e composto da una parte rotante detta rotore ed una parte fissa

detta statore. Lo statore e l’induttore di campo magnetico, mentre il rotore e l’indotto,

ovvero l’elemento soggetto al campo. Tra i due esiste un sottile strato (a forma

di corona) d’aria detto traferro. L’indotto e rappresentato da un circuito detto di

armatura. I conduttori dell’armatura sono posti all’interno delle cave, buchi ricavati

lungo il cilindro rotorico. L’armatura e alimentata dalla corrente ia, inviata tramite

le spazzole su un sistema di lamelle solidali al rotore detto collettore. L’induttore e

4

Page 9: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.1 I motori DC

Figura 1.1: Sezione di un motore elettrico

rappresentato da un circuito detto di eccitazione. Lo statore e detto induttore perche e

la parte che genera il campo magnetico principale. Esso possiede i poli principali su cui

sono avvolte le bobine di eccitazione entro cui scorre la corrente ie. Il sistema appena

presentato di poli/bobine e detto avvolgimento di eccitazione. I motori DC, collegati

ad un’opportuna scheda di controllo, possono essere controllati con un segnale PWM

(oggetto della tesi), inoltre i motori DC di piccola potenza sono economici, facili da

reperire e spesso sono corredati di riduttore (gearbox).

1.1.1 Circuito equivalente elettrico

Le equazioni che seguono rappresentano il modello matematico del rotore, sotto le

seguenti ipotesi semplificative:

1. si assume che il circuito magnetico sia lineare;

5

Page 10: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.1 I motori DC

2. si assume che l’attrito meccanico sia funzione lineare della velocita del motore.

Figura 1.2: Schema elettrico equivalente di un motore DC

In un motore DC, il fusso magnetico Φ e generato da avvolgimenti collocati sul statore.

Si assumera che lo statore abbia una sola terminazione polare, caratterizzata da una

induttanza Le associata al relativo avvolgimento e da una resistenza Re associata alle

dispersioni nel conduttore (vedi Figura 1.2). L’equazione che descrive questo circuito

elettrico e data da:

ve(t) = Le

diedt

+Reie (1.1.1)

Poiche la relazione (1.1.1) e lineare, trasformando le variabili nel dominio di Laplace,

si ottiene:

ie(s)

ve(s)=

Ke

1 + τes(1.1.2)

dove Ke = 1Re

e il guadagno di statore e τe = Le

Ree la costante di tempo di statore.

Analogamente, si assume che il rotore abbia una sola terminazione polare caratteriz-

zata da una resistenza di armatura Ra (qualche ohm), da un induttanza di armatura

La (milliHenry, ininfluente a regime ma importante alla partenza e per i problemi

che causa). Inoltre, va considerato nel modello elettrico del rotore l’effetto della forza

6

Page 11: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.1 I motori DC

controelettromotrice e(t), che corrisponde ad una differenza di tensione indotta(dallo

statore), proporzionale alla velocita di rotazione. L’equazione associata al relativo

circuito elettrico e:

va(t) = La

dia(t)

dt+Raia(t) + e(t) (1.1.3)

con va(t) e ia(t) rispettivamente tensione e corrente di armatura. Nuovamente, poiche

la relazione (1.1.3) e lineare, trasformando nel dominio di Laplace si ottiene:

ia(s)

va(s)− e(s)=

Ka

1 + τas(1.1.4)

dove Ka =1Ra

e il guadagno di rotore e τa =La

Rae la costante di tempo di rotore. Sulla

base delle proprieta fisiche del motore e delle relazioni che caratterizzano l’interazione

tra le quantita meccaniche e le quantita elettriche del motore, si puo dimostrare che le

due seguenti relazioni sussistono. Queste relazioni forniscono un’ espressione esplicita

della forza controelettromotrice e e della coppia meccanica cm erogata dal motore:

e = K · ie · ω = Ke · ω (1.1.5)

cm = K · ie · ia = Kc · ia (1.1.6)

con Ke e Kc due costanti, proprie del motore, dette costante elttrica e di coppia, e ω

velocita angolare.

Osservazione 1.1.1. Dalle equazioni precedentemente riportate si nota come la cop-

pia motrice sia direttamente proporzionale alla corrente d’armatura. L’oggetto della

tesi sara quello di controllare la corrente ia, in modo tale che una volta calcolata

sperimentalmente la costante di proporzionalita Kc sia possibile avere un controllo in

coppia.

7

Page 12: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.1 I motori DC

1.1.2 Caratterizzazione del carico meccanico

Il comportamento del carico meccanico e praticamente sempre di tipo non lineare,

basti pensare all’ attrito di primo distacco e all’ insorgere di movimenti d’ aria che

producono coppie resistenti di valore dipendente dal quadrato della velocita; spesso,

pero, si effettua una implicita o esplicita linearizzazione attorno ad un punto di lavoro

in modo da impiegare un modello del carico di tipo lineare. Il piu generale modello

lineare del carico puo venire ricavato eguagliando la coppia motrice cm alla somma di

tre termini:

• un termine che rappresenta una coppia di carico esercitata sull’asse del motore;

• un termine proporzionale alla velocita ω di rotazione del motore secondo un

coefficiente di attrito F, pari alla somma del coefficiente di attrito del motore e

di quello del carico, riportato all’ asse del motore;

• un termine proporzionale alla derivata della velocita di rotazione del motore

secondo un momento di inerzia J, pari alla somma del momento di inerzia del

motore e di quello del carico, riportato all’ asse del motore.

Si ottiene, quindi, la seguente equazione:

cm = cr + Fω + Jdω

dt(1.1.7)

Analogamente al caso elettrico, anche per le equazioni meccaniche si puo associare

una funzione di trasferimento lineare alla relazione (1.1.7):

ω(s)

cm(s)− cr(s)=

Km

1 + τms(1.1.8)

dove Km = 1Fe il guadagno meccanico e τm = J

Fe la costante di tempo meccanica. Si

vuole ora ottenere la relazione diretta tra posizione e tensione di armatura. Integrando

8

Page 13: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.2 Pilotaggio ON-OFF

entrambi i membri dell’equazione 1.1.8, sotto l’ipotesi di carico nullo che agisce sul

motore, e inserendo l’equazione 1.1.7 si ottiene:

θ(s) =Km

s(1 + τms)KT ia(s). (1.1.9)

Infine, sostituendo la 1.1.4 e la 1.1.5, e isolando θ(s) si ha:

θ(s) =KmKa

s(τmτas2 + (τm + τa)s+Ke + 1)va(s) (1.1.10)

1.2 Pilotaggio ON-OFF

I motori DC possono essere controllati in vari modi: il pilotaggio piu semplice e quello

ON-OFF che permette di comandare il motore solo alla massima velocita di rotazione

in un verso (interruttore ON) oppure fermarlo (interruttore OFF): questo controllo

puo essere implementato con un interruttore (es. un mos o un transistor) e con un

diodo di ricircolo necessario per evitare danni al resto del circuito (il motore e un

carico con una componente induttiva). Lo schema e quello di Figura 1.3. In questa

configurazione la potenza dissipata sul transistor (uguale al prodotto di corrente per

tensione ai suoi capi) e sempre minima e tutta l’energia prelevata dall’alimentazione

e effettivamente usata dal motore. Infatti:

• quando il transistor conduce, la tensione ai suoi capi e prossima a 0 volt mentre

quella ai capi del motore e praticamente pari alla Valim. Il motore quindi ruota

alla massima velocita;

• quando il transistor e aperto la corrente nel MOS e evidentemente nulla e quindi

nulla la potenza dissipata dal MOS (e anche fornita a motore).

Il limite di questa tecnica di pilotaggio e evidente: il motore e fermo oppure ruota

alla massima velocita. L’ avvolgimento del motore e sostanzialmente un induttore,

9

Page 14: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.2 Pilotaggio ON-OFF

Figura 1.3: Pilotaggio ON-OFF: quando l’interruttore e aperto il motore e fermo,quando e chiuso gira alla massima velocita. A destra un esempio di implementazione

cioe un oggetto che tende a mantenere costante la corrente che in esso scorre. Quando

il transistor rappresentato nello schema precedente si chiude, la corrente raggiunge

il valore a regime in un certo tempo, secondo una curva esponenziale dipendente da

parametri interni del motore. Questo fatto non causa, in prima approssimazione, par-

ticolari problemi. Quando un transistor si apre, la corrente istantaneamente dovrebbe

andare a zero; l’induttore tende pero ad impedire questo repentina diminuzione e per

fare questo tende a far salire la tensione sul collettore del transistor (immaginate il

transistor che, improvvisamente, sia diventato una resistenza molto elevata in cui

l’induttore tenta di far passare una corrente: per la legge di ohm, la tensione deve

salire). La tensione arriva facilmente a centinaia di volt, danneggiando il transistor.

Per evitare questo fenomeno distruttivo viene inserito in parallelo alla bobina del mo-

tore un diodo che fornisce alla corrente una via alternativa a quella del transistor nel

momento in cui questo si apre. I diodi da utilizzare in queste applicazioni devono

10

Page 15: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.3 Pilotaggio PWM

avere due caratteristiche fondamentali:

• Essere veloci, cioe essere capaci di passare in poco tempo dalla condizione di

non passaggio di corrente a quella di conduzione e viceversa. In genere sono

richiesti tempi di intervento dell’ordine delle decine di nanosecondi.

• Essere capaci di gestire correnti elevate in quanto al momento dello spegnimento

tutta la corrente del motore, in genere ampere, passa nei diodi.

1.3 Pilotaggio PWM

Figura 1.4: Pulse With Modulation

Un segnale PWM (Pulse Width Modulation, ovvero modulazione a variazione

di larghezza d’ impulso) e un’ onda quadra di duty cycle variabile che permette di

controllare l’ assorbimento (la potenza assorbita) di un carico elettrico (nel nostro

11

Page 16: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.3 Pilotaggio PWM

caso il motore DC), variando (modulando) il duty cycle. Il duty cycle e il rapporto

tra il tempo in cui l’onda assume valore alto e il periodo T (l’inverso della frequenza:

T=1/f). Con riferimento in Figura 1.4, ne segue che un duty cycle del 50% corrisponde

ad un’ onda quadra che assume valore alto per il 50% del tempo, un duty cycle dell’80%

corrisponde ad un’ onda quadra che assume valore alto per l’80% del tempo e basso

per il restante 20%, un duty cycle del 100% corrisponde ad un segnale sempre alto

e un duty cycle dello 0% ad un segnale sempre basso. L’onda rettangolare in uscita

da questo stadio e il segnale con cui vengono effettivamente pilotati gli switch (MOS-

FET) del convertitore di potenza. Questa tecnica permette di modificare la velocita

pur assicurando un rendimento energetico elevato. Il circuito e lo stesso utilizzato

nel funzionamento ON-OFF, gia descritto nel precedente paragrafo. L’ idea e pero

quella di pilotare la base del transistor con un’ onda quadra: se la commutazione

e piuttosto frequente (qualche KHz), a causa del comportamento da induttore, la

corrente media e sostanzialmente costante e proporzionale al duty cycle del segnale

sulla base del MOS. Il grafico in Figura 1.5 mostra l’ andamento della corrente nel

motore applicando, nella prima meta, un’ onda quadra (quindi un duty cycle del

50%) e, nella seconda meta, un segnale rettangolare con duty cycle del 75%. Il grafico

e idealizzato e nell’ ipotesi di motore fermo (si noti la corrente iniziale nulla). Si

noti anche il caratteristico andamento ‘‘seghettato’’ ma sostanzialmente costante.

Un’ osservazione e relativa al fatto che non tutti i motori sono adatti al pilotaggio

PWM, soprattutto alla frequenze piu elevate: infatti la perdita nei circuiti magnetici

e proporzionale alla frequenza e potrebbe divenire inaccettabile, soprattutto se la

frequenza di pilotaggio supera la decina di KHz. Anche il transistor, se inadatto all’

applicazione o mal pilotato, puo presentare surriscaldamenti a frequenza superiori

alla decina di KHz. Tra i molti vantaggi che si ottengono con l’ utilizzo di tecniche

12

Page 17: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.4 Il ponte ad H

Figura 1.5: Andamento della corrente del motore sotto l’ azione dei una PWMvariabile

PWM, il piu importante e che le perdite di potenza rimangono estremamente basse

se confrontate con l’ entita della potenza in uscita, inoltre il segnale PWM, proprio

per la sua natura digitale e facilmente manipolabile (e un’operazione relativamente

semplice variare la durata degli impulsi di un onda rettangolare).

1.4 Il ponte ad H

Il tipo di controllo appena presentato non permette di far girare il motore in entrambi

i versi di rotazione. Per far girare il motore nel verso opposto e necessario infatti

invertire il segno della corrente che passa all’ interno del motore stesso. Per far cio si

usa un circuito chiamato ponte H costituito da 4 interruttori comandati e da 4 diodi di

ricircolo, il cui schema e rappresentato in Figura 1.6. Il nome deriva dalla somiglianza

del circuito alla lettera maiuscola H, dove il motore costituisce il segmento orizzontale

ed i quattro transistor i quattro segmenti verticali. Lo schema mostra come i quattro

13

Page 18: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.4 Il ponte ad H

Figura 1.6: Schema ponte H

transistor sono connessi. In genere i due transistor inferiori sono detti di sink in

quanto assorbono la corrente proveniente da motore oppure low side switch; i due

transistor connessi direttamente alla Vcc sono detti di source oppure high side switch.

A seconda di quali transistor sono attivi, abbiamo diversi possibili percorsi per la

Figura 1.7: Funzionamento ponte H

corrente, illustrati nell’ immagine in Figura 1.7:

• (linea verde) Se e attivo un transistor di sink ed uno di source appartenenti

a lati opposti del ponte, abbiano passaggio di corrente nel motore. In questo

14

Page 19: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 1 Azionamento motore §1.4 Il ponte ad H

caso il motore e in rotazione in un verso; per ottenere la rotazione opposta e

evidentemente necessario attivare la coppia simmetrica.

• (linea rossa) Se e attivo un transistor di sink ed uno di source appartenenti

allo stesso lato del ponte abbiamo un corto circuito. Inutile dire che questa

situazione deve essere evitata nel modo piu assoluto in quanto porterebbe alla

distruzione del ponte o dell’ alimentazione in tempi brevissimi.

• (linea blu) Se tutti i transistor sono spenti non abbiamo maglie in cui possa

passare la corrente fornita dall’ alimentatore. Quella indicata e la via che l’

eventuale corrente accumulata dall’ induttore percorre: si tratta ovviamente

di un fenomeno temporaneo ma che deve necessariamente essere previsto per

quanto gia illustrato. Terminata la scarica dell’ induttore non si ha piu passaggio

di corrente e se il motore era precedentemente in moto si arresta lentamente a

causa degli attriti meccanici.

• (linea gialla) Se e attivo almeno uno dei transistor di source e nessuno di quelli

di sink non vi sono percorsi in cui passa la corrente fornita dall’ alimentatore.

La differenza rispetto alla situazione precedente e il sostanziale cortocircuito che

si viene a creare ai capi del motore: infatti la tensione ai capi del motore e pari

alla tensione diretta del diodo sommata a quella di conduzione del transistor.

L’ effetto e una vigorosa azione frenante causata dalla presenza del generatore

equivalente e gia citato a proposito delle equazioni di funzionamento e dalla

conseguente corrente generata dal motore.

15

Page 20: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Capitolo 2

Realizzazione hardware

Questo capitolo riguarda il dimensionameto dei componenti per larealizzazione del circuito elettrico di potenza per il pilotaggio moto-re, dopodiche verrano introdotti i sensori utilizzati per l’ aquisizionedelle grandezze da controllare: posizione e intensita di corrente.

2.1 L298N: specifiche tecniche

Esistono due tipi di ponti H: i ponti H discreti, costituiti da componenti sparsi come

transistor e diodi e i ponti H integrati, in questo caso tutto il circuito e racchiuso in un

package plastico di tipo DIP (dual in-line package) o simile. I ponti H integrati sono

molto versatili e, oltre a garantire una bassa occupazione di area nel circuito (in alcuni

casi, come il SN754410 e l’ L293D, contengono anche i diodi di ricircolo), hanno buone

prestazioni (l’ L298 puo fornire fino a 2 A per ponte), possono essere essere montati

in parallelo per ottenere alte correnti e riescono a lavorare in un intervallo di tensioni

di alimentazione molto ampio (da 6 V a 48 V circa a seconda del modello). In Figura

2.1 si riporta la piedinatura del ponte H scelto per il progetto, ossia L298N, seguita

da una tabella che indica i massimi valori supportati dai pin. Altre informazioni utili

sono disponibili nel datasheet.

16

Page 21: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.1 L298N: specifiche tecniche

Figura 2.1: L298N: pin connections (top view)

Symbol Parameter ValueVS Power Supply 50 VVSS Logic Supply Voltage 7 VVI ,VEN Input and Enable Voltage -0.3 to 7 vIO Peak Output Current (each Channel)

Non Repetitive (t = 100ms) 3 ARepetitive (80% on 20% off; ton = 10ms) 2.5 ADC Operation 2 A

Vsens Sensing Voltage 1 to 2.3 VPtot Total Power Dissipation (Tcase = 75C) 25 WTop Junction Operating Temperature -25 to 130 CTstg,Tj Storage and Junction Temperature -40 to 150 C

La figura 2.2 rappresenta lo schema di funzionamento di un ponte integrato. Tale

integrato e costituito da quattro mezzi ponti H (numerati in figura come 1-2-3-4)

ognuno dei quali e costituito da due transistor e da una logica che li comanda in

modo da accenderne solo uno alla volta: quando il transistor superiore di un mezzo

17

Page 22: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.1 L298N: specifiche tecniche

Figura 2.2: Shema di funzionamento interno di un ponte H

ponte e in conduzione quello inferiore sara necessariamente spento e viceversa. E’

inoltre presente un comando di ENABLE che permette di inibire il funzionamento

di una coppia di mezzi ponti. Si puo inoltre notare la presenza di due pin dedicati

alla connessione di una resistenza di Sense per monitorare la corrente che scorre nel

motore (utile per controllare l’ assorbimento di corrente ed evitare rischiosi stalli del

motore). Ricapitolando, per ognuno dei due ponti presenti nell’ integrato abbiamo

a disposizione due ingressi di controllo per permettere il passaggio di corrente in un

verso e un ingresso di ENABLE per accendere e spegnere il ponte. Nella tabella

seguente si riportano le funzioni dei vari pin.

18

Page 23: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.1 L298N: specifiche tecniche

Pin Name Function1;15 Sense A;Sense B Tra questo pin e la terra e connesso il resistore(posto in

serie al carico) che permettera di controllare la corrente cheattraversa il motore.

2;3 Out 1;Out 2 Uscita del ponte A; la corrente che fluisce attraverso questidue pin e monitorata dal pin 1.

4 VS Tensione di alimentazione per lo stadio di potenza in usci-ta. Un condensatore non induttivo di 100 nF deve esserecollegato tra questo pin e la terra(per scaricare frequenzerumorose).

5;7 Input 1;Input 2 Ingressi del ponte A compatibili con logica TTL(Transistor-Transistot Logic).

6;11 Enable A;EnableB

Ingresso Enable compatibile con logia TTL(Transistor-Transistot Logic): lo stato LOW disabilita il ponte A(enableA) e/o il ponte B(enable B).

8 GND Ground(Terra).9 VSS Tensione di alimentazione per i blocchi logici. Un condensa-

tore non induttivo di 100 nF deve essere collegato tra questopin e la terra(per scaricare frequenze rumorose).

10;12 Input 3;Input 4 Ingressi del ponte B compatibili con logica TTL(Transistor-Transistot Logic).

13;14 Out 3;Out 4 Uscita del ponte B; la corrente che fluisce attraverso questidue pin e monitorata dal pin 15.

2.1.1 Dimensionamento Rsense

Il resistore Rsense ha la funzione di assorbire la stessa corrente che fluisce nel mo-

tore(essendo posta in serie ad esso), permettendo cosı di essere controllata. Infatti

e possibile misurare la tensione ai capi di tale resistore, e di conseguenza ricavare

tramite la legge di Ohm (Vsense = Rsense ·I) il valore della corrente che vi fluisce istan-

taneamente, con Vsense e Rsense noti. Il valore di Rsense deve essere piccolo in modo

tale da essere molto piccola la tensione ai suoi capi: infatti tale deve essere l’ entita

della tensione di alimentazione sottratta al motore, per non influire sulla risposta del

sistema. Inoltre bisogna assicurarsi di non superare il valore di potenza dissipata con-

sigliato nel datasheet del resistore. E’ necessario quindi conoscere il valore di corrente

19

Page 24: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.2 Acquisizione dati: misura di Vsense

massima che vi fluisce attraverso. Per far cio sono stati fatti test sperimentali atti a

mettere sotto stress il motore che e stato preso in considerazione: si e alimentato il

motore con tensione variabile nel tempo, con picchi estremi in modulo(facendo pero

attenzione a non superare il limite sopportabile dal motore dichiarato nel datasheet),

applicando un carico variabile(semplicemente creando attrito con la mano sul carico).

Il valore di corrente erogata puo essere letto direttamente sul display del regolatore

di tensione da laboratorio. In conclusione, al valore massimo di corrente misurata si

e aggiunto un offset di sicurezza, ottenendo cosı il valore approssimato Imax = 1 A.

Considerando il materiale a disposizione in laboratorio si e optato per un resistore con

valore di resistenza pari a 0.22Ω, capace di dissipare una potenza di 0.5 W. In condi-

zioni estreme su questo resistore si dissipera una potenza di P = Rsense · I2max = 0.22

W, ben al di sotto del limite fisico di 0.5 W, e ai suoi capi ci sara una tensione massima

accettabile Vsense = Rsense · Imax = 0.22 V.

2.2 Acquisizione dati: misura di Vsense

La tensione Vsense e generalmente dell’ ordine delle decine di millivolts, quindi troppo

piccola per essere misurata direttamene da un microcontrollore. In genere i pin di

questi dispositivi (vedi cap.2 sez.1) hanno una risoluzione di 10 bit e riceveno in

ingresso una tensione massima di 5 V, ottenendo percio una quantizzazione con passi

di 51024

= 0.00488 V, decisamente troppo grandi rispetto alle variazione della Vsense.

Una possibile soluzione a questo problema e stata suggerita nell’ Osservazione 3.1.1.

Tuttavia, per mantenere un approccio piu generale, la soluzione adottata nel progetto

e quella di applicare un amplificatore operazionale per amplificare il valore di Vsense

all’ ordine dei volt, in modo tale da rendere la quantizzazione accettabile. Assumendo

che i pin analogici del microcontrollore accettano un valore massimo di tensione pari

20

Page 25: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.2 Acquisizione dati: misura di Vsense

a Vmax = 5 V, essendo Imax = 1 A e Rsense = 0.22Ω, il valore di amplificazione Av

ottimo sara dato dalla seguente equazione:

Vmax = Av ·Rsense · Imax (2.2.1)

da cui, isolando Av e sostituendo i valori numerici si ottiene Av = 22.7272 ≈ 23.

2.2.1 Amplificatore operazionale

Figura 2.3: Amplificatore operazionale

L’ amplificatore operazionale (in inglese operational amplifier oppure op-amp) e l’

elemento piu utilizzato dell’ elettronica analogica; e alla base degli amplificatori per

strumentazione, dei filtri e di una miriade di sistemi di analisi e processamento dei

dati analogici e digitali. Nello schema di amplificatore operazionale di Figura 2.3, eA

ed eB sono le tensioni di ingresso, iA e iB vengono chiamate correnti di bias, ZD e

l’impedenza differenziale di ingresso, A e il guadagno in anello aperto (amplificazio-

ne), ZO e l’ impedenza di uscita, VOS e la tensione di offset e ±VS sono le tensioni di

alimentazione. Per descrivere il funzionamento di base del dispositivo che utilizza l’

21

Page 26: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.2 Acquisizione dati: misura di Vsense

Figura 2.4: TLC272: top view

amplificatore operazionale, si fa riferimento a un modello ideale che trascura alcune

caratteristiche reali a vantaggio delle semplificazioni matematiche. Le caratteristica

ideali e reali vengono confrontate come segue:

Caratteristica Valore ideale Valore reale tipicoGuadagno in anello aperto A ∞ 100000

Tensione di offset VOS 0 ±1mV a 25CCorrenti di bias iA,iB 0 da 10−6 a 10−14 A

Impedenza di ingresso ZD ∞ da 105 a 1011 ΩImpedenza di uscita ZO 0 da 1 a 10 Ω

Il modello semplificato di amplificatore assume i valori ideali per tutti i parametri,

inoltre ipotizza che la risposta sia istantanea. Il fatto che la resistenza d’ ingresso sia

infinita implica che l’amplificatore non assorbe corrente da nessuno dei due terminali

d’ ingresso. Inoltre, il fatto che la resistenza d’ ingresso sia infinita e quella di usci-

ta nulla fa sı che un amplificatore operazionale ideale sia un perfetto amplificatore

di tensione. In Figura 2.4 e riportato lo schema elettrico del dispositivo integrato

utilizzato come amplificatore operazionale: TLC272; in particolare questo disposi-

tivo integra due amplificatori operazionali e, come si vede dalla caratteristiche del

datasheet, approssima bene il comportamento ideale precedentemente descritto.

22

Page 27: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.2 Acquisizione dati: misura di Vsense

2.2.2 Configurazione non invertente

Figura 2.5: Configurazione non invertente

L’ ipotesi di comportamento ideale rende relativamente semplice l’ analisi di cir-

cuiti che contengono amplificatori operazionali. Quando si desidera realizzare un’

amplificazione di tensione, si ricorre alle configurazioni di base invertente e non inver-

tente: la prima sfasa di 180 gradi la tensione in uscita rispetto a quella in ingresso,

mentre la seconda no. La configurazione scelta nel progetto e quella non invertente,

in quanto tale configurazione richiede un solo terminale di alimentazione positiva per

l’ amplificatore, a differenza dell’ altra configurazione che richiede due alimentazioni

duali rispetto alla massa. Seguendo la Figura 2.5 e possibile ricavare le equazioni

caratteristiche del circuito:

Vo = RF · IF + Vin (2.2.2)

e sostituendo

IF =Vin

RE

(2.2.3)

23

Page 28: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.2 Acquisizione dati: misura di Vsense

si ottiene

Vo = (1 +RF

RE

) · Vin (2.2.4)

Av =Vo

Vin

= 1 +RF

RE

(2.2.5)

Scelta arbitrariamente RE = 2kΩ, e la resistenza di feedback pari a RF = 47kΩ, si

ottiene Av = 23.5, valore compatibile con quello trovato nell’ equazione 2.2.1. La

resistenza RB ≈ RE||RF ha il compito di minimizzare la tensione di offset VOS per gli

operazionali a base di BJT, mentre per i FET tale resistenza puo essere in generale

omessa, a meno che RE e RF non siano dell’ordine dei MΩ.

2.2.3 Configurazione con filtro attivo

Uno dei problemi piu importanti da considerare nell’acquisizione di un segnale e il

rapporto segnale/rumore. Essendo impossibile eliminare totalmente il rumore, diventa

importante filtrare il segnale in modo da rendere minimo il disturbo in confronto

con il segnale utile. La configurazione non invertente precedentemente descritta puo

essere modificata aggiungendo un condensatore in parallelo alla resistenza di feedback,

come mostrato in Figura 2.6 a, il quale ha il compito di filtrare il rumore sopra una

determinata frequenza di soglia. Questo circuito ha una risposta in frequenza che non

e quella di un comune passa-basso passivo, ma comunque presenta un limite superiore

e quindi puo, qualora interessi solo limitare la banda passante, produrre lo stesso

effetto. Intuitivamente il diagramma del modulo puo essere compreso osservando che,

al crescere della frequenza, C2 tende a cortocircuitare R2 portando il guadagno a un

valore unitario. Piu rigorosamente la funzione di trasferimento risulta:

F (s) =Vo(s)

Vi(s)=

R1 + Z2(s)

R1

=R1 +

11

R2+sC2

R1

=R1 +R2 + sR1R2 C2

R1(1 + sR2C2)(2.2.6)

Questa funzione di trasferimento presenta un polo e uno zero esattamente come indi-

24

Page 29: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.2 Acquisizione dati: misura di Vsense

Figura 2.6: Possibile modalita di limitazione superiore della banda nellaconfigurazione non invertente

cato in Figura 2.6 b. Si noti come lo zero corrisponda al valore del polo moltiplicato

per il guadagno in centro banda e che, pertanto, se il guadagno e abbastanza elevato

(maggiore di 10), si puo ritenere che lo zero non interferisca con il polo nella deter-

minazione della frequenza a 3 dB e che quindi in queste condizioni si puo supporre la

frequenza di taglio determinata solo dal polo ovvero:

ft =1

2πR2C2

. (2.2.7)

Per determinare la frequenza del disturbo si e dato in ingresso al ponte H un valore

di PWM nullo e, misurando direttamente il segnale di uscita con un oscilloscopio, si

e rilevata la presenza di un segnale decisamente non desiderato, con il corrispettivo

valore di frequenza minima di fd = 350 Hz. Considerando che la frequenza di taglio va

presa almeno una decade prima della frequenza del disturbo, e sostituendo ft = 35 Hz

nell’equazione 3.2.8, si puo calcolare la capacita del condensatore pari a C2 ≈ 0.1µF .

Il filtro impostato con i valori precedentemente calcolati ha reso il segnale in uscita

25

Page 30: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.3 Acquisizione dati: posizione e verso di rotazione

molto piu pulito, mantenendo comunque un tempo di ritardo ridotto nelle variazioni.

2.3 Acquisizione dati: posizione e verso di rotazio-

ne

Per ottenere un controllo in posizione e in velocita del motore, e necessario conoscere

la posizione angolare istantanea del rotore. L’ encoder incrementale e un tipo di

sensore che permette di ottenere queste informazioni. Tuttavia sono diffusi molti tipi

di encoder, detti tachimetrici, che permettono la sola misura della posizione mentre

non sono in grado di misurarne il verso di rotazione. Per questo tipo di encoder e

stato quindi necessario realizzare un apposito circuito in grado di ricavare il verso

di rotazione dalla misura della differenza di potenziale ai capi del motore. La sua

descrizione segue quella del funzionamento dell’encoder incrementale.

2.3.1 Encoder tachimetrico

Il trasduttore di posizione angolare, comunemente noto in ingegneria elettronica come

encoder, e un dispositivo elettromeccanico che converte la posizione angolare del suo

asse rotante in segnali elettrici numerici digitali. Negli encoder tachimetrici una trac-

cia a tacche bianco-nere e fissata sull’ oggetto di cui si vuole misurare lo spostamento;

ogni volta che c’e un passaggio scuro-chiaro, un sensore ad effetto di Hall la rileva

ed invia un impulso che viene registrato da un contatore elettronico. La distanza

misurata e proporzionale al numero n di impulsi misurati dal contatore. Il numero

di impulsi contati nell’ unita di tempo e proporzionale alla velocita rilevata durante

lo spostamento; per questo l’ encoder e detto tachimetrico. In Figura 2.7 e riportato

lo schema di collegamento. Collegando una resistenza di pull-up da 10kΩ all’ uscita

26

Page 31: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.3 Acquisizione dati: posizione e verso di rotazione

Figura 2.7: Collegamenti encoder

dell’ encoder, e possibile leggere gli impulsi con un microcontrollore e determinare la

velocita di rotazione del motore, oppure la distanza percorsa.

2.3.2 Verso di rotazione

Per ricavare il verso di rotazione del motore e sufficiente misurare la differenza di

potenziale ai capi di esso: il motore girera in un verso o nell’ altro se questa sara

positiva o negativa. E’ quindi necessario interfacciare la tensione da misurare con

il microcontrollore, il quale puo ricevere in ingresso tensioni massime di 5 V. Un

amplificatore differenziale e adatto a tale scopo. In figura 2.8 e descritto il suo funzio-

namento: grazie all’ elevato guadagno di tensione disponibile, la caratteristica statica

ingresso/uscita dell’amplificatore operazionale presenta un intervallo di funzionamen-

to lineare estremamente ridotto della tensione (differenziale) di ingresso, tipicamente

27

Page 32: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 2 Realizzazione hardware §2.3 Acquisizione dati: posizione e verso di rotazione

Figura 2.8: Amplificatore differenziale

inferiore ad 1 mV. In altri termini, l’amplificatore restituisce in uscita la massima

tensione di alimentazione disponibile se l’ ingresso al nodo non invertente e superiore

a quello del nodo invertente; viceversa restituisce in uscita il valore dell’ alimentazione

inferiore. Il valore assunto dall’ uscita ci consente cosı di stabilire se V+ e maggio-

re o minore di V−, l’amp.op. in questa configurazione esegue un confronto tra due

tensioni e si comporta come amplificatore della differenza tra due tensioni: da qui la

denominazione di amplificatore differenziale.

28

Page 33: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Capitolo 3

Realizzazione software

Dopo una breve introduzione sul microprocessore utilizzato per l’a-zionamento, verra commentato il codice del programma e infi-ne si discuteranno le tecniche di identificazione della funzione ditrasferimento del motore.

3.1 Arduino Duemilanove

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 l’ ambiente in cui si trova attraverso una moltitudine di sensori

analogici e digitali azionando contemporaneamente luci, motori e qualsiasi altro tipo

di attuatore; puo essere utilizzato per l’implementazione di progetti stand-alone ma

puo anche interagire con software gia esistenti sul computer. Arduino duemilanove e

la versione utilizzata nel progetto. Questo dispositivo, e basato sul microcontrollore

ATmega168 capace di 14 pin digitali di ingresso/uscita (6 dei quali utilizzabili come

uscita di un segnale Pulse With Modulation), 6 pin analogici in ingresso, 1 connessione

USB, un oscillatore a cristalli con frequenza di 16 MHz, un jack di alimentazione, e un

29

Page 34: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.1 Arduino Duemilanove

Figura 3.1: Arduino duemilanove

tasto di reset. Di seguito si riporta un breve sommario delle caratteristiche tecniche

dell’Arduino.

Parametro Valori di riferimentoMicrocontroller ATmega168Operating Voltage 5VInput Voltage(recommended) 7-12VInput Voltage(limits) 6-20VDigital I/O Pins 14 (of which 6 provide PWM output)Analog Input Pins 6DC Current per I/O Pin 40 mADC Current for 3.3V Pin 50 mAFlash Memory 16 KBSRAM 1 KBEEPROM 512 bytesClock Speed 16 MHz

3.1.1 Linguaggio di programmazione

I microcontrollori Arduino possono essere programmati in un linguaggio basato su

C/C++, in un ambiente grafico sviluppato in Processing, utilizzando apposite librerie

30

Page 35: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.1 Arduino Duemilanove

per la gestione dei segnali digitali ed analogici. Il linguaggio si compone di:

• Strutture (setup,loop,if,else,while,.....)

• Dati (variabili, costanti...)

• Funzioni

Le due strutture principali sono:

• Setup(): in seguito al boot, il microcontrollore esegue questa funzione in cui

vengono definite le istruzione per il setup quali configurazione dei pin, della

porta seriale... .

• Loop(): definisce il ciclo di istruzioni che il microcontrollore esegue fino al suo

reset o spegnimento.

Le funzioni pricipali utilizzate sono:

• PinMode(pin,mode): definisce un determinato pin come OUTPUT o INPUT;

• AnalogRead(pin): legge il valore da un determinato pin analogico. Tale funzione

mappa il valore in ingresso compreso tra 0 e 5 V in uno quantizzato e intero

compreso tra 0 e 1024 unita;

• AnalogWrite(pin, value): dopo la chiamata della funzione, il pin genera un’

onda quadra stabile(PWM) di duty cicle definito fino alla prossima chiamata di

AnalogWrite(),DigitalWrite() o DigitalRead() sullo stesso pin. Questa funzione

lavora sui pin 3,5,6,9,10 e 11;

• DigitalRead(pin): legge il valore digitale da un pin digitale, HIGH o LOW;

31

Page 36: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.1 Arduino Duemilanove

• DigitalWrite(): scrive HIGH o LOW in un pin digitale;

• millis(): restituisce il numero di millisecondi trascorsi dall’ inizio del corrente

programma;

• constrain(value, inf, sup): pone inf e sup come estremi di value;

• attachInterrupt(interrupt, function,mode): specifica una determinata funzio-

ne da chiamare ogni qual volta occorre un interrupt esterno. L’ interrupt 0 si

riferisce al pin 2, l’ interrupt 1 al pin 3.

Osservazione 3.1.1. In alcuni casi, ove il valore massimo di tensione del segnale

da misurare e inferiore ai 5V, e possibile utilizzare il pin AREF della scheda per

impostare il valore massimo di tensione. E’ consigliato collegare il voltaggio esterno

di riferimento al pin AREF tramite una resistenza di 5 Kohm ed un capacitore per

il filtraggio. Utilita: se quantizziamo un segnale analogico in 1024 valori tra 0V e

5V si ottiene una quantizzazione (alla massima risoluzione di 10bit) pari a 5/1024

V. Se tuttavia sappiamo che il segnale da digitalizzare non supera i 2V, possiamo

applicare 2V al pin AREF, utilizzare la funzione analogReference(type2), ed ottenere

una quantizzazione piu fine, 2/1024 V, e quindi una precisione maggiore. X

Osservazione 3.1.2. La funzione constrain(value, inf, sup) rappresenta un tipo di

non linearita nota come saturazione. Causa della saturazione e il limite fisico del

dispositivo, oltre il quale non e possibile raggiungere i valori desiderati. Nel caso

del motore DC il limite fisico e imposto da un valore di duty cicle pari a 255, che

corrisponde alla massima tensione di alimentazione. La saturazione e un fenomeno

che bisogna prendere in considerazione nella sintesi di regolatori per la stabilita del

sistema. X

32

Page 37: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.1 Arduino Duemilanove

3.1.2 Impostare la frequenza PWM

L’ATmega168 ha tre Timer noti come Timer 0,Timer 1,e Timer 2. I pin che gestiscono

la PWM sono raggruppati in base al Timer che li controlla e quindi dalla frequenza

fissa che possono generare:

• pin 5, 6: sono controllati dal Timer 0 e generano una frequenza di default di

976.5625 Hz;

• pin 9, 10: sono controllati dal Timer 1 e generano una frequenza di default di

488.28125 Hz;

• pin 3, 11: sono controllati dal Timer 2 e generano una frequenza di default di

976.5625 Hz.

Il valore della frequenza puo essere impostato tramite la funzione, creata apposita-

mente, setPWMFrequency(pin, divisor) che va a modificare il timer clock dividendo

il clock di sistema per un fattore di scala predefinito. Arduino ha un clock di sistema

di 16 MHz e la frequenza del timer clock sara uguale a quella del clock di sistema

diviso il fattore di scala. In particolare la frequenza viene settata nel seguente modo:

Pins 5 and 6: controlled by Timer 0

Setting Divisor Frequency0x01 1 625000x02 8 7812.50x03 64 976.56250x04 256 244.1406250x05 1024 61.03515625

TCCR0B = TCCR0B 0b11111000 | <setting>;

33

Page 38: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.1 Arduino Duemilanove

Pins 9 and 10: controlled by Timer 1

Setting Divisor Frequency0x01 1 312500x02 8 3906.250x03 64 488.281250x04 256 122.07031250x05 1024 30.517578125

TCCR1B = TCCR1B 0b11111000 | <setting>;

Pins 1 and 3: controlled by Timer 2

Setting Divisor Frequency0x01 1 312500x02 8 3906.250x03 64 488.281250x04 256 122.07031250x05 1024 30.517578125

TCCR2B = TCCR2B 0b11111000 | <setting>.

Osservazione 3.1.3. Arduino utilizza internamente il Timer 0 per le funzionimillis()

e delay(), quindi bisogna fare attenzione al fatto che cambiare la frequenza di questo

timer causera un risultato diverso per queste funzioni. Nel progetto questo problema

e stato sviato utilizzando un pin legato al Timer 1 per il segnale PWM. X

3.1.3 Procedura di azionamento

Il programma utilizzato in Arduino per l’ azionamento del motore sara oggetto di

questo paragrafo. Il corrispettivo codice di programmazione e riportato in Appendice

B. Esso e strutturato nella maniera seguente:

1. una parte di inizializzazione che si svolge nella struttura setup() di Arduino,

quindi eseguita una sola volta all’inizio dell’esecuzione del programma;

34

Page 39: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.1 Arduino Duemilanove

2. una serie di prove sperimentali di azionamento e la misura delle corrispettive

uscite, atte ad essere successivamente elaborate da MatLab per catturare il

comportamento dinamico del motore;

3. l’ invio degli ingressi e delle uscite al MatLab.

Il ciclo infinito e strutturato in modo tale che l’azionamento e le conseguenti misure

delle uscite avvengano ogni Ts = 3 millisecondi, con Ts tempo di campionamento,

altrimenti il microprocessore rimane in idle fino al trascorrere di tale tempo. Le prove

sperimentali includono una serie di ingressi a gradino, rampe e sinusoidi. Le funzioni

maggiormente utilizzate sono (in ordine di apparizione):

• setup motors(): inizializza i vari pin come INPUT o OUTPUT;

• doEncoder1(): questa funzione viene richiamata ogni qualvolta giunge un in-

terrupt al digital pin 3, dove l’ interrupt corrisponde all’onda quadra prove-

niente dall’ encoder: ad ogni interrupt la funzione provvede ad incrementare o

decrementare (confrontando il sensore di verso di rotazione) un contatore che

rappresenta la posizione angolare del motore in passi encoder;

• establishContact(): viene eseguita una sola volta nel setup(), ha lo scopo di

bloccare l’ inizio del loop() fino all’ esecuzione della procedura MatLab (descritta

piu avanti) con cui avviene la comunicazione;

• move motor(motor, verse, value): gestice il movimento del motore, dove motor

vale 2 per il motore attualmente collegato, verse vale 1 o 2 in base alla direzione

desiderata, e value e il valore in duty cicle del segnale pwm che alimentera il

motore;

35

Page 40: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

• sendMessage(V sense, u, encoder, stop): quando chiamata invia al MatLab tra-

mite porta seriale l’ingresso u, le uscite encoder e V sense misurate, e il segnale

stop di comunicazione interrotta.

La prova di azionamento e atta a rendere visibile il comportamento dinamico del

motore per la successiva procedura di identificazione: la prova e costituita da due

segnali a gradino, un segnale sinusoidale e una rampa; l’intera procedura e stata

inoltre ripetuta tre volte.

3.2 Identificazione

L’ identificazione dei sistemi e una scienza che si occupa di stimare i modelli matema-

tici dei sistemi a partire da prove sperimentali. Per la stima di un modello dinamico

di un sistema, occorre quindi eccitarlo e disporre sia degli ingressi di eccitazione sia

delle uscite misurate. Esistone tre tipi di approccio possibili all’ identificazione:

• white box: il modello del sistema viene ricavato tramite leggi fisiche;

• grey box: il modello del sistema e noto, ma non si conoscono alcuni parametri

che devono quindi essere stimati;

• black box: non conosciamo nulla del sistema per il quale stimeremo sia la

struttura che i parametri.

Poiche il modello grey-box prevede una inizializzione dei parametri da stimare (ed

essendo questi sconosciuti), si e preferito seguire un approccio black box. L’ al-

goritmo utilizzato per la stima della funzione di trasferimento ingresso-uscita e il

PEM(Prediction Error Method): l’ idea sta nel costruire, a partire dalla struttura

di modello scelta (secondo particolari criteri), un predittore ovvero un sistema che

36

Page 41: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

Figura 3.2: I processi da identificare

date le uscite e gli ingressi passati da una stima dell’ uscita presente. Il PEM stima

i parametri cercati minimizzando gli errori di predizione, ovvero minimizzando un

funzionale di costo dipendente da questi errori che a loro volta sono funzione dei pa-

rametri incogniti e delle misure. In Figura 3.2 e riportato uno schema dei tre sistemi

che si vogliono identificare: il processo e costituito dal motore DC accoppiato all’am-

plificatore che lo alimenta, l’ ingresso e costituito dal valore di duty cicle del segnale

pwm, e l’ uscita e rappresentata rispettivamente dalla posizione angolare (in passi

encoder), dalla velocita angolare (in encoder al secondo) e dalla corrente di armatura

(in ampere).

37

Page 42: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

Figura 3.3: a) Modello con dead zone b) Modello senza dead zone

3.2.1 Il problema della Dead Zone

La dead zone (o banda morta), e una banda di valori per l’ ingresso all’ interno della

quale si ha un appiattimento dell’uscita. Nel caso specifico dell’azionamento motore,

se si considera l’ ingresso v ∈ [0, 255] come valore di duty cicle della pwm, si ha che

per valori compresi tra 0 e 139 non si innesca il movimento del rotore (vedi Figura

3.3 a). La spiegazione fisica di tale comportamento e da ricercare nella coppia che il

motore deve esercitare per superare le forze di attrito statiche. Questo tipo di forze

possono essere divise essenzialmete in due grandi categorie: attrito statico o radente

(cr nell’equazione 1.1.7), che richiede una coppia costante per essere superata (causa

di dead zone), e attrito dinamico o viscoso (Fω nell’ equazione 1.1.7), che offre una

resistenza al variare della velocita. L’ attrito statico, oltre ad essere causa di dead

38

Page 43: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

50 100 150 200 250 300 350 400 450

50

100

150

200

250

300

350

Figura 3.4: Modello di attrito

zone, riduce anche la coppia utile del motore. La non linearita dovuta alla dead zone

rende molto complicata la stima di un modello lineare per la posizione e velocita

angolare. In ragione di cio, si e considerato un secondo ingresso u ∈ [0, 116] tale

che v = u + deadzone, in modo tale da cancellare la dead zone nel nuovo sistema

con ingresso u e uscita ω (Figura 3.3 b). Nel caso di uscita in corrente, invece, anche

l’attrito dinamico e causa di non linearita: in generale l’attrito e funzione della velocita

angolare secondo il grafico in Figura 3.4, ed e necessario conoscere i parametri di tale

curva per poter implementare una compensazione.

3.2.2 Stima della velocita angolare

Per ottenere una stima della velocita angolare e sufficiente applicare un filtro deri-

vativo alla funzione di trasferimento della posizione. Il filtro e stato sintetizzato nel

dominio di Laplace, per poi essere discretizzato tramite il comando c2d(filtro, Ts

39

Page 44: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

di MatLab. E’ noto che in Laplace l’operatore derivata corrisponde a moltiplicare

per s la f.d.t. della posizione, ma e altrettanto noto che un filtro cosı fatto sarebbe

fisicamente non realizzabile. E’ necessario aggiungere un polo ‘veloce’, cioe facendo

riferimento all’equazione

s

τs+ 1(3.2.1)

con τ sufficientemente piccolo da poter ottenere una buona approssimazione del filtro

puramente derivativo. Dopo varie prove si e scelto un valore di τ pari a 0.04. Dopo

la discretizzazione il risultato ottenuto e

25(z − 1)

z − 0.9277(3.2.2)

3.2.3 System Identification Toolbox

La procedura di identificazione e stata implementata in MatLab tramite le librerie

del System Identification Toolbox. Il codice matlab (riportato in Appendice C) e

strutturato in quattro parti:

1. acquisizione degli ingressi e delle uscite misurate da Arduino attraverso comu-

nicazione seriale;

2. filtraggio dei segnali e preparazione dati;

3. lancio algoritmi di identificazione;

4. stampa dei risultati delle simulazioni;

Per ottenere una buona stima di un processo bisogna innazitutto che i segnali in gioco

siano sufficientemente esenti da rumore. Se necessario occorre quindi effettuare un’

operazione di prefiltraggio: filtrando i segnali di ingresso e uscita attraverso un filtro

40

Page 45: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

lineare e possibile focalizzare la stima paramentrica del modello basata su determi-

nati ranges in frequenza di dati. I processi fisici evolvono dinamicamente attorno a

punti di equilibrio. La presenza nei dati di caratteristiche statiche (valor medio) o

lentamente variabili puo occultare le caratteristiche dinamiche, inficiando l’ efficienza

degli algoritmi di identificazione. E’ possibile usare il comando

y=detrend(ingresso)

per sottrarre i valori medi diversi dallo zero dall’ingresso. Una volta ottenuti i segnali

filtrati, bisogna creare uno speciale oggetto che raccoglie in un unico array i segnali

d’ ingresso e uscita. Questo e possibile farlo con il seguente comando:

data=iddata(y,u,Ts)

con y e u vettori contenenti le misure dell’uscita e dell’ ingresso, rispettivamente, e

Ts il tempo di campionamento. Il comando

data=merge(data(t0:t1),data(t1:t2),data(t2:t3))

e utile per raggruppare oggetti iddata di esperimenti diversi: tramite gli estremi t1,

t2, t3 e possibile selezionare gli intervalli buoni ed escludere parte dei dati che puo

essere affetta da disturbi, in modo tale che non influenzino il modello da stimare. Per

lanciare l’ algoritmo PEM e ottenere una funzione di trasferimento ingresso-uscita si

usa il comando

modello=pem(data,[na nb nc nd nf nk],’Property1’,value1,....)

dove i parametri hanno il seguente significato:

• modello rappresento un oggetto idmodel da cui si puo estrapolare la funzione

di trasferimento con i comandi tf(modello) o zpk(modello);

41

Page 46: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

• na e il numero di poli della funzione di trasferimento ingresso-uscita;

• nb e il numero di zeri piu uno della funzione di trasferimento ingresso-uscita;

• nc e il grado del numeratore che si associa alla funzione di trasferimento del

disturbo;

• nd e il grado del denominatore del disturbo;

• nf e il grado del denominatore dell’ingresso;

• nk e il ritardo in campioni che occorre prima che l’ingresso incida sull’uscita (ad

esempio se nk = 1 allora l’uscita risente dei dati precedenti al tempo nk − 1).

Per i sistemi a tempo discreto c’e un minimo di un campione in ritardo, affinche

l’ uscita dipenda dall’ ingresso precedente.

Questi parametri sono stati scelti facendo riferimento alle funzioni di trasferimento

del modello fisico ricavate nel Capitolo 1, provando di volta in volta ad aggiungere un

polo e/o uno zero per ottenere risultati piu soddisfacenti. I migliori risultati si sono

ottenuti per i valori [3 3 0 0 0 1] per l’ uscita in corrente, e [3 1 0 0 0 1] per quella in

posizione. Le propieta possono essere:

• Focus con possibili valori Prediction o Simulation;

• MaxIter e Tolerance gestiscono lo stop della ricerca iterativa;

• MaxSize determina la piu larga matrice formata dall’ algoritmo;

• altre (Tace,LimitError).

42

Page 47: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

3.2.4 Risultati

I risultati dell’ identificazione sono riportati nei grafici in Figura 3.7. Come e possibile

notare, il modello di posizione e estremamente preciso, avendo un valore di fitting

(correlazione tra uscite simulate e misurate) sul 90%: questo e dovuto soprattutto alla

compensazione della deadzone. Per quanto riguarda la corrente, il valore di fitting e

comunque accettabile (circa 80%): si noti come l’ uscita simulata approssima bene

quella misurata per ingressi a gradino, mentre approssima male le rampe e le mezze

onde. La causa di questo e dovuta all’azione dell’ attrito dinamico, gia discusso

nel paragrafo 3.2.1, che e funzione dalla velocita angolare del motore e che rende

non lineare il comportamento della corrente. L’ andamento della velocita angolare

e possibile ricavarlo applicando il filtro discusso nella sezione 3.2.2, e il risultato e

riportato in fig.3.6 Le funzioni di trasferimento ingresso-uscita cosı ricavate, con tempo

di campionamento Ts = 3 millisecondi, sono:

P1(z) =0.008793

(z − 1)(z + 0.3725)(z − 0.2286)(3.2.3)

funzione di trasferimento con ingresso u ∈ [0, 116] e uscita posizione angolare in passi

encoder;

P2(z) =0.21982

(z − 0.9277)(z − 0.2286)(z + 0.3725)(3.2.4)

funzione di trasferimento con ingresso u =∈ [0, 116] e uscita velocita angolare in

impulsi/secondo;

P3(z) =6.4159 · 10−5(z + 2.087)(z − 0.9739)

(z + 0.02321)(z2 − 1.835z + 0.8443)(3.2.5)

funzione di trasferimento con ingresso pwm ∈ [0, 255] e uscita in corrente misurata in

ampere.

43

Page 48: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

Osservazione 3.2.1. Si puo notare come la funzione di trasferimento P2(z) della

velocita sia uguale a quella P1(z) della posizione, a meno del polo in z = 1 dove in

P2(z) e sostituito dal polo in z = 0.9277. X

0 2 4 6 8 10 12−300

−200

−100

0

100

200

300Ingresso pwm

Tempo(sec)

Du

ty C

ycle

0 2 4 6 8 10 12−150

−100

−50

0

50

100

150Ingresso u

Tempo(sec)

Du

ty C

ycle

Figura 3.5: Ingressi

0 2 4 6 8 10 12−400

−300

−200

−100

0

100

200

300

400

Simulazione velocità

Tempo(sec) (sec)

velo

cità

(enc

oder

/sec

)

Figura 3.6: Stima della velocita

44

Page 49: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 3 Realizzazione software §3.2 Identificazione

2 4 6 8 10

−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

Simulazione corrente

Tempo(sec)

corre

nte(

ampe

re)

Measuredmodellocorr; fit: 80.12%

2 4 6 8 10

0

50

100

150

200

250

300

350

400

450

Simulazione posizione

Tempo(sec)

posiz

ione

(pas

si en

code

r)

Measuredmodellopos; fit: 89.81%

Figura 3.7: Posizione e Corrente

45

Page 50: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Capitolo 4

Progetto di regolatori

In questa capitolo si trattera la sintesi di sistemi di controllo per laposizione, la velocita e la corrente.

Figura 4.1: Sistema di controllo

Dato il sistema ad anello retroazionato in Figura 4.1, si vuole progettare un rego-

latore C(s) che soddisfi i principali requisiti di controllo, con P (s) processo compren-

dente il ponte H, il motore DC e i circuiti di acquisizione dati, e y uscita in posizione,

velocita o corrente. Le specifiche di progetto riguardano:

1. Precisione a regime: ci si riferisce alla capacita del sistema di seguire alcuni

segnali di riferimento con il minimo errore, in particolare per ingressi a gradino.

46

Page 51: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori

2. Risposta nel transitorio: ci si riferisce all’andamento per tempi finiti dell’usci-

ta del sistema in retroazione in risposta a tipici segnali in ingresso. Queste

specifiche possono essere date sia nel dominio del tempo (tempo di salita, di

ritardo, di assestamento, ecc.) sia nel dominio della frequenza (coefficiente di

smorzamento, pulsazione naturale, picco di risonanza e banda passante).

3. Stabilita: rifacendosi ai teoremi di Nyquist e Bode, e possibile valutare la

stabilita del sistema a ciclo chiuso, margine di fase e guadagno (robustezza).

Teorema 4.0.1. Teorema di Nyquist Condizione necessaria e sufficiente perche

un sistema in retroazione con guadagno in anello P (z) sia asintoticamente stabile

e che il diagramma polare della funzione P (ejωT ) tracciato per −π/T ≤ ω ≤ π/T

circondi il punto critico −1 + j0 per tanti giri al finito in senso antiorario quanti

sono i poli di P (z) a modulo maggiore di uno, e per tanti mezzi giri al finito in senso

antiorario quanti i poli a modulo unitario.

Teorema 4.0.2. Sia dato un sistema descritto da una funzione di trasferimento, con

riferimento allo schema in retroazione,

W (z) =C(z)P (z)

1 + C(z)P (z)(4.0.1)

Allora:

• Il sistema e asintoticamente stabile se e solo se tutte le radici del polinomio

1+C(z)D(z), cioe i poli del sistema, sono entro il cerchio di raggio unitario con

centro nell’origine del piano, ossia se ‖pi‖ < 1, ∀i.

• Il sistema e stabile se tutti i poli a modulo unitario ‖pi‖ = 1 sono poli semplici

(la loro molteplicita e 1), mentre tutti i rimanenti poli sono entro il cerchio

unitario.

47

Page 52: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.1 Controllo in posizione

• La posizione degli zeri, cioe delle radici del polinomio C(z)P(z), non influisce

sulla stabilita del sistema.

4.1 Controllo in posizione

−1.5 −1 −0.5 0 0.5 1

−1

−0.5

0

0.5

1

Root Locus

Real Axis

Ima

gin

ary

Axi

s

Figura 4.2: Luogo delle radici P1(s)

Il regolatore per il controllo in posizione del motore DC sara progettato tramite

sintesi diretta nel luogo delle radici (Figura 4.2). La funzione di trasferimento viene

riportata per comodita,

P1(z) =0.008793

(z − 1)(z + 0.3725)(z − 0.2286)(4.1.1)

Dal luogo delle radici si puo notare, in ragione del teorema 4.0.2, che il sistema e

asintoticamente stabile per un regolatore proporzionale con un valore di guadagno

che rientra all’interno della circonferenza unitaria. Inoltre, la presenza di un polo

in z = 1 garantisce astatismo per ingressi a gradino. Il valore del guadagno e stato

scelto pari a kp = 15 poiche, considerando che la velocita di risposta rimane limitata

48

Page 53: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.1 Controllo in posizione

−30

−20

−10

0

10

20

Ma

gn

itu

de

(d

B)

101

102

103

104

−720

−540

−360

−180

0

Ph

ase

(d

eg

)

Bode DiagramGm = 14.2 dB (at 210 rad/sec) , Pm = 72 deg (at 41.5 rad/sec)

Frequency (rad/sec)

−1 −0.8 −0.6 −0.4 −0.2 0

−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

Nyquist Diagram

Real AxisIm

ag

ina

ry A

xis

Figura 4.3: Diagrammi di bode e di Nyquist per C(s)=15

Figura 4.4: Simulazione in simulink

dalla saturazione, un valore troppo alto sarebbe stato inutile o anche dannoso per il

transitorio. Dal diagramma di Nyquist riportato in fig. 4.3 si vede che il sistema e

asintoticamente stabile in quanto, per il teorema 4.0.1, per un solo polo a modulo

unitario la curva percorre un mezzo giro in senso antiorario intorno al punto -1+j0.

49

Page 54: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.1 Controllo in posizione

0 0.5 1 1.5 2 2.5 30

50

100

150

200

250

300

350C(s)=15

Tempo(sec)

Pass

i Enc

oder

EstimatedMeasured

0 0.5 1 1.5 2 2.5 3−200

−150

−100

−50

0

50

100

150

200C(s)=15

Tempo(sec)

Pass

i Enc

oder

rifEstimatedMeasured

Figura 4.5: Risposta del sistema per ingresso costante e sinusoidale

Nella stessa figura e riportato il diagramma di Bode, da cui si puo leggere il margine di

fase pari a γf = 72 gradi ad una pulsazione ω = 41.5 rad/sec, e il margine di guadagno

50

Page 55: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.2 Controllo in corrente

pari a MG = 14.2 dB ad una pulsazione ω = 210 rad/sec. In fig.4.5 sono riportate

le risposte del sistema a ciclo chiuso per un ingresso costante pari a rif = 300 e per

un ingresso sinusoidale pari a rif = 150(2.093t), dove in blu e riportata la risposta

misurata, in rosso quella simulata e in verde il riferimento.

Osservazione 4.1.1. Nella simulazione in fig.4.8 non compare il blocco della dead

zone in quanto questa e stata compensata nell’ identificazione del modello (vedi sez.

3.2.1). X

4.2 Controllo in corrente

−2 −1.5 −1 −0.5 0 0.5 1

−1

−0.5

0

0.5

1

Root Locus

Real Axis

Ima

gin

ary

Axis

−0.2 0 0.2 0.4 0.6 0.8 1

−1

−0.5

0

0.5

1

Root Locus

Real Axis

Ima

gin

ary

Axis

Figura 4.6: Luogo delle radici di P3(s) a) senza controllore; b) con controllore.

La funzione di trasferimento ingresso con uscita in corrente e

P3(z) =6.4159 · 10−5(z + 2.087)(z − 0.9739)

(z + 0.02321)(z2 − 1.835z + 0.8443)(4.2.1)

e il suo luogo delle radici e riportato in fig.4.6a. Per soddisfare la specifica di astatismo

per ingressi costanti e necessario porre un polo in z = 1. Per ottenero questo risultato

51

Page 56: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.2 Controllo in corrente

e possibile spostare i poli che sono all’interno della circonferenza unitaria, per esempio

si e operato una cancellazione dei poli complessi coniugati e si e messo un unico polo in

z = 1. Per rendere il controllore fisicamente realizzabile (cioe grado relativo maggiore

o uguale di zero), si e aggiunto un ulteriore polo in posizione p = 0.9739 in modo

da cancellare uno zero per semplificare il grado della funzione di trasferimento. Il

controllore cosı ottenuto e

C(z) =100(z2 − 1.835z + 0.8443)

(z − 1)(z − 0.9739)(4.2.2)

In fig. 4.6b e riportato il risultato del controllore nel luogo delle radici. In particolare

il guadagno kp = 100 e stato scelto in modo tale da ottenere la massima velocita di

risposta, in considerazione della saturazione. Dal diagramma di Bode e di Nyquist

(fig. 4.7) della funzione di anello aperto C(z)P3(z), si osserva che il sistema rispetta

le condizioni del criterio di Nyquist, quindi e asintoticamente stabile, con un margine

di fase γf = 88.3 gradi alla pulsazione ω = 6.59 rad/sec, e un margine di guadagno

MG = 37.7 dB alla pulsazione di ω = 442 rad/sec. La risposta del sistema a ciclo

chiuso per un riferimento costante pari a rif = 0.1 e riportata in figura 4.9, dove la

curva rossa e la risposta simulata, mentre la blu e quella misurata.

52

Page 57: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.2 Controllo in corrente

−60

−40

−20

0

20

Ma

gn

itu

de

(d

B)

100

101

102

103

104

−450

−360

−270

−180

−90

Ph

ase

(d

eg

)

Bode DiagramGm = 37.7 dB (at 442 rad/sec) , Pm = 88.3 deg (at 6.59 rad/sec)

Frequency (rad/sec)

−1 −0.9 −0.8 −0.7 −0.6 −0.5 −0.4 −0.3 −0.2 −0.1 0

−0.015

−0.01

−0.005

0

0.005

0.01

0.015

0.02

Nyquist Diagram

Real Axis

Ima

gin

ary

Axis

Figura 4.7: Diagrammi di bode e di Nyquist per C(z) = 100(z2−1.835z+0.8443)(z−1)(z−0.9739)

Figura 4.8: Simulazione in simulink

53

Page 58: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 4 Progetto di regolatori §4.2 Controllo in corrente

0 0.5 1 1.5 2 2.5 3 3.5 4 4.50

0.02

0.04

0.06

0.08

0.1

0.12C(s)=100(z2−1.835z+0.8443)/(z−1)(z−0.9739)

Tempo(sec)

Ampe

re

MeasuredEstimated

Figura 4.9: Risposta del sistema per un ingresso costante

54

Page 59: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Capitolo 5

Conclusioni e sviluppi futuri

Il progetto realizzato durante il tirocinio ha richiesto la conoscenza di diverse materie

tipiche dell’ingegneria dell’informazione quali l’elettronica analogica e digitale, i siste-

mi di misura, l’informatica e la programmazione, e la teoria dei controlli automatici.

La prima parte del progetto e stata spesa interamente sulla realizzazione del circuito

elettronico di alimentazione del motore e per l’acquisizione dei segnali: il laboratorio

e stato necessario per usufruire sia dei componenti del circuito e del saldatore, stru-

menti relativamente economici, sia delle costose apparecchiature di laboratorio quali

regolatori professionali di tensione e strumenti per la misura di segnali. Nella secon-

da parte si e approfondita la conoscenza del microcontrollore Arduino studiandone

l’architettura e le librerie di programmazione. Infine e stato possibile implementare

una legge di controllo che rendesse il sistema a ciclo chiuso asintoticamente stabile e

sono stati ricavati dei modelli che permettono di simulare il comportamento del siste-

ma. Particolare rilevanza assumono i possibili sviluppi futuri: avendo a disposizione

il modello del sistema e possibile ricavare i parametri fisici del motore (es. momen-

to di inerzia, induttanza e resistenza di armatura, costanti elettrica e di coppia del

motore) confrontando i coefficienti con quelli del modello fisico, oppure ricavandoli

sperimentalmente; una volta calcolati tali parametri e possibile implementare un con-

55

Page 60: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

trollo di tipo non lineare per compensare la non linearita dovuta all’attrito, oppure

implementare un controllo in coppia.

56

Page 61: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Appendice ASchema elettrico circuito dipotenza

Nelle figure seguenti e riportato lo schema elettrico del circuito di potenza dimensio-

nato nel capitolo 4. Per maggiore chiarezza visiva, lo schema e stato suddiviso in due

meta. Invece in Figura 5.1 e riportata una foto con le indicazioni per le connessioni.

Figura 5.1: Risultato finale

57

Page 62: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

Figura 5.2: Schema elettrico

58

Page 63: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Appendice BCodice Arduino

Main

//Edited by Pierluigi Di Franco

//H BRIDGE L 298

#include <Servo.h>

#include "inout.h"

#define motor1 1

#define motor2 2

#define way1 1

#define way2 2

//OTHERS

volatile int EncoderCounter1 = 0;

int rotation;

int rotazione;

unsigned long oldtime = 0;

long time = 0;

int count = 0;

int pari = 0;

extern int pwm1;

extern int read_ok;

int h = 0;

int oldtime2=0;

void setup()

setup_motors();

attachInterrupt(1, doEncoder1, RISING);

// attachInterrupt(1, changeRotation, CHANGE);

//Signals for Ident

Serial.begin(115200);

setPwmFrequency(9,1);

establishContact();

oldtime=millis();

//This Arduino is the Master and starts to send Data

void loop()

59

Page 64: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

if(millis()-oldtime>=Ts)

oldtime = millis();

int v1;

int pwm1;

int pwm2;

int stop_signal = 0;

while(h <= 10392)

if(millis()-oldtime2>=Ts)

oldtime2 = millis();

if(oldtime2 -time > Ts )

time = time+Ts;

else

time = millis();

int timeout;

v1 = analogRead(V1);

if (pari == 0)

if(count == 0)

timeout=500;

pwm1= 116;

count++;

if(count >= timeout)

pari = 1;

count=0;

if(pari == 1)

if(count == 0)

timeout=500;

pwm1= -116;

count++;

if(count>=timeout)

pari = 2;

count=0;

if (pari == 2)

if(count == 0)

timeout=500;

pwm1= 116;

count++;

if(count >= timeout)

pari = 3;

count=0;

60

Page 65: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

if(pari == 3)

if(count == 0)

timeout=500;

pwm1= -116;

count++;

if(count>=timeout)

pari = 4;

count=0;

if (pari == 4)

if(count == 0)

timeout=1000;

pwm1=116*sin(0.00628*(double)count);

count++;

if(count >= timeout)

pari = 5;

count=0;

if (pari == 5)

if(count == 0)

timeout=116;

pwm1= count;

count++;

if(count >= timeout)

pari = 6;

count=0;

if(pari == 6)

if(count == 0)

timeout=232;

pwm1= 116 - count;

count++;

if(count>=timeout)

pari = 7;

count=0;

if (pari == 7)

if(count == 0)

61

Page 66: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

timeout=116;

pwm1= -116 + count;

count++;

if(count >= timeout)

pari = 8;

count=0;

if (pari == 8)

if(count == 0)

timeout=500;

pwm1= 116;

count++;

if(count >= timeout)

pari = 9;

count=0;

if(pari == 9)

if(count == 0)

timeout=500;

pwm1= -116;

count++;

if(count>=timeout)

pari = 10;

count=0;

if (pari == 10)

if(count == 0)

timeout=500;

pwm1= 116;

count++;

if(count >= timeout)

pari = 11;

count=0;

if(pari == 11)

if(count == 0)

timeout=500;

pwm1= -116;

62

Page 67: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

count++;

if(count>=timeout)

pari = 12;

count=0;

if (pari == 12)

if(count == 0)

timeout=1000;

pwm1=116*sin(0.00628*(double)count);

count++;

if(count >= timeout)

pari = 13;

count=0;

if (pari == 13)

if(count == 0)

timeout=116;

pwm1= count;

count++;

if(count >= timeout)

pari = 14;

count=0;

if(pari == 14)

if(count == 0)

timeout=232;

pwm1= 116 - count;

count++;

if(count>=timeout)

pari = 15;

count=0;

if (pari == 15)

if(count == 0)

timeout=116;

pwm1= -116 + count;

count++;

if(count >= timeout)

63

Page 68: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

pari = 16;

count=0;

if (pari == 16)

if(count == 0)

timeout=500;

pwm1= 116;

count++;

if(count >= timeout)

pari = 17;

count=0;

if(pari == 17)

if(count == 0)

timeout=500;

pwm1= -116;

count++;

if(count>=timeout)

pari = 18;

count=0;

if (pari == 18)

if(count == 0)

timeout=500;

pwm1= 116;

count++;

if(count >= timeout)

pari = 19;

count=0;

if(pari == 19)

if(count == 0)

timeout=500;

pwm1= -116;

count++;

if(count>=timeout)

pari = 20;

count=0;

if (pari == 20)

64

Page 69: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

if(count == 0)

timeout=1000;

pwm1=116*sin(0.00628*(double)count);

count++;

if(count >= timeout)

pari = 21;

count=0;

if (pari == 21)

if(count == 0)

timeout=116;

pwm1= count;

count++;

if(count >= timeout)

pari = 22;

count=0;

if(pari == 22)

if(count == 0)

timeout=232;

pwm1= 116 - count;

count++;

if(count>=timeout)

pari = 23;

count=0;

if (pari == 23)

if(count == 0)

timeout=116;

pwm1= -116 + count;

count++;

if(count >= timeout)

pari = 24;

count=0;

if(pwm1 > 0)

pwm2 = pwm1+DeadZone;

65

Page 70: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

move_motor(2,1,constrain(pwm2,0,255));

rotation = constrain(analogRead(R),0,200);

rotazione = constrain(rotation,0,200);

if(pwm1 < 0)

pwm2 = abs(pwm1)+DeadZone;

move_motor(2,2,constrain(pwm2,0,255));

rotation = constrain(analogRead(R),200,1023);

rotazione = constrain(rotation,200,1023);

if(pwm1==0)

move_motor(2,2,0);

if(pwm1 >= 0)

sendMessage(v1,pwm1,EncoderCounter1,stop_signal);

else

sendMessage(-v1,pwm1,EncoderCounter1,stop_signal);

// Serial.println(EncoderCounter1);

h++;

//fine while

stop_signal = 1;

move_motor(1,1,0);

sendMessage(v1,pwm1,EncoderCounter1,stop_signal);

//ISR for evaluating the Encoders

void doEncoder1()

if(digitalRead(encoder1PinA) == 1 && rotazione <=200)

EncoderCounter1++;

else

EncoderCounter1--;

inout.cpp

#include "inout.h"

#include <Servo.h>

#include <math.h>

#include <float.h>

#include <limits.h>

int read_ok = 0;

void establishContact()

while (Serial.available() <= 0)

Serial.print(shift16(’S’), BYTE);

Serial.print(zero16(’S’), BYTE);

delay(1);

void setup_motors()

66

Page 71: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

//Signals for Motor 1

pinMode(encoder1PinA, INPUT);

pinMode(Enable1, OUTPUT);

pinMode(Enable2, OUTPUT);

//Signals for Motor 2

pinMode(Enable3, OUTPUT);

pinMode(Enable4, OUTPUT);

//interrupts on encoders

pinMode(V1,INPUT);

pinMode(R,INPUT);

void move_motor(int motor,int way,int pwm1)

if(motor == 1 && way == 1)

digitalWrite(Enable3, HIGH);

digitalWrite(Enable4, LOW);

analogWrite(PWM2,pwm1);

if(motor == 1 && way == 2)

digitalWrite(Enable4, HIGH);

digitalWrite(Enable3, LOW);

analogWrite(PWM2,pwm1);

if(motor == 2 && way == 1)

digitalWrite(Enable1, HIGH);

digitalWrite(Enable2, LOW);

analogWrite(PWM1,pwm1);

if(motor == 2 && way == 2)

digitalWrite(Enable2, HIGH);

digitalWrite(Enable1, LOW);

analogWrite(PWM1,pwm1);

void readPcIn(int &pwm1,int &read_ok)

if (Serial.available()>0)

int v1;

long time;

//Lettura Segnali da Seriale

pwm1 = Serial.read();

time = millis();

Serial.flush();

if(pwm1 >=0)

move_motor(1,1,abs(pwm1));

readSensorIn(v1,1);

else

//Serial.println(pwm1);

move_motor(1,2,abs(pwm1));

readSensorIn(v1,2);

// sendMessage(v1,pwm1,time,);

67

Page 72: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

void sendMessage(int data,int pwm,int stop_signal)

/*send data*/

Serial.println("V");

Serial.println(data);

// Serial.println("P");

Serial.println(pwm);

Serial.println(stop_signal);

void setPwmFrequency(int pin, int divisor)

byte mode;

if(pin == 5 || pin == 6 || pin == 9 || pin == 10)

switch(divisor)

case 1: mode = 0x01; break;

case 8: mode = 0x02; break;

case 64: mode = 0x03; break;

case 256: mode = 0x04; break;

case 1024: mode = 0x05; break;

default: return;

if(pin == 5 || pin == 6)

TCCR0B = TCCR0B & 0b11111000 | mode;

else

TCCR1B = TCCR1B & 0b11111000 | mode;

else if(pin == 3 || pin == 11)

switch(divisor)

case 1: mode = 0x01; break;

case 8: mode = 0x02; break;

case 32: mode = 0x03; break;

case 64: mode = 0x04; break;

case 128: mode = 0x05; break;

case 256: mode = 0x06; break;

case 1024: mode = 0x7; break;

default: return;

TCCR2B = TCCR2B & 0b11111000 | mode;

inout.h

#include "WProgram.h"

#define DimByteBuffer 1

#define lastbyte 1

#define dati 10

//Definizione Funzioni

#define uint16(x,y) ((y << 8 ) + x)

#define shift16(x) (x >> 8)

#define zero16(x) (x & 0xFF)

#define Ts 3 //sampling time

#define V1 0 //Analog Pin for voltage sense read

#define R 3 //Digital Pin for rotation verse read

#define DeadZone 139

//First Motor

68

Page 73: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

#define PWM1 9 //enable pin of the H bridge

//requires a PWM signal (digital pin 5)

#define Enable1 4//logic.a of the H bridge

//to set the direction of rotation with logic.b

#define Enable2 6//logic.b of the H bridge

//to set the direction of rotation with logic.a

//Second Motor

#define PWM2 11 //enable pin of the H bridge requires

//a PWM signal (digital pin 11)

#define Enable3 12//logic.a of the H bridge to set

// the direction of rotation with logic.b

#define Enable4 10//logic.b of the H bridge to set

// the direction of rotation with logic.a*)

//Encoder Motor 1

#define encoder1PinA 3 //Encoder 1 A channel, interrupt 0

//ENCODERS AMT

#define CountsXround 2048

void readPcIn(int &pwm1,int &read_ok);

void establishContact(void);

void sendMessage(int data,int pwm,int stopsignal);

void readSensorIn(int &v1,int way);

void setup_motors(void);

void Setup_sensors(void);

void move_motor(int motor,int way,int pwm1);

void setPwmFrequency(int pin, int divisor);

69

Page 74: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Appendice CCodice MatLab

clear all

clc

close all

%%

s = serial(’COM6’);

set(s,’BaudRate’, 115200);

set(s,’DataBits’, 8);

set(s,’StopBits’, 1);

set(s,’OutputBufferSize’, 200000);

set(s,’InputBufferSize’, 200000);

fopen(s);

s.ReadAsyncMode = ’continuous’;

Ts=0.003;

connection = 0;

ok = 0;

TimeInterval=0; %time interval between each input.;

filtro=tf(1,[1/50 1]);

filtrod = c2d(filtro,Ts);

while(connection == 0)

if(s.BytesAvailable > 0 )

%Dimensione del Buffer istante per istante

DimAvailable=s.BytesAvailable/2;

%Lettura Buffer

data = fread(s,s.BytesAvailable,’uint8’);

%Unione Byte

for j=1: DimAvailable,

Buffer(j)=data(j*2)+(bitshift(data(j*2-1),8));

end

%Unione Buffer con il precedente messaggio

%Buffer=[NewBuffer,Buffer];

for j=1: length(Buffer),

Buffer(j);

if(Buffer(j) == ’S’)

ok = 1;

display([’done 1’]);

break

else

connection = 0;

display([’not done’]);

end

end

end

70

Page 75: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

if(ok == 1)

connection = 1;

display([’done 2’]);

end

end

if(connection == 1)

u(1)=’k’;

a=typecast(uint16(u(1)), ’uint8’);

Enter(1)=a(1);

Enter(2)=a(2);

fwrite(s,Enter);

end

read_v=0;

read_u=0;

read_t=0;

read_s=0;

i= 1;

stop = 0;

while(stop == 0)

%% Recive data from arduino

w=fscanf(s,’%d’); % must define the input % d or %s, etc.

if(size(w)>0)

if(w(1)==’V’ && read_v==0)

v=fscanf(s,’%d’); %v=[0,1023]

v1(i)=(v*5)/1023; %v1=[0,5] volt, conversione in volt

read_v=1;

end

if(read_v==1 && read_u==0)

u1(i)=fscanf(s,’%d’);

if(u1(i)> 0)

pwm(i)=u1(i)+139;

end

if(u1(i)<0)

pwm(i)=u1(i)-139;

end

read_u=1;

end

if(read_v==1 && read_u==1 && read_t==0)

pos(i)=fscanf(s,’%d’);

read_t=1;

end

end

if(read_v==1 && read_t==1 && read_u==1 && read_s==0)

stop=fscanf(s,’%d’);

if(stop==0) %se stop=0 riazzera i flag

read_v=0;

read_u=0;

read_t=0;

read_s=0;

end

i=i+1;

end

end

%% Close serial connection

stopasync(s);

fclose(s);

delete(s);

71

Page 76: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

clear s;

amp = 24.5; %amplificazione

R = 0.22; %R sensore

v2 = v1/amp;

v3 = lsim(filtrod,v2)’;

i1 = v2/R; %i1=v1/R R=0.22 ohm

i2=v3/R;

%FILTRO DERIVATIVO

filtro2=tf([1 0],[1/25 1]);

filtro2d=c2d(filtro2,Ts);

vel=lsim(filtro2d,pos)’;

%% IDENTIFICAZIONE

%prepara dati

datacorr=iddata(i2’,pwm’,Ts);

datapos=iddata(pos’,u1’,Ts);

datavel=iddata(vel’,u1’,Ts);

datacorr=merge(datacorr(1:3455),datacorr(3455:6911),datacorr(6911:10366));

datapos=merge(datapos(1:3455),datapos(3455:6911),datapos(6911:10366));

datavel=merge(datavel(1:3455),datavel(3455:6911),datavel(6911:10366));

%lancio algoritmi

modellocorr = pem(datacorr,[3 3 0 0 0 1],’focus’,

’prediction’,’tolerance’,1e-8,’maxiter’,500);

modellopos = pem(datapos,[3 1 0 0 0 1],’focus’,

’prediction’,’tolerance’,1e-8,’maxiter’,500);

%modellotot = pem(datatot,3);

%funzioni di trasferimento

Fmodellocorr = tf(modellocorr.b,modellocorr.a,Ts);

Fmodellopos = tf(modellopos.b,modellopos.a,Ts);

Fmodellovel = Fmodellopos*filtro2d;

%% GRAFICI

figure(1)

plot(Ts*[0:1:length(pwm(1:3455))-1],pwm(1:3455))

title(’Ingresso pwm’)

xlabel(’Tempo(sec)’)

ylabel(’Duty Cycle’)

figure(2)

plot(Ts*[0:1:length(u1(1:3455))-1],u1(1:3455))

title(’Ingresso u’)

xlabel(’Tempo(sec)’)

ylabel(’Duty Cycle’)

figure(3)

compare(getexp(datacorr,1),modellocorr,’r’);

title(’Simulazione corrente’)

xlabel(’Tempo(sec)’)

ylabel(’corrente(ampere)’)

figure(4)

72

Page 77: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Cap. 5 Conclusioni e sviluppi futuri

compare(getexp(datapos,1),modellopos,’r’);

title(’Simulazione posizione’)

xlabel(’Tempo(sec)’)

ylabel(’posizione(passi encoder)’)

figure(5)

lsim(Fmodellovel,u1(1:3460)’);

title(’Simulazione velocita’)

ylabel(’velocita(encoder/sec)’)

xlabel(’Tempo(sec)’)

73

Page 78: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Elenco delle figure

1.1 Sezione di un motore elettrico . . . . . . . . . . . . . . . . . . 51.2 Schema elettrico equivalente di un motore DC . . . . . . . . 61.3 Pilotaggio ON-OFF: quando l’interruttore e aperto il moto-

re e fermo, quando e chiuso gira alla massima velocita. Adestra un esempio di implementazione . . . . . . . . . . . . . 10

1.4 Pulse With Modulation . . . . . . . . . . . . . . . . . . . . . . 111.5 Andamento della corrente del motore sotto l’ azione dei una

PWM variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.6 Schema ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . 141.7 Funzionamento ponte H . . . . . . . . . . . . . . . . . . . . . . 14

2.1 L298N: pin connections (top view) . . . . . . . . . . . . . . . 172.2 Shema di funzionamento interno di un ponte H . . . . . . . . 182.3 Amplificatore operazionale . . . . . . . . . . . . . . . . . . . . 212.4 TLC272: top view . . . . . . . . . . . . . . . . . . . . . . . . . 222.5 Configurazione non invertente . . . . . . . . . . . . . . . . . . 232.6 Possibile modalita di limitazione superiore della banda nella

configurazione non invertente . . . . . . . . . . . . . . . . . . 252.7 Collegamenti encoder . . . . . . . . . . . . . . . . . . . . . . . 272.8 Amplificatore differenziale . . . . . . . . . . . . . . . . . . . . 28

3.1 Arduino duemilanove . . . . . . . . . . . . . . . . . . . . . . . 303.2 I processi da identificare . . . . . . . . . . . . . . . . . . . . . 373.3 a) Modello con dead zone b) Modello senza dead zone . . . 383.4 Modello di attrito . . . . . . . . . . . . . . . . . . . . . . . . . 393.5 Ingressi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.6 Stima della velocita . . . . . . . . . . . . . . . . . . . . . . . . 443.7 Posizione e Corrente . . . . . . . . . . . . . . . . . . . . . . . . 45

4.1 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . 464.2 Luogo delle radici P1(s) . . . . . . . . . . . . . . . . . . . . . . 484.3 Diagrammi di bode e di Nyquist per C(s)=15 . . . . . . . . . 494.4 Simulazione in simulink . . . . . . . . . . . . . . . . . . . . . . 49

74

Page 79: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

ELENCO DELLE FIGURE ELENCO DELLE FIGURE

4.5 Risposta del sistema per ingresso costante e sinusoidale . . . 504.6 Luogo delle radici di P3(s) a) senza controllore; b) con con-

trollore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.7 Diagrammi di bode e di Nyquist per C(z) = 100(z2−1.835z+0.8443)

(z−1)(z−0.9739)53

4.8 Simulazione in simulink . . . . . . . . . . . . . . . . . . . . . . 534.9 Risposta del sistema per un ingresso costante . . . . . . . . . 54

5.1 Risultato finale . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.2 Schema elettrico . . . . . . . . . . . . . . . . . . . . . . . . . . 58

75

Page 80: C:/Users/User/Desktop/tesi/Tesi di Laurea/Tesicontrol.disp.uniroma2.it/carnevale/archivio/Tesi/pierluigidifranco/... · ad un’opportuna scheda di controllo, possono essere controllati

Bibliografia

[1] A. Bellini, “Elettronica industriale 1”, Aracne, 2004.

[2] C. Bonivento - C. Melchiorri - R. Zanasi, “Sistemi di controllo

digitale”, Progetto Leonardo, 1995.

[3] Ernest O. Doebelin, “Strumenti e metodi di misura”, McGraw-Hill,2004.

[4] Luca Zaccarian, “Motori CC ed encoders incrementali”,

[5] Alessandro Sbaraglia, “Sistema di controllo su microcontrollore per

motori CC ed encoder magnetici”, Tesi di laurea, 2009.

[6] Roberto De Simone, “Azionamento di motori in corrente continua

tramite microcontrollori”, Tesi di laurea, 2004.

[7] MathWorks, “System Identification Toolbox”

76