Indholdsfortegnelse:

ADXL345 Brug af Arduino Uno R3: 5 trin
ADXL345 Brug af Arduino Uno R3: 5 trin

Video: ADXL345 Brug af Arduino Uno R3: 5 trin

Video: ADXL345 Brug af Arduino Uno R3: 5 trin
Video: How to use Prototyping Shield with breadboard for Arduino 2024, Juli
Anonim
ADXL345 Brug af Arduino Uno R3
ADXL345 Brug af Arduino Uno R3

I denne lektion lærer vi, hvordan man bruger accelerationssensoren ADXL345.

Trin 1: Komponenter

- Arduino Uno board * 1

- USB -kabel * 1

- ADXL345 *1

- Brødbræt * 1

- Jumper ledninger

Trin 2: Princip

Et accelerometer bruges til at måle den kraft, der genereres under accelerationen. Det mest fundamentale er den almindeligt kendte tyngdekraftacceleration, der er 1 g.

Ved at måle accelerationen forårsaget af tyngdekraften kan du beregne enhedens hældningsvinkel til den plane overflade. Gennem analyse af den dynamiske acceleration kan du fortælle, hvordan enheden bevæger sig. For eksempel anvender selvbalancerende bræt eller hoverboard accelerationssensoren og gyroskopet til Kalman filter- og kropsholdningskorrektion.

ADXL345

ADXL345 er et lille, tyndt, laveffekt, 3-akset accelerometer med høj opløsning (13-bit) måling på op til ± 16 g. Digitale outputdata er formateret som 16-bit tos komplement og er tilgængelige via enten en SPI (3- eller 4-leder) eller I2C digital grænseflade. I dette eksperiment bruges I2C digital interface.

Det er velegnet til at måle den statiske tyngdekraftacceleration i hældningsfølende applikationer samt dynamisk acceleration som følge af bevægelse eller stød. Dens høje opløsning (4 mg/LSB) muliggør måling af hældningsændring med mindre end 1,0 °. Og den fremragende følsomhed (3,9 mg/LSB @2g) giver en højpræcisions output på op til ± 16g.

Sådan fungerer ADXL345

ADXL345 registrerer accelerationen med sensekomponenten foran, og derefter ændrer den elektriske signalføler komponent den til et elektrisk signal, som er analogt. Dernæst konverterer den AD -adapter, der er integreret på modulet, det analoge signal til et digitalt.

X_OUT, Y_OUT og Z_OUT er værdierne ved henholdsvis X-, Y- og Z -aksen. Placer modulet med forsiden opad: Z_OUT kan højst nå +1g, minimum X_OUT er -1g mod Ax -retningen, og minimum Y_OUT er -1g mod Ay -retningen. På den anden side skal du vende modulet på hovedet: minimum af Z_OUT er -1g, maksimumet af X_OUT er +1g mod aksens retning, og maksimum af Y_OUT er +1g mod Ay -retningen., som vist herunder. Drej ADXL345 -modulet, og du vil se ændringen af tre værdier.

når kanal A skifter fra højt til lavt niveau, hvis kanal B er højt niveau, angiver det, at den roterende encoder drejer med uret (CW); hvis kanal B i det øjeblik er lavt, betyder det, at det drejer mod uret (CCW). Så hvis vi læser værdien af kanal B, når kanal A er lavt, kan vi vide i hvilken retning den roterende encoder roterer.

Princip: Se skematisk diagram af Rotary Encoder -modulet herunder. Fra det kan vi se, at pin 3 på den roterende encoder, nemlig CLK på modulet, er kanal B. Pin 5, som er DT, er kanal A. For at kende optagerens rotationsretning skal du bare læse værdien af CLK og DT.

Der er en 3.3v spændingsregulatorchip i kredsløbet, så du kan drive modulet med 5V eller 3.3V.

Da SDO er blevet forbundet til GND, er I2C -adressen på ADXL345 0x53, 0xA6 til skrivning, 0xA7 for læsning

Pin -funktion af ADXL345 -modul.

Trin 3: Procedurer

Trin 1. Byg kredsløbet.

Trin 2:

Download koden fra

Trin 3:

Upload skitsen til Arduino Uno -tavlen

Klik på ikonet Upload for at uploade koden til kontrolkortet.

Hvis "Udført upload" vises nederst i vinduet, betyder det, at skitsen er uploadet.

Efter upload skal du åbne Serial Monitor, hvor du kan se dataene registreret. Når accelerationen af modulet ændres, ændres tallet tilsvarende i vinduet.

Trin 4: Kode

Kode
Kode

// ADXL335

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

ADXL335

Bemærk: vcc5v, men ADXL335 Vs er 3.3V

Kredsløbet:

5V: VCC

analog 0: x-akse

analog 1: y-akse

analog 2: z-akse

Efter at have brændt

program, skal du åbne vinduet til seriel skærmfejlfinding, hvor du kan se de registrerede data blive vist. Når accelerationen varierer, vil tallet variere tilsvarende.

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

/E -mail:

// Websted: www.primerobotics.in

const int xpin =

A0; // accelerometerets x-akse

const int ypin =

A1; // y-aksen

const int zpin =

A2; // z-akse (kun på 3-aksede modeller)

ugyldig opsætning ()

{

// initialiser den serielle kommunikation:

Serial.begin (9600);

}

hulrum ()

{

int x = analogRead (xpin); // læst fra xpin

forsinkelse (1); //

int y = analogRead (ypin); // læst fra ypin

forsinkelse (1);

int z = analogRead (zpin); // læst 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 ");

flyde

zero_Gx = 331,5; // zero_G -output for x -aksen: (x_max + x_min)/2

flyde

zero_Gy = 329,5; // zero_G outgput af y -aksen: (y_max + y_min)/2

float zero_Gz = 340.0; // the

zero_G output af z -aksen: (z_max + z_min)/2

flyde skala =

67.6; // strømforsyning ved Vs 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67.6g

float skala_x =

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

float skala_y =

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

float skala_z =

68; // z -aksens skala: z_max/3,3v*330mv/g

Serial.print (((float) x

- zero_Gx)/scale_x); // udskriv x -værdi på seriel skærm

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy)/scale_y); // udskriv y -værdi på seriel skærm

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // udskriv z -værdi på seriel skærm

Serial.print ("\ n");

forsinkelse (1000); // vent i 1 sekund

}

Trin 5: Kodeanalyse

Koden til ADXL345 -eksperimentet omfatter 3 dele: initialiser hver port og enhed, hent og gem data, der sendes fra sensorerne, og konverter dataene.

Anbefalede: