Índice:

ADXL345 usando Arduino Uno R3: 5 etapas
ADXL345 usando Arduino Uno R3: 5 etapas

Vídeo: ADXL345 usando Arduino Uno R3: 5 etapas

Vídeo: ADXL345 usando Arduino Uno R3: 5 etapas
Vídeo: Домашняя автоматизация с использованием акселерометра 2024, Novembro
Anonim
ADXL345 usando Arduino Uno R3
ADXL345 usando Arduino Uno R3

Nesta lição, aprenderemos como usar o sensor de aceleração ADXL345.

Etapa 1: Componentes

- Placa Arduino Uno * 1

- Cabo USB * 1

- ADXL345 * 1

- Breadboard * 1

- Fios de ligação

Etapa 2: Princípio

Um acelerômetro é usado para medir a força gerada durante a aceleração. O mais fundamental é a aceleração da gravidade comumente conhecida, que é 1g.

Ao medir a aceleração causada pela gravidade, você pode calcular o ângulo de inclinação do dispositivo em relação à superfície nivelada. Através da análise da aceleração dinâmica, você pode dizer a maneira como o dispositivo está se movendo. Por exemplo, a prancha de auto-equilíbrio ou hoverboard aplica o sensor de aceleração e o giroscópio para filtro de Kalman e correção de postura.

ADXL345

O ADXL345 é um acelerômetro de 3 eixos pequeno, fino e de baixa potência 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 de uma interface digital SPI (3 ou 4 fios) ou I2C. Neste experimento, a interface digital I2C é usada.

É adequado para medir 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 (4 mg / LSB) permite a medição da mudança de inclinação em menos de 1,0 °. E a excelente sensibilidade (3,9mg / LSB @ 2g) fornece uma saída de alta precisão de até ± 16g.

Como funciona ADXL345

O ADXL345 detecta a aceleração com o componente de detecção na frente e, em seguida, o componente de detecção de sinal elétrico o transforma em sinal elétrico, que é analógico. Em seguida, o adaptador AD integrado no módulo converterá o sinal analógico em digital.

O X_OUT, Y_OUT e Z_OUT são os valores nos eixos X, Y e Z respectivamente. Coloque o módulo voltado para cima: Z_OUT pode atingir + 1g no máximo, o mínimo de X_OUT é -1g na direção do Ax e o mínimo de Y_OUT é -1g na direção Ay. Por outro lado, vire o módulo de cabeça para baixo: o mínimo de Z_OUT é -1g, o máximo de X_OUT é + 1g na direção Ax e o máximo de Y_OUT é + 1g na direção Ay., como mostrado abaixo. Gire o módulo ADXL345 e você verá a mudança de três valores.

quando o canal A muda de nível alto para nível baixo, se o canal B é de nível alto, indica que o codificador rotativo gira no sentido horário (CW); se naquele momento o canal B estiver em nível baixo, significa que gira no sentido anti-horário (CCW). Portanto, se lermos o valor do canal B quando o canal A estiver em nível baixo, podemos saber em qual direção o codificador rotativo gira.

Princípio: Veja o diagrama esquemático do módulo Codificador Rotativo abaixo. A partir dele podemos ver que o pino 3 do codificador rotativo, ou seja, CLK no módulo, é o canal B. O pino 5, que é DT, é o canal A. Para saber a direção de rotação do gravador, basta ler o valor de CLK e DT.

Há um chip regulador de tensão de 3,3 V no circuito, então você pode alimentar o módulo com 5 V ou 3,3 V.

Como o SDO foi conectado ao GND, o endereço I2C do ADXL345 é 0x53, 0xA6 para gravação, 0xA7 para leitura

Função do pino do módulo ADXL345.

Etapa 3: Procedimentos

Etapa 1. Construir o circuito.

Passo 2:

Baixe o código em

Etapa 3:

Faça upload do esboço para a placa Arduino Uno

Clique no ícone Upload para fazer upload do código para o painel de controle.

Se "Upload concluído" aparecer na parte inferior da janela, significa que o esboço foi carregado com sucesso.

Após o upload, abra o Serial Monitor, onde você pode ver os dados detectados. Quando a aceleração do módulo muda, a figura muda de acordo na janela.

Etapa 4: Código

Código
Código

// ADXL335

/********************************

ADXL335

nota: vcc5v, mas ADXL335 Vs é 3,3 V

O circuito:

5V: VCC

analógico 0: eixo x

analógico 1: eixo y

analógico 2: eixo z

Depois de queimar o

programa, abra a janela de depuração do monitor serial, onde você pode ver os dados detectados sendo exibidos. Quando a aceleração varia, o valor irá variar de acordo.

*********************************

/O email:

//Website:www.primerobotics.in

const int xpin =

A0; // eixo x do acelerômetro

const int ypin =

A1; // eixo y

const int zpin =

A2; // eixo z (apenas em modelos de 3 eixos)

void setup ()

{

// inicializa as comunicações seriais:

Serial.begin (9600);

}

void loop ()

{

int x = analogRead (xpin); // ler do xpin

atraso (1); //

int y = analogRead (ypin); // ler de ypin

atraso (1);

int z = analogRead (zpin); // ler do zpin

float zero_G = 338,0; // fonte de alimentação ADXL335

por Vs 3,3 V: 3,3 V / 5 V * 1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

flutuador

zero_Gx = 331,5; // a saída zero_G do eixo x: (x_max + x_min) / 2

flutuador

zero_Gy = 329,5; // a saída zero_G do eixo y: (y_max + y_min) / 2

float zero_Gz = 340.0; // o

saída zero_G do eixo z: (z_max + z_min) / 2

escala flutuante =

67,6; // fonte de alimentação por Vs 3,3 V: 3,3 V / 5 V * 1024 / 3,3 V * 330 mv / g = 67,6 g

float scale_x =

65; // a escala do eixo x: x_max / 3,3v * 330mv / g

float scale_y =

68,5; // a escala do eixo y: y_max / 3,3v * 330mv / g

float scale_z =

68; // a escala do eixo z: z_max / 3,3v * 330mv / g

Serial.print (((float) x

- zero_Gx) / escala_x); // imprime o valor x no monitor serial

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy) / escala_y); // imprime o valor y no monitor serial

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz) / scale_z); // imprime o valor z no monitor serial

Serial.print ("\ n");

atraso (1000); // aguarde 1 segundo

}

Etapa 5: Análise de código

O código para o experimento ADXL345 inclui 3 partes: inicializar cada porta e dispositivo, adquirir e armazenar dados enviados dos sensores e converter os dados.

Recomendado: