Inhoudsopgave:
- Stap 1: Wat we nodig hebben:
- Stap 2: Bouwen…
- Stap 3: Wat extra informatie voordat we verder gaan
- Stap 4: Coderen:
- Stap 5: Testen en conclusie
Video: Hoekmeting met behulp van gyro, versnellingsmeter en Arduino - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:20
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:
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…
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
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
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:
Meting van versnelling met behulp van H3LIS331DL en Arduino Nano: 4 stappen
Meting van versnelling met behulp van H3LIS331DL en Arduino Nano: H3LIS331DL, is een low-power high-performance 3-assige lineaire versnellingsmeter die behoort tot de "nano" familie, met digitale I²C seriële interface. H3LIS331DL heeft door de gebruiker selecteerbare volledige schalen van ±100g/±200g/±400g en is in staat om versnellingen te meten met
Meting van temperatuur met behulp van ADT75 en Arduino Nano: 4 stappen
Temperatuurmeting met ADT75 en Arduino Nano: ADT75 is een zeer nauwkeurige, digitale temperatuursensor. Het bestaat uit een bandgap-temperatuursensor en een 12-bits analoog-naar-digitaalomzetter voor het bewaken en digitaliseren van de temperatuur. Zijn zeer gevoelige sensor maakt hem competent genoeg voor mij
Meting van temperatuur met behulp van LM75BIMM en Arduino Nano: 4 stappen
Meting van temperatuur met behulp van LM75BIMM en Arduino Nano: LM75BIMM is een digitale temperatuursensor ingebouwd met thermische waakhond en heeft een tweedraads interface die de werking ondersteunt tot 400 kHz. Het heeft een oververhittingsuitgang met programmeerbare limiet en hystersis.In deze tutorial wordt de interfacin
Voorlopig* SPI op de Pi: communiceren met een SPI 3-assige versnellingsmeter met behulp van een Raspberry Pi: 10 stappen
Voorlopig* SPI op de Pi: communiceren met een SPI 3-assige versnellingsmeter Een Raspberry Pi gebruiken: stapsgewijze handleiding voor het instellen van Raspbian en communiceren met een SPI-apparaat met behulp van de bcm2835 SPI-bibliotheek (NIET bit-banged!) Dit is nog steeds heel voorlopig… Ik moet betere foto's van de fysieke aansluiting toevoegen en een aantal lastige code doornemen
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik