terça-feira, agosto 10, 2021

Acelerômetro 3 Eixos MMA8452: Introdução e uso com um Arduino

Mais um sensor para a coleção! Este é um acelerômetro capaz de medir a aceleração em três eixos (X, Y e Z, onde Z normalmente é a vertical) e que implementa várias funções adicionais para facilitar o seu uso.

A figura abaixo (extraída do datasheet) apresenta o diagrama de blocos do sensor. As acelerações são medidas por transdutores, cuja capacitância varia com a aceleração. Esta capacitância é convertida em tensão e digitalizada por um ADC de 12 bits (que pode ser configurado para trabalhar com 8 bits para ser mais rápido).

O que distingue o MMA8452 de outros acelerômetros é a presença de um processador de sinais digitais (DSP) que é capaz de detectar diversas condições. Estas condições podem ser lidas pelo microcontrolador, gerar interrupção ou controlar o recurso de economia de energia (sleep) do sensor.

Como de costume, a interface com o microcontrolador é feita através de registradores (e o MMA8452 tem dezenas deles) que são acessíveis através de uma interface serial I2C. Esta interface opera nos modos normal (100KHz) e rápido (400KHz), o endereço pode ser selecionado entre 0x1C e 0x1D.

O datasheet menciona como usos:

  • detecção da orientação
  • detecção de queda livre ou capotamento
  • contagem de passos
  • detecção de movimento / parada
  • monitoração de vibração e choque
  • interface com o operador (detecção de rotação, toque, duplo toque, etc)
O sensor opera a 3,3V, porém o módulo que estou usando possui um regulador para permitir a alimentação com 5V e, para minha surpresa, circuito para ligar de forma segura a dispositivos I2C de 5V (achei o esquema do módulo neste anúncio).

Para um teste rápido com um Arduino Nano, vamos usar uma biblioteca da Sparkfun (se você encontrar um funcionário da Sparkfun não deixe de pagar uma cerveja!)


A montagem é trivial:



Rodando o "Example1_BasicReading" da biblioteca, teremos no Monitor Serial as leituras das acelerações (usando a aceleração da gravidade como unidade):


No próximo post vamos fazer um módulo MicroPython para usar este sensor junto com a Raspberry Pi Pico.

Nenhum comentário: