Índice:

Medição de aceleração usando BMA250 e partícula de fóton: 4 etapas
Medição de aceleração usando BMA250 e partícula de fóton: 4 etapas

Vídeo: Medição de aceleração usando BMA250 e partícula de fóton: 4 etapas

Vídeo: Medição de aceleração usando BMA250 e partícula de fóton: 4 etapas
Vídeo: EXEMPLO DE COMO CALCULAR FORÇA RESULTANTE E ACELERAÇÃO. 2024, Novembro
Anonim
Image
Image

O BMA250 é um acelerômetro de 3 eixos pequeno, fino e ultrabaixo 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 vamos medir a aceleração em todos os três eixos perpendiculares usando BMA250 e partícula de fóton.

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. BMA250

2. Partícula de fóton

3. Cabo I2C

4. Escudo I2C para Fóton de Partículas

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 fóton da partícula. 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 BMA250 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 medir a aceleração:

Código para medir a aceleração
Código para medir a aceleração

Vamos começar com o código da partícula agora.

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

Todo o código da partícula é fornecido abaixo para a conveniência do usuário:

#incluir

#incluir

// O endereço BMA250 I2C é 0x18 (24)

#define Addr 0x18

int xAccl = 0, yAccl = 0, zAccl = 0;

void setup ()

{

// Definir variável

Particle.variable ("i2cdevice", "BMA250");

Particle.variable ("xAccl", xAccl);

Particle.variable ("yAccl", yAccl);

Particle.variable ("zAccl", zAccl);

// Inicializa 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);

// Selecionar registro de seleção de faixa

Wire.write (0x0F);

// Definir intervalo +/- 2g

Wire.write (0x03);

// Pare a transmissão I2C

Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecione o registro de largura de banda

Wire.write (0x10);

// Definir largura de banda 7,81 Hz

Wire.write (0x08);

// Pare a transmissão I2C

Wire.endTransmission ();

atraso (300);}

void loop ()

{

dados internos não assinados [0];

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecionar registros de dados (0x02 - 0x07)

Wire.write (0x02);

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicita 6 bytes

Wire.requestFrom (Addr, 6);

// Leia os seis bytes

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

if (Wire.available () == 6)

{

dados [0] = Wire.read ();

dados [1] = Wire.read ();

dados [2] = Wire.read ();

dados [3] = Wire.read ();

dados [4] = Wire.read ();

dados [5] = Wire.read ();

}

atraso (300);

// Converta os dados para 10 bits

xAccl = ((dados [1] * 256) + (dados [0] & 0xC0)) / 64;

if (xAccl> 511)

{

xAccl - = 1024;

}

yAccl = ((dados [3] * 256) + (dados [2] & 0xC0)) / 64;

if (yAccl> 511)

{

yAccl - = 1024;

}

zAccl = ((dados [5] * 256) + (dados [4] & 0xC0)) / 64;

if (zAccl> 511)

{

zAccl - = 1024;

}

// Saída de dados para o painel

Particle.publish ("Aceleração no eixo X:", String (xAccl));

atraso (1000);

Particle.publish ("Aceleração no eixo Y:", String (yAccl));

atraso (1000);

Particle.publish ("Acceleration in Z-Axis:", String (zAccl));

atraso (1000);

}

A função Particle.variable () cria as variáveis para armazenar a saída do sensor e a função Particle.publish () exibe a saída no painel do site.

A saída do sensor é mostrada na imagem acima para sua referência.

Etapa 4: Aplicativos:

Formulários
Formulários

Acelerômetros como o BMA250 encontram sua aplicação principalmente nos jogos e na troca de perfis de exibição. Este módulo sensor também é empregado no sistema de gerenciamento de energia avançado para aplicativos móveis. O BMA250 é um sensor de aceleração digital triaxial incorporado com um controlador inteligente de interrupção acionada por movimento no chip.

Recomendado: