Inhoudsopgave:

Hoekmeting met behulp van gyro, versnellingsmeter en Arduino - Ajarnpa
Hoekmeting met behulp van gyro, versnellingsmeter en Arduino - Ajarnpa

Video: Hoekmeting met behulp van gyro, versnellingsmeter en Arduino - Ajarnpa

Video: Hoekmeting met behulp van gyro, versnellingsmeter en Arduino - Ajarnpa
Video: How to use MPU-6050 Accelerometer and Gyroscope with Arduino code 2024, November
Anonim
Hoekmeting met behulp van gyro, versnellingsmeter en Arduino
Hoekmeting met behulp van gyro, versnellingsmeter en Arduino

Het apparaat is een ruw prototype van wat uiteindelijk een zelfbalancerende robot zal worden, dit is het tweede deel van het gat (lees versnellingsmeter en bestuur een motor om zichzelf in evenwicht te brengen). Het eerste deel met alleen de gyro is hier te vinden. Op deze instructable zullen we de hoek meten met behulp van zowel de gyro als de accelerometer, en een techniek gebruiken om beide sensoren samen te voegen om een soepel signaal te krijgen. De techniek wordt "complementair filter" genoemd.vorige

Stap 1: Wat we nodig hebben:

Wat we nodig hebben
Wat we nodig hebben
Wat we nodig hebben
Wat we nodig hebben
Wat we nodig hebben
Wat we nodig hebben
Wat we nodig hebben
Wat we nodig hebben

Een deel kan worden vervangen en er moeten enkele wijzigingen in de code worden aangebracht om op uw hardware te passen. In dit project zullen we gebruiken: - Breadboard - Microcontroller, ik gebruikte het Arduinoboard - Draad - Jumper Wires - Gyroscoop XV-8100 - Nunchuck Wii (voor de accelerometer)- Nunchuck Wii-adapter voor Arduino

Stap 2: Bouwen…

Gebouw…
Gebouw…
Gebouw…
Gebouw…
Gebouw…
Gebouw…

Het circuit bestaat uit een gyroscoop die rechtstreeks is aangesloten op poort 0 op je arduino en een nunchuck wii connect op de I2C-poort. Montage van de gyro:1. - sluit de gyro aan op het breadboard2. - draad ooit ding: - Vo-pin van gyro aangesloten op analoge poort 0 op Arduino (lichtoranje draad) - G-pin van gyro aangesloten op aarde (witte draad) - V + pin van gyro aangesloten op Vdd (3,3 V) (oranje draad) Montage de versnellingsmeter:1. - steek de adapter in de nunchuck2. - sluit de nunchuck aan op de arduino met behulp van de adapter3. - plaats de accel sensor zoals de foto hierboven

Stap 3: Wat extra informatie voordat we verder gaan

Wat extra informatie voordat we verder gaan
Wat extra informatie voordat we verder gaan
Wat extra informatie voordat we verder gaan
Wat extra informatie voordat we verder gaan
Wat extra informatie voordat we verder gaan
Wat extra informatie voordat we verder gaan

Van beide sensoren kunnen we de hoek meten, maar met twee verschillende technieken. Om de hoek te meten met behulp van de gyro, moeten we het signaal integreren. Maar waarom moeten we dit doen? Omdat de gyro ons de hoeksnelheid geeft, dus een eenvoudige manier om de hoek te krijgen is om de hoeksnelheid te vermenigvuldigen met de tijd [hoek = hoek + w * dt] Om de hoek te meten met behulp van een versnellingsmeter, moeten we de zwaartekracht in elk as van de versnellingsmeter, wat het betekent, de projectie van de zwaartekrachtversnelling op elke richting van de sensor geeft ons een idee over de hoek. [angle_accel = arctg(Ay / sqrt(Ax^2 + Az^2))]Dus waarom gaan we twee sensoren gebruiken in plaats van één? Om te profiteren van beide sensoreigenschappen. Als je naar de grafiek kijkt, nemen de gyrogegevens continu toe, dit wordt drift genoemd en de versnellingsmetergegevens veranderen veel in een korte tijd. En hoe kunnen beide signalen worden samengevoegd? We zullen een techniek gebruiken die complementair filter wordt genoemd. Ik weet niet de exacte theorie hierachter, maar het werkt prima. Er is wat informatie op internet, google het maar als je meer informatie nodig hebt. Deze link bevat veel informatie en kan nuttig zijn.filtered_angle = HPF*(filtered_angle + w* dt) + LPF*(angle_accel); waarbij HPF + LPF = 1De waarden van HPF en LPF zijn te vinden via deze link, in het bestand filter.pdf. Bedankt jongens van "The DIY Segway". Alleen voor testdoeleinden gaan we deze waarden als volgt instellen, HPF = 0,98 en LPF = 0,02.

Stap 4: Coderen:

De code is een aanpassing van een code die ik in een ander project heb gebruikt. Waarschijnlijk zijn er enkele variabelen ongebruikt. Ik heb een bibliotheek gebruikt om de nunchuck-gegevens van https://todbot.com/blog/ te lezen. Bedankt Tod E. Kurt. De opmerkingen over code zijn in het Portugees, zodra ik vrije tijd heb, zal ik het vertalen. De code voert via de seriële regel enkele cijfers uit met dit patroon: dt: w: teta: toonhoogte: filter_teta $time:angular_velocity:gyro_angle:accel_angle:filtered_angle$Je kunt deze waarden dus opslaan op een seriële terminal en een grafiek plotten of de hoek voor andere dingen gebruiken. gezipt. Gewoon uitpakken, openen en uploaden naar je Arduino.

Stap 5: Testen en conclusie

Testen en conclusie
Testen en conclusie
Testen en conclusie
Testen en conclusie

Om het systeem te testen, heb ik de gegevens opgeslagen met een programma genaamd Termite, deze gegevens vervolgens in Excel geïmporteerd en de afbeelding geplot om te zien hoe goed mijn filter is. De resultaten zijn verbluffend. Natuurlijk kun je het signaal gebruiken om een motor of andere dingen aan te drijven. Eventuele opmerkingen, twijfel, ontbrekende informatie, vertel het me en ik corrigeer het. Als je dit leuk vindt, beoordeel dan. Bedankt allemaal.

Aanbevolen: