Accelerometer Breakout Board – ADXL322 +/-2g

ה Accelerometer משתמש למדידת תאוצה (acceleration) או tilt, ויברציות, תנועה ומיקום. ראו תיאור בערך ב Wikipedia. הרכיבים קיימים באופק Axes אחד X, שניים Y או שלושה Z ובדרגות רגישות שונות (למשל בין 2g+ ל 2g-).
השימוש ב Accelerometer קיים כבר שנים כאלמנט נסתר ביישומים מסחריים כמו מכוניות אבל לאחרונה גם בתוך ממשקי משתמש במכשירים חדשניים כמו ה Nintendo Wii ו ה iphone.
קיימים דגמים שונים, משתנים ע”ם כמות הצירים ורגישות.


מיוצר ע”י Analog Devices. נקנה ב Sparkfun.

הכנה:
לפני תחילת העבודה יש להלחים כבלים ל4 הPIN שעל הרכיב – ל X, Y , GND, 5V

הסבר טכני:
בניית מעגל:
הרכיב הוא בעל 2 צירים – X ו Y (למרות שכתוב עליו גם Z).
החיבורים:

Accelerometer PIN Arduino PIN
X Analog PIN 0-5
Y Analog PIN 0-5
GND GND
5V 5V

תוכנה:
עקרונית, קוראים את הערכים ע”י שימוש ב AnalogRead. ראו מצגת מסיכום שיעור Analog I/O.

תוכנות דוגמא לחישוב זוית הטייה (tilt):

int xpin = 3;                   // x-axis pin
int ypin = 1;                   // y-axis pin

// varibales for holding the current angles for x and y
// The angle are from +90 to -90
int xAngle = 0;
int yAngle = 0;

// printout Delay
int printDelayCounter = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(groundpin, OUTPUT);
  pinMode(powerpin, OUTPUT);
}

void loop()
{
  xAngle = readAcc(xpin);
  yAngle = readAcc(ypin);
// print out to serial port
  printToSerial();
  delay(5);
}

// reads the axis's acceleration value (form the wanted pin)
// The returned value ranges from -90 to 90
int readAcc(int pinNum){
  int angle = (float(analogRead(pinNum)-510)/152)*float(90);
  if (abs(angle) > 90){
    angle = 90 * ((angle > 0) ? 1 : -1);
  }
  return angle;
}

// print the acceleration values to Serial
void printToSerial(){
  Serial.print("x=");
  Serial.print(xAngle);
  Serial.print("; y=");
  Serial.print(yAngle);
  Serial.println();
}

Comments are closed.