Conectando Acelerômetro 3 Eixos MMA7361 no Arduino

Conectando Acelerômetro 3 Eixos MMA7361 no Arduino

Acelerômetro é um dispositivo que serve para medir a aceleração de um objeto em relação à gravidade. Acelerômetros são muito utilizados em celulares e videogames para executar algum tipo de ação dependendo da movimentação do aparelho. No Arduino, segue o mesmo princípio e podemos utilizá-lo para controlar robôs ou algum outro tipo de dispositivo, apenas movimentando o sensor.

Um dos melhores sensores para Arduino, e também um dos mais fáceis de utilizar, é o Acelerômetro 3 Eixos MMA7361.

Acelerômetro MMA7361Este acelerômetro 3 eixos MMA7361 possui alta sensibilidade e baixo consumo de energia, facilitando o uso com o Arduino. Além disso, possui um eficiente modo Sleep, ideal para circuitos que utilizam baterias.

Pode ser ajustado para 2 níveis de sensibilidade (1,5g ou 6g), e já vem com os pinos soldados na placa, o que ajuda bastante na montagem do circuito. São dois conectores de cinco pinos nas laterais da placa, e o módulo pode ser alimentado por 3.3 v ou 5v. Alimentando-o com 3.3 v, há um incremento na precisão da leitura.

As funções dos demais pinos do módulo e a ligação ao Arduino estão mostrados na tabela abaixo :

Tabela Pinagem Acelerômetro MMA7361

Para utilizarmos o acelerômetro com o Arduino, primeiro precisamos da biblioteca AcceleroMMA7361, disponível nesse link. Faça o download da biblioteca, descompacte e coloque na pasta LIBRARIES da IDE do seu Arduino.

Vamos testar esse acelerômetro 3 eixos MMA7361 utilizando o arquivo exemplo RawData, que já vem na biblioteca do módulo, com algumas alterações para que os dados referentes aos eixos X, Y e Z sejam mostrados no Display LCD 16×2. O potenciômetro utilizado é de 10K, usado somente para controle de contraste :

Montagem Acelerômetro MMA7361 com Arduino

Os pinos X, Y e Z do módulo são ligados às entradas analógicas. Um detalhe importante é a ligação do pino de 3.3v do Arduino ao pino AREF, também no Arduino. É essa ligação que fornecerá uma tensão de referência ao circuito, evitando erros na leitura dos dados.

O programa exemplo RawData originalmente lê as informações relativas às variações dos eixos X, Y e Z e as mostra no serial monitor. Vamos manter essa função, mas também enviar esses dados para o display LCD 16×2.

//Programa : Conectando Acelerômetro 3 Eixos MMA7361 no Arduino 
//Autor : FILIPEFLOP

#include <AcceleroMMA7361.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); 
AcceleroMMA7361 accelero;
int x;
int y;
int z;

void setup()
{
  lcd.begin(16, 2);  
  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();
  lcd.setCursor(0,0);
  lcd.print("X: ");
  lcd.setCursor(8,0);
  lcd.print("Y: ");
  lcd.setCursor(0,1);
  lcd.print("Z: ");
}

void loop()
{
  x = accelero.getXRaw();
  lcd.setCursor(3,0);
  lcd.print(x);
  y = accelero.getYRaw();
  lcd.setCursor(11,0);
  lcd.print(y);
  z = accelero.getZRaw();
  lcd.setCursor(3,1);
  lcd.print(z);
  Serial.print("nx: ");
  Serial.print(x);
  Serial.print("ty: ");
  Serial.print(y);
  Serial.print("tz: ");
  Serial.print(z);
  delay(500);                                   
}

Movimente o sensor e observe no display os dados relativos aos eixos do acelerômetro. Você pode utilizar esses dados para movimentar, por exemplo, motores de acordo com as variações de cada eixo.

Foto Acelerômetro MMA7361 com Arduino

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota aos posts (estrelas no início ou no final do artigo) e visite nossa loja FILIPEFLOP !

15
Conectando Acelerômetro 3 Eixos MMA7361 no Arduino
54 votos, 4.82 classificação média (96% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

34 Comentários

  1. Top 5 tutoriais com Arduino – FilipeFlop - 21 de julho de 2017

    […] Veja o post completo : Conectando Acelerômetro 3 Eixos MMA7361 no Arduino […]

  2. JOSE ANTONIO FRANCA DE ARAUJO - 28 de junho de 2017

    Como gravar os dados para gerar um grafico de vibração?

  3. Fernando Alves - 24 de março de 2017

    Gostaria de saber se esse acelerômetro conseguiria ler dados sendo exposto a 30G, se nao, qual vc indicaria um outro que eu possa usar, sou cliente fiel dá Filipeflop kkkkkkk e essa foi minha primeira pergunta kkk, aguardo retorno

  4. marcelo - 23 de março de 2017

    ola, como faço para usar este acelerômetro para gerar um gráfico de um movimento de um pendulo na serial plot . detalhe seria um gráfico de amortecimento como se fosse uma onda senoidal porem ela vai diminuído a amplitude a medida que o movimento vai reduzindo. preciso medir a frequência que um objeto balança em um eixo e acompanhar o gráfico em tempo real. e exatamente o experimento do vídeo a seguir https://www.youtube.com/watch?v=f1U4SAgy60c , consigo fazer o gráfico com este acelerômetro ou vou ter que comprar o adxl345 ?.

  5. Carlos - 22 de novembro de 2016

    Ola. Boa Noite!
    Estou desenvolvendo um programa que necessita que o acelerômetro detecte queda livre.
    Como faço ?
    Obrigado. Urgentemente.

    • Alexandre Magno - 27 de novembro de 2016

      Para além de teorias sobre a aceleração na gravidade, eu faria um logger em SD. Soltaria o dispositivo de várias alturas, dentro de uma rede. Movimentaria a rede em vertical para suavizar algumas quedas.

  6. 6. Sobre os sensores | ALFALUVA : Luva detectora de sinais para auxílio na alfabetização. - 26 de setembro de 2016

    […] blog FILIPEFLOP é possível encontrar informações mais detalhadas sobre o MMA7361 e sua utilização. Neste […]

  7. marcius pacheco - 12 de setembro de 2016

    comprei um mpu 6050 …. quero aprender a programa-lo da seguinte maneira..

    quando os eixos z e y estiver em zero manter a rotaçao de um motor normal por eixo
    se
    estiver em + acelerar um motor e se estiver em – acelerar outro motor.

    tu podes me ajudar?

    estou aprendendo a programação (iniciante)

  8. Alexandre Magno - 30 de julho de 2016

    Estou procurando algo mais simples e barato, para detectar o movimento de um dedo, tem?

  9. Daniel Salles - 28 de julho de 2016

    Gostaria de utilizar um acelerômetro para identificar um movimento e reproduzir um som, seria possível isso? como?

  10. Carlos Brito - 21 de março de 2016

    Olá! Quantos acelerômetros posso ligar no arduino UNO?
    Obrigado!

  11. João Dias - 15 de janeiro de 2016

    Boa tarde amigo,

    Em relação a aceleração, o valor que é obtido no Monitor Serial, é dado em qual unidade de aceleração?

    Desde já agradeço.

  12. Ronaldo - 20 de setembro de 2015

    Olá Filipeflop!

    Sabe me dizer se com esse acelerômetro, na sensibilidade mais baixa – 1,5g – consigo detectar vibrações em lajes de concreto?
    As vibrações de interesse são as de impacto e atrito(arrastar de objetos) na laje. Ambas geram consequências de ruídos sonoros.

  13. bianca ferreira - 29 de agosto de 2015

    A aceleração eh medida de quanto em quanto tempo? Como sei em qual tempo ele atingiu tal aceleração?

  14. Leslei - 27 de agosto de 2015

    Fiz toda a ligação, conectei o cabo serial e tals, tenho o acelerometro certo, mas quando vou ver no programa o resultado (serial monitor) não aparece nada.

    help mee

  15. HIAGO - 8 de junho de 2015

    Saberiam me informar se esse código e a sua respectiva biblioteca funcionam junto ao acelerômetro MMA7260QT?

  16. junior - 11 de março de 2015

    esses comandos para o accelerometro estao dando erro o q posso fazer

  17. rafael - 7 de janeiro de 2015

    Olá, comprei este acelerometro no proprio site porem estou tendo problemas para compilar o codigo, nao sei se instalei a biblioteca incorretamente ou algo na biblioteca nao esta compativel com o IDE 1.5.8 do arduino.

    ERRO:

    C:\Users\Rafael\Documents\Arduino\libraries\AcceleroMMA7361\AcceleroMMA7361.cpp: In member function ‘void AcceleroMMA7361::setARefVoltage(double)':
    C:\Users\Rafael\Documents\Arduino\libraries\AcceleroMMA7361\AcceleroMMA7361.cpp:115:29: error: invalid conversion from ‘int’ to ‘eAnalogReference {aka _eAnalogReference}’ [-fpermissive]
    analogReference(EXTERNAL);
    ^
    In file included from F:\arduino\arduino-1.5.8\hardware\arduino\sam\cores\arduino/Arduino.h:193:0,
    from C:\Users\Rafael\Documents\Arduino\libraries\AcceleroMMA7361\AcceleroMMA7361.h:46,
    from C:\Users\Rafael\Documents\Arduino\libraries\AcceleroMMA7361\AcceleroMMA7361.cpp:22:
    F:\arduino\arduino-1.5.8\hardware\arduino\sam\cores\arduino/wiring_analog.h:40:13: error: initializing argument 1 of ‘void analogReference(eAnalogReference)’ [-fpermissive]
    extern void analogReference( eAnalogReference ulMode ) ;
    ^
    C:\Users\Rafael\Documents\Arduino\libraries\AcceleroMMA7361\AcceleroMMA7361.cpp: In member function ‘int AcceleroMMA7361::getTotalVector()':
    C:\Users\Rafael\Documents\Arduino\libraries\AcceleroMMA7361\AcceleroMMA7361.cpp:372:45: error: ‘square’ was not declared in this scope
    return sqrt(square(_mapMMA7361G(getXRaw())) + square(_mapMMA7361G(getYRaw())) + square(_mapMMA7361G(getZRaw())));
    ^
    Erro compilando.

  18. Sebastian Ortiz - 15 de novembro de 2014

    Buenas tardes,

    Quisiera saber donde puedo conseguir o descargar las librerías que ustedes agregan en la programación, o si me las podrían pasar , les agradecería mucho.

    Gracias, buen día.

  19. Marco - 12 de novembro de 2014

    Boa tarde,

    Estou fazendo um projeto de medição de vibração de motores com esse acelerômetro, e gostaria de saber qual é a velocidade máxima ou aceleração máxima que ele pode medir.

    Grato,
    Marco A.

  20. Marco - 12 de novembro de 2014

    Boa tarde,

    Estou fazendo um projeto de medição de vibração de motores com esse acelerômetro, e gostaria de saber qual é a velocidade máxima ou aceleração máxima que ele pode medir.

    Grato,
    Marco.

  21. Josias - 10 de setembro de 2014

    eu e meu amigo compramos esse acelerometro e o motorshield

    como fazer o motor shield trabalhar conforme o acelerometro ?
    tipo assim quero que sempre o X fique 0 e assim o motor se equilibra tipo um Segway

    obrigado

    • FILIPEFLOP - 11 de setembro de 2014

      Boa tarde Josias,

      Não temos nenhum projeto pronto nesse sentido, mas você pode adaptar os códigos tanto do Acelerômetro quanto do Motorshield ao seu projeto.

      Abraço.

      Adilson – Equipe FILIPEFLOP

Deixe uma resposta