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 : *
17 + 22 =