PI D PID PID Applicazione al controllo del movimento di un umberto lamia 5D 2013/14
PID
PIDPIDApplicazione al controllodel movimento di un robot
umberto lamia 5D 2013/14
PIDSommario
Nell’ambito del corso di Sistemi è stato affrontato il tema dei controlli automatici ed in particolare del controllo PID, argomento di questa tesina.
Dopo una introduzione teorica, descriverò la realizzazione di un piccolo progetto mirato all’inseguimento di un traiettoria da parte un robot didattico Lego Mindstorms NXT in cui ho implementato un controllore PID software.
Durante l’esperienza ho anche confrontato il comportamento del robot nel caso di utilizzo del PID rispetto ad un semplice controllo on-off.
Le principali criticità incontrate nel progetto sono legate all’acquisizione dei dati di input (led + sensore di luminosità) e alla loro successiva interpretazione.
In conclusione sono stati individuati alcuni miglioramenti che potrebbero essere apportati al sistema per aumentare l’efficienza del controllo
umberto lamia
PIDSistema di controllo
Il controllo automatico di un dato sistema dinamico (di un motore, di un impianto industriale, di una funzione biologica come il battito cardiaco) si prefigge di ottenere in uscita i valori desiderati ed indicati dall’ingresso, nonostante i disturbi.
Il controllo del sistema in esame viene affidato ad un altro sistema, detto controllore, progettato opportunamente.
Si distinguono:Sistemi a catena aperta dove la garanzia della relazione fra ingresso e uscita è affidata unicamente ad un elemento esterno al sistema che va ad agire sullo stesso;
Sistemi a catena chiusa nei quali la regolazione è automatica nel senso che l’uscita viene confrontata con la grandezza di riferimento, in modo da produrre, ogni volta si verifichi una diversità tra segnale di riferimento e segnale di uscita, un’azione correttiva che riporti l’uscita al valore desiderato.
umberto lamia
PID
Il PIDPID è un sistema di controllo in retroazione negativa.Per retroazione negativa intendiamo la capacità del sistema di auto stabilizzarsi tenendo conto delle uscite precedenti.Es.: in un sistema di puntamento, ogni tiro può essere utilizzato per puntare meglio l'arma e arrivare più vicino al bersaglio.
umberto lamia
La retroazione negativa
G
H
UI +
-
E
PID
Struttura si un controllore PID
Il PIDPID è la somma di tre diverse operazioni:
Azione proporzionale (P)
il valore del segnale di errore.
Azione integrale (I)i valori passati del segnale di errore.
Azione derivata (D)quanto velocemente il segnale di errore varia.
umberto lamia
PID
Sensore diSensore diluminositàluminosità
Motore CMotore C Motore BMotore B
umberto lamia
Il Robot Lego Mindstorm NXT
PIDNXT: Blocchi base
umberto lamia
PIDNXT: Ambiente di sviluppo SW
umberto lamia
PIDObiettivo del progetto
Controllare il robot affinché sia in grado di percorrere autonomamente un circuito rappresentato da una linea nera su di un piano, servendosi del sensore di luminosità ed implementando un controllore PIDPID.
umberto lamia
PIDInseguimento della traccia
umberto lamia
0% 50% 100%Luminositàrilevata
Sensore Led
PID
La luminosità varia uniformemente tra due limiti: la massima esternamente alla linea nera (chiaro) e la minima internamente (scuro) .
La prima parte del programma calcola la luminosità media (offset) spostando il robot sulle condizioni estreme.
MEDIA: OnFwd(OUT_C,50); Wait (500); Off (OUT_C); Wait (500); chiaro= Sensor(IN_3); OnFwd(OUT_B,50); Wait (700); Off (OUT_B); Wait (500); scuro= Sensor(IN_3); OnFwd(OUT_C,50); Wait (200); offset=(scuro+chiaro)/2;
Ad es. supponiamo chechiaro=50, scuro=40, media=45
umberto lamia
Calcolo della luminosità media
PIDVariabili del sistema di controllo
umberto lamia
INGRESSI: luminosità misurata dal sensore.
USCITA: velocità di due motori. (Attuatori) Al setpoint (errore = 0, andamento rettilineo) i due motori agiscono al 50% della loro potenza facendo procedere il robot in linea retta
DISTURBI: variazione casuale della luminositàvariazione della tensione di alimentazione a causa dalla scarica della batteria motori diversi
PIDProve Regolazione On-Off
umberto lamia
• Le prime prove sono state effettua utilizzando un controllo ON-OFF.
• Un controllo ON-OFF prevede solo due posizioni di controllo, cioè solo due possibili valori per la variabile manipolata.
• Nel caso del robot se la luminosità è al di sotto della soglia minima esso procede girando a dx, mentre se è al di sopra di quella massima procederà girando a sinistra
PID
L'algoritmo PID: approccio per fasi
umberto lamia
PIDLa luminosità varia in funzione
della posizione del robot rispetto alla traiettoria. La variazione della luminosità rispetto al valore medio iniziale influenza l’azione dei motori (uscita del sistema) in modo proporzionale, ovvero:Y=mx+qE’ possibile costruire un grafico che rappresenti la situazione: ad es. in figura se al valore misurato viene sottratta la media, l’errore sarà un numero compreso tra +5 e -5.All’equazione y=mx possiamo quindi sostituire Turn=Kp*error.La costante Kp ha la funzione di coefficiente angolare e più è grande più l’azione di regolazione è intensa.
Legenda:Turn = giri motoreTurn Left= girare/svoltare sinistraTurn Right= girare/svoltare destraError= errore compreso tra +5 e -5Offeset= media
umberto lamia
Azione proporzionale
PID
while (true) {
linea= Sensor(IN_3); errore = linea - offset; Turn = Kp * errore; Turn = Turn/100; powerB= Pr + Turn; powerC= Pr - Turn; OnFwd(OUT_C,powerC); OnFwd(OUT_B,powerB);
}Sottraendo Turn alla potenza di riferimento di un motore e sommandolo alla potenza dell’altro, sarà possibile rallentare un motore e accelerare l’altro generando una adatta rotazione. La potenza di riferimento dei motori viene fissata a 50 utilizzando una costante Pr. Turn viene diviso per cento per rientrare nel campo di valori riconosciuto dai motori del robot che va da 0 a 100umberto lamia
Fase 1 - Azione proporzionale
PID
L’azione integrale consiste nel sommare gli errori ed agire sui motori in modo che tale somma sia nulla.
La variazione di tempo (dt) è costante (tempo di esecuzione di un ciclo sw. La somma degli errori, variabile integrale, è moltiplicata per un fattore Ki per poi essere sommata a Turn.
Bisogna fare in modo che il contributo a Turn non sia eccessivo.
integrale = integrale + error
umberto lamia
Fase 2 - Azione integrale
errore = linea - offset;integrale =((2/3)*integrale)+errore;Turn = (Kp * errore)+(Ki*integrale);
Per avere un ‘PI’ basta aggiungere quanto detto alla parte P (fase 1). L’azione integrale da sola, non può essere usata, in quanto agisce in base agli errori passati.
PIDFase 2 – Prove sul Wind-Up
umberto lamia
errore = linea - offset;
integrale =(integrale)+errore;
Turn = (Kp * errore)+(Ki*integrale);
Per evitare il wind-up il valore dell’equazione è stato moltiplicato per un numero minore di 1 (e maggiore di 0).
Il wind-up si verifica a causa di grandi errori che superano il range di azione e che durano nel tempo (costante); il robot, allora, tenderà poi a correggerli in modo esagerato.
PID
La parte derivata permette di prevedere e correggere errori che ancora devono verificarsi.
Questo è possibile tenendo conto degli errori precedenti; infatti, memorizzando l’ultimo errore calcolato e il nuovo errore, con una semplice sottrazione è possibile constatare se esso sta aumentando o diminuendo.
Anche qui è presente una costante Kd.
La derivazione permette di agire prima che l’errore diventi significativo. umberto lamia
Azione derivata
PID
Basta aggiungere queste istruzioni al PI per creare il PID.
Anche questa azione non può essere utilizzata da sola, anzi, molte volte non viene utilizzata, dato che è molto sensibile ai piccoli errori.
derivata = errore - ultimoerrore;Turn = (Kp * errore) + (Ki*integrale)+ (Kd*derivata);
umberto lamia
Fase 3 - Azione derivata
PIDRegole di Ziegler-Nichols
Trovare i valori delle costanti è possibile solo attraverso continue prove.È possibile calcolare approssimativamente i valori di Kp, Ki e Kd seguendo questa tabella:
Dove:-Kc è il guadagno critico è il valore del guadagno per cui la variabile controllata presenta oscillazioni sostenute.-Pc è il periodo critico, ovvero, il tempo di cui il robot necessità per oscillare da una parte all’altra della linea a Kp=Kc.
Kc va misurato con Ki e Kd uguali a zero, aumentando Kp.
umberto lamia
PIDLimiti della implementazione
umberto lamia
Bordo Sx
0% 50% 100%Luminositàrilevata
Bordo Dx
0% 50% 100%Luminositàrilevata
Con un solo sensore di luminosità è necessario scegliere quale bordo della striscia inseguire. Infatti lo stesso valore rilevato può essere interpretato «gira a destra» se sono sul bordo sinistro oppure «gira a sinistra» se sono sul bordo destro.Questa limitazione consente di controllare il robot solo se le curve del percorso sono tutte destrorse (o sinistrorse).
Questa limitazione si riflette anche nella impossibilità di invertire il verso di marcia.
PIDConclusioni
umberto lamia
E’ possibile migliorare le prestazioni del robot:
Inserendo un ulteriore sensore di luminosità, si superano i limiti legati alla scelta iniziale del bordo da seguire. Sarà possibile far muovere il robot sopra la linea nera e non più sul bordo. Questa soluzione comporta sicuramente una rielaborazione del software di controllo.
Si potrebbero inserire dei momenti di autocalibrazione del sensore di luminosità in modo da renderlo meno sensibile alla luce esterna che può variare in parti diverse del tracciato o durante la prova.
PID
umberto lamia
Grazie per l'attenzione
PID
umberto lamia
Allegati
PID
umberto lamia
Il codice completo
PID
umberto lamia