Como obter valores para os eixos X, Y e Z do Acelerômetro e Giroscópio!

APLICAÇÃO E FUNCIONAMENTO O mundo tecnológico evolui cada vez mais e as novas tecnologias estão aí para comprovar isto, temos celulares inteligentes capazes de mudar a posição de sua...

APLICAÇÃO E FUNCIONAMENTO

O mundo tecnológico evolui cada vez mais e as novas tecnologias estão aí para comprovar isto, temos celulares inteligentes capazes de mudar a posição de sua tela com a simples inclinação do equipamento e capazes de identificar se os direcionamos para cima, baixo, esquerda ou direita, por trás de cada uma destas características existe um acelerômetro e/ou um giroscópio.

Para verificarmos algumas destas funcionalidades presentes em nosso cotidiano desenvolvemos um projeto com Arduino capaz de coletar informações semelhantes e que podem ser extremamente úteis caso estejamos dispostos a desenvolver um robô equilibrista, por exemplo, ou um sovo sistema de controle para games, para utilizar este equipamento basta por a cabeça para funcionar.

Neste projeto iremos utilizar o Acelerômetro e Giroscópio controlados pelo MPU-6050 para realizar a leitura dos valores espaciais de X, Y e Z, utilizando todos os 6 eixos de coordenada oferecidos por este exclusivo equipamento, dos quais 3 eixos irão se referir ao acelerômetro e os outros 3 ao giroscópio.

Diferenciando-se dos demais equipamentos que possuem somente um sentido de medida, este equipamento em questão reúne duas funcionalidades em um único módulo, combinando acelerômetro e giroscópio, além de contar também com um sensor de temperatura incluso que permite leituras de -40 a 85°C.

Falamos tanto em acelerômetros e giroscópios porém muitos ainda nem sabem qual a diferença de um para outro e nem mesmo para que ambos servem e o que podem agregar aos seus projetos, de um modo bem simplificado vamos tentar explicar cada um deles e elencar as suas principais diferenças.

Acelerômetro

De modo geral, um acelerômetro é um equipamento capaz de medir a aceleração de um corpo (como seu próprio nome já dá a entender) em relação à gravidade, ou seja, é um equipamento capaz de medir a aceleração exercida sobre determinados objetos, executando algum tipo de ação dependendo do movimento executado sobre o mesmo.

Giroscópio

O giroscópio não possui uma funcionalidade radicalmente diferente do acelerômetro, ele é um sensor que utiliza da força da gravidade para indicar a posição de um determinado objeto no espaço, podendo identificar se você gira algo em seu próprio eixo ou saber se esta apontando ele para cima ou para baixo.

Acelerômetro X Giroscópio

É difícil identificar uma real diferença entre estes equipamentos, podemos dizer que um vai acabar por complementando o outro e tornando as medições de ambos ainda mais precisa e exata, enquanto um mede a aceleração de um corpo em relação à gravidade, o outro mede a posição do corpo através da força da gravidade.

TESTE PRÁTICO

Neste projeto, nosso parceiro do canal WR Kits executou um código exemplo capaz de verificar e exibir em tempo real os 6 valores das coordenadas possíveis de verificação através deste exclusivo sensor, exibindo junto ao monitor serial todos estes valores, tudo isto através de um simplificado sistema de conexão I2C e um código de fácil compreensão.

 

PRODUTOS UTILIZADOS NO PROJETO:

MONTAGEM FÍSICA (HARDWARE)

A montagem física do referente projeto é extremamente simples já que trabalha somente com dois fios de alimentação e dois fios de comunicação I2C, de modo geral esta sua utilização é extremamente simples e rápida, porém este equipamento possui algumas características próprias que podem ser de grande valia no desenvolver do seu projeto.

Por se tratar de uma comunicação I2C, realizada pelos dois pinos de comunicação SCL e SDA conectados aos pinos A5 e A4 respectivamente, podemos observar que além dos pinos de alimentação ainda nos restam outros quatro pinos, neste projeto eles não serão utilizados, porém saiba para que eles servem:

Os pinos XDA e XCL trabalham neste módulo como um tipo de extensão para os pinos de comunicação SDA e SCL, tornando possível a conexão de outro dispositivo de mesmo padrão de comunicação I2C, como um magnetômetro que irá vir a complementar o seu equipamento e aumentar as possibilidades do seu projeto.

Já o pino AD0, por exemplo, possui a capacidade de definir o endereço I2C utilizado para a comunicação, caso o pino AD0 esteja desconectado, ou seja, não esteja sendo utilizado, a comunicação estará definida em 0x68 porém, caso opte em conectar este pino junto ao 3,3V do Arduino, seu endereço será alterado para 0x69.

 

FUNCIONAMENTO DO PROGRAMA (SOFTWARE)

Este projeto é desenvolvido em cima de um código parcialmente complexo e suas variáveis são dependentes de bibliotecas específicas para o seu funcionamento, isto torna necessária a instalação de duas bibliotecas junto ao seu programa Arduino, bibliotecas ás quais estão disponível para download logo abaixo junto ao código exemplo do projeto.

As bibliotecas necessárias para o funcionamento do código são as seguintes:

 #include "I2Cdev.h"

#include "MPU6050.h"

#include "Wire.h"

Porém vale lembrar que esta terceira biblioteca, a Wire.h já vem instalada junto com o programa original do Arduino.

Download do código de funcionamento: DOWNLOAD AQUI.

Este código diferente dos que estamos acostumados a ver em nosso blog trabalha com um valor diferenciado do Baundrate, neste caso fixado em 38400, como demonstrado abaixo:

 Serial.begin(38400);

Um diferencial deste código, é a sua capacidade de testar as conexões e verificar se todas as configurações estão funcionando normalmente, com uma delay de verificação de aproximadamente 1 segundo, os valores dados pelo Módulo MPU-6050 são exibidos em tempo real através da porta serial, e vale lembrar que a mesma deve estar na mesma faixo de Baundrate especificada no código.

CONCLUSÃO

De modo geral este é um projeto simples e extremamente útil para quem deseja desenvolver um código para controle de servos motores, motores DC e diversos outros equipamentos através de um acelerômetro e um giroscópio, realizando o movimento de um braço robótico, por exemplo, alterando o ângulo de alguns motores.

Para quem está desenvolvendo um robô equilibrista e precisa de um equipamento que auxilie o seu robô a permanecer sempre em pé, as funcionalidades e aplicações do Acelerômetro e Giroscópio MPU-6050 são extremamente amplas e com este código como base do seu projeto não possui limites para a sua imaginação.

Monte o seu projeto, pense em alguma aplicação e não se esqueça de comentar aqui em baixo suas ideias e experiências, com este projeto você pode auxiliar seu robô a não perder o controle e tornar a experiência de muitos projetos ainda melhor.

 

Categorias
Arduino
5 Número de Comentários
  • felipe de carvalho eufrosino
    10 outubro 2017 at 22:29
    Enviar Resposta

    É possível conectar mais de um “giroscópio” ao arduino e lê-los de forma separada ?

    • Equipe Usinainfo
      11 outubro 2017 at 20:23
      Enviar Resposta

      Boa tarde!
      É possível conectar até dois giroscópios como este em um Arduino através dos pinos de comunicação I2C, isto pois, quando o pino AD0 estiver desconectado o endereço do sensor será 0x68 e caso você conecte o mesmo em 3,3V o endereço passa a ser 0x69. Basta que deixe cada um dos Giroscópios com um endereço diferente do outro.
      Qualquer duvida estamos a disposição.
      Att Equipe UsinaInfo

  • Hudson junior
    20 outubro 2017 at 03:18
    Enviar Resposta

    Olá !
    Estou tendo alguns problemas nas leituras..
    quando inicio o serial monitor, ele reconhece com sucesso o sensor, porém os valores volta e meia começam a ou ficar gerando o mesmo valor ou zerar, daí do nada volta aos valores aleatórios novamente.
    Sabem me informar o que pode ser ?
    Obrigado.

    • Equipe Usinainfo
      20 outubro 2017 at 19:27
      Enviar Resposta

      Boa tarde!
      Até o momento não lidamos com nenhum problema como este, verificou as soldagens do sensor e se não está ocorrendo algum problema de mal contato? Caso não esteja utilizando um Arduino UNO verificou os pinos de comunicação I2C e o endereço da comunicação?

    • Equipe Usinainfo
      27 outubro 2017 at 13:07
      Enviar Resposta

      Bom dia! Você realizou a soldagem dos pinos e verificou se não pode estar ocorrendo algum tipo de mal contato na protoboard, caso esteja utilizando?

    Enviar Resposta

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados