Auto-tuning del PID, possibile?

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

Copyright © 2008. All Rights Reserved.

4 thoughts on “Auto-tuning del PID, possibile?

  • >Come fai ad anello aperto con un PID controllo di posizione?
    un controllo PID ad anello aperto, non ha senso 😉

    Il metodo presentato in questo messaggio sul blog serve per tarare i parametri del regolatore PID (Kp, Ki, Kd) basandosi sul metodo delle aree, per stimare la caratteristica dominante del processo da controllare.
    Una volta trovati i valori migliori per il regolatore, l’anello di controllo viene nuovamente chiuso ed il controllore può funzionare al “meglio”.

Leave a Reply