Hvordan Koble Et Akselerometer Til Arduino

Innholdsfortegnelse:

Hvordan Koble Et Akselerometer Til Arduino
Hvordan Koble Et Akselerometer Til Arduino

Video: Hvordan Koble Et Akselerometer Til Arduino

Video: Hvordan Koble Et Akselerometer Til Arduino
Video: DIY Gimbal | Учебное пособие по Arduino и MPU6050 2024, Kan
Anonim

Denne gangen vil vi forholde oss til å koble ADXL335 analogt triaksial akselerometer til Arduino.

Analog akselerometer ADXL335
Analog akselerometer ADXL335

Nødvendig

  • - Arduino;
  • - akselerometer ADXL335;
  • - en personlig datamaskin med Arduino IDE-utviklingsmiljø.

Bruksanvisning

Trinn 1

Akselerometre brukes til å bestemme akselerasjonsvektoren. ADXL335 akselerometer har tre akser, og takket være dette kan den bestemme akselerasjonsvektoren i et tredimensjonalt rom. På grunn av at tyngdekraften også er en vektor, kan akselerometeret bestemme sin egen orientering i et tredimensjonalt rom i forhold til sentrum av jorden.

Illustrasjonen viser bilder fra passet (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) for akselerometeret ADXL335. Her vises koordinataksene til akselerometerets følsomhet i forhold til den geometriske plasseringen av enhetens kropp i rommet, samt en tabell over spenningsverdier fra 3 akselerometerkanaler, avhengig av dens orientering i rommet. Dataene i tabellen er gitt for en sensor i ro.

La oss se nærmere på hva akselerometeret viser oss. La sensoren ligge horisontalt, for eksempel på et bord. Da vil projeksjonen av akselerasjonsvektoren være lik 1g langs Z-aksen, eller Zout = 1g. De to andre aksene vil ha nuller: Xout = 0 og Yout = 0. Når sensoren dreies "på ryggen", vil den bli rettet i motsatt retning i forhold til tyngdekraftsvektoren, dvs. Zout = -1g. På samme måte blir det tatt målinger på alle tre aksene. Det er klart at akselerometeret kan plasseres som ønsket i rommet, så vi tar andre målinger enn null fra alle tre kanalene.

Hvis sonden ristes kraftig langs den vertikale Z-aksen, vil Zout-verdien være større enn "1g". Den maksimale målbare akselerasjonen er "3g" i hver av aksene i hvilken som helst retning (dvs. begge med "pluss" og "minus").

Akselerometer følsomhetsakser og tabell over utgangsverdier
Akselerometer følsomhetsakser og tabell over utgangsverdier

Steg 2

Jeg tror vi fant ut prinsippet om akselerometeret. La oss nå se på tilkoblingsskjemaet.

ADXL335 analog akselerometerbrikke er ganske liten og ligger i en BGA-pakke, og det er vanskelig å montere den på et tavle hjemme. Derfor vil jeg bruke en ferdig GY-61-modul med et ADXL335 akselerometer. Slike moduler i kinesiske nettbutikker koster nesten en krone.

For å drive akselerometeret er det nødvendig å levere spenning +3, 3 V til VCC-pinnen på modulen. Sensorens målekanaler er koblet til de analoge pinnene til Arduino, for eksempel "A0", "A1" og " A2 ". Dette er hele kretsen:)

Koblingsskjema for ADXL335 akselerometer til Arduno
Koblingsskjema for ADXL335 akselerometer til Arduno

Trinn 3

La oss laste denne skissen inn i Arduino-minnet. Vi vil lese avlesningene fra de analoge inngangene på tre kanaler, konvertere dem til spenning og sende dem til serieporten.

Arduino har en 10-bit ADC, og den maksimale tillatte pin-spenningen er 5 volt. De målte spenningene er kodet med biter som bare kan ta to verdier - 0 eller 1. Dette betyr at hele måleområdet vil bli delt med (1 + 1) til 10. effekt, dvs. på 1024 like store segmenter.

For å konvertere målingene til volt, må du dele hver verdi målt ved den analoge inngangen med 1024 (segmenter), og deretter multiplisere med 5 (volt).

La oss se hva som virkelig kommer fra akselerometeret ved hjelp av Z-aksen som et eksempel (den siste kolonnen). Når sensoren er plassert horisontalt og ser opp, kommer tallene (2.03 +/- 0.01). Så dette skal tilsvare akselerasjonen "+ 1g" langs Z-aksen og en vinkel på 0 grader. Vend sensoren. Tallene ankommer (1, 69 +/- 0, 01), som skal svare til "-1g" og en vinkel på 180 grader.

Akselerometer leseskisse
Akselerometer leseskisse

Trinn 4

La oss ta verdiene fra akselerometeret i vinkler på 90 og 270 grader og legge dem inn i tabellen. Tabellen viser rotasjonsvinklene til akselerometeret (kolonne "A") og de tilsvarende Zout-verdiene i volt (kolonne "B").

For tydelighetens skyld vises et spenningsdiagram ved Zout-utgangen versus rotasjonsvinkelen. Det blå feltet er området i ro (ved 1g akselerasjon). Den rosa boksen på grafen er en margin slik at vi kan måle akselerasjon opp til + 3g og opp til -3g.

Ved 90 graders rotasjon har Z-aksen null akselerasjon. De. en verdi på 1,67 volt er en betinget null Zo for Z-aksen. Da kan du finne akselerasjonen slik:

g = Zout - Zo / sensitivitet_z, her er Zout den målte verdien i millivolt, Zo er verdien ved null akselerasjon i millivolt, sensitivitet_z er følsomheten til sensoren langs Z-aksen. kalibrer akselerometeret og bereg følsomhetsverdien spesielt for din sensor ved hjelp av formelen:

sensitivitet_z = [Z (0 grader) - Z (90 grader)] * 1000. I dette tilfellet er følsomheten til akselerometeret langs Z-aksen = (2, 03 - 1, 68) * 1000 = 350 mV. På samme måte må følsomheten beregnes for X- og Y-aksene.

Kolonne "C" i tabellen viser akselerasjonen beregnet for fem vinkler ved en følsomhet på 350. Som du ser, faller de praktisk talt sammen med de som er vist i figur 1.

Korrespondanse av akselerometerets rotasjonsvinkler til avlesningene
Korrespondanse av akselerometerets rotasjonsvinkler til avlesningene

Trinn 5

Når vi husker det grunnleggende geometriske forløpet, får vi formelen for å beregne akselerometerets rotasjonsvinkler:

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

Verdiene er i radianer. For å konvertere dem til grader, divider med Pi og multipliser med 180.

Som et resultat vises en fullstendig skisse som beregner akselerasjonsmålerens akselerasjons- og rotasjonsvinkler langs alle akser i illustrasjonen. Kommentarene gir forklaringer på programkoden.

Når du skriver ut til "Serial.print ()" -porten, betegner "\ t" -tegnet et fanetegn slik at kolonnene er jevne og verdiene ligger under hverandre. "+" betyr sammenføyning (sammenføyning) av strenger. Videre forteller operatøren "String ()" eksplisitt kompilatoren at den numeriske verdien må konverteres til en streng. Rund () operatøren runder hjørnet til nærmeste 1 grad.

En skisse som beregner akselerometerets akselerasjon og vinkler
En skisse som beregner akselerometerets akselerasjon og vinkler

Trinn 6

Så vi lærte å ta og behandle data fra ADXL335 analog akselerometer ved hjelp av Arduino. Nå kan vi bruke akselerometeret i designene våre.

Anbefalt: