Aprenda a medir inclinação com a Genuino 101

genuino101 1

Neste artigo mostraremos como fazer para ler a aceleração e a inclinação utilizando uma placa Genuino 101 a partir de seu acelerômetro, embarcado no módulo Intel Curie. Faremos isso utilizando a interface Serial do computador e o terminal da IDE Arduino.

Sobre a placa Genuino 101

A empresa Arduino lançou a placa maker Genuino 101 com o módulo Intel Curie, responsável por ser a central de processamento dessa placa. Nesse módulo  já há embarcado:

  • Processador de 32 bits Quark dual core (x86 e ARC), operando a 32 MHz cada um dos cores, com 24 KB de memória RAM e 196 KB de memória Flash;
  • Módulo Bluetooth Low Energy (BLE);
  • Acelerômetro de 6 eixos integrado;
  • Giroscópio;
  • RTC – Real Time Clock.

Para saber mais detalhes sobre a placa, veja os artigos a seguir:

Teoria

Henrique Torres apresentou nesse texto, e também explicou nesse texto, o princípio de funcionamento de acelerômetros e giroscópios MEMS – Micro Electro Mechanical Systems. Vale a pena dar uma conferida em seu texto para entender como esses dispositivos funcionam por dentro, como são construídos e para que servem.

O acelerômetro digital é um desses componentes eletromecânicos que permite que seja lido, de forma digital, o valor da aceleração exercido nesse componente. Em muitos componentes de mercado, a leitura pode ser feita através de um barramento de comunicação serial, como a I2C ou SPI. Podemos utilizar o valor da aceleração em Gs, dependendo da sensibilidade que o componente tolera. Em diversos acelerômetros o parametro g é configurável digitalmente.

Para quem estiver interessado em como fazer para interfacear um circuito integrado de acelerômetro externo com um Arduino UNO, sugiro dar uma lida nesse post que Fabio Souza publicou no Embarcados, onde interfaceia uma pequena placa GY-521 com um CI de acelerômetro digital MPU-6050, confira neste link.

No caso dessa placa Genuino 101, a Intel disponibilizou uma API para que pudéssemos acessar o CI digital diretamente por software. O Acelerômetro já está integrado ao Módulo Intel Curie como mencionado anteriormente, e apenas precisamos setar o número de gs e fazer a leitura da aceleração. Os exemplos que estão disponibilizados na própria IDE Arduino já trazem tudo que precisamos pra entender como fazer de forma rápida para ler a aceleração e converter pra g. Tudo já está funcionando, basta carregar o exemplo, gravar e testar utlizando o terminal.

Com a informação de aceleração em mãos é possível obter a inclinação, se aplicarmos as leis de Newton, conforme aprendemos nos cursos de física. As equações que aplicamos para esse experimento estão mostradas a seguir:

Equações de inclinação

Então para determinar a inclinação devemos aplicar a seguinte fórmula.

Para x:

Ângulo em relação a x = Arcotangente ( ( Aceleração_g de x ) /  raiz ( (Aceleração_g de y )^2 + (Aceleração_g de z )^ 2 )  )

Para y:

Ângulo em relação a y = Arcotangente ( ( Aceleração_g de y ) /  raiz ( (Aceleração_g de x )^2 + (Aceleração_g de z )^ 2 )  )

Para z:

Ângulo em relação a z = Arcotangente ( ( Aceleração_g de z ) /  raiz ( (Aceleração_g de y )^2 + (Aceleração_g de x )^ 2 )  )

Para ler a aceleração, como disse anteriormente, aproveitei o exemplo da própria biblioteca fornecida pela Intel. Para tal utilizei as funções CurieIMU.readAccelerometer e  convertRawAcceleration, que converte a aceleração em g.

Compilei, conectei o Arduino e gravei.

Leitura da aceleração na genuino 101

Abri o terminal da IDE Arduino e obtive a seguinte imagem. Todas as informações de inclinação referentes aos eixos X, Y e Z serão mostrados.

Terminal da IDE arduino com leitura acelerômetro

Mudei a orientação da placa, para detectar diferentes ângulos, e observei a variação dos valores da aceleração no terminal.

Mudança de orientação para medir a Inclinação na Genuino 101

Utilizei o seguinte código-fonte utilizando a IDE Arduino.

Lembre que, se tiver algum problema pra gravar a placa e reproduzir esse tutorial, execute um reset da placa.

Gostou? Deixe seu comentário abaixo e, caso tenha reproduzido esse tutorial, conte pra gente como foi.

Agradeço a Francesco Sacco pela a ajuda a fazer esse post.

Website | Veja + conteúdo

Sou formado em Engenharia Elétrica na USP Sao Carlos, com mestrado em Engenharia Elétrica no Rochester Institute of Technology pelo CsF. Tenho 17 anos de experiência em projetos de circuitos eletrônicos. Escrevo regularmente para o Embarcados, adoro eventos sobre tecnologia, onde posso rever amigos e conhecer pessoas do ramo.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
3 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Fernando Avelino Ferreira
Fernando Avelino Ferreira
12/04/2021 23:19

como determino a precisão do ângulo medido ?

Vilson Oliveira
Vilson Oliveira
25/07/2016 15:42

Muito bom o artigo!
Thiago, o que você achou dessa placa ?

Vale a pena usar?
Se ela viesse com wifi seria perfeita.
E se também tivesse processador gráfico para telas tft/lcd, seria ótimo.

Angelo Roncali da Silva
Angelo Roncali da Silva
25/07/2016 09:12

Excelente artigo! Só fiquei com dúvida nas frases: “Em diversos acelerômetros o parâmetro g é configurável digitalmente.” e “e apenas precisamos setar o número de gs e fazer a leitura da aceleração”. Como que se obtém o valor de g para configurá-lo?

Talvez você goste:

Séries

Menu