Sommario:

Robot di autobilanciamento che utilizza l'algoritmo PID (STM MC): 9 passaggi
Robot di autobilanciamento che utilizza l'algoritmo PID (STM MC): 9 passaggi

Video: Robot di autobilanciamento che utilizza l'algoritmo PID (STM MC): 9 passaggi

Video: Robot di autobilanciamento che utilizza l'algoritmo PID (STM MC): 9 passaggi
Video: Self-Balancing Robot Getting Started Guide 2024, Dicembre
Anonim
Robot di autobilanciamento che utilizza l'algoritmo PID (STM MC)
Robot di autobilanciamento che utilizza l'algoritmo PID (STM MC)

Recentemente è stato fatto molto lavoro sull'autobilanciamento degli oggetti. Il concetto di autobilanciamento è iniziato con il bilanciamento del pendolo invertito. Questo concetto si estese anche alla progettazione di velivoli. In questo progetto, abbiamo progettato un piccolo modello di robot autobilanciato utilizzando l'algoritmo PID (Proportional, Integral, Derivative). Da allora, questo metodo è il nuovo volto dei sistemi di controllo dei processi industriali. Questo rapporto esamina i metodi coinvolti nell'autobilanciamento degli oggetti. Questo progetto è stato condotto come progetto semestrale per comprendere la correlazione del PID sull'efficienza di vari processi industriali. Qui ci concentriamo solo nel fornire una breve rassegna sull'efficacia e l'applicazione del controllo PID. Questo documento è stato sviluppato fornendo una breve introduzione ai sistemi di controllo e alle relative terminologie, oltre alle motivazioni del progetto. Sono state fatte sperimentazioni e osservazioni, descritti pregi e demeriti con fine ai futuri miglioramenti. È stato sviluppato un modello di robot autobilanciato per comprendere l'ecacia del PID nel mondo dei sistemi di controllo. Passando attraverso alcuni rigorosi test ed esperimenti, sono stati scoperti pregi e demeriti del sistema di controllo PID. È stato scoperto che, nonostante i molti vantaggi del controllo PID rispetto ai metodi precedenti, questo sistema richiede ancora molti miglioramenti. Si spera che il lettore comprenda bene l'importanza dell'autobilanciamento, l'efficacia e le carenze del controllo PID

Passaggio 1: Introduzione

Con l'avvento dei computer e l'industrializzazione dei processi, nel corso della storia dell'uomo, c'è sempre stata la ricerca per sviluppare modi per raffinare i processi e, soprattutto, per controllarli utilizzando le macchine in modo autonomo. Lo scopo è quello di ridurre il coinvolgimento dell'uomo in questi processi, riducendo così l'errore in questi processi. Pertanto, è stato sviluppato il campo dell'"ingegneria dei sistemi di controllo". L'ingegneria del sistema di controllo può essere definita come l'utilizzo di vari metodi per controllare il funzionamento di un processo o il mantenimento di un ambiente costante e preferito, manuale o automatico.

Un semplice esempio potrebbe essere il controllo della temperatura in una stanza. Per Controllo Manuale si intende la presenza di una persona in un sito che verifica le condizioni presenti (sensore), lo confronta con il valore desiderato (elaborazione) e intraprende le azioni appropriate per ottenere il valore desiderato (attuatore). Il problema con questo metodo è che non è molto affidabile in quanto una persona è soggetta a errori o negligenza nel suo lavoro. Inoltre, un altro problema è che la velocità del processo avviato dall'attuatore non è sempre uniforme, il che significa che a volte può verificarsi più velocemente del necessario o talvolta può essere lento. La soluzione a questo problema era utilizzare un microcontrollore per controllare il sistema. Il microcontrollore è

programmato per controllare il processo, secondo determinate specifiche, collegato in un circuito (da discutere in seguito), alimentato il valore o le condizioni desiderati e quindi controlla il processo per mantenere il valore desiderato. Il vantaggio di questo processo è che non è richiesto alcun intervento umano in questo processo. Inoltre, la velocità del processo è uniforme

Sistema di controllo di base

Il diagramma precedente mostra una versione molto semplificata di un Sistema di Controllo. Il microcontrollore è il cuore di qualsiasi sistema di controllo. Si tratta di un componente molto importante pertanto, la sua scelta di scelta va fatta con attenzione in base ai requisiti del Sistema. Il microcontrollore riceve un input dall'utente. Questo ingresso definisce la condizione desiderata del sistema. Il microcontrollore riceve anche un input di feedback dal sensore. Questo sensore è collegato all'uscita del sistema, le cui informazioni vengono restituite all'ingresso. Il microprocessore, in base alla sua programmazione, esegue vari calcoli e fornisce un output all'attuatore. L'attuatore, in base all'uscita, controlla l'impianto per cercare di mantenere quelle condizioni. Un esempio potrebbe essere un driver del motore che guida un motore in cui il driver del motore è l'attuatore e il motore è l'impianto. Il motore, quindi, ruota ad una data velocità. Il sensore collegato legge lo stato attuale dell'impianto e lo restituisce al microcontrollore. Il microcontrollore confronta nuovamente, effettua calcoli e quindi il ciclo si ripete. Questo processo è ripetitivo e infinito per cui il microcontrollore mantiene le condizioni desiderate

Passaggio 2: sistema di controllo basato su PID

Sistema di controllo basato su PID
Sistema di controllo basato su PID
Sistema di controllo basato su PID
Sistema di controllo basato su PID

L'algoritmo PID è un metodo eciente per progettare un sistema di controllo.

definizione

PID sta per Proporzionale, Integrale e Derivativo. In questo algoritmo, il segnale di errore ricevuto è l'input. E la seguente equazione viene applicata al segnale di errore

U(t) = Kp∗e(t) + Kd∗d/dt(e(t)) + Ki∗integrale(e(t)) (1.1)

Breve spiegazione

Come si vede dall'equazione di cui sopra, si calcolano l'integrale e la derivata dei segnali di errore, si moltiplicano con le rispettive costanti e si sommano con la costante Kp moltiplicata per e(t). L'uscita viene quindi inviata all'attuatore che fa funzionare il sistema. Ora diamo un'occhiata a ciascuna parte della funzione a turno. Questa funzione influenza direttamente il tempo di salita, il tempo di discesa, il picco di overshoot, il tempo di assestamento e l'errore di stato stazionario.

• Parte proporzionale: La parte proporzionale riduce il tempo di salita e diminuisce l'errore di regime. Ciò significa che il sistema impiegherà meno tempo per raggiungere il suo valore di picco e quando raggiunge il suo stato stazionario, l'errore di stato stazionario sarà basso. Tuttavia, aumenta il superamento del picco.

• Parte derivativa: La parte derivativa riduce l'overshoot e il tempo di assestamento. Ciò significa che lo stato transitorio del sistema sarà più smorzato. Inoltre, il sistema raggiungerà il suo stato stazionario in un tempo minore. Tuttavia, non ha alcun effetto sul tempo di salita o sull'errore di stato stazionario.

• Parte integrale: La parte integrale riduce il tempo di salita ed elimina completamente l'errore di stato stazionario. Tuttavia, aumenta il superamento del picco e il tempo di assestamento.

• Sintonizzazione: un buon sistema di controllo avrà tempi di salita bassi, tempo di assestamento, superamento di picco ed errore di stato stazionario. Pertanto, Kp, Kd, Ki devono essere calibrati finemente per regolare il contributo dei suddetti fattori al fine di acquisire un buon Sistema di Controllo.

La figura è stata allegata che mostra l'effetto della modifica di vari parametri nell'algoritmo PID.

Passaggio 3: Robot autobilanciante

Robot autobilanciante
Robot autobilanciante

Un robot autobilanciato è un robot a due ruote multistrato.

Il robot cercherà di bilanciarsi applicando una o più forze disuguali. Si bilancerà applicando una forza che si oppone alla risultante delle forze sul robot.

Metodi di autobilanciamento

Esistono quattro metodi di autobilanciamento dei robot. Questi sono i seguenti:

Autobilanciamento con due sensori di inclinazione IR

Questo è uno dei modi più rozzi per bilanciare il robot in quanto richiede molto meno hardware e un algoritmo relativamente semplice. In questo approccio, vengono utilizzati due sensori IR inclinati per misurare la distanza tra il suolo e il robot. In base alla distanza calcolata, il PID può essere utilizzato per azionare i motori per bilanciare di conseguenza il robot. Uno svantaggio di questo metodo è che il sensore IR può perdere alcune letture. Un altro problema è che sono necessari un interrupt e loop per il calcolo della distanza che aumenta la complessità temporale dell'algoritmo. Quindi, questo metodo di bilanciamento del robot non è molto eciente.

Autobilanciamento tramite accelerometro

L'accelerometro ci fornisce l'accelerazione del corpo su 3 assi. L'accelerazione orientata sull'asse y (verso l'alto) e sull'asse x (avanti) ci fornisce la misura per calcolare la direzione della gravità e quindi calcolare l'angolo di inclinazione. L'angolo si calcola come segue:

θ = arctan(Ay/Ax) (1.2)

Lo svantaggio dell'utilizzo di questo metodo è che durante il movimento del robot, alle letture verrà aggiunta anche l'accelerazione orizzontale, che è un rumore ad alta frequenza. Quindi, l'angolo di inclinazione sarà impreciso.

Autobilanciamento con giroscopio

Un giroscopio viene utilizzato per calcolare le velocità angolari lungo i tre assi. L'angolo di inclinazione si ottiene utilizzando la seguente equazione.

p(i) = θp(i−1) + 1/6(vali−3 + 2vali−2 + 2vali−1 + vali) (1.3)

Un grosso svantaggio dell'utilizzo del giroscopio è che ha un piccolo DC Bias che è un rumore a bassa frequenza e in poco tempo i valori restituiti sono completamente sbagliati. Questo, dopo l'integrazione, farà allontanare il punto zero. Di conseguenza, il robot rimarrà nella sua posizione verticale per un po' di tempo e cadrà quando arriverà la deriva.

Autobilanciamento utilizzando sia l'accelerometro che il giroscopio

Come discusso sopra, l'uso solo dell'accelerometro o del giroscopio non ci darà l'angolo di inclinazione corretto. Per tenere conto di ciò, vengono utilizzati sia l'accelerometro che il giroscopio. Questi sono entrambi incorporati in MPU6050. In questo otteniamo i dati da entrambi e poi li fondiamo utilizzando il filtro di Kalman o il filtro complementare.

• Filtro di Kalman: il filtro di Kalman calcola la migliore stima dello stato di un sistema dinamico da misurazioni rumorose, riducendo al minimo l'errore quadratico medio della stima. Opera in due fasi, predizione e correzione, date le equazioni stocastiche discrete che descrivono la dinamica del sistema. Tuttavia, è un algoritmo molto complesso da implementare soprattutto su un hardware limitato di un microcontrollore.

• Filtro complementare: questo algoritmo utilizza principalmente i dati ottenuti dal giroscopio e li integra nel tempo per ottenere l'angolo di inclinazione. Utilizza anche una piccola percentuale di letture dell'accelerometro. Il filtro complementare, infatti, riduce al minimo il rumore ad alta frequenza dell'accelerometro e il rumore a bassa frequenza del giroscopio e poi li fonde per dare il miglior angolo di inclinazione preciso.

Passaggio 4: progettazione del robot

Progettazione di Robot
Progettazione di Robot

Abbiamo progettato un robot di autobilanciamento utilizzando il controller Proportional Derivative implementato da Complementary Filter per MPU6050. Questo piccolo modellino di Self Balancing Robot ci illustrerà l'utilità dei Sistemi di Controllo nell'Auto Bilanciamento dei robot.

Implementazione del sistema:

Il sistema è un robot autobilanciante. Viene implementato utilizzando il controller PID che è un controller proporzionale integrale derivato. Bilanciamo il robot guidando le sue ruote nella direzione della sua caduta. Nel fare ciò, stiamo cercando di mantenere il baricentro del robot al di sopra del punto di rotazione. Per guidare le ruote nella direzione della sua caduta, dovremmo sapere dove sta cadendo il robot e la velocità con cui sta cadendo. Questi dati sono ottenuti utilizzando MPU6050 che ha un accelerometro e un giroscopio. MPU6050 misura l'angolo di inclinazione e trasmette il suo output al Micro-Controller. MPU6050 è interfacciato con la scheda STM tramite I2C. In I2C, un filo è per l'orologio chiamato SCL. L'altro è per il trasferimento dei dati che è SDA. In questo, viene utilizzata la comunicazione master-slave. L'indirizzo iniziale e l'indirizzo finale sono specificati per sapere da dove iniziano e dove finiscono i dati. Abbiamo implementato il filtro complementare qui per MPU6050 che è un filtro matematico per unire le uscite dell'accelerometro e del giroscopio. Dopo aver ottenuto i dati da MPU6050, il microcontrollore eseguirà i calcoli per sapere dove sta cadendo. Sulla base dei calcoli, il microcontrollore STM darà i comandi al conducente del motore per guidare i veicoli nella direzione di caduta che bilancerà il robot.

Passaggio 5: componenti del progetto

Componenti del progetto
Componenti del progetto
Componenti del progetto
Componenti del progetto
Componenti del progetto
Componenti del progetto

I seguenti componenti sono stati utilizzati nel progetto del robot di autobilanciamento:

STM32F407

Un microcontrollore progettato da ST Microelectronics. Funziona sull'architettura ARM Cortex-M.

Driver motore L298N

Questo circuito integrato è utilizzato per far funzionare il motore. Ha due ingressi esterni. Uno dal microcontrollore che gli fornisce un segnale PWM. Regolando l'ampiezza dell'impulso, è possibile regolare la velocità del motore. Il suo secondo ingresso è la sorgente di tensione necessaria per azionare il motore, che nel nostro caso è una batteria da 12 V.

Motore CC

Un motore CC funziona con un'alimentazione CC. In questo esperimento, il motore CC funziona utilizzando gli accoppiatori ottici collegati al driver del motore. Per pilotare il motore abbiamo utilizzato il Motor Drive L298N.

MPU6050

MPU6050 viene utilizzato per ottenere le informazioni su dove sta cadendo il robot. Misura l'angolo di inclinazione rispetto al punto di inclinazione zero che è la posizione dell'MPU6050 quando il programma inizia a funzionare.

L'MPU6050 ha un accelerometro a 3 assi e un giroscopio a 3 assi. L'accelerometro misura l'accelerazione lungo i tre assi e il giroscopio misura la velocità angolare attorno ai tre assi. Per combinare l'output, dobbiamo filtrare i rumori di entrambi. Per filtrare i rumori, abbiamo Kalman e il filtro complementare. Abbiamo implementato il filtro complementare nel nostro progetto.

Coppia Opto 4N35

Un fotoaccoppiatore è un dispositivo utilizzato per isolare la parte a bassa tensione e la parte ad alta tensione del circuito. Come suggerisce il nome, funziona sulla base della luce. Quando la parte a bassa tensione riceve un segnale, la corrente scorre nella parte ad alta tensione

Passaggio 6: struttura del robot

La struttura del robot è spiegata come segue:

Struttura fisica

Il robot autobilanciante è costituito da due strati costituiti da vetro plastico trasparente. Di seguito sono riportati i dettagli dei due strati:

Primo strato

Nella parte inferiore del primo strato, abbiamo posizionato una cella per alimentare la scheda STM. Anche due motori da 4 volt ciascuno sono stati posizionati su ciascun lato con pneumatici collegati per lo spostamento del robot. Nella parte superiore del primo strato sono state posizionate due batterie da 4 volt ciascuna (8 volt totali) e il driver del motore IC(L298N) per il funzionamento dei motori.

Secondo strato

Nello strato superiore del robot, abbiamo posizionato la STM Board sulla Perf Board. Un'altra scheda perforata di 4 accoppiatori ottici è posizionata sullo strato superiore. Il giroscopio è anche posizionato sullo strato superiore del robot dal lato inferiore. Entrambi i componenti sono posizionati nella parte centrale in modo che il baricentro sia mantenuto il più basso possibile.

Centro di gravità del robot

Il baricentro è mantenuto il più basso possibile. A tal fine, abbiamo posizionato batterie pesanti sullo strato inferiore e componenti leggeri come la scheda STM e gli accoppiatori ottici sullo strato superiore.

Passaggio 7: codice

Il codice è stato compilato su Atollic TrueStudio. STM studio è stato utilizzato per scopi di debug.

Passaggio 8: conclusione

Dopo molte sperimentazioni e osservazioni, arriviamo finalmente al punto in cui riassumiamo i nostri risultati e discutiamo fino a che punto siamo riusciti a implementare ea elaborare l'ecacia del sistema.

Revisione generale

Durante la sperimentazione, la velocità del motore è stata controllata con successo utilizzando l'algoritmo PID. La curva, tuttavia, non è esattamente una linea retta liscia. Ci sono molte ragioni per questo:

• Il sensore, sebbene collegato ad un filtro passa basso, fornisce comunque alcuni antirimbalzi finiti; questi sono dovuti alle resistenze non lineari e ad alcune inevitabili ragioni dell'elettronica analogica.

• Il motore non ruota in modo uniforme a bassa tensione o PWM. Fornisce scatti che potrebbero causare alcuni valori errati alimentati al sistema.

• A causa dell'oscillazione, il sensore potrebbe non rilevare alcune fenditure che forniscono valori più elevati. • Un altro motivo principale per gli errori può essere la frequenza di clock del core del microcontrollore STM. Questo modello di microcontrollore STM fornisce un core clock di 168MHz. Sebbene sia stato affrontato questo problema in questo progetto, c'è un'idea generale su questo modello che non fornisce esattamente una frequenza così alta.

La velocità ad anello aperto fornisce una linea molto liscia con solo pochi valori imprevisti. Anche l'algoritmo PID funziona bene fornendo un tempo di assestamento del motore molto basso. L'algoritmo PID del motore è stato testato a varie tensioni mantenendo costante la velocità di riferimento. Il cambio di tensione non cambia la velocità del motore mostrando che l'algoritmo PID sta funzionando bene

Ecacia

Qui discutiamo l'efficacia del controller PID che abbiamo osservato durante la sperimentazione.

Implementazione semplice

Abbiamo visto nella sezione sperimentazione e osservazioni che un controller PID è molto facile da implementare. Richiede solo tre parametri o costanti che devono essere impostati per avere un sistema di controllo della velocità

Ecienza senza pari per i sistemi lineari

Il controllore PID lineare è il più efficiente della famiglia dei controllori perché la logica è molto semplice e l'applicazione è molto diffusa nel caso di applicazioni lineari o abbastanza lineari.

Limitazioni

Abbiamo spiegato nell'abstract le Limitazioni di questo sistema. Qui discutiamo alcuni di loro che abbiamo osservato.

Selezione delle costanti

Abbiamo visto che, sebbene un controllore PID sia facile da implementare, è comunque un grosso inconveniente del sistema che la fase di selezione del valore delle costanti sia laboriosa; poiché si devono fare calcoli difficili. L'altro modo è il metodo hit and trial, ma anche questo non è eciente.

Costanti non sempre costanti

I risultati sperimentali hanno mostrato che per diversi valori della velocità di riferimento per il motore, il controller PID ha funzionato male per gli stessi valori delle costanti PID. Per velocità diverse, le costanti dovevano essere selezionate in modo diverso e questo aumenta in modo esponenziale il costo computazionale.

Non lineare

Il controller PID utilizzato nel nostro caso è lineare, quindi può essere applicato solo a sistemi lineari. Per i sistemi non lineari, il controller deve essere implementato diversamente. Sebbene siano disponibili diversi metodi non lineari di PID, richiedono la selezione di più parametri. Ciò rende nuovamente il sistema indesiderabile a causa dell'elevato costo computazionale.

Spinta iniziale richiesta

Abbiamo mostrato nella sezione di sperimentazione che per una velocità di riferimento abbastanza piccola dove l'errore è abbastanza piccolo all'inizio, il PWM fornito dal PID è così piccolo da non generare la coppia di spunto richiesta per il motore. Quindi il motore in alcune prove non funziona o in altre prove fornisce un ampio overshoot e un tempo di assestamento più lungo.

Passaggio 9: ringraziamenti speciali

Un ringraziamento speciale ai membri del mio gruppo che mi hanno aiutato in questo progetto.

A breve caricherò il link del video.

Spero che trovi interessante questo tutorial.

Sono Tahir Ul Haq dell'UET che firma. Saluti !!!

Consigliato: