Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
ADXL345 është një akselerometër i vogël, i hollë, me fuqi ultra të ulët, me 3 boshte me matje me rezolucion të lartë (13-bit) deri në ± 16 g. Të dhënat dalëse dixhitale janë të formatuara si plotësuese 16-bitësh dy dhe janë të arritshme përmes ndërfaqes dixhitale I2 C. Mat mat nxitimin statik të gravitetit në aplikimet e ndjeshmërisë së pjerrësisë, si dhe nxitimin dinamik që rezulton nga lëvizja ose goditja. Rezolucioni i tij i lartë (3.9 mg/LSB) mundëson matjen e ndryshimeve të prirjes më pak se 1.0 °.
Në këtë tutorial është ilustruar ndërfaqja e modulit të sensorit ADXL345 me fotonin e grimcave. Për të lexuar vlerat e nxitimit, ne kemi përdorur grimcë me një përshtatës I2c. Ky përshtatës I2C e bën lidhjen me modulin e sensorit të lehtë dhe më të besueshëm.
Hapi 1: Kërkohet harduer:
Materialet që na duhen për të arritur qëllimin tonë përfshijnë përbërësit e mëposhtëm të harduerit:
1. ADXL345
2. Fotoni i grimcave
3. Kabllo I2C
4. Mburoja I2C për fotonin e grimcave
Hapi 2: Bashkimi i harduerit:
Seksioni i lidhjes së harduerit në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe fotonit të grimcave. Sigurimi i lidhjeve të sakta është nevoja themelore gjatë punës në çdo sistem për daljen e dëshiruar. Pra, lidhjet e nevojshme janë si më poshtë:
ADXL345 do të funksionojë mbi I2C. Këtu është shembulli i diagramit të instalimeve elektrike, duke demonstruar se si të lidhni secilën ndërfaqe të sensorit.
Jashtë kutisë, bordi është i konfiguruar për një ndërfaqe I2C, si i tillë ne rekomandojmë përdorimin e këtij bashkimi nëse përndryshe jeni agnostik.
Gjithçka që ju nevojitet janë katër tela! Vetëm katër lidhje kërkohen kunjat Vcc, Gnd, SCL dhe SDA dhe këto janë të lidhura me ndihmën e kabllit I2C.
Këto lidhje demonstrohen në fotot e mësipërme.
Hapi 3: Kodi për Matjen e Përshpejtimit:
Le të fillojmë me kodin e grimcave tani.
Ndërsa përdorim modulin e sensorit me grimcën, ne përfshijmë bibliotekën application.h dhe spark_wiring_i2c.h. Biblioteka "application.h" dhe spark_wiring_i2c.h përmban funksione të cilat lehtësojnë komunikimin i2c midis sensorit dhe grimcës.
I gjithë kodi i grimcave është dhënë më poshtë për lehtësinë e përdoruesit:
#përfshi
#përfshi
// Adresa ADXL345 I2C është 0x53 (83)
#përcaktoni Addr 0x53
int xAccl = 0, yAccl = 0, zAccl = 0;
void setup ()
{
// Vendos ndryshoren
Particle.variable ("i2cdevice", "ADXL345");
Grimca. E ndryshueshme ("xAccl", xAccl);
Particle.variable ("yAccl", yAccl);
Particle.variable ("zAccl", zAccl);
// Filloni komunikimin I2C si MASTER
Wire.begin ();
// Filloni komunikimin serik, vendosur normën e baudit = 9600
Serial.filloj (9600);
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidhni regjistrin e normës së gjerësisë së brezit
Wire.write (0x2C);
// Zgjidhni shkallën e të dhënave të daljes = 100 Hz
Wire.write (0x0A);
// Ndaloni Transmetimin I2C
Wire.endTransmission ();
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidhni regjistrin e kontrollit të energjisë
Wire.write (0x2D);
// Zgjidh auto gjumë çaktivizo
Wire.write (0x08);
// Ndaloni transmetimin I2C
Wire.endTransmission ();
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidh regjistrin e formatit të të dhënave
Wire.write (0x31);
// Zgjidhni rezolucionin e plotë, +/- 2g
Wire.write (0x08);
// Përfundoni transmetimin I2C
Wire.endTransmission ();
vonesë (300);
}
lak void ()
{
të dhëna int të panënshkruara [6];
për (int i = 0; i <6; i ++)
{
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidh regjistrin e të dhënave
Wire.write ((50+i));
// Ndaloni transmetimin I2C
Wire.endTransmission ();
// Kërkoni 1 bajt të dhëna nga pajisja
Tela. Kërkohet Nga (Addr, 1);
// Lexoni 6 bajt të dhëna
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
nëse (Wire.available () == 1)
{
të dhënat = Wire.read ();
}
vonesë (300);
}
// Shndërroni të dhënat në 10-bit
int xAccl = (((të dhënat [1] & 0x03) * 256) + të dhënat [0]);
nëse (xAccl> 511)
{
xAccl -= 1024;
}
int yAccl = (((të dhënat [3] & 0x03) * 256) + të dhënat [2]);
nëse (yAccl> 511)
{
yAccl -= 1024;
}
int zAccl = (((të dhënat [5] & 0x03) * 256) + të dhënat [4]);
nëse (zAccl> 511)
{
zAccl -= 1024;
}
// Dalja e të dhënave në pult
Particle.publish ("Përshpejtimi në Boshtin X është:", String (xAccl));
Particle.publish ("Përshpejtimi në Boshtin Y është:", String (yAccl));
Particle.publish ("Përshpejtimi në Boshtin Z është:", String (zAccl));
}
Funksioni Particle.variable () krijon variablat për të ruajtur daljen e sensorit dhe funksioni Particle.publish () shfaq daljen në pultin e faqes.
Dalja e sensorit tregohet në figurën e mësipërme për referencën tuaj.
Hapi 4: Aplikimet:
ADXL345 është një akselerometër i vogël, i hollë, me ultra të ulët, me 3 boshte i cili mund të përdoret në Celularë, instrumente mjekësorë etj. Aplikimi i tij përfshin gjithashtu pajisje për lojëra dhe tregues, instrumente industriale, pajisje të navigimit personal dhe mbrojtje nga hard disku (HDD).