Cum Să Citești Cu Arduino Cele Trei Axe Ale Senzorului ADXL335

ADXL335 este un senzor care măsoară accelerația produsa pe 3 axe. Senzorul nu depășește dimensiunile unei monede de 50 de bani și are un consum mic de energie.

Senzoul accelerometru este folosit în aplicații unde este necesară detectarea înclinarii robotului, precum și accelerarea dinamică rezultată din mișcare, șocuri sau vibrații.

ADXL335 necesită o sursă de alimentare de 3.3V. Cele trei ieșiri sunt pentru fiecare axă in parte: X, Y și Z. Toate cele trei ieșiri sunt analogice și, prin urmare, vom folosi pentru citirea valorilor convertorul analog-digital de pe placa Arduino.

Cum trebuie conectat senzorul ADXL335 la placa Arduino UNO

  • GND senzor la pinul GND Arduino UNO
  • VCC senzor la pinul 3.3V Arduino UNO
  • Pinul X-OUT la pinul A0 Arduino UNO
  • Pinul Y-OUT la pinul A1 Arduino UNO
  • Pinul Z-OUT la pinul A2 Arduino UNO
Cum să conectezi senzorul ADXL335 la Arduino UNO

Cum să conectezi senzorul ADXL335 la Arduino UNO

Sketch-ul pentru Arduino UNO

/*
 * @file         ADXL335 si Arduino UNO
 * @author       Calinezu.ro / Calin Dragos
 * @version      V1.0
 * @date         22.02.2017
 * @description  Acest sketch Arduino returneaza cele trei axe ale senzorului ADXL335

 */

//definire pini 
const int xPin = 0;
const int yPin = 1;
const int zPin = 2;

//Valorile minime si maxime care pot fi citite in timp ce senzorul nu este in miscare
//Aceste valori pot fi modificate
int minVal = 265;
int maxVal = 402;


//definire variabile pentru calcule ulterioare
double x;
double y;
double z;


void setup(){
  Serial.begin(9600); 
}


void loop(){

  //citeste valorile analogice de la senzor
  int xRead = analogRead(xPin);
  int yRead = analogRead(yPin);
  int zRead = analogRead(zPin);

  //convertire valori citite intre -90 si 90 de grade
  int xAng = map(xRead, minVal, maxVal, -90, 90);
  int yAng = map(yRead, minVal, maxVal, -90, 90);
  int zAng = map(zRead, minVal, maxVal, -90, 90);

  //calcul la 360 de grade
  //convertire din radian in grade
  x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
  y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
  z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);

  //Afisare valori
  Serial.print("x: ");
  Serial.print(x);
  Serial.print(" | y: ");
  Serial.print(y);
  Serial.print(" | z: ");
  Serial.println(z);

  delay(100);//un pic de repaos pentru iesirile seriale
}

Exemplu de valori returnate de senzorul accelerometru pentru axele X, Y, și Z:

Exemplu de valori returnate de senzorul accelerometru pe cele trei axe ale sale

Exemplu de valori returnate de senzorul accelerometru pe cele trei axe ale sale

Leave a Reply

Câmpurile obligatorii sunt marcate cu *.