Como conectar um acelerômetro MMA7361 no Arduino? Quando se fala em acelerômetro, geralmente a primeira coisa que se pensa é no aparelho celular. É o acelerômetro que detecta a inclinação do aparelho, muda a orientação da tela e permite, por exemplo, a utilização de jogos de corrida onde a movimentação do celular define a direção do carrinho na tela.
Temos também acelerômetros instalados em notebooks, para detectar quedas do aparelho e dessa forma “travar” os discos do computador para proteção dos dados, e um exemplo bem mais comum, que é a utilização do acelerômetro nos controles de videogame, como o Nintendo Wii.
(Bem) Resumidamente, o acelerômetro nada mais é do que um aparelho que serve para medir a aceleração de um corpo/objeto em relação à gravidade. Felizmente, temos a possibilidade de ver detalhadamente no Arduino como isso funciona, usando um módulo acelerômetro MMA7361:
Esse módulo é bem prático e já vem pronto para uso, com os pinos já soldados. É um módulo de 3 eixos (X, Y e Z), que gera uma variação de tensão para cada eixo, variação esta que por sua vez é tratada pelas portas analógicas do Arduino.
Isso é algo bem parecido com o que vimos neste artigo falando sobre dimmer, onde a variação de tensão nas portas analógicas determinava a luminosidade do led.
Características básicas desse módulo:
- Operação com 5v ou 3.3v DC
- 2 níveis de sensibilidade : 1,5G ou 6G
- Modo sleep, ideal para uso em configurações que necessitem do uso de uma bateria
Vamos ver agora como conectar esse módulo no Arduino.
Conexão do acelerômetro MMA7361 no Arduino
A ligação, como sempre, exige atenção e cuidado para não danificar o componente. São 10 pinos, cuja função mostro na tabela abaixo:
Atenção! Antes de conectar esse módulo, verifique a disposição dos pinos, pois em alguns módulos alguns deles estão invertidos, ok?
Ao montar o circuito, repare que será necessário ligar o pino 3.3 Volts do Arduino Uno R3 ao pino AREF, para que tenhamos uma tensão de referência. Sem ele, a leitura dos dados fica totalmente prejudicada:
Se possível, recomendo a ligação fora da protoboard ou então a utilização de um mini protoboard, como mostrado no circuito, isso vai facilitar bastante na hora de testar os movimentos com o módulo.
Para teste vou usar um dos 3 programas exemplo que vem na própria biblioteca do MMA7361, o programa G_FORCE.
//Programa : Teste Acelerometro MMA7361 //Alterações e comentários : Arduino e Cia #include <AcceleroMMA7361.h> //Carrega a biblioteca do MMA7361 AcceleroMMA7361 accelero; int x; int y; int z; void setup() { Serial.begin(9600); accelero.begin(13, 12, 11, 10, A0, A1, A2); //Seta a voltagem de referencia AREF como 3.3V accelero.setARefVoltage(3.3); //Seta a sensibilidade (Pino GS) para +/-6G accelero.setSensitivity(LOW); accelero.calibrate(); } void loop() { x = accelero.getXAccel(); //Obtem o valor do eixo X y = accelero.getYAccel(); //Obtem o valor do eixo Y z = accelero.getZAccel(); //Obtem o valor do eixo Z Serial.print("\nx: "); //Mostra os valores no serial monitor Serial.print(x); Serial.print(" \ty: "); Serial.print(y); Serial.print(" \tz: "); Serial.print(z); Serial.print("\tG*10^-2"); delay(500); }
Carregue o programa no Arduino, movimente o sensor e veja no serial monitor as variações dos eixos X, Y, Z, e a gravidade (G).
Gostou? Confira outros posts usando acelerômetro aqui mesmo no Arduino e Cia!