Inhoudsopgave:

ADXL345 Arduino Uno R3 gebruiken: 5 stappen
ADXL345 Arduino Uno R3 gebruiken: 5 stappen

Video: ADXL345 Arduino Uno R3 gebruiken: 5 stappen

Video: ADXL345 Arduino Uno R3 gebruiken: 5 stappen
Video: How to Interface ADXL345 Accelerometer with Arduino UNO 2024, November
Anonim
ADXL345 Arduino Uno R3 gebruiken
ADXL345 Arduino Uno R3 gebruiken

In deze les leren we hoe we de acceleratiesensor ADXL345 kunnen gebruiken.

Stap 1: Componenten

- Arduino Uno-bord * 1

- USB-kabel * 1

-ADXL345 *1

- Broodplank * 1

- Jumper draden

Stap 2: Principe

Een versnellingsmeter wordt gebruikt om de kracht te meten die tijdens de versnelling wordt gegenereerd. De meest fundamentele is de algemeen bekende versnelling van de zwaartekracht die 1 g is.

Door de versnelling te meten die wordt veroorzaakt door de zwaartekracht, kunt u de hellingshoek van het apparaat ten opzichte van het vlakke oppervlak berekenen. Door de dynamische versnelling te analyseren, kunt u zien hoe het apparaat beweegt. Een zelfbalancerend bord of hoverboard past bijvoorbeeld de versnellingssensor en gyroscoop toe voor Kalman-filter en houdingscorrectie.

ADXL345

De ADXL345 is een kleine, dunne, energiezuinige 3-assige accelerometer met een hoge resolutie (13-bit) meting tot ±16 g. Digitale uitvoergegevens zijn geformatteerd als 16-bits two's complement en zijn toegankelijk via een SPI (3- of 4-draads) of I2C digitale interface. In dit experiment wordt de I2C digitale interface gebruikt.

Het is zeer geschikt om de statische versnelling van de zwaartekracht te meten in tilt-sensing toepassingen, evenals dynamische versnelling als gevolg van beweging of schokken. Zijn hoge resolutie (4 mg/LSB) maakt het meten van hellingsverandering met minder dan 1,0° mogelijk. En de uitstekende gevoeligheid (3,9 mg/LSB @2g) zorgt voor een uiterst nauwkeurige uitvoer tot ±16g.

Hoe ADXL345 werkt

De ADXL345 detecteert de versnelling met de sensorcomponent aan de voorkant, en vervolgens verandert de elektrische signaaldetectiecomponent deze in een elektrisch signaal, dat analoog is. Vervolgens zal de AD-adapter die op de module is geïntegreerd, het analoge signaal omzetten in een digitaal signaal.

De X_OUT, Y_OUT en Z_OUT zijn respectievelijk de waarden op de X-, Y- en Z-as. Plaats de module met de afbeelding naar boven: Z_OUT kan maximaal +1g bereiken, het minimum van X_OUT is -1g in de richting van Ax en het minimum van Y_OUT is -1g in de richting van Ay. Aan de andere kant, draai de module ondersteboven: het minimum van Z_OUT is -1g, het maximum van X_OUT is +1g in de richting van Ax en het maximum van Y_OUT is +1g in de richting van Ay., zoals hieronder weergegeven. Draai de ADXL345-module en je ziet de verandering van drie waarden.

wanneer kanaal A verandert van hoog niveau naar laag niveau, als kanaal B hoog niveau is, geeft dit aan dat de encoder met de klok mee draait (CW); als kanaal B op dat moment laag is, betekent dit dat het tegen de klok in draait (CCW). Dus als we de waarde van kanaal B lezen wanneer kanaal A een laag niveau heeft, kunnen we weten in welke richting de roterende encoder draait.

Principe: Zie het schema van de Rotary Encoder-module hieronder. Hieruit kunnen we zien dat pin 3 van de roterende encoder, namelijk CLK op de module, kanaal B is. Pin 5, dat is DT, is kanaal A. Om de draairichting van de recorder te kennen, lees je gewoon de waarde van CLK en DT.

Er zit een 3.3v spanningsregelaarchip in het circuit, zodat je de module kunt voeden met 5V of 3.3V.

Aangezien SDO is verbonden met GND, is het I2C-adres van de ADXL345 0x53, 0xA6 voor schrijven, 0xA7 voor lezen

Pinfunctie van ADXL345-module.

Stap 3: Procedures

Stap 1. Bouw het circuit.

Stap 2:

Download de code van

Stap 3:

Upload de schets naar het Arduino Uno-bord

Klik op het pictogram Uploaden om de code naar de besturingskaart te uploaden.

Als "Klaar met uploaden" onderaan het venster verschijnt, betekent dit dat de schets succesvol is geüpload.

Open na het uploaden Serial Monitor, waar u de gedetecteerde gegevens kunt zien. Wanneer de versnelling van de module verandert, verandert het cijfer op het venster dienovereenkomstig.

Stap 4: Coderen

Code
Code

//ADXL335

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

ADXL335

opmerking:vcc5v, maar ADXL335 Vs is 3,3 V

Het circuit:

5V: VCC

analoog 0: x-as

analoog 1: y-as

analoog 2: z-as

Na het verbranden van de

programma, opent u het debugging-venster van de seriële monitor, waar u kunt zien dat de gedetecteerde gegevens worden weergegeven. Wanneer de versnelling varieert, zal het cijfer dienovereenkomstig variëren.

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

/E-mail:

// Website: www.primerobotics.in

const int xpin =

A0; // x-as van de versnellingsmeter

const int ypin =

A1; // y-as

const int zpin =

A2; // z-as (alleen op 3-assige modellen)

ongeldige setup()

{

// initialiseer de seriële communicatie:

Serieel.begin(9600);

}

lege lus()

{

int x = analoog lezen (xpin); // lees van xpin

vertraging(1); //

int y = analoogRead(ypin); // lees van ypin

vertraging(1);

int z = analoog lezen (zpin); // lees van zpin

zweven nul_G = 338,0; //ADXL335 voeding

door versus 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");

vlot

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

vlot

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

float zero_Gz=340.0;//the

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

vlotterschaal =

67,6;// voeding door versus 3,3 V: 3,3 v /5 v * 1024 / 3,3 v * 330 mv/g = 67,6 g

float scale_x =

65;//de schaal van x-as: x_max/3.3v*330mv/g

float scale_y =

68.5;//de schaal van de y-as: y_max/3.3v*330mv/g

float scale_z =

68;//de schaal van de z-as: z_max/3.3v*330mv/g

Serial.print(((float)x

- zero_Gx)/scale_x); // print x-waarde op seriële monitor

Serieel.print("\t");

Serial.print(((float)y

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

Serieel.print("\t");

Serial.print(((float)z

- zero_Gz)/scale_z); // print z-waarde op seriële monitor

Serieel.print("\n");

vertraging (1000); // wacht 1 seconde

}

Stap 5: Code-analyse

De code voor het ADXL345-experiment bestaat uit 3 delen: initialiseer elke poort en elk apparaat, verkrijg en bewaar gegevens die door de sensoren worden verzonden, en converteer de gegevens.

Aanbevolen: