Piccola Premessa:
Tutto ciò che scriverò è frutto di studio personale, potrebbero esserci errori di interpretazione di alcune questioni o mancanze: sarò contento anch’io di imparare nuove cose ! A questo punto credo che dobbiamo affrontare la questione della regolazione di una grandezza (velocità , temperatura, tensione, etc.) con sistemi più sofisticati del solito, ovvero tramite P.I.D.
Cosa è il PID ? Il PID è un sistema il cui scopo è quello di regolare nella maniera più precisa e rapida possibile una grandezza tramite opportuno feedback.
Dove si usa ? Tutte le volte che c’è bisogno di sistemi particolarmente reattivi e precisi.
Per capire di cosa parlo linko un piccolo video dove si fa un utilizzo spinto di un sistema con PID
Guardando il video si vede come la piccola piattaforma si inclina in maniera molto rapida e precisa per portare la pallina nel punto desiderato.
Ma perché si chiama PID ? E come Funziona ?
PID sta per Proporzionale, Integrale, Derivato.
Per una trattazione puntuale e dettagliata dell’argomento andrebbe fatto uso di molta matematica, con integrali e derivate, ma cercherò di starne alla larga il più possibile per permettere la comprensione del sistema anche ai non addetti ai lavori…
Vediamo come funziona:
Analizziamo lÂ’immagine da sinistra verso destra.
All’inizio abbiamo il nostro SetPoint, ovvero la nostra grandezza desiderata: ad esempio la velocità di un motore, la tensione di uscita di alimentatore, la temperatura all’interno di un ambiente, il livello di acqua all’interno di un serbatoio, etc.
Per esempio, ipotizziamo di voler mantenere il livello dell’acqua all’interno di un serbatoio a 100 cm: il nostro SetPoint sarà per l’appunto 100.
Tale valore entrerà all’interno di un sommatore, ovvero un dispositivo che fa la somma algebrica tra il nostro SetPoint e il FeedBack ricevuto.
Il FeedBack restituisce la lettura reale della grandezza da rilevare, nel nostro caso, se l’acqua si trova a 100 cm, il FeedBack sarà 100.
Quindi con i dati sopra menzionati, all’uscita del primo sommatore avremo il valore dell’errore rilevato, che sarà : 100 – 100 = 0.
LÂ’uscita del sommatore va a finire contemporaneamente in tre blocchi che si chiamano Proporzionale, Integrale, Derivato.
Tali blocchi, effettueranno unÂ’operazione matematica sullÂ’errore ricevuto che tra un poÂ’ analizzeremo.
L’uscita dei tre blocchi andrà a finire in un ulteriore sommatore che sommerà i valori delle tre componenti Proporzionale, Integrale, Derivata.
Tale uscita, infine, andrà a finire nel blocco che si occupa fattivamente di azionare l’attuatore.
Per tornare all’esempio del livello nel serbatoio di acqua, per poter operare con un controllo PID, il serbatoio dovrà essere dotato di 2 sistemi:
1)Una valvola che è possibile aprire e chiudere in modo lineare (0..100%) mediante driver elettronico dedicato;
2)Un sensore di livello
Il “processo di gestione” è formato dal driver elettronico collegato all’elettrovalvola a cui basterà inviare un valore di tensione (es. 0..5 V) per settare l’apertura della valvola stessa.
Infine c’è la grandezza controllata in cui è installato il dispositivo per la retroazione.
Nel caso del serbatoio, un sensore di livello dellÂ’acqua
Ora proviamo a descrivere i tre blocchi per capire quali operazioni matematiche eseguono.
Per semplificare la comprensione, farò sempre riferimento al nostro serbatoio di acqua:
Come da immagine, ipotizziamo di avere un serbatoio di acqua in cui il livello dell'acqua deve rimanere fisso a 1 m che equivalgono a 1000 litri.
Ipotizziamo che alla base del serbatoio c'è un ribunetto che viene aperto e/o chiuso, parzialmente o completamente, da estranei e il nostro compito è quello di mantenere il livello dell'acqua a 1 m: in pratica noi siamo il piccolo pompiere !
1° Metodo, il Proporzionale:Supponiamo che controlliamo il livello dell'acqua ogni 10 secondi, all'istante iniziale controlliamo e vediamo che il livello è esattamente 1 m.
Dopo 10 secondi, il livello è sceso a 80 cm (Errore del 20%).
A questo punto apriamo la manichetta del pompiere del 20% (proporzione 1:1, ma potrebbe anche essere diversa, basta che sia una proporzione dell'errore riscontrato ( 20%)).
Dopo altri 20 secondi controlliamo il livello che è arrivato al 95 cm, ovvero un errore del 5%.
Di conseguenza rimoduliamo la manichetta del pompiere al 5%
Dopo altri 30 secondi controlliamo il livello che è arrivato al 99 cm, ovvero un errore del 1%.
Di conseguenza rimoduliamo la manichetta del pompiere al 1%
Ci rendiamo conto che con questo metodo, l'acqua raggiungerà il livello esatto di un metro dopo un tempo infinito !!!
Ma non è un problema, il meccanismo funziona molto bene in quanto l'errore viene subito portato a valori molto bassi.
Infatti se il livello dovesse scendere al 50%, il pompiere aprirebbe la sua manichetta al 50% ripristinando un livello prossimo al metro dopo pochi istanti.
Negli esempi ho ipotizzato un’apertura della manichetta identica all’errore rilevato: nella realtà potrei avere la necessità di aprire la manichetta di un valore più o meno alto rispetto all’errore rilevato.
E qui che entra in gioco il coefficiente Proporzionale kP
Quindi la nostra formuletta sarà :
P = e * kPDove:
P = il valore uscente dal blocco proporzionale:
NellÂ’esempio di sopra:
Tempo - Valore0 = 0
10 = 20
20 = 5
30 = 1
e = errore rilevato (come sopra)
kP = coefficiente proporzionale (nel nostro caso vale 1)
Domanda: come si setta il coefficiente kP ???
La questione non è così semplice…
Ipotizziamo che qualcuno ha aperto il rubinetto del serbatoio e che da tale rubinetto escono 10 lt/s
Ipotizziamo che la manichetta del pompiere, tutta aperta (100%) immette 100 lt/s
Facciamo i calcoli con kP = 0,1, kP = 1, kP = 10
kP = 0,1
Inizio controllo:
Tempo 0 s, Livello 100 cm
Dopo 10 secondi a 10 lt/s sono usciti 100 lt di acqua, quindi il livello è sceso di 10 cm.
Tempo 10 s, Livello 90 cm
A questo punto il proporzionale aprirà la valvola di:
P = e * kP = 10 * 0,1 = 1%.
Poiché la manichetta è da 100 lt/s, aperta all’1% permetterà il passaggio di 100 * 1% = 1 lt/s
Dopo 20 Secondi sono usciti a, 10 lt/s, altri 100 lt di acqua, ma sono entrati, a 1 lt/s, 10 lt di acqua, quindi in totale sono usciti 90 lt di acqua e il livello è sceso di altri 9 cm.
20 s - 81 cm
A questo punto il proporzionale rimodula la valvola a:
P = e * kP = 19 * 0,1 = 1,9%.
Poiché la manichetta è da 100 lt/s, aperta all’1,9% permetterà il passaggio di 100 * 1,9% = 1,9 lt/s
Dopo 30 Secondi sono usciti a, 10 lt/s, altri 100 lt di acqua, ma sono entrati, a 1,9 lt/s, 19 lt di acqua, quindi in totale sono usciti 81 lt di acqua e il livello è sceso di altri 8,1 cm.
30 s – 72,9 cm
A questo punto il proporzionale rimodula la valvola a:
P = e * kP = 27,1 * 0,1 = 2,7%.
Poiché la manichetta è da 100 lt/s, aperta all’2,7% permetterà il passaggio di 100 * 2,7% = 2,7 lt/s
Andando avanti ad un certo punto si avrà l’equilibrio tra l’acqua uscente e l’acqua entrante.
Tale equilibrio si raggiungerà quando l’acqua avrà raggiunto il livello di 0 cm, infatti l’errore sarà 100% che moltiplicato per il coefficiente kP dell’0,1 darà un valore di apertura della valvola del 10%.
Quindi 100 lt/s * 10% = 10 lt/s che è la stessa quantità di acqua che esce dal rubinetto.
Ora ripetiamo lÂ’analisi con un coefficiente kP stabilito a 1:
Inizio controllo:
Tempo 0 s, Livello 100 cm
Dopo 10 secondi a 10 lt/s sono usciti 100 lt di acqua, quindi il livello è sceso di 10 cm.
Tempo 10 s, Livello 90 cm
A questo punto il proporzionale aprirà la valvola di:
P = e * kP = 10 * 1 = 10%.
Poiché la manichetta è da 100 lt/s, aperta all’10% permetterà il passaggio di 100 * 10% = 10 lt/s
Dopo 20 Secondi sono usciti a, 10 lt/s, altri 100 lt di acqua, ma sono entrati, a 10 lt/s, 100 lt di acqua, quindi il livello dellÂ’acqua rimane stabile a 90 cm !!!
20 s - 90 cm
Il proporzionale rimarrà invariato ed il sistema si è stabilizzato !
Ora ripetiamo lÂ’analisi con un coefficiente kP stabilito a 10:
Tempo 0 s, Livello 100 cm
Dopo 10 secondi a 10 lt/s sono usciti 100 lt di acqua, quindi il livello è sceso di 10 cm.
Tempo 10 s, Livello 90 cm
A questo punto il proporzionale aprirà la valvola di:
P = e * kP = 10 * 10 = 100%.
Poiché la manichetta è da 100 lt/s, aperta all’100% permetterà il passaggio di 100 * 100% = 100 lt/s
Dopo 20 Secondi sono usciti a, 10 lt/s, altri 100 lt di acqua, ma sono entrati, a 100 lt/s, 1.000 lt di acqua, quindi in totale sono entrati 900 lt di acqua e il livello è salito di 90 cm !!!
20 s - 190 cm
A questo punto il proporzionale rimodula la valvola a:
P = e * kP = -90 * 10 = -900%.
Nel caso della manichetta non sono possibili valori negativi, ma se al posto della manichetta ci fosse una pompa in cui è possibile invertire il verso di rotazione, la stessa anziché aggiungere, toglierebbe l’acqua dal serbatoio per cercare di riportare il livello a 1 m.
Andando avanti, con un coefficiente kP così alto, il sistema oscillerà non riuscendo mai a portare l’acqua a 1 metro.
L’immagine rappresenta il livello dell’acqua con coefficienti kP diversi (è un’immagine generica, non riferita all’esempio del serbatoio).
La linea trattegiata rappresenta lÂ’inizio della regolazione, la linea blu rappresenta il livello dellÂ’acqua con kP a 0,1, quella nera con kP = 1, quella rossa con kP = 10.
Come si vede, più il coefficiente è alto, più l’errore della grandezza controllata rispetto al setpoint è basso, tuttavia il sistema tende ad oscillare.
Per smorzare le oscillazioni, si usa il blocco dellÂ’integrale, ma lo vediamo alla prossima puntata, anche per permettervi di scrivere le vostre domande, dubbi, incomprensioni, etc.
A presto, Eligio.