Regolatore PI

Salve a tutti.
Per la maturità di quest'anno, sto realizzando un progetto, dove andrò a regolare la velocità di una pompa, il mediante PWM di Arduino.
Un potenziometro rileva le variazioni di livello di un liquido in un contenuto e di conseguenza il motore dovrebbe variare velocità.
Qui però mi servirebbe una mano. Siccome il liquido deve sempre rimanere ad un certo livello (non si deve ne svuotare, ne riempire. Il liquido deve rimanere costante), le variazioni del potenziometro, dovrebbero, mediante una regolazione PI andare a pilotare la pompa, in modo da mantenere sempre lo stesso livello. Il problema è appunto la regolazione PI, che con Arduino io no so fare.
Qualcuno potrebbe aiutarmi?
PS: Non sono un'esperto in materia. Voglio dire, a parte a scuola, non sono molto pratico, quindi avrei bisogno di spiegazioni chiare se possibile
Grazie in anticipo

cosa sarebbe la regolazione PI?
non basterebbe un calcolo proporzionale?

PI = regolazione proporzionale integrativa
PID = regolazione proporzionale integrativa derivativa

La semplice regolazione proporzionale ha un difetto: non risponde adeguatamente alla variazione dell'errore, inteso come differenza tra valore impostato e valore rilevato.

Immagina il serbatoio che si svuota in modo non prevedibile a priori, poiché dipende dalle esigenze del momento.

Un sensore di livello ti fornisce il valore rilevato, mentre il valore impostato è dato dal potenziometro che comanda in PWM la pompa.

Con il solo metodo proporzionale la cosa funziona se lo svuotamento è costante, ma se varia nel tempo bisogna considerare anche le entità di variazione dell'errore "integrando" questi valori nella formula di proporzionalità.

v(t) = Kp * e(t) + Ki * <integrale di e(t)>

in cui e(t) è l'errore e l'integrale di e(t) è la media dei valori di errore.

http://playground.arduino.cc/Code/PIDLibrary

ciao ciclofor

in pratica quello che devi fare è scaricarti la libreria già esistente e cercare di far funzionare quella.
In pratica tu conosci la funzione che lega il segnale in uscita dal potenziometro , ad ogni ciclo del programma tu devi acquisire questo segnale che chiamerai " livello reale " e confrontarlo con un valore teorico che tu hai definito a priori e che chiamerai " livello desiderato".

con questi due valori devi richiamare la funzione PID della libreria la quale ti restituirà, dopo aver effettuato opportuni calcoli espressi dalla equazione di chybers, il valore del PWM con il quale controllare la tua pompa.

In pratica la funzione PID non fa altro che variare il PWM finchè la differenza fra "livello desiderato" e "livello reale" diventa zero tuttavia il comportamento dinamico di questo controllo dipende dal sistema e dalla sua "elasticità" intrinseca per cui esistono dei parametri che devi settare ogni volta che cambi sistema.

Questi parametri sono le costanti Kp Ki Kd (Proporzionale, integrativa e derivativa) di cui la funzione PID ha bisogno per riuscire a seguire bene le variazioni che intervengono nel sistema.
La cosa più stupefacente è che non importa quale sia la variazione intervenuta nel sistema, potrebbe cambiare il liquido così come la tensione di rete oppure la temperatura ambiente, quello che il programma farà sarà sempre l'azzeramento della differenza fra livello voluto e livello attuale.

Infine, per ottenere una semplice regolazione PI ti basterà porre a zero la costante kd.

Spero di esserti stato di aiuto.

Luca