Kazalo:

ADXL345 Uporaba Arduino Uno R3: 5 korakov
ADXL345 Uporaba Arduino Uno R3: 5 korakov

Video: ADXL345 Uporaba Arduino Uno R3: 5 korakov

Video: ADXL345 Uporaba Arduino Uno R3: 5 korakov
Video: Акселерометр ADXL 345 + Servo мотор SG90 - Arduino! 2024, November
Anonim
ADXL345 Uporaba Arduino Uno R3
ADXL345 Uporaba Arduino Uno R3

V tej lekciji se bomo naučili uporabljati senzor pospeška ADXL345.

1. korak: Komponente

- plošča Arduino Uno * 1

- USB kabel * 1

- ADXL345 *1

- Okvir * 1

- Mostične žice

2. korak: Načelo

Merilnik pospeška se uporablja za merjenje sile, ki nastane med pospeševanjem. Najbolj temeljni je splošno znani pospešek gravitacije, ki znaša 1 g.

Z merjenjem pospeška, ki ga povzroča gravitacija, lahko izračunate kot nagiba naprave do ravni površine. Z analizo dinamičnega pospeška lahko ugotovite, kako se naprava premika. Na primer, samo uravnoteževalna plošča ali hoverboard uporablja senzor pospeška in žiroskop za Kalmanov filter in popravljanje drže.

ADXL345

ADXL345 je majhen, tanek, 3-osni merilnik pospeška z nizko porabo energije z visoko ločljivostjo (13-bitnimi) meritvami do ± 16 g. Digitalni izhodni podatki so oblikovani kot 16-bitno dopolnilo dveh in so dostopni prek SPI (3- ali 4-žičnega) ali I2C digitalnega vmesnika. V tem poskusu se uporablja digitalni vmesnik I2C.

Zelo primeren je za merjenje statičnega pospeška gravitacije v aplikacijah za zaznavanje nagiba, pa tudi dinamičnega pospeška, ki je posledica gibanja ali udarca. Njegova visoka ločljivost (4 mg/LSB) omogoča merjenje spremembe naklona za manj kot 1,0 °. Odlična občutljivost (3,9 mg/LSB pri 2 g) zagotavlja visoko natančnost do ± 16 g.

Kako deluje ADXL345

ADXL345 zazna pospešek s komponento zaznavanja na sprednji strani, nato pa jo komponenta zaznavanja električnega signala spremeni v električni signal, ki je analogen. Nato AD adapter, vgrajen v modul, pretvori analogni signal v digitalni.

X_OUT, Y_OUT in Z_OUT so vrednosti na osi X, Y in Z. Modul postavite z licem navzgor: Z_OUT lahko doseže največ +1 g, najmanj X_OUT je -1 g proti smeri osi, najmanjši Y_OUT pa -1 g proti smeri Ay. Po drugi strani pa modul obrnite na glavo: najmanj Z_OUT je -1 g, največ X_OUT je +1 g proti smeri osi, največ Y_OUT pa +1 g proti smeri Ay., kot je prikazano spodaj. Zavrtite modul ADXL345 in videli boste spremembo treh vrednosti.

ko kanal A preide iz visokega v nizki nivo, če je kanal B v visokem nivoju, to kaže, da se vrtljivi dajalnik vrti v smeri urinega kazalca (CW); če je v tem trenutku kanal B nizek, to pomeni, da se vrti v nasprotni smeri urinega kazalca (CCW). Če torej preberemo vrednost kanala B, ko je kanal A nizek, lahko vemo, v katero smer se vrti rotacijski dajalnik.

Načelo: Glejte shematski diagram modula rotacijskega dajalnika spodaj. Iz nje lahko vidimo, da je pin 3 rotacijskega dajalnika, in sicer CLK na modulu, kanal B. Pin 5, ki je DT, je kanal A. Če želite vedeti smer vrtenja snemalnika, samo preberite vrednost CLK in DT.

V vezju je čip regulatorja napetosti 3,3 V, zato lahko modul napajate s 5V ali 3.3V.

Ker je SDO povezan z GND, je naslov I2C ADXL345 0x53, 0xA6 za pisanje, 0xA7 za branje

Pin funkcija modula ADXL345.

3. korak: Postopki

Korak 1. Zgradite vezje.

2. korak:

Prenesite kodo s spletnega mesta

3. korak:

Skico naložite na ploščo Arduino Uno

Kliknite ikono za nalaganje, da kodo naložite na nadzorno ploščo.

Če se na dnu okna prikaže "Končano nalaganje", to pomeni, da je bila skica uspešno naložena.

Po nalaganju odprite Serial Monitor, kjer si lahko ogledate zaznane podatke. Ko se pospešek modula spremeni, se bo v oknu ustrezno spremenila tudi številka.

4. korak: Koda

Koda
Koda

// ADXL335

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

ADXL335

opomba: vcc5v, vendar je ADXL335 Vs 3.3V

Vezje:

5V: VCC

analogno 0: os x

analogni 1: os y

analog 2: os z

Po sežiganju

program, odprite okno za odpravljanje napak serijskega monitorja, kjer si lahko ogledate prikazane podatke. Ko se pospešek spreminja, se bo tudi številka ustrezno spreminjala.

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

/E-naslov:

//Spletno mesto: www.primerobotics.in

const int xpin =

A0; // os x merilnika pospeška

const int ypin =

A1; // os y

const int zpin =

A2; // os z (samo pri 3-osnih modelih)

void setup ()

{

// inicializiramo serijsko komunikacijo:

Serial.begin (9600);

}

void loop ()

{

int x = analogRead (xpin); // branje s xpina

zamuda (1); //

int y = analogRead (ypin); // branje z ypina

zamuda (1);

int z = analogRead (zpin); // branje iz zpin

plavajoča ničla_G = 338,0; // napajanje ADXL335

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

plavati

nič_Gx = 331,5; // izhod nič_G osi x: (x_max + x_min)/2

plavati

zero_Gy = 329,5; // izhod zero_G osi y: (y_max + y_min)/2

float zero_Gz = 340,0; //

zero_G izhod osi z: (z_max + z_min)/2

lebdeča lestvica =

67,6; // napajanje z Vs 3,3 V: 3,3 v/5 v *1024/3,3 v *330 mv/g = 67,6 g

lebdeča lestvica_x =

65; // merilo osi x: x_max/3,3v*330mv/g

lebdeča lestvica_y =

68,5; // merilo osi y: y_max/3,3v*330mv/g

lebdeča lestvica_z =

68; // merilo osi z: z_max/3,3v*330mv/g

Serial.print (((float) x

- nič_Gx)/merilo_x); // natisni vrednost x na serijski monitor

Serial.print ("\ t");

Serial.print (((float) y

- nič_Gy)/merilo_y); // natisnite vrednost y na serijski monitor

Serial.print ("\ t");

Serial.print (((float) z

- nič_Gz)/merilo_z); // natisnite vrednost z na serijski monitor

Serial.print ("\ n");

zamuda (1000); // počakajte 1 sekundo

}

5. korak: Analiza kode

Koda za poskus ADXL345 vključuje 3 dele: inicializira vsaka vrata in napravo, pridobi in shrani podatke, poslane s senzorjev, ter jih pretvori.

Priporočena: