Taula de continguts:

Mesura de l'angle mitjançant giroscopi, acceleròmetre i Arduino: 5 passos
Mesura de l'angle mitjançant giroscopi, acceleròmetre i Arduino: 5 passos

Vídeo: Mesura de l'angle mitjançant giroscopi, acceleròmetre i Arduino: 5 passos

Vídeo: Mesura de l'angle mitjançant giroscopi, acceleròmetre i Arduino: 5 passos
Vídeo: Webinar Navisaf | Excelentes Prácticas de Gestión de Flotas Mineras | NAVISAF 2024, De novembre
Anonim
Mesura d'angles mitjançant giroscopi, acceleròmetre i Arduino
Mesura d'angles mitjançant giroscopi, acceleròmetre i Arduino

El dispositiu és un prototip aproximat del que acabarà convertint-se en un robot d’equilibri automàtic, aquesta és la segona part del forat (llegeix l’acceleròmetre i controla un motor per autoequilibrar-se). La primera part amb només el giroscopi es pot trobar aquí. En aquesta instrucció mesurarem l’angle amb giroscòpic i acceleròmetre i mitjançant una tècnica per combinar els dos sensors per obtenir un senyal suau. La tècnica s'anomena "filtre complementari". Anterior

Pas 1: què necessitarem:

Allò que necessitarem
Allò que necessitarem
Allò que necessitarem
Allò que necessitarem
Allò que necessitarem
Allò que necessitarem
Què necessitarem
Què necessitarem

Es pot substituir alguna part i cal fer alguna modificació del codi perquè s’adapti al vostre maquinari. En aquest projecte utilitzarem: - Tauler de pa- Microcontrolador, he utilitzat l’Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (per a l’acceleròmetre): adaptador Nunchuck Wii per Arduino

Pas 2: construir …

Edifici…
Edifici…
Edifici…
Edifici…
Edifici…
Edifici…

El circuit està format per un giroscopi connectat directament al port 0 del vostre arduino i un nunchuck que es connecta al port I2C. - connecteu el giroscopi a la placa de suport 2. - Cable de sempre: - Pin PIN del giroscòpic connectat al port analògic 0 a arduino (fil taronja clar) - Pin pin del giroscòpic connectat a terra (fil blanc) - V + pin del giroscòpic connectat a Vdd (3,3 V) (fil taronja) l’acceleròmetre: 1. - endolleu l'adaptador al nunchuck2. - endolleu el nunchuck a l'arduino mitjançant l'adaptador3. - col·loqueu el sensor d'accel com la foto superior

Pas 3: informació addicional abans de continuar

Alguna informació addicional abans de continuar
Alguna informació addicional abans de continuar
Alguna informació addicional abans de continuar
Alguna informació addicional abans de continuar
Alguna informació addicional abans de continuar
Alguna informació addicional abans de continuar

Des de tots dos sensors podem mesurar l’angle però utilitzant dues tècniques diferents. Per mesurar l’angle mitjançant el giroscòpic hem d’integrar el senyal, però per què hem de fer això? Com que el giroscòpic ens dóna la velocitat angular, de manera que una manera senzilla d’obtenir l’angle és fer que la velocitat angular es multipliqui pel temps [angle = angle + w * dt]. Per mesurar l’angle mitjançant un acceleròmetre hem de percebre la gravetat de cada un. eix de l’acceleròmetre, què significa, la projecció de l’acceleració de la gravetat en cada direcció del sensor ens dóna una idea sobre l’angle. [angle_accel = arctg (Ay / sqrt (Ax ^ 2 + Az ^ 2))] Llavors, per què utilitzarem dos sensors en lloc d’un? Per aprofitar les dues propietats del sensor. Si mireu el gràfic, l’augment continu de les dades giroscòpiques s’anomena deriva i les dades de l’acceleròmetre canvien molt en poc temps. I com combinar els dos senyals? Utilitzarem una tècnica anomenada filtre complementari. No sé la teoria exacta que hi ha darrere d'això, però funciona bé. Hi ha informació a Internet, només cal buscar-la a Google si necessita més informació. Aquest enllaç té molta informació i pot ser útil.filtered_angle = HPF * (filtered_angle + w * dt) + LPF * (angle_accel); on HPF + LPF = 1 Els valors de HPF i LPF es poden trobar en aquest enllaç, al fitxer filter.pdf. Gràcies, nois de "The DIY Segway". Només amb finalitats de prova, establirem aquests valors així, HPF = 0,98 i LPF = 0,02.

Pas 4: Codi:

El codi és una adaptació d’un codi que he utilitzat en un altre projecte. Probablement hi ha algunes variables sense utilitzar. Vaig utilitzar una biblioteca per llegir les dades de nunchuck de https://todbot.com/blog/. Gràcies a Tod E. Kurt. Els comentaris sobre el codi són en portuguès, tan bon punt tingui temps lliure, el traduiré. La sortida del codi a través de la línia de sèrie alguns números amb aquest patró: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Per tant, podeu desar aquests valors en un terminal sèrie i traçar un gràfic o utilitzar l’angle per altres coses. amb cremallera. Simplement descomprimiu-lo, obriu-lo i pengeu-lo al vostre arduino.

Pas 5: proves i conclusions

Proves i conclusió
Proves i conclusió
Proves i conclusió
Proves i conclusió

Per provar el sistema, he desat les dades mitjançant un programa anomenat Termite, a continuació, importo aquestes dades a excel i dibuixa el gràfic per veure com de bo és el meu filtre. Els resultats són increïbles. Per descomptat, podeu utilitzar el senyal per conduir un motor o altres coses. Qualsevol comentari, qualsevol dubte, qualsevol informació que falti, digueu-ho i ho corregiré. Si us plau, valoreu. Gràcies a tots.

Recomanat: