Turinys:
- 1 žingsnis: komponentai
- 2 žingsnis: principas
- 3 žingsnis: procedūros
- 4 žingsnis: kodas
- 5 žingsnis: kodo analizė
Video: ADXL345 „Arduino Uno R3“naudojimas: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Š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
// 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:
„Mifare Ultralight C“naudojimas su „RC522“„Arduino“: 3 žingsniai
„Mifare Ultralight C“naudojimas su „RC522“„Arduino“: RFID technologijos naudojimas kortelių turėtojams atpažinti arba įgalioti ką nors daryti (atidaryti duris ir pan.) Yra gana įprastas metodas. „Pasidaryk pats“atveju RC522 modulis yra plačiai naudojamas, nes jis yra gana pigus ir šiam moduliui yra daug kodo. Aš
Infraraudonųjų spindulių jutiklio naudojimas su „Arduino“: 8 žingsniai (su nuotraukomis)
Infraraudonųjų spindulių jutiklio naudojimas su „Arduino“: kas yra infraraudonųjų spindulių (dar žinomas kaip IR) jutiklis? IR jutiklis yra elektroninis prietaisas, kuris nuskaito IR signalus tam tikruose standartų apibrėžtuose dažnių diapazonuose ir paverčia juos elektriniais signalais išvesties kaištyje (paprastai vadinamas signalo kaiščiu) . IR signalas
STM32 naudojimas kaip „Arduino“pamoka - STM32F103C8: 5 žingsniai
STM32 naudojimas kaip „Arduino“pamoka | STM32F103C8: Ei, kas vyksta, vaikinai! Akarsh čia iš „CETech“. Šioje pamokoje apžvelgsime skirtingus STM siūlomus mikrovaldiklius, tokius kaip STM32F103C8, STM32F030F4 ir STM8S103F3. Mes lyginsime šiuos mikroskopus tarpusavyje kartu su
Piešimo roboto naudojimas „Arduino“su kodo valandos pamokomis: 3 žingsniai
Piešimo roboto naudojimas „Arduino“su kodo valandos pamokomis: Sukūriau „Arduino“piešimo robotą dirbtuvėms, kad padėčiau paauglėms merginoms susidomėti STEM temomis (žr. Https://www.instructables.com/id/Arduino-Drawing-Robot/ ). Robotas buvo sukurtas naudoti vėžlio stiliaus programavimo komandas, tokias kaip priekis (distanc
„Arduino Uno“naudojimas 6 DOF robotų rankos XYZ pozicionavimui: 4 žingsniai
„Arduino Uno“naudojimas 6 DOF robotų rankos XYZ pozicionavimui: Šis projektas skirtas trumpam ir palyginti paprastam „Arduino“eskizui įgyvendinti, kad būtų galima nustatyti XYZ atvirkštinę kinematinę padėtį. Aš sukūriau 6 servo robotų ranką, bet kai reikėjo rasti programinę įrangą, kad ją paleisti, ten nebuvo daug, išskyrus saugojimą