Como Conectar Um Acelerômetro Ao Arduino

Índice:

Como Conectar Um Acelerômetro Ao Arduino
Como Conectar Um Acelerômetro Ao Arduino

Vídeo: Como Conectar Um Acelerômetro Ao Arduino

Vídeo: Como Conectar Um Acelerômetro Ao Arduino
Vídeo: Como Usar e Programar um Acelerômetro - Vídeo #27 2024, Novembro
Anonim

Desta vez, lidaremos com a conexão do acelerômetro triaxial analógico ADXL335 ao Arduino.

Acelerômetro analógico ADXL335
Acelerômetro analógico ADXL335

Necessário

  • - Arduino;
  • - acelerômetro ADXL335;
  • - um computador pessoal com o ambiente de desenvolvimento Arduino IDE.

Instruções

Passo 1

Os acelerômetros são usados para determinar o vetor de aceleração. O acelerômetro ADXL335 possui três eixos e, graças a isso, pode determinar o vetor de aceleração no espaço tridimensional. Como a força da gravidade também é um vetor, o acelerômetro pode determinar sua própria orientação no espaço tridimensional em relação ao centro da Terra.

A ilustração mostra fotos do passaporte (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) para o acelerômetro ADXL335. Aqui são mostrados os eixos coordenados da sensibilidade do acelerômetro em relação ao posicionamento geométrico do corpo do dispositivo no espaço, bem como uma tabela de valores de tensão de 3 canais do acelerômetro dependendo de sua orientação no espaço. Os dados da tabela são fornecidos para um sensor em repouso.

Vamos dar uma olhada mais de perto no que o acelerômetro nos mostra. Deixe o sensor posicionado horizontalmente, por exemplo, em uma mesa. Então, a projeção do vetor de aceleração será igual a 1g ao longo do eixo Z, ou Zout = 1g. Os outros dois eixos terão zeros: Xout = 0 e Yout = 0. Quando o sensor é girado "de costas", ele será direcionado na direção oposta em relação ao vetor de gravidade, ou seja. Zout = -1g. Da mesma forma, as medições são feitas em todos os três eixos. É claro que o acelerômetro pode ser posicionado conforme desejado no espaço, portanto, faremos leituras diferentes de zero de todos os três canais.

Se a sonda for fortemente agitada ao longo do eixo Z vertical, o valor Zout será maior que "1g". A aceleração máxima mensurável é "3g" em cada um dos eixos em qualquer direção (ou seja, ambos com "mais" e "menos").

Eixos de sensibilidade do acelerômetro e tabela de valores de saída
Eixos de sensibilidade do acelerômetro e tabela de valores de saída

Passo 2

Acho que descobrimos o princípio de operação do acelerômetro. Agora vamos examinar o diagrama de conexão.

O chip acelerômetro analógico ADXL335 é bastante pequeno e está alojado em um pacote BGA, sendo difícil montá-lo em uma placa em casa. Portanto, usarei um módulo GY-61 já feito com um acelerômetro ADXL335. Esses módulos nas lojas online chinesas custam quase um centavo.

Para alimentar o acelerômetro, é necessário fornecer tensão de +3,3 V ao pino VCC do módulo. Os canais de medição do sensor são conectados aos pinos analógicos do Arduino, por exemplo, "A0", "A1" e " A2 ". Este é todo o circuito:)

Diagrama de fiação do acelerômetro ADXL335 para Arduno
Diagrama de fiação do acelerômetro ADXL335 para Arduno

etapa 3

Vamos carregar este esboço na memória do Arduino. Vamos ler as leituras das entradas analógicas em três canais, convertê-las em tensão e enviá-las para a porta serial.

O Arduino tem um ADC de 10 bits e a tensão máxima permitida no pino é de 5 volts. As tensões medidas são codificadas com bits que podem assumir apenas 2 valores - 0 ou 1. Isso significa que toda a faixa de medição será dividida por (1 + 1) à 10ª potência, ou seja, em 1024 segmentos iguais.

Para converter as leituras em volts, você precisa dividir cada valor medido na entrada analógica por 1024 (segmentos) e depois multiplicar por 5 (volts).

Vamos ver o que realmente sai do acelerômetro usando o eixo Z como exemplo (a última coluna). Quando o sensor é posicionado horizontalmente e olha para cima, os números vêm (2,03 +/- 0,01). Portanto, isso deve corresponder à aceleração "+ 1g" ao longo do eixo Z e um ângulo de 0 graus. Vire o sensor. Os números chegam (1, 69 +/- 0, 01), que deve corresponder a "-1g" e um ângulo de 180 graus.

Desenho de leitura do acelerômetro
Desenho de leitura do acelerômetro

Passo 4

Vamos pegar os valores do acelerômetro em ângulos de 90 e 270 graus e inseri-los na tabela. A tabela mostra os ângulos de rotação do acelerômetro (coluna "A") e os valores Zout correspondentes em volts (coluna "B").

Para maior clareza, é mostrado um gráfico de tensões na saída Zout versus o ângulo de rotação. O campo azul é o intervalo em repouso (com aceleração de 1g). A caixa rosa no gráfico é uma margem para que possamos medir a aceleração de até + 3g e até -3g.

A 90 graus de rotação, o eixo Z tem aceleração zero. Aqueles. um valor de 1,67 volts é um zero Zo condicional para o eixo Z. Então, você pode encontrar a aceleração assim:

g = Zout - Zo / sensibilidade_z, aqui Zout é o valor medido em milivolts, Zo é o valor na aceleração zero em milivolts, sensibilidade_z é a sensibilidade do sensor ao longo do eixo Z. calibre o acelerômetro e calcule o valor de sensibilidade especificamente para o seu sensor usando a fórmula:

sensibilidade_z = [Z (0 graus) - Z (90 graus)] * 1000. Neste caso, a sensibilidade do acelerômetro ao longo do eixo Z = (2, 03 - 1, 68) * 1000 = 350 mV. Da mesma forma, a sensibilidade precisará ser calculada para os eixos X e Y.

A coluna "C" da tabela mostra a aceleração calculada para cinco ângulos com uma sensibilidade de 350. Como você pode ver, eles praticamente coincidem com os mostrados na Figura 1.

Correspondência dos ângulos de rotação do acelerômetro com as leituras
Correspondência dos ângulos de rotação do acelerômetro com as leituras

Etapa 5

Lembrando do curso básico de geometria, obtemos a fórmula para calcular os ângulos de rotação do acelerômetro:

ângulo_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Os valores estão em radianos. Para convertê-los em graus, divida por Pi e multiplique por 180.

Como resultado, um esboço completo calculando os ângulos de aceleração e rotação do acelerômetro ao longo de todos os eixos é mostrado na ilustração. Os comentários fornecem explicações para o código do programa.

Ao enviar para a porta "Serial.print ()", o caractere "\ t" denota um caractere de tabulação para que as colunas sejam pares e os valores estejam localizados um abaixo do outro. "+" significa concatenação (concatenação) de strings. Além disso, o operador "String ()" informa explicitamente ao compilador que o valor numérico deve ser convertido em uma string. O operador round () arredonda o canto para o 1 grau mais próximo.

Um esboço que calcula a aceleração e os ângulos do acelerômetro
Um esboço que calcula a aceleração e os ângulos do acelerômetro

Etapa 6

Portanto, aprendemos como obter e processar dados do acelerômetro analógico ADXL335 usando o Arduino. Agora podemos usar o acelerômetro em nossos projetos.

Recomendado: