Indholdsfortegnelse:

Måling af acceleration ved hjælp af ADXL345 og Arduino Nano: 4 trin
Måling af acceleration ved hjælp af ADXL345 og Arduino Nano: 4 trin

Video: Måling af acceleration ved hjælp af ADXL345 og Arduino Nano: 4 trin

Video: Måling af acceleration ved hjælp af ADXL345 og Arduino Nano: 4 trin
Video: How to use MPU-6050 Accelerometer and Gyroscope with Arduino code 2024, November
Anonim
Image
Image

ADXL345 er et lille, tyndt, ultralavt, 3-akset accelerometer med høj opløsning (13-bit) måling på op til ± 16 g. Digitale outputdata er formateret som 16-bit tokomplement og er tilgængelige via I2 C digital interface. Det måler den statiske tyngdekraftacceleration i tilt-sensing applikationer samt dynamisk acceleration som følge af bevægelse eller stød. Dens høje opløsning (3,9 mg/LSB) muliggør måling af hældningsændringer mindre end 1,0 °.

I denne vejledning er grænsefladen mellem ADXL345 sensormodul og arduino nano illustreret. For at aflæse accelerationsværdierne har vi brugt arduino med en I2c -adapter. Denne I2C -adapter gør forbindelsen til sensormodulet let og mere pålidelig.

Trin 1: Påkrævet hardware:

Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet

De materialer, vi har brug for for at nå vores mål, omfatter følgende hardwarekomponenter:

1. ADXL345

2. Arduino Nano

3. I2C -kabel

4. I2C Shield til Arduino Nano

Trin 2: Hardware -tilslutning:

Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning

Hardwaretilslutningssektionen forklarer dybest set de nødvendige ledningsforbindelser mellem sensoren og arduino nano. At sikre korrekte forbindelser er den grundlæggende nødvendighed, mens du arbejder på et hvilket som helst system til den ønskede output. Så de nødvendige forbindelser er som følger:

ADXL345 fungerer over I2C. Her er eksemplet på ledningsdiagram, der viser, hvordan du tilslutter hver grænseflade på sensoren.

Out-of-the-box er tavlen konfigureret til en I2C-grænseflade, som sådan anbefaler vi at bruge denne tilslutning, hvis du ellers er agnostiker.

Alt du behøver er fire ledninger! Der kræves kun fire tilslutninger Vcc, Gnd, SCL og SDA ben, og disse er forbundet ved hjælp af I2C kabel.

Disse forbindelser er vist på billederne ovenfor.

Trin 3: Kode til måling af acceleration:

Kode til måling af acceleration
Kode til måling af acceleration

Lad os starte med arduino -koden nu.

Mens vi bruger sensormodulet med arduino, inkluderer vi Wire.h -bibliotek. "Wire" -biblioteket indeholder de funktioner, der letter i2c -kommunikationen mellem sensoren og arduino -kortet.

Hele arduino -koden er angivet nedenfor for brugerens bekvemmelighed:

#omfatte

// ADXL345 I2C -adressen er 0x53 (83)

#define Addr 0x53

ugyldig opsætning ()

{

// Initialiser I2C -kommunikation som MASTER

Wire.begin ();

// Initialiser seriel kommunikation, indstil baudhastighed = 9600

Serial.begin (9600);

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg båndbreddehastighedsregister

Wire.write (0x2C);

// Normal tilstand, Output datahastighed = 100 Hz

Wire.write (0x0A);

// Stop I2C -transmission

Wire.endTransmission ();

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg effektstyringsregister

Wire.write (0x2D);

// Deaktiver automatisk søvn

Wire.write (0x08);

// Stop I2C -transmission

Wire.endTransmission ();

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg dataformatregister

Wire.write (0x31);

// Selvtest deaktiveret, 4-leder interface, Fuld opløsning, Område = +/- 2g

Wire.write (0x08);

// Stop I2C -transmission

Wire.endTransmission ();

forsinkelse (300);

}

hulrum ()

{

usignerede int -data [6];

for (int i = 0; i <6; i ++)

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg dataregister

Wire.write ((50 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 6 bytes data

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene til 10-bit

int xAccl = (((data [1] & 0x03) * 256) + data [0]);

hvis (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((data [3] & 0x03) * 256) + data [2]);

hvis (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((data [5] & 0x03) * 256) + data [4]);

hvis (zAccl> 511)

{

zAccl -= 1024;

}

// Output data til seriel skærm

Serial.print ("Acceleration i X-aksen er:");

Serial.println (xAccl);

Serial.print ("Acceleration i Y-akse er:");

Serial.println (yAccl);

Serial.print ("Acceleration i Z-aksen er:");

Serial.println (zAccl);

forsinkelse (300);

}

I trådbiblioteket bruges Wire.write () og Wire.read () til at skrive kommandoer og læse sensoroutput.

Serial.print () og Serial.println () bruges til at vise sensorens output på den serielle monitor på Arduino IDE.

Sensorens output er vist på billedet ovenfor.

Trin 4: Ansøgninger:

Ansøgninger
Ansøgninger

ADXL345 er et lille, tyndt, ultralavt, 3-akset accelerometer, der kan bruges i håndsæt, medicinsk instrumentering osv. Dets anvendelse omfatter også spil- og pegeudstyr, industriel instrumentering, personlige navigationsenheder og beskyttelse af harddisk (HDD).

Anbefalede: