HomeTecnologiaControllo di velocità di un motore CC con Arduino

Controllo di velocità di un motore CC con Arduino

Leggi le riviste ⇢

Ti potrebbero interessare ⇢

La Redazione

Il controllo di velocità dell’albero di un motore elettrico è un’applicazione tipica di controllo modulante ossia di controllo basato su variabili continue nel tempo (contrariamente al controllo logico che si basa su variabili booleane).
Esso viene utilizzato in una miriade di applicazioni ingegneristiche che vanno dalla trazione elettrica al controllo delle macchine operatrici industriali. Specificatamente per quest’ultimo caso, uno schema classico per il controllo della posizione di un asse è il controllo in cascata, nel quale viene utilizzato il classico controllore Proporzionale-Integrale-Derivativo (PID).
In questo articolo si vuole descrivere l’impiego di Arduino per implementare un controllore PID nella regolazione di velocità di un motore in cc, partendo dalla modellazione del motore per arrivare all’implementazione del codice dell’algoritmo di controllo, passando attraverso la progettazione dell’anello di controllo ed il relativo calcolo dei parametri del PID.
Architettura del sistema di controllo
Il sistema preso in considerazione consiste in un motore cc (TY36A/EV) con la relativa elettronica per l’acquisizione della velocità angolare dell’albero motore e per l’invio della tensione di alimentazione al motore stesso (G36A). In sostanza tale elettronica permette di misurare la velocità angolare dell’albero motore, che può variare tra 0 4000 RPM, e di trasformarla proporzionalmente in una tensione variabile tra 0 8 V. Tale misura trasdotta viene comparata con una tensione di riferimento usata come set-point impostabile anch’essa tra 0-8 V. La differenza tra il SET-POINT e la misura della velocità rappresenta l’errore in ingresso al controllore PID, che quindi può assumere valori compresi nel range -8 +8 V. In questa applicazione, il blocco PID CONTROLER viene sostituito da un microcontrollore Arduino che implementa via software lo stesso algoritmo di controllo, fornendo così in uscita al motore, per mezzo di uno stato amplificatore, una tensione continua compresa tra 0 24V.
In particolare, per acquisire il segnale errore in ingresso è necessario scalarlo entro il range di lavoro 0 5 V di Arduino. Si è scelto quindi di attenuare il segnale errore di un fattore pari a 0,25 mediante uno stadio amplificatore e di polarizzarlo con una tensione pari a 2V, fornendo così ad Arduino un segnale errore riscalato tra 0 4 V.
Per quanto riguarda l’uscita del controllore, bisogna notare che, mentre il modulo di controllo G36A è basato su elettronica analogica, Arduino implementa un algoritmo di controllo digitale. Considerando non influenti per questa applicazione gli aspetti legati ad un eventuale sotto-campionamento della misura dell’errore, sarà necessario preoccuparsi soltanto di convertire l’uscita analogica di Arduino, che di fatto consiste in un segnale di tensione modulato in PWM, in un segnale di tensione proporzionale tra 0 0,4 V, che successivamente viene amplificata dallo stadio di potenza in un segnale 0 24V.
Modellazione del motore
Per poter configurare i parametri del controllore PID, è necessario prima considerare lo specifico motore per ricavare il relativo modello matematico. A partire dalle equazioni del circuito elettrico, della dinamica del rotore e dell’accoppiamento elettromeccanico tra coppia e corrente nel quale R e L rappresentano rispettivamente la resistenza e l’induttanza di avvolgimento, Kc la costante di coppia, Ke la costante di forza contro-elettromotrice, Kv il coefficiente di attrito dinamico, J il momento di inerzia del rotore, V la tensione di alimentazione del motore, I la corrente circolante nell’avvolgimento, Cm la coppia meccanica fornita all’albero, Cr l’eventuale coppia resistente, ω la velocita angolare del rotore mentre s è la variabile complessa di Laplace.
Attraverso opportune semplificazioni sulla dinamica della parte elettrica del motore nel quale risulta esplicita la dipendenza della velocità angolare (variabile da controllare) rispetto la tensione di alimentazione del motore. In particolare tale dipendenza è rappresentata da un sistema del I ordine (la relazione di dipendenza prende il nome di Funzione di Trasferimento). Quello che si può dedurre osservando il guadagno Km (pari a 17,78) del motore è che più la costante di forza contro-elettromotrice Ke, la resistenza di avvolgimento R e il coefficiente di attrito dinamico Kv sono grandi e più è piccola la velocità dell’albero risultante (ciò è intuitivo perchè con l’aumento dei primi due parametri si riduce la tensione utile al motore per generare coppia, mentre con l’aumento di Kv il rotore risulta essere maggiormente frenato. Per contro, più la costante di coppia Kc è grande e maggiore è la velocità dell’albero (anche questo è intuitivo). Per quanto riguarda il tempo di transitorio affinchè la velocità arrivi a regime (cinque volte il valore della costante di tempo τm che è pari a 11 ms), si osserva che esso aumenta con l’aumentare del momento di inerzia del rotore J, mentre diminuisce con l’aumentare di R, Kv, Kc e Ke.

Controllo di velocità di un motore CC con Arduino - Ultima modifica: 2019-10-21T12:11:11+02:00 da La Redazione