Innholdsfortegnelse:

Vinkelmåling ved hjelp av gyro, akselerometer og Arduino: 5 trinn
Vinkelmåling ved hjelp av gyro, akselerometer og Arduino: 5 trinn

Video: Vinkelmåling ved hjelp av gyro, akselerometer og Arduino: 5 trinn

Video: Vinkelmåling ved hjelp av gyro, akselerometer og Arduino: 5 trinn
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Juli
Anonim
Vinkelmåling ved hjelp av gyro, akselerometer og Arduino
Vinkelmåling ved hjelp av gyro, akselerometer og Arduino

Enheten er en grov prototype av det som til slutt vil bli en selvbalanseringsrobot, dette er den andre delen av hullet (les akselerometer og kontroller en motor for selvbalanse). Den første delen med bare gyroen finner du her. På denne instruksen vil vi måle vinkelen ved hjelp av både gyro og akselerometer, og ved å bruke en teknikk for å slå sammen begge sensoren for å få et jevnt signal. Teknikken kalles "komplementærfilter". Tidligere

Trinn 1: Det vi trenger:

Hva vi kommer til å trenge
Hva vi kommer til å trenge
Hva vi kommer til å trenge
Hva vi kommer til å trenge
Hva vi kommer til å trenge
Hva vi kommer til å trenge
Hva vi kommer til å trenge
Hva vi kommer til å trenge

Noen deler kan byttes ut, og noen endringer i koden må gjøres for å passe til maskinvaren din. På dette prosjektet vil vi bruke:- Brødbrett- Mikrokontroller, jeg brukte Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (for akselerometeret)- Nunchuck Wii-adapter for Arduino

Trinn 2: Bygg …

Bygning…
Bygning…
Bygning…
Bygning…
Bygning…
Bygning…

Kretsen består av et gyroskop som er koblet direkte til port 0 på din arduino og en nunchuck wii -tilkobling ved I2C -porten. Montering av gyroen: 1. - plugg gyroen på brødbrettet 2. - wire ever thing:- Vo pin fra gyro koblet til analog port 0 på arduino (lys oransje wire)- G pin fra gyro koblet til bakken (White wire)- V+ pin fra gyro koblet til Vdd (3.3V) (Orange wire) Montering akselerometeret: 1. - plugg adapteren på nunchuck2. - plugg nunchuck på arduino ved hjelp av adapteren3. - plasser accel -sensoren som bildet ovenfor

Trinn 3: Litt ekstra informasjon før vi fortsetter

Litt ekstra informasjon før vi fortsetter
Litt ekstra informasjon før vi fortsetter
Litt ekstra informasjon før vi fortsetter
Litt ekstra informasjon før vi fortsetter
Litt ekstra informasjon før vi fortsetter
Litt ekstra informasjon før vi fortsetter

Fra begge sensorer kan vi måle vinkelen, men ved å bruke to forskjellige teknikker. For å måle vinkelen ved hjelp av gyroen må vi integrere signalet. Men hvorfor må vi gjøre dette? Fordi gyroen gir oss vinkelfrekvensen, er en enkel måte å få vinkelen på å ha vinkelfrekvensen multiplisert med tiden [vinkel = vinkel + w * dt] For å måle vinkelen ved hjelp av et akselerometer må vi kjenne tyngdekraften i hver akselen til akselerometeret, hva det betyr, projeksjonen av tyngdekraftakselerasjonen i hver retning av sensoren gir oss en ide om vinkelen. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Så hvorfor skal vi bruke to sensorer i stedet en? For å dra fordel av begge sensoregenskapene. Hvis du ser på grafikken, øker gyrodata kontinuerlig økning, dette kalles drift og akselerometerdataene endres mye på en liten tid. Jeg vet ikke den eksakte teorien bak dette, men det fungerer fint. Det er litt informasjon på internett, bare google den hvis du trenger mer informasjon. Denne lenken har mye informasjon og kan være nyttig. Filtered_angle = HPF*(filtered_angle + w*dt) + LPF*(angle_accel); hvor HPF + LPF = 1 Verdiene for HPF og LPF finnes på denne lenken, i filter.pdf -filen. Takk fra "The DIY Segway". Bare for testformål skal vi sette disse verdiene slik, HPF = 0,98 og LPF = 0,02.

Trinn 4: Kode:

Koden er en tilpasning fra en kode som jeg brukte på et annet prosjekt. Sannsynligvis er det noen variabler som ikke er brukt. Jeg brukte et bibliotek for å lese nunchuck -dataene fra https://todbot.com/blog/. Takk Tod E. Kurt. Kommentarene til kode er på portugisisk, så snart jeg har ledig tid, vil jeg oversette den. Kodeutgangen gjennom serienummeret noen tall med dette mønsteret: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Så du kan lagre disse verdiene på en seriell terminal og plotte en grafikk eller bruke vinkelen til andre ting. Hvis du trenger noen forklaring om koden, kan du spørre. Koden er med glidelås. Bare pakk ut pakken, åpne og last den opp til arduinoen din.

Trinn 5: Testing og konklusjon

Testing og konklusjon
Testing og konklusjon
Testing og konklusjon
Testing og konklusjon

For å teste systemet lagret jeg dataene ved hjelp av et program som heter Termite, og importer deretter disse dataene til excel og plott grafikken for å se hvor godt filteret mitt er. Resultatene er fantastiske. Selvfølgelig kan du bruke signalet til å kjøre en motor eller andre ting. Eventuelle kommentarer, tvil, informasjon mangler, bare fortell meg og jeg retter det. Vær så snill hvis du liker dette. Takk.

Anbefalt: