Innholdsfortegnelse:

ADXL345 Bruke Arduino Uno R3: 5 trinn
ADXL345 Bruke Arduino Uno R3: 5 trinn

Video: ADXL345 Bruke Arduino Uno R3: 5 trinn

Video: ADXL345 Bruke Arduino Uno R3: 5 trinn
Video: Акселерометр ADXL 345 + Servo мотор SG90 - Arduino! 2024, Juli
Anonim
ADXL345 Bruke Arduino Uno R3
ADXL345 Bruke Arduino Uno R3

I denne leksjonen lærer vi hvordan du bruker akselerasjonssensoren ADXL345.

Trinn 1: Komponenter

- Arduino Uno -bord * 1

- USB -kabel * 1

- ADXL345 *1

- Brødbrett * 1

- Jumper ledninger

Trinn 2: Prinsipp

Et akselerometer brukes til å måle kraften som genereres under akselerasjonen. Det mest grunnleggende er den allment kjente tyngdekraftakselerasjonen som er 1g.

Ved å måle akselerasjonen forårsaket av tyngdekraften, kan du beregne tiltvinkelen til enheten til den jevne overflaten. Gjennom å analysere den dynamiske akselerasjonen kan du fortelle hvordan enheten beveger seg. For eksempel bruker selvbalanserende brett eller hoverboard akselerasjonssensoren og gyroskopet for Kalman filter- og holdningskorreksjon.

ADXL345

ADXL345 er et lite, tynt, laveffekt, 3-akset akselerometer med høy oppløsning (13-bit) måling på opptil ± 16 g. Digitale utdata er formatert som 16-biters tokomplement og er tilgjengelig via enten et SPI (3- eller 4-leder) eller I2C digitalt grensesnitt. I dette eksperimentet brukes I2C digitalt grensesnitt.

Det er godt egnet til å måle den statiske gravitasjonsakselerasjonen i tilt-sensing applikasjoner, så vel som dynamisk akselerasjon som følge av bevegelse eller sjokk. Den høye oppløsningen (4 mg/LSB) muliggjør måling av hellingsendring med mindre enn 1,0 °. Og den utmerkede følsomheten (3,9 mg/LSB @2g) gir en høy presisjon på opptil ± 16 g.

Hvordan fungerer ADXL345

ADXL345 registrerer akselerasjonen med sensingkomponenten foran, og deretter endrer den elektriske signalsensingkomponenten den til et elektrisk signal, som er analogt. Deretter vil AD -adapteren som er integrert på modulen konvertere det analoge signalet til et digitalt.

X_OUT, Y_OUT og Z_OUT er verdiene på henholdsvis X-, Y- og Z -aksen. Plasser modulen med forsiden opp: Z_OUT kan maksimalt nå +1g, minimum X_OUT er -1g mot akseretningen, og minimum Y_OUT er -1g mot Ay -retningen. På den annen side, snu modulen opp ned: minimum Z_OUT er -1g, maksimum X_OUT er +1g mot akseretningen, og maksimum på Y_OUT er +1g mot Ay -retningen., som vist under. Roter ADXL345 -modulen, og du vil se endringen av tre verdier.

når kanal A endres fra høyt nivå til lavt nivå, hvis kanal B er høyt nivå, indikerer det at roterende encoder snurrer med klokken (CW); hvis kanal B er lavt i det øyeblikket, betyr det spinn mot klokken (CCW). Så hvis vi leser verdien av kanal B når kanal A er lavt, kan vi vite i hvilken retning den roterende koderen roterer.

Prinsipp: Se skjematisk diagram over Rotary Encoder -modulen nedenfor. Fra den kan vi se at pinne 3 på den roterende koderen, nemlig CLK på modulen, er kanal B. Pin 5, som er DT, er kanal A. For å kjenne opptakerens rotasjonsretning, les bare verdien av CLK og DT.

Det er en 3.3v spenningsregulatorbrikke i kretsen, så du kan drive modulen med 5V eller 3.3V.

Siden SDO har blitt koblet til GND, er I2C -adressen til ADXL345 0x53, 0xA6 for skrive, 0xA7 for lesing

Pin -funksjon på ADXL345 -modulen.

Trinn 3: Prosedyrer

Trinn 1. Bygg kretsen.

Steg 2:

Last ned koden fra

Trinn 3:

Last opp skissen til Arduino Uno -brettet

Klikk på Last opp -ikonet for å laste opp koden til kontrollkortet.

Hvis "Ferdig opplasting" vises nederst i vinduet, betyr det at skissen er lastet opp.

Etter opplasting åpner du Serial Monitor, der du kan se dataene oppdaget. Når akselerasjonen til modulen endres, vil tallet endres tilsvarende på vinduet.

Trinn 4: Kode

Kode
Kode

// ADXL335

/********************************

ADXL335

merk: vcc5v, men ADXL335 Vs er 3.3V

Kretsen:

5V: VCC

analog 0: x-akse

analog 1: y-akse

analog 2: z-akse

Etter å ha brent

program, åpner du feilsøkingsvinduet for seriell skjerm, hvor du kan se dataene som blir oppdaget, vises. Når akselerasjonen varierer, vil tallet variere tilsvarende.

*********************************

/E -post:

//Nettsted: www.primerobotics.in

const int xpin =

A0; // x-aksen til akselerometeret

const int ypin =

A1; // y-aksen

const int zpin =

A2; // z-aksen (bare på 3-aksede modeller)

ugyldig oppsett ()

{

// initialiser den serielle kommunikasjonen:

Serial.begin (9600);

}

hulrom ()

{

int x = analogRead (xpin); // lese fra xpin

forsinkelse (1); //

int y = analogRead (ypin); // lese fra ypin

forsinkelse (1);

int z = analogRead (zpin); // lest fra zpin

float zero_G = 338,0; // ADXL335 strømforsyning

ved Vs 3.3V: 3.3V/5V*1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

flyte

zero_Gx = 331,5; // null_G -utgangen til x -aksen: (x_max + x_min)/2

flyte

zero_Gy = 329,5; // null_G -utgangen til y -aksen: (y_max + y_min)/2

flyte zero_Gz = 340.0; // the

zero_G -utgang fra z -aksen: (z_max + z_min)/2

flytevekt =

67,6; // strømforsyning med Vs 3,3V: 3,3v/5v *1024/3,3v *330mv/g = 67,6g

flyte skala_x =

65; // skalaen til x -aksen: x_max/3,3v*330mv/g

flyte skala_y =

68,5; // skalaen til y -aksen: y_max/3,3v*330mv/g

flyte skala_z =

68; // skalaen til z -aksen: z_max/3,3v*330mv/g

Serial.print (((flyte) x

- zero_Gx)/scale_x); // Skriv ut x -verdi på seriell skjerm

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy)/scale_y); // Skriv ut y -verdi på seriell skjerm

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // skriv ut z -verdi på seriell skjerm

Serial.print ("\ n");

forsinkelse (1000); // vent i 1 sekund

}

Trinn 5: Kodeanalyse

Koden for ADXL345 -eksperimentet inkluderer 3 deler: initialiser hver port og enhet, hente og lagre data som sendes fra sensorene, og konverter dataene.

Anbefalt: