mag 16

Come anticipato tempo fa, finalmente ecco il primo video del robot in azione. In Questo test viene provato il controllo PID sui motori con una pavimentazione sconnessa.
Da questo video si può verificare che il robot si muove in modo rettilineo senza particolari problemi.

apr 27

Lo studio del regolatore PID oramai è giunto alla terza. Eravamo rimasti nell’ultima puntata con uno pseudocodice di un regolatore PID partito da una discretizzazione semplice che non teneva conto di molti vincoli, (regolatore PID parte 2).Il primo modello di approssimazione si basa su una trasformazione rettangolare o metodo delle differenze all’indietro o di Eulero.

Quello che analizzeremo oggi è il metodo più usato basato su una trasformazione bilineare o metodo d’ integrazione trapezoidale (di Tustin).

Il regolatore PID in funzione del tempo

e la sua forma approssimata con il metodo di Eulero:

Sfruttando l’approssimazione trapeziodale che approssima l’integrale, come si può vedere nell’immagine

Tusin

Portando la legge di controllo in questa nuova versione:

Continue reading »

gen 18

Nell’articolo precedente eravamo rimasti allo studio di un PID che soltanto a livello teorico può funzionare, a causa di elementi che nella realtà è impossibile realizzare (la trattazione di questo articolo è particolarmente semplificata).
Primo fra tutti, l’azione derivativa che deve essere per forza approssimanta, in quanto sistema non causale, aggiungendo un polo in alta frequenza, che nel gergo ingegneristico viene chiama: “derivata ingegneristica” in quanto stima la derivata effettiva usando soltanto le informazioni salvate precedentemente.

Real PID

Un altro modo di interpretare la derivata è vedere il blocco derivativo come una rete anticipatrice: con un

L’articolo CONTINUA (clicca qui)

Continue reading »

dic 20

Molto spesso si sente parlare di questo tipo di controllo, ma non si conosce l’effetivo utilizzo e funzionamento, in questo articolo ne spiegherò il funzionamento.

Il controllo Proporzionale Integrale Derivativo (PID) è un sistema in controreazione che combina in modo pesato tre tipi di azioni sull’errore in ingresso. Viene usato molto spesso per emulare il comportamento umano ed è particolarmente facile da implementare, realizzare e tarare. Il compito di questo controllo molto spesso è quello di eliminare i disturbi (elettrici, meccanici, etc etc) presenti sul processo (es. motore).

PID

La sua forma generale è: dove
Nella forma di laplace:

E’ possibile vedere in azione all’interno di questo controllo un azione proporzionale moltiplicata per un guadagno Kp che ne pesa l’errore (), un’azione derivativa pesata con Kd () ed infine un’azione derivativa pesata con Ki  ().

Analiziamo il funzionamento e l’utilità di ogni parte del controllo:

Azione proporzionale: Risponde in maniera istantanea al sistema

+ diminuisce il tempo di salita (rapidità di risposta)
+ riduce l’errore a regime
- aumenta la sovraelongazione (oscillazione)
- aumenta lo sforzo di controllo

Azione Integrale: Risponde alla storia del sistema

+ Porta a zero l’errore a regime
- aumenta il tempo di salita (rapidità di risposta)
- aumenta il tempo di assestamento

Azione derivativa: Prevede l’andamento dell’errore

+ diminuisce il tempo di assestamento
- aumenta lo sforzo di controllo
- amplifica il rumore di misura

E’ possibile vedere in questa immagine una sua applicazione simulata ad un ipotetico motore:

Simulazione PID

Un controllo PID del genere può essere trattato soltanto in una simulazione, in quanto l’azione derivativa non è possibile strutturata nel modo esposto, ma è obbligatorio porre alcune modifiche. L’utilizzo del pid all’interno di un microcontrollore implica delle modifiche radicali al sistema dovute al campionamento dei dati.

Queste tematiche le analizzeremo prossimamente! ;)

dic 19

E’ da qualche giorno che mi pongo il problema di poter permettere al robot di auto riconoscere i guadagni del PID in modo automatico. Una possibile soluzione, è riuscire a far calcolare al microcontrollore i parametri usando le regole di Ziegler e Nichols, metodo empirico che si basa sull’estrapolazione dei parametri usando direttamente le letture effettuate sul processo.
I metodi perché questo possa funzionare sono 2, un metodo detto ad anello aperto ed uno ad anello chiuso, dove il secondo in un sistema di taratura di un motore in continua lo reputo poco affidabile e difficile da programmare.

La regola ad anello aperto, sfrutta la risposta a gradino per poter stimare i parametri del processo:

Una volta acquisite queste informazioni è possibile quindi trovare i parametri Kp, Ki, Kd del controllore e far funzionare quindi il controllore con una buona efficienza.

I problemi principali per applicare questa regola in un microcontrollore, sono indubbiamente le letture effettuate dal microcontrollore e gli errori di quantizzazione, che con opportune approssimazioni è possibile però risolvere. Nel caso della scheda utilizzata dal robot che lavora a 80Mhz e dalla dinamica dominante dei motori che si aggira nell’intorno del millisecondo, si può adottare questa strategia:
Si verifica, prima di tutto, che il microcontrollore riesca ad acquisire i dati ad una frequenza di campionamento minima di 1Mhz, in modo tale da permettere ad un filtro passa basso IIR (possibilmente di butterworth del 4° ordine) di eliminare tutti i possibili disturbi posti in alta frequenza e permettere quindi di avere un segnale pulito e trattabile per stimare i parametri con le regole di Ziegler e Nichols.

Da una prima simulazione sembrerebbe che questo possa essere possibile, come si vede da questo grafico, pulire particolarmente bene il segnale ricevuto e così trattarlo per stimare i parametri.
Ho simulato il filtro in presenza di un disturbo normale molto “più grande” rispetto a quello che potrei avere dalle misurazioni dell’encoder
Filtraggio segnale della dinamica del motore

Non c’è che provare e vedere se effettivamente è possibile! ;)

Foto e fonti: http://automatica.ing.unibs.it/mco/tco/3_pid/zn.html