Hur Man Ansluter En Accelerometer Till Arduino

Innehållsförteckning:

Hur Man Ansluter En Accelerometer Till Arduino
Hur Man Ansluter En Accelerometer Till Arduino

Video: Hur Man Ansluter En Accelerometer Till Arduino

Video: Hur Man Ansluter En Accelerometer Till Arduino
Video: Акселерометр Arduino ADXL345 - Как считывать показания Arduino ADXL345 2024, November
Anonim

Den här gången kommer vi att hantera anslutning av ADXL335 analog triaxial accelerometer till Arduino.

Analog accelerometer ADXL335
Analog accelerometer ADXL335

Nödvändig

  • - Arduino;
  • - accelerometer ADXL335;
  • - en persondator med Arduino IDE-utvecklingsmiljön.

Instruktioner

Steg 1

Accelerometrar används för att bestämma accelerationsvektorn. ADXL335-accelerometern har tre axlar, och tack vare detta kan den bestämma accelerationsvektorn i tredimensionellt utrymme. På grund av att tyngdkraften också är en vektor kan accelerometern bestämma sin egen orientering i tredimensionellt utrymme i förhållande till jordens centrum.

Illustrationen visar bilder från passet (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) för ADXL335 accelerometer. Här visas koordinataxlarna för accelerometerns känslighet i förhållande till enhetens kropps geometriska placering i rymden, samt en tabell över spänningsvärden från 3 accelerometerkanaler beroende på dess orientering i rymden. Data i tabellen ges för en sensor i vila.

Låt oss titta närmare på vad accelerometern visar oss. Låt sensorn ligga horisontellt, till exempel på ett bord. Då kommer projektionen av accelerationsvektorn att vara lika med 1g längs Z-axeln, eller Zout = 1g. De andra två axlarna kommer att ha nollor: Xout = 0 och Yout = 0. När sensorn vrids "på baksidan" kommer den att riktas i motsatt riktning relativt gravitationvektorn, dvs. Zout = -1 g. På samma sätt görs mätningar på alla tre axlarna. Det är tydligt att accelerometern kan placeras som önskat i rymden, så vi tar andra avläsningar än noll från alla tre kanalerna.

Om sonden skakas kraftigt längs den vertikala Z-axeln kommer Zout-värdet att vara större än "1g". Den maximala mätbara accelerationen är "3g" i var och en av axlarna i vilken riktning som helst (dvs. båda med "plus" och "minus").

Accelerometer känslighet axlar och tabell över utgångsvärden
Accelerometer känslighet axlar och tabell över utgångsvärden

Steg 2

Jag tror att vi har kommit fram till accelerometerns funktion. Låt oss nu titta på anslutningsdiagrammet.

ADXL335 analoga accelerometerchip är ganska litet och inrymt i ett BGA-paket, och det är svårt att montera det på ett bräde hemma. Därför kommer jag att använda en färdig GY-61-modul med en ADXL335 accelerometer. Sådana moduler i kinesiska nätbutiker kostar nästan ett öre.

För att driva accelerometern är det nödvändigt att mata spänningen +3, 3 V till modulens VCC-stift. Sensormätningskanalerna är anslutna till de analoga stiften på Arduino, till exempel "A0", "A1" och " A2 ". Det här är hela kretsen:)

Kopplingsschema för ADXL335 accelerometer till Arduno
Kopplingsschema för ADXL335 accelerometer till Arduno

Steg 3

Låt oss ladda den här skissen i Arduino-minnet. Vi kommer att läsa avläsningarna från de analoga ingångarna på tre kanaler, konvertera dem till spänning och mata ut dem till serieporten.

Arduino har en 10-bitars ADC, och den maximalt tillåtna stiftspänningen är 5 volt. De uppmätta spänningarna är kodade med bitar som bara kan ta 2 värden - 0 eller 1. Detta innebär att hela mätområdet delas med (1 + 1) till den 10: e effekten, dvs. på 1024 lika segment.

För att konvertera avläsningarna till volt måste du dela varje värde uppmätt vid den analoga ingången med 1024 (segment) och sedan multiplicera med 5 (volt).

Låt oss se vad som verkligen kommer från accelerometern med Z-axeln som ett exempel (den sista kolumnen). När sensorn är placerad horisontellt och tittar upp kommer siffrorna (2.03 +/- 0.01). Så detta ska motsvara accelerationen "+ 1g" längs Z-axeln och en vinkel på 0 grader. Vänd sensorn. Siffrorna anländer (1, 69 +/- 0, 01), vilket ska motsvara "-1g" och en vinkel på 180 grader.

Accelerometer läsning skiss
Accelerometer läsning skiss

Steg 4

Låt oss ta värdena från accelerometern i vinklar på 90 och 270 grader och ange dem i tabellen. Tabellen visar vridningsvinklarna för accelerometern (kolumn "A") och motsvarande Zout-värden i volt (kolumn "B").

För tydlighets skull visas en spänningsdiagram vid Zout-utgången kontra rotationsvinkeln. Det blå fältet är viloperioden (vid 1g acceleration). Den rosa rutan i diagrammet är en marginal så att vi kan mäta acceleration upp till + 3g och upp till -3 g.

Vid 90 graders rotation har Z-axeln nollacceleration. De där. ett värde på 1,67 volt är en villkorlig noll Zo för Z-axeln. Sedan kan du hitta accelerationen så här:

g = Zout - Zo / känslighet_z, här är Zout det uppmätta värdet i millivolt, Zo är värdet vid nollacceleration i millivolt, känslighet_z är sensorkänsligheten längs Z-axeln. kalibrera accelerometern och beräkna känslighetsvärdet specifikt för din sensor med formeln:

känslighet_z = [Z (0 grader) - Z (90 grader)] * 1000. I detta fall är känsligheten för accelerometern längs Z-axeln = (2, 03 - 1, 68) * 1000 = 350 mV. På samma sätt måste känsligheten beräknas för X- och Y-axlarna.

Kolumn "C" i tabellen visar accelerationen beräknad för fem vinklar vid en känslighet av 350. Som du ser sammanfaller de praktiskt taget med de som visas i figur 1.

Korrespondens mellan accelerometern och rotationsvinklarna
Korrespondens mellan accelerometern och rotationsvinklarna

Steg 5

Att komma ihåg den grundläggande geometriska kursen får vi formeln för att beräkna accelerometerns rotationsvinklar:

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

Värdena finns i radianer. För att konvertera dem till grader, dela med Pi och multiplicera med 180.

Som ett resultat visas en fullständig skiss som beräknar accelerations- och rotationsvinklarna för accelerometern längs alla axlar i illustrationen. Kommentarerna ger förklaringar till programkoden.

När du matar ut till porten "Serial.print ()" betecknar "\ t" -tecknet ett tabbtecken så att kolumnerna är jämna och värdena ligger varandra. "+" betyder sammanfogning (sammanfogning) av strängar. Dessutom säger operatören "String ()" uttryckligen kompilatorn att det numeriska värdet måste konverteras till en sträng. Operatören rund () avrundar hörnet till närmaste 1 grad.

En skiss som beräknar accelerationsmätarens acceleration och vinklar
En skiss som beräknar accelerationsmätarens acceleration och vinklar

Steg 6

Så vi lärde oss att ta och bearbeta data från ADXL335 analog accelerometer med hjälp av Arduino. Nu kan vi använda accelerometern i våra konstruktioner.

Rekommenderad: