Cuprins:

Măsurarea unghiului utilizând giroscopul, accelerometrul și Arduino: 5 pași
Măsurarea unghiului utilizând giroscopul, accelerometrul și Arduino: 5 pași

Video: Măsurarea unghiului utilizând giroscopul, accelerometrul și Arduino: 5 pași

Video: Măsurarea unghiului utilizând giroscopul, accelerometrul și Arduino: 5 pași
Video: „Tehnici moderne pentru localizarea tridimensională a traseelor utilităților îngropate ” 2024, Noiembrie
Anonim
Măsurarea unghiului utilizând Gyro, Accelerometer și Arduino
Măsurarea unghiului utilizând Gyro, Accelerometer și Arduino

Dispozitivul este un prototip dur a ceea ce va deveni în cele din urmă un robot de auto-echilibru, aceasta este a doua parte a lucrului cu gaură (citiți accelerometrul și controlați un motor pentru a vă echilibra). Prima parte cu doar giroscopul poate fi găsită aici. Pe această instrucțiune vom măsura unghiul folosind atât giroscopul, cât și accelerometrul și folosind o tehnică de îmbinare a ambelor senzori pentru a obține un semnal lin. Tehnica se numește „filtru complementar”.anterior

Pasul 1: De ce vom avea nevoie:

De ce vom avea nevoie
De ce vom avea nevoie
De ce vom avea nevoie
De ce vom avea nevoie
De ce vom avea nevoie
De ce vom avea nevoie
De ce vom avea nevoie
De ce vom avea nevoie

O parte poate fi înlocuită, iar unele modificări ale codului trebuie făcute pentru a se potrivi hardware-ului dvs. În acest proiect vom folosi: - Breadboard- Microcontroler, am folosit Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (pentru accelerometru) - adaptor Nunchuck Wii pentru Arduino

Pasul 2: Construirea …

Clădire …
Clădire …
Clădire …
Clădire …
Clădire …
Clădire …

Circuitul constă dintr-un giroscop conectat direct la portul 0 de pe arduino și un nunchuck cu care se conectează wii la portul I2C. - conectați giroscopul la panou2. - sârmă vreodată: - Vo pin de la giroscop conectat la portul analog0 la arduino (fir portocaliu deschis) - Pin pin de la giroscop conectat la masă (fir alb) - V + pin de la giroscop conectat la Vdd (3,3V) (fir portocaliu) accelerometrul: 1. - conectați adaptorul la nunchuck2. - conectați nunchuck la arduino folosind adaptorul3. - amplasați senzorul de accelare ca fotografia de mai sus

Pasul 3: Câteva informații suplimentare înainte de a continua

Câteva informații suplimentare înainte de a continua
Câteva informații suplimentare înainte de a continua
Câteva informații suplimentare înainte de a continua
Câteva informații suplimentare înainte de a continua
Câteva informații suplimentare înainte de a continua
Câteva informații suplimentare înainte de a continua

Din ambii senzori putem măsura unghiul, dar folosind două tehnici distincte. Pentru a măsura unghiul folosind giroscopul trebuie să integrăm semnalul. Dar de ce trebuie să facem acest lucru? Deoarece giroscopul ne oferă rata unghiulară, deci o modalitate simplă de a obține unghiul este să avem rata unghiulară înmulțită cu timpul [unghiul = unghiul + w * dt] Pentru a măsura unghiul folosind un accelerometru trebuie să simțim gravitația din fiecare axa accelerometrului, ce înseamnă, proiecția accelerației gravitaționale pe fiecare direcție a senzorului ne oferă o idee despre unghiul. [angle_accel = arctg (Ay / sqrt (Ax ^ 2 + Az ^ 2))] Deci, de ce vom folosi doi senzori în loc unul? Pentru a profita de ambele proprietăți ale senzorului. Dacă vă uitați la grafic, creșterea continuă a datelor giroscopice se numește drift, iar datele accelerometrului se schimbă foarte mult la un timp mic. Și cum să îmbinați ambele semnale? Vom folosi o tehnică numită filtru complementar. Nu știu exact teoria din spatele acestui lucru, dar funcționează bine. Există câteva informații pe internet, doar google-le dacă aveți nevoie de mai multe informații. Acest link are multe informații și poate fi util.filtered_angle = HPF * (filtered_angle + w * dt) + LPF * (angle_accel); unde HPF + LPF = 1 Valorile HPF și LPF pot fi găsite la acest link, în fișierul filter.pdf. Vă mulțumesc băieți de la „DIY Segway”. Doar pentru scopuri de testare vom stabili aceste valori așa, HPF = 0,98 și LPF = 0,02.

Pasul 4: Cod:

Codul este o adaptare de la un cod pe care l-am folosit în alt proiect. Probabil că există unele variabile neutilizate. Am folosit o bibliotecă pentru a citi datele nunchuck de pe https://todbot.com/blog/. Mulțumesc Tod E. Kurt. Comentariile despre cod sunt în portugheză, de îndată ce am timp liber, îl voi traduce. filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Deci, puteți salva aceste valori la un terminal serial și trageți un grafic sau puteți utiliza unghiul pentru alte lucruri. cu fermoar. Pur și simplu dezarhivați, deschideți și încărcați-l pe arduino.

Pasul 5: Testare și concluzie

Testarea și concluzia
Testarea și concluzia
Testarea și concluzia
Testarea și concluzia

Pentru a testa sistemul, am salvat datele folosind un program numit Termite, apoi import aceste date la excel și trasez graficul pentru a vedea cât de bun este filtrul meu. Rezultatele sunt uimitoare. Desigur, puteți utiliza semnalul pentru a conduce un motor sau alte lucruri. Orice comentarii, orice îndoială, orice informație lipsă, spuneți-mi și o corectez. Vă rugăm, dacă vă place acest lucru, evaluați. Vă mulțumim tuturor.

Recomandat: