Pendolo inverso ad attuazione pneumatica e controllo con Arduino

Condividi

L’articolo descrive il banco prova, la tecnica di controllo e la sperimentazione condotta per stabilizzare un pendolo inverso montato su un carrello orizzontale scorrevole. L’azionamento è affidato a un cilindro pneumatico a doppio effetto comandato da valvole digitali 2/2 pilotate con tecnica PWM. L’architettura di controllo, composta da due anelli chiusi in cascata, fa uso di regolatori PID ed è implementata su una scheda Arduino. L’attività ha messo in luce la capacità di dispositivi a basso costo, quali i cilindri pneumatici comandati con valvole digitali e la scheda Arduino, di controllare un sistema intrinsecamente instabile.

Il pendolo inverso è un tipico esempio di sistema meccanico di base, che, opportunamente adattato, trova riscontro in diverse applicazioni ingegneristiche reali quali: robot e relativi sistemi di bilanciamento, dispositivi per trasporto persone autobilanciati, come scooter, hoverboard e hovershoe (volopattini) [1,2], esoscheletri e robot umanoidi [3,4], strutture civili alte e snelle [5].

Le tecniche di controllo utilizzate per la stabilizzazione del pendolo inverso trovano applicazione diretta nei sistemi reali sopra indicati.

Generalmente il pendolo è montato su un carrello traslante oppure si presenta sotto forma di un dispositivo mobile su ruote [6]. Le tecniche di controllo più usate utilizzano controllori di tipo PID [7]; tuttavia sono anche utilizzate tecniche basate su reti neurali [8] o controllori a logica fuzzy [9]. Per quanto riguarda il sistema di attuazione del carrello del pendolo sono utilizzati sia attuatori elettrici, sia idraulici o pneumatici.

L’attuazione pneumatica è caratterizzata da basse prestazioni dinamiche rispetto ai servosistemi elettroidraulici; inoltre, ha un comportamento intrinsecamente non lineare a causa della comprimibilità dell’aria. A causa di questi inconvenienti e dell’attrito nei cilindri pneumatici [10], la stabilizzazione di un pendolo inverso con un sistema pneumatico potrebbe apparire come un compito difficile da perseguire. Tuttavia, in [11] si dimostra che attraverso l’applicazione di algoritmi di controllo digitale basati su modelli, un cilindro elettropneumatico in opportune condizioni di carico è in grado di eguagliare le prestazioni di posizionamento di un sistema elettroidraulico.

L’utilizzo della tecnica PWM [12] permette di ottenere un controllo in posizione di un cilindro pneumatico sufficientemente preciso e affidabile. Un altro vantaggio della pneumatica è rappresentato dal costo, notevolmente inferiore a quel- lo dei sistemi idraulici. Recentemente, presso il DIMEAS del Politecnico di Torino, è stata indagata la fattibilità, dal punto di vista teorico, di un attuatore pneumatico di stabilizzare un pendolo inverso su carrello mobile [13, 14]; valvole di controllo proporzionali o digitali sono entrambe idonee allo scopo. A tal fine, in [11,12] è stata studiata e analizzata da un punto di vista teorico la fattibilità di un cilindro pneumatico per stabilizzare un pendolo inverso su una guida lineare. Inoltre, in [15] è stato sviluppato uno specifico banco prova pneumatico per stabilizzare un pendolo inverso; il cilindro pneumatico è stato controllato utilizzando valvole proporzionali 2/2 a basso costo. I risultati hanno evidenziato la stabilizzazione del sistema, grazie a due anelli PID in cascata implementati in un comune controllore logico programmabile (PLC) industriale. Tuttavia, la ricerca sull’utilizzo di azionamenti pneumatici a basso costo per il controllo del pendolo inverso è ancora aperta. A tal proposito, questo articolo indaga la possibilità di stabilizzare il pendolo inverso mediante lo stesso banco prova utilizzato in [15]. Il PLC è stato sostituito con una scheda Arduino a basso costo, mentre le elettrovalvole 2/2 già presenti sono state controllate mediante segnali digitali modulati mediante tecnica PWM.

Banco prova e architettura di controllo

Il banco di prova sviluppato è rappresentato in Figura 1. Il pendolo è composto da un’asta telescopica (1) alla cui estremità è fissata la massa (2). L’estremità inferiore dell’asta è incernierata al carrello (3), che è libero di scorrere lungo una guida orizzontale (4). Il cilindro pneumatico a doppio effetto (5) aziona il carrello scorrevole lungo la guida per mantenere il pendolo in posizione verticale. Le elettrovalvole (6) collegano le camere del cilindro con l’alimentazione dell’aria o con lo scarico. Il controllore è rappresentato dalla scheda Mega Arduino 2560 (7). Il sensore di rotazione (8) montato sulla cerniera del pendolo riporta al controllore la posizione angolare dell’asta, mentre il sensore di spostamento lineare (9), del tipo LV- DT, riporta la posizione del carrello. La lunghezza dell’asta (1) è regolabile da 300 a 800 mm e alla sua estremità superiore possono essere montate masse di diverso valore. La guida lineare è del tipo a ricircolo di sfere e il carrello, su essa scorrevole, è collegato al cilindro pneumatico tramite uno snodo sferico.

Il sistema controllato è schematizzato in Figura 2. I segnali analogici provenienti dal sensore di spostamento e dal sensore dell’angolo di rotazione vengono ricevuti dalla scheda Arduino, che in uscita fornisce i segnali di alimentazione per le elettrovalvole tramite driver MOSFET di potenza. Questi sono necessari per amplificare la tensione da 5V (uscita di Arduino) a 24 V (ingresso valvole). Le valvole di tipo 2/2 monostabili NC sono comandate in coppia con tecnica a modulazione della larghezza di impulso PWM): V2 e V4 sono responsabili della fuoriuscita del cilindro (x positivo), mentre V1 e V3 del rientro (x negativo). I segnali alle valvole V2 e V1 sono sdoppiati e inviati rispettivamente alle valvole V4 e V3; questo permette di ridurre le porte di uscita di Arduino e semplificare il codice di controllo.

La camera di contropressione durante il movimento del cilindro si trova a una pressione superiore a quella ambiente a causa delle resistenze nel circuito; questa pressione aumenta la rigidezza del cilindro determinando una maggiore larghezza di banda e una maggior prontezza. Il cilindro pneumatico ha corsa XC=500 mm, diametro della canna e dello stelo rispettivamente 16 e 6 mm. Le elettrovalvole 2/2 hanno portata nominale pari a 110 l/min (ANR) (pressione relativa di alimentazione pari 0,6 MPa); mediante la tecnica di modulazione PWM la portata che attraversa ciascuna valvola è proporzionale al duty cycle del segnale elettrico di comando, a parità di salto di pressione tra monte e valle.

È stata selezionata la scheda di controllo Arduino Mega 2560, tra le varie schede Arduino disponibili in commercio (tensione di uscita tra 0 e 5V), grazie alla maggiore potenza di calcolo e al costo inferiore. Il controllore necessita di essere alimentato a 12 Vcc, ha un clock di 16 MHz e una memoria di 256 kB.

Sono state utilizzate solo due uscite digitali per comandare le valvole. Per quanto riguarda i canali di ingresso, con risoluzione a 10 bit, ne sono stati utilizzati solo due su un totale di 16 canali disponibili.

Rispetto al PLC descritto in [15], la programmazione di Arduino è più semplice e anche meno dispendiosa in termini di tempo. Inoltre, il concetto open source ha il vantaggio di essere più economico e più adatto all’apprendimento autonomo.

L’architettura di controllo adottata prevede due loop in cascata con regolatori PID come mostrato nello schema a blocchi di Figura 3.

L’anello interno gestisce l’angolo di inclinazione del pendolo, l’anello esterno la posizione del carrello. L’obiettivo è mantenere il pendolo in posizione verticale e il carrello nella posizione di riferimento XSET= 250 mm (pari a metà della corsa del cilindro). Per realizzare ciò, il controllore modifica l’angolo θSET, rispetto alla posizione verticale, nella direzione in cui si intende muovere il carrello. In questo modo è possibile mantenere in equilibrio il pendolo e contemporaneamente spostare il carrello nella posizione desiderata. Esiste una sola posizione di equilibrio stabile in corrispondenza della posizione desiderata del carrello XSET e dell’assetto verticale del pendolo (θSET=0). L’obiettivo del controllo è minimizzare o ridurre a zero l’errore tra i segnali di riferimento (XSET e θSET) e i segnali di retroazione (feedback) provenienti dai sensori del banco. Il regolatore PID interno genera un segnale modulato in larghezza di impulso per il pilotaggio delle valvole elettropneumatiche 2/2.

In caso di errore positivo sull’angolo θSET >θ viene fornito il segnale PWM alle valvole V1 e V3 per comandare il rientro del cilindro; vengono invece attivate le valvole V2 e V4 per comandare la corsa di fuoriuscita.

La scheda Arduino è stata programmata utilizzando l’ambiente di sviluppo open source in dotazione (linguaggio derivato da C++); il codice è compilabile in breve tempo e può essere facilmente modificato.

Per l’acquisizione delle grandezze provenienti dal banco, necessarie all’analisi dei risultati e alla realizzazione dei grafici, è stato utilizzato un sistema di acquisizione dati esterno, senza attivare la funzione di “data log” disponibile all’interno della scheda Arduino; in questo modo si è alleggerito il carico computazionale della scheda per garantire ottime prestazioni in termini di tempo di esecuzione del loop di controllo (pari a 2 ms). È stata utilizzata una specifica libreria PID [17].

Articoli correlati