Índice:

Medição de aceleração usando ADXL345 e Arduino Nano: 4 etapas
Medição de aceleração usando ADXL345 e Arduino Nano: 4 etapas

Vídeo: Medição de aceleração usando ADXL345 e Arduino Nano: 4 etapas

Vídeo: Medição de aceleração usando ADXL345 e Arduino Nano: 4 etapas
Vídeo: Parte 1/2 da Aula 4 sobre Sistemas de Entrada e Saída - Sensores 2024, Julho
Anonim
Image
Image

O ADXL345 é um acelerômetro de 3 eixos pequeno, fino e de potência ultrabaixa com medição de alta resolução (13 bits) de até ± 16 g. Os dados de saída digital são formatados como complemento de dois de 16 bits e são acessíveis por meio da interface digital I2C. Ele mede a aceleração estática da gravidade em aplicações de detecção de inclinação, bem como a aceleração dinâmica resultante de movimento ou choque. Sua alta resolução (3,9 mg / LSB) permite a medição de mudanças de inclinação inferiores a 1,0 °.

Neste tutorial, a interface do módulo sensor ADXL345 com o arduino nano foi ilustrada. Para ler os valores de aceleração, usamos o arduino com um adaptador I2c. Este adaptador I2C torna a conexão ao módulo do sensor mais fácil e confiável.

Etapa 1: Hardware necessário:

Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário

Os materiais de que precisamos para cumprir nosso objetivo incluem os seguintes componentes de hardware:

1. ADXL345

2. Arduino Nano

3. Cabo I2C

4. Escudo I2C para Arduino Nano

Etapa 2: Conexão de Hardware:

Conexão de hardware
Conexão de hardware
Conexão de hardware
Conexão de hardware

A seção de conexão de hardware explica basicamente as conexões de fiação necessárias entre o sensor e o arduino nano. Garantir as conexões corretas é a necessidade básica ao trabalhar em qualquer sistema para a saída desejada. Portanto, as conexões necessárias são as seguintes:

O ADXL345 funcionará em I2C. Aqui está o diagrama de fiação de exemplo, demonstrando como conectar cada interface do sensor.

Fora da caixa, a placa é configurada para uma interface I2C, como tal, recomendamos usar esta conexão se você for agnóstico.

Você só precisa de quatro fios! São necessárias apenas quatro conexões dos pinos Vcc, Gnd, SCL e SDA e estes são conectados com a ajuda do cabo I2C.

Essas conexões são demonstradas nas fotos acima.

Etapa 3: Código para medição de aceleração:

Código para medição de aceleração
Código para medição de aceleração

Vamos começar com o código do Arduino agora.

Ao usar o módulo sensor com o arduino, incluímos a biblioteca Wire.h. A biblioteca "Wire" contém as funções que facilitam a comunicação i2c entre o sensor e a placa arduino.

Todo o código do arduino é fornecido abaixo para a conveniência do usuário:

#incluir

// O endereço ADXL345 I2C é 0x53 (83)

#define Addr 0x53

void setup ()

{

// Inicializar a comunicação I2C como MASTER

Wire.begin ();

// Inicialize a comunicação serial, defina a taxa de transmissão = 9600

Serial.begin (9600);

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecione o registro da taxa de largura de banda

Wire.write (0x2C);

// Modo normal, taxa de dados de saída = 100 Hz

Wire.write (0x0A);

// Pare a transmissão I2C

Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecione o registro de controle de energia

Wire.write (0x2D);

// Desativar suspensão automática

Wire.write (0x08);

// Pare a transmissão I2C

Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecionar registro de formato de dados

Wire.write (0x31);

// Autoteste desabilitado, interface de 4 fios, resolução total, Faixa = +/- 2g

Wire.write (0x08);

// Pare a transmissão I2C

Wire.endTransmission ();

atraso (300);

}

void loop ()

{

dados internos não assinados [6];

para (int i = 0; i <6; i ++)

{

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecione o registro de dados

Wire.write ((50 + i));

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Leia 6 bytes de dados

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

if (Wire.available () == 1)

{

dados = Wire.read ();

}

}

// Converta os dados para 10 bits

int xAccl = (((dados [1] e 0x03) * 256) + dados [0]);

if (xAccl> 511)

{

xAccl - = 1024;

}

int yAccl = (((dados [3] e 0x03) * 256) + dados [2]);

if (yAccl> 511)

{

yAccl - = 1024;

}

int zAccl = (((dados [5] e 0x03) * 256) + dados [4]);

if (zAccl> 511)

{

zAccl - = 1024;

}

// Dados de saída para monitor serial

Serial.print ("A aceleração no eixo X é:");

Serial.println (xAccl);

Serial.print ("A aceleração no eixo Y é:");

Serial.println (yAccl);

Serial.print ("A aceleração no eixo Z é:");

Serial.println (zAccl);

atraso (300);

}

Na biblioteca de fios, Wire.write () e Wire.read () são usados para escrever os comandos e ler a saída do sensor.

Serial.print () e Serial.println () são usados para exibir a saída do sensor no monitor serial do IDE do Arduino.

A saída do sensor é mostrada na imagem acima.

Etapa 4: Aplicativos:

Formulários
Formulários

ADXL345 é um acelerômetro de 3 eixos pequeno, fino e de potência ultrabaixa que pode ser empregado em aparelhos, instrumentação médica, etc. Sua aplicação também inclui dispositivos de jogo e apontadores, instrumentação industrial, dispositivos de navegação pessoal e proteção de unidade de disco rígido (HDD).

Recomendado: