Sommario:

Misurazione dell'angolo con giroscopio, accelerometro e Arduino: 5 passaggi
Misurazione dell'angolo con giroscopio, accelerometro e Arduino: 5 passaggi

Video: Misurazione dell'angolo con giroscopio, accelerometro e Arduino: 5 passaggi

Video: Misurazione dell'angolo con giroscopio, accelerometro e Arduino: 5 passaggi
Video: Calcolo degli angoli di inclinazione roll e pitch con MPU6500 e Arduino - Video 727 2024, Luglio
Anonim
Misurazione dell'angolo con giroscopio, accelerometro e Arduino
Misurazione dell'angolo con giroscopio, accelerometro e Arduino

Il dispositivo è un prototipo approssimativo di quello che alla fine diventerà un robot di autobilanciamento, questa è la seconda parte della faccenda del buco (leggere l'accelerometro e controllare un motore per l'autobilanciamento). La prima parte con solo il giroscopio può essere trovata qui. Su questa istruzione misureremo l'angolo utilizzando sia il giroscopio che l'accelerometro e utilizzando una tecnica per unire entrambi i sensori per ottenere un segnale uniforme. La tecnica si chiama "filtro complementare".precedente

Passaggio 1: cosa ci servirà:

Di cosa avremo bisogno
Di cosa avremo bisogno
Di cosa avremo bisogno
Di cosa avremo bisogno
Di cosa avremo bisogno
Di cosa avremo bisogno
Di cosa avremo bisogno
Di cosa avremo bisogno

Alcune parti possono essere sostituite e alcune modifiche al codice devono essere apportate per adattarsi al tuo hardware. In questo progetto utilizzeremo:- Breadboard- Microcontrollore, ho usato la scheda Arduino- Wire- Jumper Wires- Giroscopio XV-8100- Nunchuck Wii (per l'accelerometro)- Adattatore Wii Nunchuck per Arduino

Passaggio 2: costruzione…

Costruzione…
Costruzione…
Costruzione…
Costruzione…
Costruzione…
Costruzione…

Il circuito è costituito da un giroscopio collegato direttamente alla porta 0 del tuo arduino e un nunchuck wii connesso alla porta I2C. Assemblaggio del giroscopio:1. - collegare il giroscopio alla breadboard2. - filo per ogni cosa:- pin Vo dal giroscopio collegato alla porta analogica 0 su arduino (filo arancione chiaro)- pin G dal giroscopio collegato a massa (filo bianco)- pin V+ dal giroscopio collegato a Vdd (3,3 V) (cavo arancione) Assemblaggio l'accelerometro: 1. - collegare l'adattatore al nunchuck2. - collegare il nunchuck all'arduino utilizzando l'adattatore3. - posiziona il sensore di accelerazione come nella foto sopra

Passaggio 3: alcune informazioni aggiuntive prima di procedere

Alcune informazioni extra prima di procedere
Alcune informazioni extra prima di procedere
Alcune informazioni extra prima di procedere
Alcune informazioni extra prima di procedere
Alcune informazioni extra prima di procedere
Alcune informazioni extra prima di procedere

Da entrambi i sensori possiamo misurare l'angolo ma usando due tecniche distinte. Per misurare l'angolo usando il giroscopio dobbiamo integrare il segnale. Ma perché dobbiamo farlo? Poiché il giroscopio ci dà la velocità angolare, quindi un modo semplice per ottenere l'angolo è moltiplicare la velocità angolare per il tempo [angolo = angolo + w * dt]Per misurare l'angolo usando un accelerometro dobbiamo percepire la gravità in ogni asse dell'accelerometro, cosa significa, la proiezione dell'accelerazione di gravità su ogni direzione del sensore ci danno un'idea dell'angolo. [angle_accel = arctg(Ay / sqrt(Ax^2 + Az^2))]Allora perché useremo due sensori invece di uno? Per sfruttare entrambe le proprietà del sensore. Se guardi il grafico, i dati del giroscopio aumentano continuamente, questo si chiama deriva ei dati dell'accelerometro cambiano molto in poco tempo. E come unire entrambi i segnali? Useremo una tecnica chiamata filtro complementare. Non conosco la teoria esatta dietro questo, ma funziona bene. Ci sono alcune informazioni su Internet, basta cercarle su Google se hai bisogno di maggiori informazioni. Questo collegamento contiene molte informazioni e può essere utile.filtered_angle = HPF*(filtered_angle + w* dt) + LPF*(angle_accel); dove HPF + LPF = 1I valori di HPF e LPF si trovano a questo link, nel file filter.pdf. Grazie ragazzi di "The DIY Segway". Solo a scopo di test imposteremo questi valori in questo modo, HPF = 0,98 e LPF = 0,02.

Passaggio 4: codice:

Il codice è un adattamento di un codice che ho usato su un altro progetto. Probabilmente ci sono alcune variabili inutilizzate. Ho usato una libreria per leggere i dati del nunchuck da https://todbot.com/blog/. Grazie Tod E. Kurt. I commenti sul codice sono in portoghese, appena ho tempo libero lo traduco. Il codice emette attraverso la linea seriale alcuni numeri con questo schema:dt: w: teta: pitch: filter_teta $time:angular_velocity:gyro_angle:accel_angle:filtered_angle$Quindi puoi salvare questi valori su un terminale seriale e tracciare un grafico o usare l'angolo per altre cose. Se hai bisogno di spiegazioni sul codice non esitare a chiedere. Il codice è zippato. Basta decomprimerlo, aprirlo e caricarlo sul tuo arduino.

Passaggio 5: test e conclusione

Test e Conclusioni
Test e Conclusioni
Test e Conclusioni
Test e Conclusioni

Per testare il sistema ho salvato i dati utilizzando un programma chiamato Termite, quindi importare questi dati su excel e tracciare il grafico per vedere quanto è buono il mio filtro. I risultati sono sorprendenti. Ovviamente puoi usare il segnale per guidare un motore, o altre cose. Qualsiasi commento, dubbio, informazione mancante, dimmelo e lo correggo. Per favore, se ti piace, vota. Grazie a tutti.

Consigliato: