Hoe Een Versnellingsmeter Op Arduino Aan Te Sluiten

Inhoudsopgave:

Hoe Een Versnellingsmeter Op Arduino Aan Te Sluiten
Hoe Een Versnellingsmeter Op Arduino Aan Te Sluiten

Video: Hoe Een Versnellingsmeter Op Arduino Aan Te Sluiten

Video: Hoe Een Versnellingsmeter Op Arduino Aan Te Sluiten
Video: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, November
Anonim

Deze keer behandelen we het aansluiten van de ADXL335 analoge triaxiale accelerometer op de Arduino.

Analoge versnellingsmeter ADXL335
Analoge versnellingsmeter ADXL335

Noodzakelijk

  • -Arduino;
  • - versnellingsmeter ADXL335;
  • - een personal computer met de Arduino IDE-ontwikkelomgeving.

instructies:

Stap 1

Versnellingsmeters worden gebruikt om de versnellingsvector te bepalen. De ADXL335-versnellingsmeter heeft drie assen en kan hierdoor de versnellingsvector in de driedimensionale ruimte bepalen. Omdat de zwaartekracht ook een vector is, kan de versnellingsmeter zijn eigen oriëntatie in de driedimensionale ruimte bepalen ten opzichte van het middelpunt van de aarde.

De afbeelding toont afbeeldingen uit het paspoort (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) voor de ADXL335 accelerometer. Hier worden de coördinaatassen van de gevoeligheid van de versnellingsmeter weergegeven in relatie tot de geometrische plaatsing van het apparaatlichaam in de ruimte, evenals een tabel met spanningswaarden van 3 versnellingsmeterkanalen, afhankelijk van de oriëntatie in de ruimte. De gegevens in de tabel zijn gegeven voor een sensor in rust.

Laten we eens nader bekijken wat de versnellingsmeter ons laat zien. Laat de sensor horizontaal liggen, bijvoorbeeld op een tafel. Dan is de projectie van de versnellingsvector gelijk aan 1g langs de Z-as, of Zout = 1g. De andere twee assen hebben nullen: Xout = 0 en Yout = 0. Wanneer de sensor "op zijn rug" wordt gedraaid, wordt deze in de tegenovergestelde richting gericht ten opzichte van de zwaartekrachtvector, dwz. Zout = -1g. Evenzo worden metingen uitgevoerd op alle drie de assen. Het is duidelijk dat de versnellingsmeter naar wens in de ruimte kan worden geplaatst, dus we zullen andere metingen dan nul van alle drie de kanalen doen.

Als de sonde sterk wordt geschud langs de verticale Z-as, zal de Zout-waarde groter zijn dan "1g". De maximaal meetbare versnelling is "3g" in elk van de assen in elke richting (dwz zowel met "plus" als "min").

Accelerometer gevoeligheidsassen en tabel met uitgangswaarden
Accelerometer gevoeligheidsassen en tabel met uitgangswaarden

Stap 2

Ik denk dat we het werkingsprincipe van de versnellingsmeter hebben ontdekt. Laten we nu eens kijken naar het aansluitschema.

De ADXL335 analoge accelerometerchip is vrij klein en zit in een BGA-pakket, en het is moeilijk om hem thuis op een bord te monteren. Daarom zal ik een kant-en-klare GY-61-module gebruiken met een ADXL335-versnellingsmeter. Dergelijke modules in Chinese online winkels kosten bijna een cent.

Om de accelerometer van stroom te voorzien, is het nodig om spanning +3, 3 V te leveren aan de VCC-pin van de module. De sensor-meetkanalen zijn verbonden met de analoge pinnen van de Arduino, bijvoorbeeld "A0", "A1" en " A2". Dit is het hele circuit:)

Bedradingsschema van ADXL335 accelerometer naar Arduno
Bedradingsschema van ADXL335 accelerometer naar Arduno

Stap 3

Laten we deze schets in het Arduino-geheugen laden. We lezen de meetwaarden van de analoge ingangen op drie kanalen, converteren ze naar spanning en voeren ze uit naar de seriële poort.

De Arduino heeft een 10-bit ADC en de maximaal toegestane pinspanning is 5 volt. De gemeten spanningen zijn gecodeerd met bits die maar 2 waarden kunnen aannemen - 0 of 1. Dit betekent dat het gehele meetbereik wordt gedeeld door (1 + 1) tot de 10e macht, d.w.z. op 1024 gelijke segmenten.

Om de meetwaarden om te zetten in volt, moet u elke gemeten waarde op de analoge ingang delen door 1024 (segmenten) en vervolgens vermenigvuldigen met 5 (volt).

Laten we eens kijken wat er echt uit de versnellingsmeter komt met de Z-as als voorbeeld (de laatste kolom). Wanneer de sensor horizontaal is geplaatst en omhoog kijkt, komen de cijfers (2,03 +/- 0,01). Dit moet dus overeenkomen met de versnelling "+ 1g" langs de Z-as en een hoek van 0 graden. Draai de sensor om. De cijfers komen binnen (1, 69 +/- 0, 01), wat moet overeenkomen met "-1g" en een hoek van 180 graden.

Aflezingsschets van de versnellingsmeter
Aflezingsschets van de versnellingsmeter

Stap 4

Laten we de waarden van de versnellingsmeter nemen onder hoeken van 90 en 270 graden en deze in de tabel invoeren. De tabel toont de rotatiehoeken van de versnellingsmeter (kolom "A") en de bijbehorende Zout-waarden in volt (kolom "B").

Voor de duidelijkheid wordt een plot van spanningen aan de Zout-uitgang versus de rotatiehoek getoond. Het blauwe veld is het bereik in rust (bij 1g versnelling). Het roze kader op de grafiek is een marge zodat we versnelling tot + 3g en tot -3g kunnen meten.

Bij een rotatie van 90 graden heeft de Z-as een versnelling van nul. Die. een waarde van 1,67 volt is een voorwaardelijke nul Zo voor de Z-as. Dan kun je de versnelling als volgt vinden:

g = Zout - Zo / gevoeligheid_z, hier is Zout de gemeten waarde in millivolts, Zo is de waarde bij nulversnelling in millivolts, gevoeligheid_z is de gevoeligheid van de sensor langs de Z-as Kalibreer de accelerometer en bereken de gevoeligheidswaarde specifiek voor uw sensor met de formule:

gevoeligheid_z = [Z (0 graden) - Z (90 graden)] * 1000. In dit geval is de gevoeligheid van de versnellingsmeter langs de Z-as = (2, 03 - 1, 68) * 1000 = 350 mV. Evenzo moet de gevoeligheid worden berekend voor de X- en Y-assen.

Kolom "C" van de tabel toont de versnelling berekend voor vijf hoeken met een gevoeligheid van 350. Zoals u kunt zien, vallen ze praktisch samen met die in figuur 1.

Overeenstemming van de rotatiehoeken van de versnellingsmeter met de meetwaarden
Overeenstemming van de rotatiehoeken van de versnellingsmeter met de meetwaarden

Stap 5

Als we de basisgeometriecursus onthouden, krijgen we de formule voor het berekenen van de rotatiehoeken van de versnellingsmeter:

hoek_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Waarden zijn in radialen. Om ze om te zetten in graden, deel je door Pi en vermenigvuldig je met 180.

Als resultaat wordt in de afbeelding een volledige schets weergegeven die de versnellings- en rotatiehoeken van de versnellingsmeter langs alle assen berekent. De opmerkingen geven uitleg over de programmacode.

Bij het uitvoeren naar de "Serial.print ()"-poort, duidt het "\ t"-teken een tab-teken aan, zodat de kolommen even zijn en de waarden onder elkaar staan. "+" betekent aaneenschakeling (aaneenschakeling) van strings. Bovendien vertelt de operator "String ()" expliciet aan de compiler dat de numerieke waarde moet worden geconverteerd naar een tekenreeks. De ronde () operator rondt de hoek af tot op de dichtstbijzijnde 1 graad.

Een schets die de versnelling en hoeken van de versnellingsmeter berekent
Een schets die de versnelling en hoeken van de versnellingsmeter berekent

Stap 6

Dus hebben we geleerd hoe we gegevens van de ADXL335 analoge accelerometer kunnen nemen en verwerken met behulp van de Arduino. Nu kunnen we de versnellingsmeter gebruiken in onze ontwerpen.

Aanbevolen: