Pular para o conteúdo principal

Xadow - Acelerômetro de 3 Eixos

Este é um acelerômetro digital de alta resolução com ampla faixa de medição de ±16g através da interface I2C, adequado para monitorar o estado de movimento. Com este módulo, você pode facilmente adicionar a função de monitoramento de movimentos ao seu projeto, como balanço de braços e pernas. Se você quiser trocar as músicas do seu iPhone balançando o braço, então este módulo é exatamente para você.

Especificação


  • Dimensões: 25.43mm x 20.35mm
  • Tensão de funcionamento: 3.3V
  • Resolução: 3.9mg/LSB
  • Faixa de teste: ±16g
  • Modo de controle: I2C

Demonstração


Como outros módulos Xadow, você precisa conectar o Xadow 3-Axis Accelerometer à Xadow Main Board antes de enviar o código de teste para a Xadow Main Board para obter as informações do acelerômetro.

A instalação de hardware:

nota

Ao conectar o Xadow 3-Axis Accelerometer à Xadow Main Board, você deve se atentar à direção da conexão. O método de conexão é que o canto chanfrado de um módulo Xadow precisa ser conectado ao ângulo reto de outro módulo (veja os quatro cantos de cada módulo Xadow).

O código de teste é mostrado abaixo:

#include <Wire.h>

#define ADXL345_DEVICE 0x00
#define ADXL345_POWER_CTL 0x2D
#define ADXL345_DATAX0 0x32
#define ADXL345_DATAX1 0x33
#define ADXL345_DATAY0 0x34
#define ADXL345_DATAY1 0x35
#define ADXL345_DATAZ0 0x36
#define ADXL345_DATAZ1 0x37

#define ADXL345_ADDRESS 0x53
int X_Read,Y_Read,Z_Read;
double ax,ay,az;

void setup()
{
Wire.begin();
Serial.begin(19200);
delay(100);
//Turning on the ADXL345
Wire.beginTransmission(ADXL345_DEVICE); // start transmission to device
Wire.write(ADXL345_POWER_CTL);
Wire.write(8); //measuring enable
Wire.endTransmission(); // end transmission

}

void loop()
{

X_Read = readRegister(ADXL345_ADDRESS,ADXL345_DATAX0,ADXL345_DATAX1);
Y_Read = readRegister(ADXL345_ADDRESS,ADXL345_DATAY0,ADXL345_DATAY1);
Z_Read = readRegister(ADXL345_ADDRESS,ADXL345_DATAZ0,ADXL345_DATAZ1);


/*Serial.print("The X,Y,Z Value are:");
Serial.print(X_Read);
Serial.print(" , ");
Serial.print(Y_Read);
Serial.print(" , ");
Serial.println(Z_Read); */

getAcceleration();
Serial.print("X=");
Serial.print(ax);
Serial.println(" g");
Serial.print("Y=");
Serial.print(ay);
Serial.println(" g");
Serial.print("Z=");
Serial.print(az);
Serial.println(" g");
Serial.println("**********************");
delay(500);
}

int readRegister(int deviceAddress,int address1,int address2)
{
long int value;
int readValue1,readValue2;
Wire.beginTransmission(deviceAddress);
Wire.write(address1); // register to read
Wire.write(address2); // register to read
Wire.endTransmission();
Wire.requestFrom(deviceAddress,2); // read two byte
if(Wire.available()<=2)
{
readValue1 = Wire.read();
readValue2 = Wire.read();
}
//Wire.endTransmission();
readValue2 = readValue2<<8;
value= readValue1 + readValue2;
delay(100);
return value;
}

void getAcceleration()
{
double gains;
//Boring accelerometer stuff
gains = 0.00390625;
ax=X_Read * gains;
ay=Y_Read * gains;
az=Z_Read * gains;

}

Após enviar o código, abra o monitor serial para observar o resultado do teste. As saídas deste sensor são as informações de aceleração em 3 eixos, que são convertidas na unidade de gravidade, "g".

Referência


Abaixo estão duas figuras que podem ajudar você a entender o significado físico dos resultados. A primeira figura mostra a direção de cada eixo:

A segunda figura fornece alguns exemplos:

Visualizador Online de Esquemático

Recursos


Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja o mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...