Sisukord:

Kiirenduse mõõtmine ADXL345 ja osakeste footoni abil: 4 sammu
Kiirenduse mõõtmine ADXL345 ja osakeste footoni abil: 4 sammu

Video: Kiirenduse mõõtmine ADXL345 ja osakeste footoni abil: 4 sammu

Video: Kiirenduse mõõtmine ADXL345 ja osakeste footoni abil: 4 sammu
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Juuni
Anonim
Image
Image

ADXL345 on väike, õhuke, üliväikese võimsusega 3-teljeline kiirendusmõõtur, millel on kõrge eraldusvõimega (13-bitine) mõõtmine kuni ± 16 g. Digitaalsed väljundandmed on vormindatud 16-bitiste kaheosaliste täienditena ja neile on juurdepääs digitaalse liidese I2 C kaudu. Mõõdab staatilist raskuskiirendust kaldetundlikes rakendustes, samuti liikumisest või põrutusest tulenevat dünaamilist kiirendust. Selle kõrge eraldusvõime (3,9 mg/LSB) võimaldab mõõta kalde muutusi alla 1,0 °.

Selles õpetuses on illustreeritud ADXL345 andurimooduli liidestamist osakeste footoniga. Kiirendusväärtuste lugemiseks oleme kasutanud osakesi koos I2c adapteriga. See I2C adapter muudab ühenduse andurimooduliga lihtsaks ja usaldusväärsemaks.

Samm: vajalik riistvara:

Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara

Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:

1. ADXL345

2. Osakeste footon

3. I2C kaabel

4. I2C kilp osakeste footonile

2. samm: riistvara ühendamine:

Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine

Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja osakeste footoni vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:

ADXL345 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.

Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik.

Kõik, mida vajate, on neli juhtmest! Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.

Neid seoseid on näidatud ülaltoodud piltidel.

3. samm: kiirenduse mõõtmise kood:

Kiirenduse mõõtmise kood
Kiirenduse mõõtmise kood

Alustame nüüd osakeste koodiga.

Andurimooduli kasutamisel koos osakesega kaasame teeki application.h ja spark_wiring_i2c.h. Raamatukogu "application.h" ja spark_wiring_i2c.h sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja osakese vahel.

Kogu osakeste kood on kasutaja mugavuse huvides toodud allpool:

#kaasake

#kaasake

// ADXL345 I2C aadress on 0x53 (83)

#define Addr 0x53

int xAccl = 0, yAccl = 0, zAccl = 0;

tühine seadistus ()

{

// Määra muutuja

Particle.variable ("i2cdevice", "ADXL345");

Particle.variable ("xAccl", xAccl);

Particle.variable ("yAccl", yAccl);

Particle.variable ("zAccl", zAccl);

// Initsialiseeri I2C side kui MASTER

Wire.begin ();

// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600

Seriaalne algus (9600);

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige ribalaiuse kiiruse register

Wire.write (0x2C);

// Valige väljundi andmeedastuskiirus = 100 Hz

Wire.write (0x0A);

// Peata I2C edastamine

Wire.endTransmission ();

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige toitejuhtimise register

Wire.write (0x2D);

// Valige automaatne une keelamine

Wire.write (0x08);

// Peata I2C edastamine

Wire.endTransmission ();

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige andmevorminguregister

Wire.write (0x31);

// Valige täisresolutsioon, +/- 2g

Wire.write (0x08);

// Lõpeta I2C edastamine

Wire.endTransmission ();

viivitus (300);

}

tühine tsükkel ()

{

allkirjastamata int andmed [6];

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

{

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige andmeregister

Wire.write ((50+i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle seadmelt 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 6 baiti andmeid

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

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

viivitus (300);

}

// Teisendage andmed 10-bitisteks

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

kui (xAccl> 511)

{

xAccl -= 1024;

}

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

kui (yAccl> 511)

{

yAccl -= 1024;

}

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

kui (zAccl> 511)

{

zAccl -= 1024;

}

// Andmete väljastamine armatuurlauale

Particle.publish ("Kiirendus X-teljel on:", String (xAccl));

Particle.publish ("Kiirendus Y-teljel on:", String (yAccl));

Particle.publish ("Kiirendus Z-teljel on:", String (zAccl));

}

Funktsioon Particle.variable () loob muutujad anduri väljundi salvestamiseks ja Particle.publish () kuvab väljundi saidi armatuurlaual.

Anduri väljund on näidatud ülaltoodud pildil.

4. samm: rakendused:

Rakendused
Rakendused

ADXL345 on väike, õhuke, üliväikese võimsusega 3-teljeline kiirendusmõõtur, mida saab kasutada mobiiltelefonides, meditsiiniseadmetes jne. Selle rakendus hõlmab ka mängu- ja osutusseadmeid, tööstusseadmeid, isiklikke navigeerimisseadmeid ja kõvaketta kaitset.

Soovitan: