Innehållsförteckning:

ADXL345 Använda Arduino Uno R3: 5 steg
ADXL345 Använda Arduino Uno R3: 5 steg

Video: ADXL345 Använda Arduino Uno R3: 5 steg

Video: ADXL345 Använda Arduino Uno R3: 5 steg
Video: Акселерометр ADXL 345 + Servo мотор SG90 - Arduino! 2024, Juli
Anonim
ADXL345 Använda Arduino Uno R3
ADXL345 Använda Arduino Uno R3

I den här lektionen lär vi oss hur man använder accelerationssensorn ADXL345.

Steg 1: Komponenter

- Arduino Uno board * 1

- USB -kabel * 1

- ADXL345 *1

- Brödbräda * 1

- Tröjor

Steg 2: Princip

En accelerometer används för att mäta kraften som genereras under accelerationen. Det mest grundläggande är den allmänt kända tyngdaccelerationen som är 1 g.

Genom att mäta accelerationen som orsakas av gravitation kan du beräkna enhetens lutningsvinkel mot den plana ytan. Genom att analysera den dynamiska accelerationen kan du berätta hur enheten rör sig. Till exempel tillämpar självbalanseringskort eller hoverboard accelerationssensorn och gyroskopet för Kalman-filter och hållningskorrigering.

ADXL345

ADXL345 är en liten, tunn, lågeffekt, 3-axlig accelerometer med hög upplösning (13-bitars) mätning på upp till ± 16 g. Digital utdata formateras som 16-bitars tvåkomplement och kan nås antingen via ett SPI (3- eller 4-trådars) eller I2C digitalt gränssnitt. I detta experiment används det digitala gränssnittet I2C.

Den är väl lämpad att mäta den statiska tyngdaccelerationen i lutningsavkännande applikationer, liksom dynamisk acceleration till följd av rörelse eller stötar. Dess höga upplösning (4 mg/LSB) möjliggör lutningsändringsmätning med mindre än 1,0 °. Och den utmärkta känsligheten (3,9 mg/LSB @2g) ger en hög precision på upp till ± 16g.

Hur fungerar ADXL345

ADXL345 detekterar accelerationen med avkänningskomponenten längst fram, och sedan ändrar den elektriska signalavkänningskomponenten den till en elektrisk signal, som är analog. Därefter omvandlar den AD -adapter som är integrerad på modulen den analoga signalen till en digital.

X_OUT, Y_OUT och Z_OUT är värdena på X-, Y- och Z -axeln. Placera modulen med framsidan uppåt: Z_OUT kan högst uppgå till +1 g, minsta X_OUT är -1 g mot axelriktningen och minsta Y_OUT är -1 g mot Ay -riktningen. Å andra sidan, vänd upp och ner på modulen: lägsta Z_OUT är -1g, max X_OUT är +1g mot axelriktningen och maximalt för Y_OUT är +1g mot Ay -riktningen., enligt nedanstående. Vrid på ADXL345 -modulen så ser du ändringen av tre värden.

när kanal A ändras från hög till låg nivå, om kanal B är hög nivå, indikerar den att roterande kodare snurrar medurs (CW); om kanal B är låg i det ögonblicket betyder det snurr moturs (CCW). Så om vi läser värdet på kanal B när kanal A är låg, kan vi veta i vilken riktning den roterande kodaren roterar.

Princip: Se det schematiska diagrammet för Rotary Encoder -modulen nedan. Därifrån kan vi se att stift 3 på den roterande kodaren, nämligen CLK på modulen, är kanal B. Stift 5, som är DT, är kanal A. För att känna till inspelarens rotationsriktning, läs bara värdet på CLK och DT.

Det finns ett 3.3V spänningsregulatorchip i kretsen, så du kan driva modulen med 5V eller 3.3V.

Eftersom SDO har anslutits till GND är I2C -adressen för ADXL345 0x53, 0xA6 för skrivning, 0xA7 för läsning

Stiftfunktion för ADXL345 -modulen.

Steg 3: Förfaranden

Steg 1. Bygg kretsen.

Steg 2:

Ladda ner koden från

Steg 3:

Ladda upp skissen till Arduino Uno -kortet

Klicka på ikonen Ladda upp för att ladda upp koden till kontrollkortet.

Om "Klar överföring" visas längst ned i fönstret betyder det att skissen har laddats upp.

Efter överföringen öppnar du Serial Monitor, där du kan se data som upptäckts. När accelerationen för modulen ändras kommer figuren att ändras i enlighet med fönstret.

Steg 4: Kod

Koda
Koda

// ADXL335

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

ADXL335

Obs: vcc5v, men ADXL335 Vs är 3.3V

Kretsen:

5V: VCC

analog 0: x-axel

analog 1: y-axel

analog 2: z-axel

Efter att ha bränt

program, öppna det seriella bildskärmsfelsökningsfönstret, där du kan se data som upptäckts visas. När accelerationen varierar kommer siffran att variera därefter.

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

/E-post:

// Webbplats: www.primerobotics.in

const int xpin =

A0; // x-axeln för accelerometern

const int ypin =

A1; // y-axel

const int zpin =

A2; // z-axel (endast på 3-axliga modeller)

void setup ()

{

// initiera seriekommunikationen:

Serial.begin (9600);

}

void loop ()

{

int x = analogRead (xpin); // läst från xpin

fördröjning (1); //

int y = analogRead (ypin); // läst från ypin

fördröjning (1);

int z = analogRead (zpin); // läst från zpin

float zero_G = 338,0; // ADXL335 strömförsörjning

med Vs 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 ");

flyta

zero_Gx = 331,5; // noll_G -utgången för x -axeln: (x_max + x_min)/2

flyta

zero_Gy = 329,5; // noll_G -utmatningen för y -axeln: (y_max + y_min)/2

floate zero_Gz = 340.0; // the

zero_G -utmatning av z -axeln: (z_max + z_min)/2

flottörskala =

67,6; // strömförsörjning med Vs 3,3V: 3,3v/5v *1024/3,3v *330mv/g = 67,6g

float skala_x =

65; // skalan för x -axeln: x_max/3,3v*330mv/g

float scale_y =

68,5; // skalan på y -axeln: y_max/3,3v*330mv/g

float skala_z =

68; // skalan för z -axeln: z_max/3,3v*330mv/g

Serial.print (((float) x

- zero_Gx)/scale_x); // skriv ut x -värde på seriell bildskärm

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy)/scale_y); // skriv ut y -värde på seriell bildskärm

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // skriv ut z -värde på seriell bildskärm

Serial.print ("\ n");

fördröjning (1000); // vänta i 1 sekund

}

Steg 5: Kodanalys

Koden för ADXL345 -experimentet innehåller tre delar: initiera varje port och enhet, hämta och lagra data som skickas från sensorerna och konvertera data.

Rekommenderad: