• Non ci sono risultati.

PID - Arduino. Gusso Gabriele, Orlandi Alessio e Tassi Tommaso

N/A
N/A
Protected

Academic year: 2022

Condividi "PID - Arduino. Gusso Gabriele, Orlandi Alessio e Tassi Tommaso"

Copied!
5
0
0

Testo completo

(1)

Astronomy& Astrophysics ©ESO 2020 6 dicembre 2020

PID - Arduino ?

Gusso Gabriele, Orlandi Alessio e Tassi Tommaso

Dipartimento di Fisica, Sapienza Universitá di Roma, Piazzale Aldo Moro, 5, 00185, Roma, Italia.

e-mail: gusso.1869299@studenti.uniroma1.it e-mail: orlandi.1873876@studenti.uniroma1.it e-mail: tassi.1813564@studenti.uniroma1.it 6 dicembre 2020

SOMMARIO

Obiettivi.Programmazione e tuning di un PID controller tramite stima dei coefficienti KP, KIe KD.

Metodi. Studio del tempo di stabilizzazione τSP, dell’errore totale eSPe dello steady state error del segnale in uscita dal fotodiodo e tuning del segnale inviato al LED.

Risultati.Alcune scelte dei coefficienti di tuning possono risultare fatali per il raggiungimento del set point.

Parole Chiave. PID – Arduino – fotodiodo – LED

sezione 1 -Introduzione 1.1LED

Presentano una funzione caratteristica, dunque, quando col- legati in un circuito, occorre determinarne la tensione ai capi.

Sia R la resistenza presente nel circuito, Vgenla tensione fornita dal generatore, VF la tensione ai capi del LED e IF la corrente che scorre nel circuito, si ha la seguente equazione caratteristica:

Vgen= VF+ RIF =⇒ IF = Vgen− VF R

Si può, quindi, stimare il valore dell’intensità radiante relativa IVtramite i valori tabulati e, quindi, l’intensità luminosa emessa dal LED (Ie), con η l’efficienza luminosa:

Ie= IV

η 1.2Arduino

Arduino è una scheda di sviluppo basata su microcontrollori ATMEL. Sulla scheda sono presenti i circuiti atti alla comuni- cazione, alimentazione e programmazione che forniscono fun- zioni specifiche ai pin del microprocessore stesso. La scheda comunica con il PC tramite una connessione USB e un software.

1.3PID

Il PID (P-roporzionale, I-ntegrale, D-ifferenziale) è un mec- canismo di controllo e feedback, in grado di apportare modifiche al sistema in base al suo stato e a quello desiderato, calcolando continuamente la differenza tra una variabile da controllare e un valore desiderato, attraverso un sistema di 3 fattori P, I e D. Posto e(t) il segnale in ingresso e u(t) quello in uscita, si ha:

e(t)= r(t) − SP u(t)= KP· e(t)+ KI

Z t 0

e(τ) dτ+ KD

d dte(t)

? Basato su dati acquisiti al Laboratorio di Astrofisica in Sapienza Università di Roma.

In particolare KP tiene conto della distanza del segnale dal desiderato e apporta una correzione proporzionale a tale distan- za, KItiene conto dei valori pregressi dell’errore e KDtiene con- to di trend futuri calcolando la velocità di avvicinamento al set- point e rallenta nel caso ci si avvicini troppo velocemente. Per KP, si osserva che questo è il parametro dominante e, se troppo grande o influenzato da fattori esterni, determina un superamen- to eccessivo del valore desiderato, mentre per un valore troppo piccolo il segnale correttivo è troppo piccolo e il sistema è poco responsivo o sensibile. Per superare lo steady state error occorre aggiungere il termine integrale, il quale tiene conto della storia del sistema e accelera l’avvicinamento della variabile da control- lare al setpoint SP; ma, essendo un termine correttivo molto lento e volendo monitorare maggiormente la velocità di avvicinamen- to, si usa il termine differenziale, che deve essere adeguatamente filtrato, in quanto sensibile al rumore.

sezione 2 -Descrizione dell’esperimento Strumenti utilizzati

Oscilloscopio digitale Keysight DSOX1102G1 Generatore di forme d’onda AFG-2225

Cavo BNC RG58

Multimetro digitale modello 34460 Generatore di tensione (alimentatore) GPE-4323

Emettitore di luce LED modello 590-547 Rivelatore fotodiodo modello 194-290 Rotaia per determinare la distanza tra LED e fotodiodo

Arduino UNO Matlab e R per analisi dati

1 L’oscilloscopio digitale Keysight DSOX1102G ha incertezza oriz- zontale di [± (0.0016 * ampiezza orizzontale) ± 200 ps] e verticale di [± (3% + 0.25%) * ampiezza verticale], nel caso in cui l’ampiezza verti- cale sia ≥ 10 mV/div, oppure di [± (4% + 0.25%) * ampiezza verticale], nel caso in cui l’ampiezza verticale sia < 10 mV/div.

(2)

do, si collega Arduino UNO al PC, un pin di ingresso analogico al fotodiodo e un pin di uscita digitale al LED. Si effettuano di- verse misure, modulando il duty cycle del software, in modo tale da ottenere un fit dal quale ricavare il valore del KP. Quindi si svolgono successive misure variando direttamente i valori del KP

e del KI, introducendo, solamente nella fase finale, il contributo differenziale KD.

sezione 3 -Osservazioni e analisi dati 3.1Calibrazione

Si collega Arduino al PC tramite una porta USB, controlla- to tramite un programma apposito. Quindi si connette il pin di ingresso analogico al fotodiodo (A0) e il pin di uscita digitale (N5) al LED. Il programma ha un architettura tale da leggere in N= 10 bit. I risultati della misura vengono dunque presentati in ADU, in una scala il cui valore massimo è pari a 2N− 1= 1023.

Per questa ragione si sceglie una configurazione sulla guida me- tallica, affinché la distanza tra i due diodi non permetta di supe- rare tale valore di soglia. Attraverso il programma è possibile controllare il LED e la sua luminosità.

Figura 1. Codice in C, utilizzato per la calibrazione variando il duty da 20 a 250 ADU.

In questa prima fase viene utilizzato il codice in figura1e si osserva che la tensione ai capi del LED è pari a 5 V quin- di, per assegnare ai dati espressi in ADU un’unità fisicamente accettabile (ovvero il Volt), si considera la seguente relazione:

(1023) ADU : (5) V= (x) ADU : (y) V (1) con x valore ricavato direttamente dal software del PC.

del LED. Se tale valore fosse nullo, lo sarebbe anche il segnale (LOW), se fosse invece pari a 255 si otterrebbe il valore massimo di 5 V (HIGH) in output verso il LED. Per calibrare lo strumento, si decide di far girare il programma variando il duty cycle a mul- tipli di 10 ADU, inviando dunque un segnale di input al LED; si media poi il segnale in uscita rilevato dal fotodiodo espresso in ADU. I dati vengono riportati nella tabella1, con quelli in Volt vengono ricavati tramite l’equazione1.

Duty (ADU) Output (ADU) Output (V)

20 384 ± 2 1.88 ± 0.01

40 419 ± 3 2.05 ± 0.01

60 472 ± 4 2.31 ± 0.02

80 525 ± 2 2.57 ± 0.01

100 580 ± 2 2.83 ± 0.01

120 633 ± 2 3.09 ± 0.01

140 695 ± 2 3.40 ± 0.01

150 716 ± 2 3.50 ± 0.01

170 780 ± 1 3.811 ± 0.005

180 810.5 ± 0.7 3.958 ± 0.004 200 878.5 ± 0.4 4.287 ± 0.002 210 909.3 ± 0.4 4.440 ± 0.002 220 941.8 ± 0.7 4.598 ± 0.003

230 974 ± 2 4.76 ± 0.01

240 1006 ± 1 4.912 ± 0.005

250 1023 ± 1 4.996 ± 0.005

Tabella 1. La tabella riporta i dati dell’output (in ADU ed in Volt) rilevati dal fotodiodo e del duty cycle.

Attraverso tali misure, si può svolgere la calibrazione del fo- todiodo. Il grafico (figura2) presenta sulle ascisse il duty cycle espresso in funzione del segnale rilevato dal fotodiodo in Volt.

Figura 2. Retta di calibrazione di Arduino UNO, mostra l’andamento della tensione rilevata dal fotodiodo in funzione del duty cycle.

Si osserva come gli unici effetti consistenti siano determinati dal fattore KP, tanto che dai risultati del fit risulta possibile ri- cavare il valore di tale fattore come il reciproco del coefficiente angolare. Si ottengono:

m= (1.41 ± 0.04) · 10−2V/ADU q= (1.47 ± 0.07) V

Si ricava un valore di KP = 71 ± 2 ADU/V, il quale rappre- senta il valore del coefficiente proporzionale tale per cui la curva del PID ben approssima l’andamento ottimale.

(3)

Gusso Gabriele, Orlandi Alessio e Tassi Tommaso: PID - Arduino

Viene associata a tale risultato un’incertezza ricavata come segue:

σKp= r 1

m4σ2m= 1 m2σm

Inoltre si valuta l’incertezza sui singoli valori relativi a ciascun duty cycle, definiti come medie di N = 200 dati, tramite:

σmedia= vt

PN k=0

Output (ADU) − Output (ADU)2

N 3.2Impostazione PID

Si modifica il programma in modo tale da costruire un PID che raggiunga il valore di set point SP desiderato. Le tre compo- nenti del PID debbono essere adeguatamente pesate per aumen- tarne l’efficacia, dunque si varieranno i valori associati ai singoli coefficienti in studio, partendo dalla variazione di KIcon KPfis- so e KD = 0 sADU/V (con s = secondi). Si modifica il codice come in figura3.

Figura 3. Definizione del PID.

Si imposta un set point SP= 3.07 V. Il programma somma al duty cycle, per ogni ciclo del loop, una delta calcolata nel ciclo precedente come:

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

Z t 0

e(τ) dτ+ KD

d dte(t) Dopodiché, il programma, scrive il duty sulla porta PWM, legge il segnale measuredVal rivelato dal fotodiodo, calcola l’er- rore e(t) e la correzione δ da applicare al duty nel modo di cui sopra. Prima di ripetere il ciclo vengono stampate su schermo i valori seguenti: measuredVal, duty, δ, KP· e(t), KIRt

0 e(τ) dτ, KDd

dte(t) ed e(t).

3.2.1Studio e analisi di KP, KIe KD

Fissato inizialmente KI = 0 ADU/sV, si opera solo con il fattore proporzionale KP. Si ha dunque u(t)= KP· e(t). Aumen- tando gradualmente il fattore KP da 5 a 150 ADU/V2, si effet- tuano i grafici dell’andamento di measuredVal (segnale misurato dal fotodiodo) in funzione del tempo; si portano a confronto tali risultati con il set point SP= 3.07 V in figura4.

Figura 4. PID operato con solo KP.

Si osserva come per KPtroppo grande (ad esempio KP = 110 ADU/V in figura) la correzione sia troppo "rapida", nel senso che SP viene superato, la correzione cambia verso portando measu- redVal di nuovo al di sotto di SP e così via di seguito, con conse- guenti oscillazioni smorzate attorno al set point. Si procede con la stima di KP tramite la minimizzazione dell’errore totale eSP

rispetto al SP e del tempo τSPdi arrivo a regime, ottenendo:

KP = 73 ± 4 ADU/V

Il metodo seguito per ottenere tale stima viene trattato in maggior dettaglio nel calcolo di KI. Fissato arbitrariamente KP = 15 ADU/V e aggiunto il fattore integrale KI, si ha che la correzione apportata dal PID sarà ora:

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

Z t 0

e(τ) dτ

2 Si scelgono 10 valori in tale intervallo.

(4)

gendo il termine integrale, come si può parzialmente apprezza- re dal grafico in figura 5, comparando l’offset finale nel caso KI = 0 ADU/sV con quello in cui KI = 1.1 ADU/sV o KI = 10 ADU/sV.

Figura 5. measuredVal vs t al variare di KI, con KP= 15 ADU/V.

Si vuole ora analizzare quale sia il valore ottimale di KI. Va- riando KI3si calcola la sua miglior stima come quella che mini- mizzi sia l’errore totale eSPche il tempo τSPdi arrivo a regime.

Si riportano in tabella2tali stime.

KI(ADU/sV) eSP(mV) τSP(s) 0 21.6 ± 2.1 3.0 ± 0.3 0.5 21.5 ± 2.2 7.9 ± 0.3 0.8 21.5 ± 2.2 6.4 ± 0.3 0.9 23.0 ± 2.3 6.0 ± 0.3 1 21.5 ± 2.2 5.2 ± 0.3 1.1 21.5 ± 2.2 4.4 ± 0.3 1.2 21.6 ± 2.2 4.3 ± 0.3 1.4 22.0 ± 2.2 4.4 ± 0.3 1.7 22.1 ± 2.2 4.4 ± 0.3 2 22.2 ± 2.2 4.6 ± 0.3 5 22.6 ± 2.3 4.9 ± 0.3 10 23.0 ± 2.3 5.3 ± 0.3

Tabella 2. Errore totale eSPe tempo τSPdi arrivo a regime al variare di KI. Il valore di τSPè stato stimato ponendo τSP= 0 in t = 1 s.

Si nota come eSPvenga minimizzato per scelte di KI di 1.0 e 1.1 ADU/sV, invece τSPper KI = 1.2 ADU/sV, mantenendosi però stabile attorno ai 4.4 s per coefficienti KI di 1.1, 1.4 e 1.7 ADU/sV. Siccome si vuole minimizzare sia τSPche eSP, allora si ottiene KI = (1.10 ± 0.03) ADU/sV. Si ricava così un rapporto tra i coefficienti proporzionale e integrale di:

KP/KI= (13.6 ± 0.4) s

3 Si scelgono 12 valori di KIda 0 a 10 ADU/sV.

3 delle quali riportate in figura4, aggiungendo il contributo di KI. Si riportano in figura6gli andamenti ottenuti operando in tal modo.

Figura 6. PID operato con KPe KI.

A titolo esaustivo si riporta il grafico del segnale nel caso di instabilità, ovvero con KP> 110 ADU/V, in figura7.

Figura 7. PID operato con KP > 110 ADU/V. Rispettivamente KP= 120 ADU/V a sinistra e KP= 150 ADU/V a destra.

Si noti come il sistema, avendo un KP troppo elevato, non riesca mai a raggiungere il SP. Ciò è dovuto al fatto che si va a sommare un contributo proporzionale troppo elevato (circa la metà del duty massimo) e ciò comporta un’oscillazione attorno al SP con valori prossimi ai limiti del range di Arduino, ovvero 0 V e 5 V.

Infine, fissati KP = 15 ADU/V e KI = 1.1 ADU/sV, si osserva cosa accade aggiungendo alla u(t) anche il fattore differenziale KD. La correzione sarà:

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

Z t 0

e(τ) dτ+ KD

d dte(t)

(5)

Gusso Gabriele, Orlandi Alessio e Tassi Tommaso: PID - Arduino

Figura 8. measuredVal vs t al variare di KD, con KP= 15 ADU/V e KI= 1.1 ADU/sV.

Dal grafico si osserva che anche nel caso di KDtroppo gran- de si ha overshooting. Da un’analisi dell’errore totale eSPe del tempo di arrivo a regime τSP, si nota come τSPrisulti non variare con KD. In tabella3si riportano i valori di eSPrelativi ai vari KD.

KD(sADU/V) eSP(mV)

0 20.2 ± 2.0

0.5 20.2 ± 2.0

1 20.3 ± 2.0

1.5 20.3 ± 2.0

2 20.2 ± 2.0

2.5 20.1 ± 2.0

3 20.2 ± 2.0

3.5 20.2 ± 2.0

4 20.2 ± 2.0

8 20.5 ± 2.1

10 20.7 ± 2.1

15 21.1 ± 2.1

20 22.2 ± 2.2

Tabella 3. Errore totale eSPal variare di KD.

Come si nota dalla tabella, il valore che minimizza l’errore totale eSPè KD= 2.5 ± 0.1 sADU/V. Si ha dunque un rapporto tra coefficiente proporzionale e differenziale di:

KP/KD= (6.0 ± 0.2) 1/s

sezione 4 -Risultati e conclusioni

Confermato il corretto funzionamento del LED e del foto- diodo e collegati questi ad un Arduino UNO, si è proceduto con la programmazione e la calibrazione del PID. Si è determinato il valore proporzionale KP, quindi quello integrale KIe differen- ziale KDche ottimizzano il funzionamento del PID, minimizzan- do errore totale eSPe tempo di stabilizzazione τSP, ottenendo le stime riportate in tabella4.

Coefficiente Valore

KPcalibrazione (71 ± 2) ADU/V

KP (73 ± 4) ADU/V

KI con KP= 73 ADU/V (5.4 ± 0.3) ADU/sV KDcon KP = 73 ADU/V (12.2 ± 0.8) sADU/V

KP/KI (13.6 ± 0.4) s KP/KD (6.0 ± 0.2) 1/s

Tabella 4. Stime ultime di KP; KI e KD relative a KP = 73 ADU/V;

KP/KIe KP/KD.

Riferimenti

Documenti correlati

Le fratture dello scafoide carpale rappresentano una percentuale variabile tra il 50 e l’80% del totale delle fratture del carpo 41 nonché la seconda causa di frattura dell’arto

considerations on the spatial scale of the study and information on the forest composition. 13. Acknowledgements

Indicare il metodo usato e il numero di sottointervalli necessari per avere la

[r]

Stipula del Protocollo di Intesa fra l’Assessorato Regionale delle Risorse Agricole, lo sviluppo rurale e la Pesca Mediterranea, con l’Assessore Antonello Cracolia, il

[r]

Sovraffollamento e condizioni inadeguate di vita dettate dall’eccessiva densità dei luoghi di detenzione sono solo due degli aspetti drammatici su cui porre l’attenzione, anche se

14.. sono punti di discontinuit`a eliminabile. a)La funzione f ha due punti angolosi in x = ±1, come si vede facilmente anche disegnandone il grafico... Si pu`o quindi applicare