INHOUDSOPGAWE:

Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappe
Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappe

Video: Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappe

Video: Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappe
Video: Natuurkunde uitleg VERSNELLEN (F = m•a) 2024, Junie
Anonim
Image
Image

Die ADXL345 is 'n klein, dun, ultra-lae, drie-as versnellingsmeter met 'n hoë resolusie (13-bis) meting tot ± 16 g. Digitale uitsetdata word geformateer as 'n 16-bis tweeling-aanvulling en is toeganklik via die I2 C digitale koppelvlak. Dit meet die statiese versnelling van swaartekrag in kantelwaarnemingstoepassings, sowel as dinamiese versnelling as gevolg van beweging of skok. Die hoë resolusie (3,9 mg/LSB) maak dit moontlik om hellingsveranderings van minder as 1,0 ° te meet.

In hierdie tutoriaal word die koppelvlak van die ADXL345 -sensormodule met deeltjiefoton geïllustreer. Om die versnellingswaardes te lees, het ons deeltjies met 'n I2c -adapter gebruik. Hierdie I2C -adapter maak die verbinding met die sensormodule maklik en betroubaarder.

Stap 1: hardeware benodig:

Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig

Die materiaal wat ons nodig het om ons doel te bereik, bevat die volgende hardeware -komponente:

1. ADXL345

2. Deeltjie Photon

3. I2C -kabel

4. I2C Skild vir deeltjie foton

Stap 2: Hardeware -aansluiting:

Hardeware -aansluiting
Hardeware -aansluiting
Hardeware -aansluiting
Hardeware -aansluiting

Die hardewareaansluitingsgedeelte verduidelik basies die bedradingverbindings wat tussen die sensor en die deeltjiefoton benodig word. Die korrekte noodsaaklikheid is om korrekte verbindings te verseker terwyl u aan 'n stelsel werk vir die gewenste uitset. Die vereiste verbindings is dus soos volg:

Die ADXL345 werk oor I2C. Hier is die voorbeeld -bedradingsdiagram wat demonstreer hoe om elke koppelvlak van die sensor aan te sluit.

Uit die boks is die bord gekonfigureer vir 'n I2C-koppelvlak, daarom beveel ons aan dat u hierdie aansluiting gebruik as u anders agnosties is.

Al wat u nodig het, is vier drade! Slegs vier verbindings is nodig Vcc-, Gnd-, SCL- en SDA -penne en dit word met behulp van I2C -kabel verbind.

Hierdie verbindings word getoon in die foto's hierbo.

Stap 3: Kode vir die meting van versnelling:

Kode vir versnellingmeting
Kode vir versnellingmeting

Kom ons begin nou met die deeltjiekode.

Terwyl ons die sensormodule met die deeltjie gebruik, bevat ons die biblioteek application.h en spark_wiring_i2c.h. "application.h" en spark_wiring_i2c.h biblioteek bevat die funksies wat die i2c kommunikasie tussen die sensor en die deeltjie vergemaklik.

Die volledige deeltjiekode word hieronder gegee vir die gemak van die gebruiker:

#insluit

#insluit

// ADXL345 I2C adres is 0x53 (83)

#definieer Addr 0x53

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

leemte opstelling ()

{

// Stel veranderlike

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

Particle.variable ("xAccl", xAccl);

Particle.variable ("yAccl", yAccl);

Particle.variable ("zAccl", zAccl);

// Initialiseer I2C -kommunikasie as MASTER

Wire.begin ();

// Initialiseer seriële kommunikasie, stel baud rate = 9600 in

Serial.begin (9600);

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Kies bandwydte koersregister

Wire.write (0x2C);

// Kies uitsetdatatempo = 100 Hz

Wire.write (0x0A);

// Stop I2C -oordrag

Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Kies kragbeheerregister

Wire.write (0x2D);

// Kies outomatiese slaap uitskakel

Wire.write (0x08);

// Stop I2C -oordrag

Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Kies dataformaatregister

Draad.skryf (0x31);

// Kies volle resolusie, +/- 2g

Wire.write (0x08);

// Beëindig I2C -oordrag

Wire.endTransmission ();

vertraging (300);

}

leemte lus ()

{

ongetekende int data [6];

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

{

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Kies dataregister

Wire.write ((50+i));

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data van die toestel

Wire.requestFrom (Addr, 1);

// Lees 6 grepe data

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

as (Wire.available () == 1)

{

data = Wire.read ();

}

vertraging (300);

}

// Skakel die data om na 10-bisse

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

as (xAccl> 511)

{

xAccl -= 1024;

}

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

as (yAccl> 511)

{

yAccl -= 1024;

}

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

as (zAccl> 511)

{

zAccl -= 1024;

}

// Uitset data na paneelbord

Particle.publish ("Versnelling in X-as is:", String (xAccl));

Particle.publish ("Versnelling in Y-as is:", String (yAccl));

Particle.publish ("Versnelling in Z-as is:", String (zAccl));

}

Particle.variable () -funksie skep die veranderlikes om die uitset van die sensor te stoor en die Particle.publish () -funksie vertoon die uitset op die paneelbord van die webwerf.

Die sensoruitset word op die foto hierbo getoon vir u verwysing.

Stap 4: Aansoeke:

Aansoeke
Aansoeke

ADXL345 is 'n klein, dun, ultra-lae, 3-as versnellingsmeter wat gebruik kan word in toestelle, mediese instrumente, ens.

Aanbeveel: