dic 21

Per poter avere un controllo efficace del motore di un sistema è importante prima di tutto conoscere come è costruito il sistema stesso. Analiziamone la struttura.

Spazzole

Il motore in corrente continua è costruito fisicamente da un rotore che gira su suo asse di rotazione dove sono avvolti due avvolgimenti elettrici.  Questo gira all’interno dello statore, due magneti che permettono di generare un campo magnetico fisso orientato all’interno della cassa. Infine è presente un commutatore costituito da due contatti striscianti che permettono di alimentare il motore. Il commutatore inverte due volte ad ogni giro la direzione della
corrente elettrica che percorre i due avvolgimenti, generando un campo magnetico che entra ed
esce dalle parti arrotondate dell’armatura. Facendo nascere delle forze di attrazione e repulsione con i magneti permanenti fissi (indicati con N ed S nelle figure).

La parte elettrica del motore è costituita da una tensione in ingresso V(t) ed  la resistenza e l’induttanza di armatura, Em(t) la f.e.m. indotta dalla rotazione dell’armatura nel campo magnetico, I(t) la corrente di maglia. In equilibrio le seguenti forze sono poste nel seguente modo:

La parte meccanica del motore è costituita  dall’inerzia del rotore,  la sua velocità di rotazione,  e d la coppia generata dal motore ed una coppia di disturbo.

Le due parti sono intrisecamente collegate in prima approssimazione da queste relazioni:

e

Analizzandone il sistema in forma di laplace, possiamo vedere due sistemi interconnessi con un sistema di controreazione dovuto alla corrente controelettromotrice che si instaura nel sistema durante il moto.

l’articolo CONTINUA

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

dic 17

E’ interessante visualizzare sul piano il comportamento del robot durante il tragitto, e questo grazie alla telemetria risulta molto chiaro.

In questo esempio il robot è partito dalle cordinate (0,0) orientato in direzione dell’asse delle ascisse.

Telemetria su assi XY

Nello spazio delle configurazioni, è possibile vedere come il robot partendo abbia avuto possibilità di ruotare sull’asse istantaneo di rotazione permettendo quindi di cambiare orientamento (rimanendo quindi sul piano di movimento), intrapreso il tratto rettilineo il robot ha cambiato piano di movimento.

Spazio delle configurazioni 1

Spazio delle configurazioni 2

dic 13

Finalmente il robot, dopo un duro lavoro da elettricista-meccanico, è stato adattato per la navigazione autonoma. Per far questo è stato necessario riprogettare la parte meccanica del robot e la distribuzione dell’alimentazione su tutte le schede presenti sullo stesso.

Sono stati aggiunti due piccoli vani della dimensione giusta per mantenere le batterie ed un piccolo interruttore corredato di un led ed un jack di ricarica.

Dalla prima foto si può constatare che il pianale alto è rimasto inalterato

Robot struttura definitiva 1

D’altro canto invece è l’altro lato del pianale, completamente ristrutturato e sistemato in modo tale da permettere di mantenere le batterie nei propri vani.

Robot struttura definitiva 3

Queste pesanti modifiche però hanno permesso di mantenere lo stesso ruotino del robot e creare uno spazio per le batterie di poco maggiore al centimetro e mezzo.

Robot struttura definitiva 2

Durante la prossima settimana verranno caricate le foto dei nuovi componenti durante la creazione e la progettazione.