Turinys:

ADXL345 „Arduino Uno R3“naudojimas: 5 žingsniai
ADXL345 „Arduino Uno R3“naudojimas: 5 žingsniai

Video: ADXL345 „Arduino Uno R3“naudojimas: 5 žingsniai

Video: ADXL345 „Arduino Uno R3“naudojimas: 5 žingsniai
Video: How to Interface ADXL345 Accelerometer with Arduino UNO 2024, Lapkritis
Anonim
ADXL345 naudojant „Arduino Uno R3“
ADXL345 naudojant „Arduino Uno R3“

Šioje pamokoje mes išmoksime naudoti pagreičio jutiklį ADXL345.

1 žingsnis: komponentai

- „Arduino Uno“lenta * 1

- USB kabelis * 1

- ADXL345 *1

- Duonos lenta * 1

- jungiamieji laidai

2 žingsnis: principas

Akselerometras naudojamas pagreičio metu susidarančiai jėgai matuoti. Svarbiausias yra plačiai žinomas gravitacijos pagreitis, kuris yra 1 g.

Išmatuodami gravitacijos sukeltą pagreitį, galite apskaičiuoti prietaiso pasvirimo kampą į lygų paviršių. Analizuodami dinaminį pagreitį, galite pasakyti, kaip prietaisas juda. Pavyzdžiui, savaiminio balansavimo lenta arba hoverboard naudoja pagreičio jutiklį ir giroskopą Kalmano filtrui ir laikysenos korekcijai.

ADXL345

ADXL345 yra mažas, plonas, mažos galios, 3 ašių akselerometras, kurio skiriamoji geba (13 bitų) yra iki ± 16 g. Skaitmeniniai išvesties duomenys yra suformatuoti kaip dviejų bitų 16 bitų papildas ir yra prieinami per SPI (3 arba 4 laidų) arba I2C skaitmeninę sąsają. Šiame eksperimente naudojama I2C skaitmeninė sąsaja.

Jis puikiai tinka statiniam gravitacijos pagreičiui matuoti pasvirimo jutiklyje, taip pat dinaminiam pagreičiui, atsirandančiam dėl judesio ar smūgio. Didelė skiriamoji geba (4 mg/LSB) leidžia matuoti nuolydžio pokytį mažiau nei 1,0 °. Puikus jautrumas (3,9 mg/LSB @2g) užtikrina labai tikslų, iki ± 16 g, išvestį.

Kaip veikia ADXL345

ADXL345 aptinka pagreitį su jutikliu, esančiu priekyje, o tada elektrinio signalo jutiklis pakeičia jį į elektrinį signalą, kuris yra analoginis. Tada į modulį integruotas AD adapteris analoginį signalą pavers skaitmeniniu.

X_OUT, Y_OUT ir Z_OUT yra reikšmės atitinkamai X, Y ir Z ašyse. Įdėkite modulį į viršų: Z_OUT gali pasiekti ne daugiau kaip +1 g, mažiausiai X_OUT yra -1 g ašies kryptimi, o mažiausias Y_OUT --1 g Ay kryptimi. Kita vertus, apverskite modulį aukštyn kojomis: minimalus Z_OUT yra -1 g, didžiausias X_OUT yra +1 g ašies krypties atžvilgiu, o didžiausias -Y 1 išėjimo kryptis Ay kryptimi., kaip parodyta žemiau. Pasukite ADXL345 modulį ir pamatysite trijų verčių pasikeitimą.

kai kanalas A pasikeičia iš aukšto lygio į žemą, jei kanalas B yra aukštas, tai rodo, kad sukamasis kodavimo įrenginys sukasi pagal laikrodžio rodyklę (CW); jei tuo metu B kanalas yra žemo lygio, tai reiškia, kad jis sukasi prieš laikrodžio rodyklę (CCW). Taigi, jei perskaitysime kanalo B vertę, kai A kanalas yra žemo lygio, galime žinoti, kuria kryptimi sukasi sukamasis kodavimo įrenginys.

Principas: Žiūrėkite žemiau esančią rotacinio kodavimo modulio schemą. Iš jo matome, kad rotacinio kodavimo įrenginio 3 kaištis, būtent modulio CLK, yra kanalas B. 5 kaištis, kuris yra DT, yra kanalas A. Norėdami žinoti registratoriaus sukimosi kryptį, tiesiog perskaitykite CLK ir DT.

Grandinėje yra 3,3 V įtampos reguliatoriaus lustas, todėl modulį galite maitinti 5 V arba 3,3 V.

Kadangi SDO buvo prijungtas prie GND, ADXL345 I2C adresas yra 0x53, 0xA6 rašymui, 0xA7 skaitymui

ADXL345 modulio kaiščio funkcija.

3 žingsnis: procedūros

Žingsnis 1. Sukurkite grandinę.

2 žingsnis:

Atsisiųskite kodą iš

3 žingsnis:

Įkelkite eskizą į „Arduino Uno“lentą

Spustelėkite įkėlimo piktogramą, kad įkeltumėte kodą į valdymo skydelį.

Jei lango apačioje rodoma „Įkeltas“, eskizas sėkmingai įkeltas.

Įkėlę atidarykite „Serial Monitor“, kur galite pamatyti aptiktus duomenis. Pasikeitus modulio pagreičiui, langas atitinkamai pasikeis.

4 žingsnis: kodas

Kodas
Kodas

// ADXL335

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

ADXL335

pastaba: vcc5v, bet ADXL335 Vs yra 3.3V

Grandinė:

5V: VCC

analogas 0: x ašis

1 analogas: y ašis

2 analogas: z ašis

Po deginimo

programą, atidarykite serijinio monitoriaus derinimo langą, kuriame galite matyti aptiktus duomenis. Kai pagreitis kinta, skaičius atitinkamai skirsis.

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

/El. Paštas:

// Svetainė: www.primerobotics.in

const int xpin =

A0; // akselerometro x ašis

const int ypin =

A1; // y ašis

const int zpin =

A2; // z ašis (tik 3 ašių modeliuose)

negaliojanti sąranka ()

{

// inicijuoti nuoseklųjį ryšį:

Serial.begin (9600);

}

tuštumos kilpa ()

{

int x = analogRead (xpin); // skaityti iš xpin

uždelsimas (1); //

int y = analogRead (ypin); // skaityti iš ypin

uždelsimas (1);

int z = analogRead (zpin); // skaityti iš zpin

plūdė nulis_G = 338,0; // ADXL335 maitinimo šaltinis

pagal Vs 3.3V: 3.3V/5V*1024 = 676/2 = 338

// Serijos.spaudas (x);

//Serijinis.spaudas ("\t ");

// Serijos.spaudas (y);

//Serijinis.spaudas ("\t ");

// serijinis.spaudas (z);

//Serijinis.printas ("\n ");

plūdė

zero_Gx = 331.5; // x ašies nulinis_G išėjimas: (x_max + x_min)/2

plūdė

zero_Gy = 329,5; // y ašies nulis_G išėjimas: (y_max + y_min)/2

float zero_Gz = 340.0; //

z ašies nulinis_G išėjimas: (z_max + z_min)/2

plūdės skalė =

67,6; // maitinimo šaltinis Vs 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67,6g

plūdės skalė_x =

65; // x ašies skalė: x_max/3.3v*330mv/g

plūdės skalė_y =

68,5; // y ašies skalė: y_max/3.3v*330mv/g

plūdės skalė_z =

68; // z ašies skalė: z_max/3.3v*330mv/g

Serijinis atspaudas (((plūdė) x

- nulis_Gx)/skalė_x); // spausdinti x reikšmę serijiniame monitoriuje

Serial.print ("\ t");

Serijinis atspaudas (((plūdė) y

- nulis_Gy)/skala_y); // spausdinti y reikšmę serijiniame monitoriuje

Serial.print ("\ t");

Serijinis atspaudas (((plūdė) z

- nulis_Gz)/skalė_z); // spausdinti z reikšmę serijiniame monitoriuje

Serial.print ("\ n");

vėlavimas (1000); // palaukite 1 sekundę

}

5 žingsnis: kodo analizė

ADXL345 eksperimento kodą sudaro 3 dalys: inicijuoti kiekvieną prievadą ir įrenginį, gauti ir saugoti duomenis, siunčiamus iš jutiklių, ir konvertuoti duomenis.

Rekomenduojamas: