Comece com projeto de sensor de movimento e orientação baseado em MEMS usando placas breakout de Arduino

By Clive "Max" Maxfield

Contributed By DigiKey's North American Editors

Os projetistas precisam cada vez mais fornecer aos seus sistemas capacidade de orientação e movimento. Felizmente, sensores baseados em tecnologias de estado sólido (semicondutor) e sistemas microeletromecânicos (MEMS) tornaram-se disponíveis para ajudá-los nesta tarefa. O tamanho pequeno e custo baixo permite que a detecção de orientação e movimento seja implantada numa ampla gama de sistemas, que inclui drones, robôs e claro produtos portáteis como computadores tablet e smartphone. Esses sensores também são usados em sistemas de manutenção preditiva para a Internet Industrial das Coisas (IIoT), ao fornecer dados para análises usando inteligência artificial (IA) e aprendizado de máquina (AM) de ponta.

Os principais tipos de sensores MEMS usados para detectar movimento e orientação são acelerômetros, giroscópios, magnetômetros e várias combinações. Embora muitos projetistas estão interessados em incorporar sensores de movimento e orientação aos seus projetos, eles normalmente não sabem por onde começar.

Uma opção é usar kits de desenvolvimento e teste oferecidos pelo fornecedor de sensor MEMS para dar suporte às soluções. Assumindo que há um bom nível de suporte, essa é uma abordagem perfeitamente adequada. Contudo, isto exige do projetista restringir-se a usar somente os sensores de um único fornecedor ou aprender as ferramentas de software de vários fornecedores de sensores.

Como alternativa, os projetistas que não estão acostumados a trabalhar com sensores de movimento e orientação, podem se beneficiarem da experimentação e prototipagem ao usar placas de desenvolvimento microcontroladoras de baixo custo e software livre da Arduino, junto com seu ambiente de desenvolvimento integrado (IDE), em conjunto com as placas breakout de sensor de baixo custo e software livre (BOBs) que apresentam sensores de vários fornecedores.

Para ajudar os projetistas a iniciarem, este artigo fornece um glossário de terminologia de sensor e uma breve discussão do papel dos sensores de movimento e orientação. Em seguida, introduz uma seleção de tais BOBs de sensores da Adafruit e suas utilidades.

Glossário de terminologia de sensores

Dois termos que são normalmente usados ao se referir a sensores de movimento e orientação são o “número de eixos” e “graus de liberdade” (DOF). Infelizmente, esses termos são usados como sinônimos com frequência, o que pode causar confusão.

Generalizando, o termo eixo (plural eixos) pode se usado para descrever a dimensionalidade dos dados a serem implementados por um sistema. No contexto de movimento e orientação, há três eixos de interesse X, Y e Z.

O modo na qual esses eixos são visualizados depende do sistema em questão. No caso de um smartphone em uma orientação retrato, por exemplo, o eixo X é horizontal com respeito à tela e pontos à direita, o eixo Y é vertical com respeito à tela e pontos acima, por fim o eixo Z, que é perpendicular aos outros dois eixos, é considerado ponto fora da tela (figura 1).

Diagrama do sistema físico só pode ter no máximo seis DOFFigura 1: um sistema físico só pode ter no máximo seis DOF, porque há apenas seis modos no qual ele pode se mover no espaço 3D: três lineares e três angulares. (Fonte da imagem: Max Maxfield)

Com respeito a um dispositivo como um smartphone, há dois tipos de movimento de interesse: linear e angular. No caso do movimento linear, o sistema pode mover de lado a lado no eixo X, acima e abaixo no eixo Y e para frente e para trás no eixo Z. No caso do movimento angular, o sistema pode rotacionar ao redor de um ou mais dos três eixos.

No contexto de movimento, o DOF se refere a quaisquer das direções na qual o movimento independente pode ocorrer. Com base nisso, um sistema físico só pode ter no máximo seis DOF (6DOF), porque há apenas seis modos no qual ele pode se mover no espaço 3D (três lineares e três angulares).

O termo “orientação” refere-se a posição física ou direção de algo relativo a outro referencial. No caso de um smartphone, a orientação determina se o telefone está deitado de costas, levantado sobre uma borda (seja no modo retrato ou paisagem) ou algo intermediário.

Uma maneira de perceber isso, é através da orientação de um dispositivo que pode ser especificada por valores de todos os possíveis DOFs ao mesmo tempo tX. Por comparação, o movimento de um dispositivo é determinado pelas diferenças entre valores de todos os possíveis DOFs entre os tempos t0 e t1.

Sensores como acelerômetros, giroscópios e magnetômetros estão disponíveis com um, dois ou três eixos. Um acelerômetro de 1 eixo, por exemplo, só detectará mudanças ao longo de qualquer um dos três eixo ao qual está alinhado; um sensor de 2 eixos detectará mudanças em dois dos três eixos; e um sensor de 3 eixos detectará mudanças em todos os três eixos.

Se uma plataforma do sensor é descrita como rastreamento de mais do que seis eixos, isto indica que ela fornece um grau de precisão mais alto através do rastreamento de vários pontos de dados junto (ou ao redor) dos eixos X, Y e Z. Um exemplo é um pacote de acelerômetros de 12 eixos que utiliza medidas de aceleração linear de quatro acelerômetros de 3 eixos.

Infelizmente, é comum confundir DOF com o número de eixos. Por exemplo, a combinação de um acelerômetro de 3 eixos, giroscópio de 3 eixos e magnetômetro de 3 eixos pode ser descrita por alguns fornecedores com um sensor 9DOF, embora ele deveria ser descrito mais corretamente como um sensor 6DOF de 9 eixos.

Fusão de sensores

Além de medir aceleração, um acelerômetro também mede gravidade. Por exemplo, no caso de um smartphone, um acelerômetro de 3 eixos pode determinar qual direção é para baixo, mesmo se o usuário estiver ainda parado e o dispositivo sem movimento.

Um acelerômetro de 3 eixos também pode ser usado para determinar a orientação vertical e horizontal do dispositivo, cuja informação pode ser usada para exibir no display nos modos retrato ou paisagem. Sozinho, contudo, o acelerômetro não pode ser usado para determinar a orientação do smartphone com respeito ao campo magnético da Terra. Essa capacidade é necessária para tarefas como aplicativos de planetário, que permite ao usuário identificar e localizar estrelas, planetas e constelações no céu noturno pelo simples apontamento do dispositivo direto à área de interesse. Nesse caso, um magnetômetro é necessário. Se o smartphone for sempre colocado deitado sobre uma mesa, então um magnetômetro de 1 eixo seria suficiente. No entanto, uma vez que um magnetômetro pode ser usado em qualquer direção, é necessário implementar um magnetômetro de 3 eixos.

Os acelerômetros não são afetados pelo campo magnético ao redor, mas são afetados pelo movimento e vibração. Por comparação, os magnetômetros não são afetados pelo movimento e vibração por segundo, mas podem ser influenciados pelos materiais magnéticos e campos magnéticos na vizinhança.

Embora um acelerômetro de 3 eixos também pode ser usado para obter dados rotacionais, um giroscópio de 3 eixos fornece dados mais precisos com respeito ao momento angular. Os giroscópios trabalham bem e chegam para medir velocidade de rotação, além de não serem afetados pela aceleração de uma direção linear ou por campos magnéticos. Contudo, os giroscópios têm uma tendência de gerar uma pequena velocidade de rotação “residual”, mesmo quando estão parados. Isso é conhecido como “compensação de deriva zero”. O problema aumenta se o usuário tenta determinar um ângulo absoluto ao usar o giroscópio, na qual caso seja necessário integrar a velocidade de rotação para obter a posição angular. O problema com integração nessa situação é que erros podem acumular. Por exemplo, um erro pequeno de somente 0,01 grau na primeira medição pode chegar a um grau completo após 100 medições. Isso é conhecido como “deriva do giroscópio”.

O termo “fusão de sensores” refere-se à combinação de dados de sensoriamento derivados de fontes distintas, de modo que a informação resultante possui menos incerteza do que aquelas cujos dados são de fontes usadas individualmente.

No caso de uma matriz de sensores composta de um acelerômetro de 3 eixos, giroscópio de 3 eixos e magnetômetro de 3 eixos, por exemplo, os dados do acelerômetros e magnetômetro podem ser usados para cancelar a deriva do giroscópio. Ao mesmo tempo, os dados do giroscópio podem ser usados para compensar qualquer ruído induzido por vibração do acelerômetro e ruído induzido por campo/material magnético do magnetômetro.

O resultado do uso da fusão de sensores é que a precisão da saída excede a precisão dos sensores individuais.

Introdução de alguns sensores representativos

Dependendo da aplicação, o projetista pode querer implementar apenas um tipo simples de sensor de movimento/orientação na forma de um acelerômetro, giroscópio ou magnetômetro.

Um bom acelerômetro introdutório é o 2019 BOB da Adafruit, que apresenta um acelerômetro de 3 eixos com um conversor analógico para digital (ADC) de 14 bits (figura 2).

Imagem do 2019 BOB da AdafruitFigura 2: o 2019 BOB da Adafruit apresenta um acelerômetro de 3 eixos que pode ser usado para detectar movimento, inclinação e orientação básica. (Fonte da imagem: Adafruit)

O sensor de 3 eixos de alta precisão possui uma ampla gama de ±2 g a ±8 g e pode ser usado para detectar movimento, inclinação e orientação básica. O sensor requer uma fonte de 3,3 volts, mas a BOB inclui um regulador de queda de tensão a 3,3 volts e circuitos de deslocamento de nível, por meio do qual é seguro usar uma alimentação e lógica de 3 ou 5 volts. A comunicação entre a BOB e o Arduino (ou outro microcontrolador) é desenvolvida através de I2C.

Para aplicações que necessitam apenas de um sensor giroscópio para detectar movimentos de torções e giros, uma boa placa de introdução é a 1032 BOB da Adafruit com o L3GD20H giroscópio de 3 eixos da STMicroelectronics. Ao suportar as interfaces I2C e SPI com o Arduino (ou outro microcontrolador), o L3GD20H pode ser ajustado para escala de ±250, ±500 ou ±2000 graus por segundo numa ampla gama de sensibilidade. De novo, o sensor requer uma fonte de 3,3 volts, mas a BOB inclui um regulador de tensão a 3,3 volts e circuitos de deslocamento de nível, o que permite ser usado com uma alimentação e lógica de 3 ou 5 volts.

De forma semelhante, para aplicações que necessitam de um sensor magnético, uma boa opção de avaliação é o 4479 BOB da Adafruit, que apresenta o LIS3MDL magnetômetro de 3 eixos da STMicroelectronics. O LIS3MDL pode detectar faixas de ±4 gauss (±400 microtesla (µT)) até ±16 gauss (±1600 µT ou 1,6 millitesla (mT)). A comunicação entre a BOB e o Arduino (ou outro microcontrolador) é desenvolvida através de I2C. Novamente, a BOB inclui um regulador de tensão de 3,3 volts e circuitos de deslocamento de nível, por meio do qual é seguro usar uma alimentação e lógica de 3 ou 5 volts.

É muito comum vários sensores serem usados em conjunção entre eles. Por exemplo, um acelerômetro pode ser usado em conjunção com um giroscópio para desenvolver tarefas como captura de movimento 3D e medidas inerciais; isto é, permite ao usuário determinar como um objeto está movendo num espaço 3D. Um exemplo desse combo, oferecido pela Adafruit é o 4480 BOB (figura 3), que apresenta o LSM6DS33 chip de sensor da STMicroelectronics.

Imagem do 4480 BOB da AdafruitFigura 3: o 4480 BOB da Adafruit apresenta o LSM6DS33TR acelerômetro de 3 eixos e um giroscópio de 3 eixos que podem ser usados para desenvolver tarefas como captura de movimento 3D e medidas inerciais. (Fonte da imagem: Adafruit)

O acelerômetro de 3 eixos pode fornecer dados como em qual direção está apontada à Terra pela medida da gravidade, além de quão rápido a placa acelera no espaço 3D. Ao mesmo tempo, o giroscópio de 3 eixos pode medir torção e giro. Assim como as outras BOBs de sensores apresentadas anteriormente, a 4480 BOB inclui um regulador de 3,3 volts e circuitos de deslocamento de nível, tornando-a segura para uso com alimentação e lógica de 3 ou 5 volts. Igualmente, os dados do sensor pode ser acessado através das interfaces I2C ou SPI, o que permite ser usada com um Arduino (ou outro microcontrolador) sem qualquer configuração complicada de hardware.

Mais um exemplo de uma BOB de dois sensores é a 1120 da Adafruit, que apresenta a combinação de um acelerômetro de 3 eixos e um magnetômetro de 3 eixos na forma de um LSM303 chip de sensor da STMicroelectronics. As comunicações entre o microcontrolador e a 1120 são feitas via uma interface I2C, e a BOB inclui um regulador de 3,3 volts e circuitos de deslocamento de nível, tornando-a segura para uso com alimentação e lógica de 3 ou 5 volts.

Alumas aplicações necessitam o uso de acelerômetros, giroscópios e magnetômetros. Nesse caso, uma BOB introdutória útil oferecida pela Adafruit é a 3463, que apresenta dois chips de sensores: um giroscópio de 3 eixos e um acelerômetro de 3 eixos com um magnetômetro de 3 eixos. As comunicações entre a BOB e microcontrolador são implementadas via uma interface SPI. Do mesmo modo, inclui um regulador de tensão de 3,3 volts e circuitos de deslocamento de nível, tornando-a segura para uso com uma alimentação e lógica de 3 ou 5 volts.

Uma vantagem da 3463 BOB é que o projetista recebe acesso aos dados brutos dos três sensores. Como desvantagem correspondente, ao usar esse sensor (ao manipular e processar seus dados) exigirá aproximadamente 15 kilobytes (Kbytes) de memória flash do microcontrolador, além de consumir muitos ciclos de clock.

Como alternativa, a Adafruit oferece o 2472 BOB que apresenta um BNO055 chip de sensor da Bosch. O BNO055 inclui um acelerômetro de 3 eixos, um giroscópio de 3 eixos e um magnetômetro de 3 eixos, todos apresentados num único invólucro (figura 4).

Imagem do sensor BNO055 na 2472 BOB da AdafruitFigura 4: além do acelerômetro de 3 eixos, giroscópio de 3 eixos e magnetômetro de 3 eixos, o sensor BNO055 na 2472 BOB da Adafruit também inclui um processador Arm Cortex-M0 que desenvolve a fusão de sensores. (Fonte da imagem: Adafruit)

O BNO055 inclui ainda um processador Arm Cortex-M0 de 32 bits, que pega os dados brutos dos três sensores, desenvolve a fusão sofisticada dos sensores e fornece aos projetistas as informações processadas nas formas que eles podem usar: quatérnios, ângulos de Euler e vetores. Mais especificamente, via a interface I2C da 2472 BOB, os projetistas podem acessar de forma rápida e fácil os seguintes parâmetros:

  • Orientação absoluta (vetor Euler, 100 Hertz (Hz)): dados de orientação dos três eixos com base numa esfera de 360°.
  • Orientação absoluta (quatérnio, 100 Hz): saída de quatérnio de quatro pontos para manipulação mais precisa de dados.
  • Vetor de velocidade angular (100 Hz): três eixos da “velocidade de rotação” em rad/s.
  • Vetor de aceleração (100 Hz): três eixos da aceleração (gravidade + movimento linear) em metros por segundo ao quadrado (m/s2).
  • Vetor de intensidade do campo magnético (20 Hz): três eixos da detecção do campo magnético (em µT).
  • Vetor de aceleração linear (100 Hz): três eixos dos dados de aceleração linear (aceleração menos gravidade) em m/s2.
  • Vetor gravidade (100 Hz): três eixos da aceleração gravitacional (menos qualquer movimento) em m/s2.
  • Temperatura (1 Hz): temperatura ambiente em graus Celsius.

Ao ter a fusão de sensores desenvolvida sobre chip, isso libera a memória principal do microcontrolador e ciclos de computação, o que é ideal for projetistas que criam sistemas de tempo real e baixo custo. Além disso, os algoritmos de fusão de sensores podem ser difíceis e consumir tempo de pesquisa. Ao ter a fusão de sensores desenvolvidas sobre chip, isso permite aos desenvolvedores de sistema pôr em funcionamento em minutos, ao contrário dos dias e semanas caso implementassem algoritmos a partir do zero.

Conclusão

Muitos projetistas estão interessados em incorporar sensores de movimento e orientação aos seus projetos, mas não sabem por onde começar. No caso de projetistas que não estão acostumados a trabalhar com estes dispositivos, ficar familiarizados com os sensores de vários fabricantes pode se desafiante. Uma maneira de começar a experimentação e prototipagem é usar placas de desenvolvimento microcontroladoras de software livre e baixo custo como o Arduino, junto com BOBs de sensores de software livre e baixo custo, as quais apresentam sensores de vários fornecedores.

Leitura complementar:

  1. Use Arduino BOBs para avaliar rapidamente sensores e periféricos
  2. O IoT, IIoT, e AIoT e por que eles são o futuro da automação industrial
  3. Leve facilmente a inteligência artificial a qualquer sistema industrial
DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield received his BSc in Control Engineering in 1980 from Sheffield Hallam University, England and began his career as a designer of central processing units (CPUs) for mainframe computers. Over the years, Max has designed everything from silicon chips to circuit boards and from brainwave amplifiers to steampunk Prognostication Engines (don't ask). He has also been at the forefront of Electronic Design Automation (EDA) for more than 30 years.

Max is the author and/or co-author of a number of books, including Designus Maximus Unleashed (banned in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access, and How Computers Do Math. Check out his “Max’s Cool Beans” blog.

About this publisher

DigiKey's North American Editors