Você já pensou em fazer um controle de videogame parecido com o Wii? ou então um jogo de celular que sente a posição do aparelho? que tal fazer o posicionamento no espaço de um quadcóptero?. Todas estas aplicações utilizam um sensor chamado acelerômetro, que mede aceleração relativa (ou seja, a variação da velocidade de um objeto em relação ao repouso).
   Na postagem de hoje falarei sobre o MMA7361 (datasheet aqui), um acelerômetro capacitivo com uma saída analógica para cada eixo (X, Y, Z) que é capaz de medir acelerações entre +/-1,5G e +/-6G (“G” significa gravidade, que tem o valor de 9,8066m/s*s aqui na terra). Dá pra fazer muita coisa legal (interfaces de usuário) com este sensor, então vamos aprender á usa-lo. 

   Para testar este sensor eu utilizo um microcontrolador Arduino (no meu caso o Arduino Leonardo), mas qualquer outro microcontrolador com entradas analógicas deve servir. O código que utilizamos está disponível neste link do Github, e foi desenvolvido pelo usuário Jeroendoggen. Você terá que instalar uma biblioteca adicional para o MMA7361 funcionar; veja como instalar bibliotecas adicionais (pelo menos no linux) neste link do fórum oficial do Arduino.

Arduino 5V -> MMA7361 5V
Arduino GND -> MMA7361 GND
Arduino A0 -> MMA7361 X
Arduino A1 -> MMA7361 Y
Arduino A2 -> MMA7361 Z
Arduino 10 -> MMA7361 GS
Arduino 11 -> MMA7361 0G
Arduino 12 -> MMA7361 ST
Arduino 13 -> MMA7361 SL
   Após fazer o upload do código G_force.ino (disponível neste link e também na caixa abaixo, lembrando que a bilbioteca do MMA7361 deve estar instatada no seu computador)  você pode abrir o monitor serial da IDE do Arduino.
 #include <AcceleroMMA7361.h>  

AcceleroMMA7361 accelero;
long x;
long y;
long z;

void setup()
{
Serial.begin(9600);
accelero.begin(13, 12, 11, 10, A0, A1, A2);
accelero.setARefVoltage(3.3); //sets the AREF voltage to 3.3V
accelero.setSensitivity(LOW); //sets the sensitivity to +/-6G
accelero.calibrate();
}

void loop()
{
x = accelero.getXAccel();
y = accelero.getYAccel();
z = accelero.getZAccel();
Serial.print("nx: ");
Serial.print(x);
Serial.print(" ty: ");
Serial.print(y);
Serial.print(" tz: ");
Serial.print(z);
Serial.print("tG*10^-2");
delay(500); //make it readable
}

   Ao ligar o seu Arduino e abrir o monitor serial, o programa acima fará uma auto-calibração do sensor, e é necessário que o chip dele esteja exatamente na horizontal, com sua parte superior apontando para cima (veja imagem abaixo). Após executar esta calibração, as leituras de aceleração irão começar.

   Para saber se a calibração foi executada corretamente você pode se basear na aceleração da gravidade (9,8066 m/s*s); para isso posicione o sensor conforme as imagens abaixo e veja se os valores mostrados nas imagens batem com os que você obteve

   Caso seus valores fiquem próximos aos das imagens acima, parabéns! você concluiu a etapa de conexão e calibração do MMA7361. O próximo passo é brincar um pouco com o sensor e observar seus valores de X, Y e Z variando conforme o movimento executado. Pelo código postado acima você pode ver que as variáveis tipo long ‘x’, ‘y’ e ‘z’ carregam o valor de aceleração nos três eixos; agora estes valores podem ser utilizados para qualquer coisa dentro do seu programa de Arduino!.
– Para comprar o sensor MMA7361 em nosso Parceiro ICStation (da China), clique no texto: For Arduino MMA7361 (MMA7260) Accelerometer Sensor Module
– Para comprar o Arduino UNO em nosso Parceiro ICStation (da China), clique no texto:ICStation ATMEGA328 UNO V3.0 R3 Board Compatible Arduino UNO R3
– Para comprar os cabinhos coloridos (jumpers) em nosso Parceiro ICStation (da China), clique no texto:1pcs Dupont Wire 10CM 2.54MM Female to Male 1P-1P Jumper Cable For Arduino
Acelerômetro em seus projetos – módulo MMA7361
Classificado como:                            

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
6 + 24 =