INHOUDSOPGAWE:

ADXL345 Met behulp van Arduino Uno R3: 5 stappe
ADXL345 Met behulp van Arduino Uno R3: 5 stappe

Video: ADXL345 Met behulp van Arduino Uno R3: 5 stappe

Video: ADXL345 Met behulp van Arduino Uno R3: 5 stappe
Video: Функция Arduino Millis поясняется 3 примерами 2024, November
Anonim
ADXL345 Met behulp van Arduino Uno R3
ADXL345 Met behulp van Arduino Uno R3

In hierdie les leer ons hoe u die versnellingsensor ADXL345 kan gebruik.

Stap 1: Komponente

- Arduino Uno -bord * 1

- USB -kabel * 1

- ADXL345 *1

- Broodbord * 1

- Springdrade

Stap 2: Beginsel

'N Versnellingsmeter word gebruik om die krag wat tydens die versnelling opgewek word, te meet. Die mees fundamentele is die algemeen bekende versnelling van swaartekrag, wat 1g is.

Deur die versnelling wat deur swaartekrag veroorsaak word, te meet, kan u die kantelhoek van die toestel na die vlak oppervlak bereken. Deur die dinamiese versnelling te ontleed, kan u die manier sien waarop die toestel beweeg. Selfbalanseerbord of hoverboard pas byvoorbeeld die versnellingsensor en die gyroscoop toe vir Kalman-filter- en postuurkorreksie.

ADXL345

Die ADXL345 is 'n klein, dun, lae krag, 3-as versnellingsmeter met 'n hoë resolusie (13-bis) meting tot ± 16 g. Digitale uitsetdata word geformateer as 'n 16-bis kompliment en is toeganklik via 'n SPI (3- of 4-draad) of I2C digitale koppelvlak. In hierdie eksperiment word die I2C digitale koppelvlak gebruik.

Dit is baie geskik om die statiese gravitasieversnelling in kantelgevoelige toepassings, sowel as dinamiese versnelling as gevolg van beweging of skok, te meet. Die hoë resolusie (4 mg/LSB) maak dit moontlik om die hellingsverandering met minder as 1,0 ° te meet. En die uitstekende sensitiwiteit (3.9mg/LSB @2g) bied 'n hoë presisie-uitset van tot ± 16g.

Hoe werk ADXL345

Die ADXL345 bespeur die versnelling met die sensingkomponent aan die voorkant, en dan verander die komponent van die elektriese seinwaarneming dit in 'n analoog, elektriese sein. Vervolgens sal die AD -adapter wat op die module geïntegreer is, die analoog sein na digitale omskakel.

Die X_OUT, Y_OUT en Z_OUT is die waardes onderskeidelik op die X-, Y- en Z -as. Plaas die module na bo: Z_OUT kan hoogstens +1g bereik, die minimum van X_OUT is -1g in die rigting van die byl, en die minimum van Y_OUT is -1g in die rigting van Ay. Aan die ander kant, draai die module onderstebo: die minimum van Z_OUT is -1g, die maksimum van X_OUT is +1g in die rigting van die byl, en die maksimum van Y_OUT is +1g in die rigting van Ay., soos hieronder getoon. Draai die ADXL345 -module en u sien die verandering van drie waardes.

as kanaal A van hoë na lae vlak verander, as kanaal B 'n hoë vlak is, dui dit aan dat die draaikodeerder met die kloksgewys draai (CW); as kanaal B op daardie oomblik laag is, beteken dit dat dit linksom draai (CCW). As ons dus die waarde van kanaal B lees as kanaal A laag is, kan ons weet in watter rigting die roterende enkodeerder draai.

Beginsel: Sien die skematiese diagram van die Rotary Encoder -module hieronder. Daaruit kan ons sien dat pen 3 van die roterende encoder, naamlik CLK op die module, kanaal B. Pin 5, wat DT is, kanaal A. Om die rotasie rigting van die recorder te ken, lees net die waarde van CLK en DT.

Daar is 'n 3.3V -spanningsreguleerder -chip in die stroombaan, sodat u die module met 5V of 3.3V kan voed.

Aangesien SDO aan GND gekoppel is, is die I2C -adres van die ADXL345 0x53, 0xA6 vir skryf, 0xA7 vir lees

Speldfunksie van ADXL345 -module.

Stap 3: Prosedures

Stap 1. Bou die stroombaan.

Stap 2:

Laai die kode af van

Stap 3:

Laai die skets op na die Arduino Uno -bord

Klik op die ikoon Oplaai om die kode na die beheerbord op te laai.

As 'Klaar oplaai' onderaan die venster verskyn, beteken dit dat die skets suksesvol opgelaai is.

Nadat u dit opgelaai het, maak u Serial Monitor oop, waar u die gegewens kan sien. As die versnelling van die module verander, sal die figuur dienooreenkomstig op die venster verander.

Stap 4: Kode

Kode
Kode

// ADXL335

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

ADXL335

let wel: vcc5v, maar ADXL335 teenoor 3.3V

Die kring:

5V: VCC

analoog 0: x-as

analoog 1: y-as

analoog 2: z-as

Na die verbranding van die

program, maak die seriële monitor -ontfoutingsvenster oop, waar u kan sien hoe die bespeurde data vertoon word. As die versnelling wissel, sal die syfer dienooreenkomstig wissel.

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

/E -pos:

// Webwerf: www.primerobotics.in

const int xpin =

A0; // x-as van die versnellingsmeter

const int ypin =

A1; // y-as

const int zpin =

A2; // z-as (slegs op drie-as modelle)

leemte opstelling ()

{

// initialiseer die reekskommunikasie:

Serial.begin (9600);

}

leemte lus ()

{

int x = analogRead (xpin); // gelees van xpin

vertraging (1); //

int y = analogRead (ypin); // gelees van ypin

vertraging (1);

int z = analogRead (zpin); // gelees van zpin

float zero_G = 338,0; // ADXL335 kragbron

teenoor 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 ");

dryf

zero_Gx = 331.5; // die zero_G uitset van x -as: (x_max + x_min)/2

dryf

zero_Gy = 329.5; // die zero_G -uitvoer van y -as: (y_max + y_min)/2

float zero_Gz = 340.0; // die

zero_G uitset van z -as: (z_max + z_min)/2

vlotskaal =

67.6; // kragtoevoer teen 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67.6g

vlot skaal_x =

65; // die skaal van x -as: x_max/3.3v*330mv/g

vlot skaal_y =

68.5; // die skaal van y -as: y_max/3.3v*330mv/g

vlot skaal_z =

68; // die skaal van z -as: z_max/3.3v*330mv/g

Serial.print (((float) x

- zero_Gx)/skaal_x); // druk x -waarde op seriële monitor

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy)/scale_y); // druk y waarde op seriële monitor

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/skaal_z); // druk z -waarde op seriële monitor uit

Serial.print ("\ n");

vertraging (1000); // wag vir 1 sekonde

}

Stap 5: Kode -analise

Die kode vir die ADXL345 -eksperiment bevat drie dele: initialiseer elke poort en toestel, verkry en stoor data wat vanaf die sensors gestuur word, en omskakel die data.

Aanbeveel: