»óÇ°Ä«Å×°í¸® > ÀüÀÚ ºÎÇ° > ¼¾¼­º¸µå > IMU¼¾¼­

¾ÆµÎÀ̳ë ȣȯ µðÁöÅÐ °¡¼Óµµ ¼¾¼­ ¸ðµâ (ADXL345 Digital Angle acceleration sensor module)
ÆǸŰ¡°Ý : 2,530¿ø (ºÎ°¡¼¼ Æ÷ÇÔ)
»óÇ°ÄÚµå : [6177]MIZ-B111-ZAS
¹è¼ÛÀÏ : ´çÀϹ߼Û
Á¦Á¶»ç : OEM
³²Àº¼ö·® : 20°³ ÀÌ»ó
±¸¸Å¼ö·® :
°³
ÃÑ ±Ý¾× :
Ãß°¡&´ë·®±¸¸Å ¿äû 053-588-4080

  • »óÇ°»ó¼¼
  • °ü·Ã»óÇ°
  • ¹è¼Û/±³È¯/¹ÝÇ° ¾È³»
  • »óÇ°¸®ºä
ADXL345´Â ÀÛ°í ¾ã°í, ÀúÀü·Â 3Ãà °¡¼Óµµ¼¾¼­·Î °íºÐÇØ´É (13ºñÆ®)À» °¡Áö°í ÀÖ½À´Ï´Ù. Ãæ°Ý ÃøÁ¤ ¹× ¹æÇâ ¼¾½ÌÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¡á2.0-3.6VDC Supply Voltage
¡á
Ultra Low Power: 40uA in measurement mode, 0.1uA in standby@ 2.5V
¡á
SPI and I2C interfaces
¡á
Free-Fall Detection



µ¥ÀÌÅͽÃÆ®

¡áADXL345

»ç¿ë ¿¹Á¦


Arduino PinADXL345 Pin
10CS
11SDA
12SDO
13SCL
3V3VCC
Gnd

GND






















//Add the SPI library so we can communicate with the ADXL345 sensor
#include

//Assign the Chip Select signal to pin 10.
int CS = 10;

//This is a list of some of the registers available on the ADXL345.
//To learn more about these and the rest of the registers on the ADXL345, read the datasheet!
char POWER_CTL = 0x2D;  //Power Control Register
char DATA_FORMAT = 0x31;
char DATAX0 = 0x32; //X-Axis Data 0
char DATAX1 = 0x33; //X-Axis Data 1
char DATAY0 = 0x34; //Y-Axis Data 0
char DATAY1 = 0x35; //Y-Axis Data 1
char DATAZ0 = 0x36; //Z-Axis Data 0
char DATAZ1 = 0x37; //Z-Axis Data 1

//This buffer will hold values read from the ADXL345 registers.
unsigned char values[10];
//These variables will be used to hold the x,y and z axis accelerometer values.
int x, y, z;
int lastx, lasty, lastz;
int change;
double xg, yg, zg;
void setup() {
  //Initiate an SPI communication instance.
  SPI.begin();
  //Configure the SPI connection for the ADXL345.
  SPI.setDataMode(SPI_MODE3);
  //Create a serial connection to display the data on the terminal.
  Serial.begin(9600);

  //Set up the Chip Select pin to be an output from the Arduino.
  pinMode(CS, OUTPUT);
  //Before communication starts, the Chip Select pin needs to be set high.
  digitalWrite(CS, HIGH);

  //Put the ADXL345 into +/- 4G range by writing the value 0x01 to the DATA_FORMAT register.
  writeRegister(DATA_FORMAT, 0x00);
  //Put the ADXL345 into Measurement Mode by writing 0x08 to the POWER_CTL register.
  writeRegister(POWER_CTL, 0x08);  //Measurement mode
}

void loop() {
  //Reading 6 bytes of data starting at register DATAX0 will retrieve the x,y and z acceleration values from the ADXL345.
  //The results of the read operation will get stored to the values[] buffer.
  readRegister(DATAX0, 6, values);

  //The ADXL345 gives 10-bit acceleration values, but they are stored as bytes (8-bits). To get the full value, two bytes must be combined for each axis.
  //The X value is stored in values[0] and values[1].
  x = ((int)values[1] << 8) | (int)values[0];
  //The Y value is stored in values[2] and values[3].
  y = ((int)values[3] << 8) | (int)values[2];
  //The Z value is stored in values[4] and values[5].
  z = ((int)values[5] << 8) | (int)values[4];
  xg = x * 0.0078;
  yg = y * 0.0078;
  zg = z * 0.0078;
  change = abs(lastx - x) + abs(lasty - y) + abs(lastz - z);
  lastx = x;
  lasty = y;
  lastz = z;
  //Print the results to the terminal.
  //    Serial.print((float)xg,2);
  //      Serial.print("g,");
  //      Serial.print((float)yg,2);
  //      Serial.print("g,");
  //      Serial.print((float)zg,2);
  //      Serial.println("g");
  //if(change > 4) {
  //    Serial.print("Change:");
  Serial.println(change);
  //}
  delay(10);
}

//This function will write a value to a register on the ADXL345.
//Parameters:
//  char registerAddress - The register to write a value to
//  char value - The value to be written to the specified register.
void writeRegister(char registerAddress, char value) {
  //Set Chip Select pin low to signal the beginning of an SPI packet.
  digitalWrite(CS, LOW);
  //Transfer the register address over SPI.
  SPI.transfer(registerAddress);
  //Transfer the desired register value over SPI.
  SPI.transfer(value);
  //Set the Chip Select pin high to signal the end of an SPI packet.
  digitalWrite(CS, HIGH);
}

//This function will read a certain number of registers starting from a specified address and store their values in a buffer.
//Parameters:
//  char registerAddress - The register addresse to start the read sequence from.
//  int numBytes - The number of registers that should be read.
//  char * values - A pointer to a buffer where the results of the operation should be stored.
void readRegister(char registerAddress, int numBytes, unsigned char * values) {
  //Since we're performing a read operation, the most significant bit of the register address should be set.
  char address = 0x80 | registerAddress;
  //If we're doing a multi-byte read, bit 6 needs to be set as well.
  if (numBytes > 1)address = address | 0x40;

  //Set the Chip select pin low to start an SPI packet.
  digitalWrite(CS, LOW);
  //Transfer the starting register address that needs to be read.
  SPI.transfer(address);
  //Continue to read registers until we've read the number specified, storing the results to the input buffer.
  for (int i = 0; i < numBytes; i++) {
    values[i] = SPI.transfer(0x00);
  }
  //Set the Chips Select pin high to end the SPI packet.
  digitalWrite(CS, HIGH);

¸ÞÄ«¸®¿öÁî






°ßÀû¿äû
±¸¸Å´ëÇà
Äü/¹æ¹®¼ö·É
ÈĺҰáÁ¦
±â¼ú¹®ÀÇ