Posts com Tag ‘inclinação’

Introdução

 

Neste artigo técnico será apresentado o recurso que alguns circuitos integrados sensores de movimento oferecem para a calibração de zero dos seus sensores. Também será apresentado um programa desenvolvido para essa função, baseado em programas usuais encontrados na internet, com diversas melhorias.

Os sensores de movimento já vêm pré-calibrados de fábrica, porém é uma calibração rudimentar. Se um desses sensores for utilizado em aplicações que necessitam de uma maior precisão nas medidas, faz-se necessário realizar uma nova calibração de zero (ou offset) mais fina para compensar eventuais erros que o componente possa apresentar.

 

 

Propriedades dos sensores

 

Para podermos calibrar o zero tanto do acelerômetro quanto do giroscópio, devemos observar as seguintes propriedades dos sensores:

  • Seja um acelerômetro de 3 eixos posicionado numa superfície horizontal, nivelada perfeitamente, como ilustrado na Figura 1.

Figura 1 – Acelerômetro de 3 eixos perfeitamente nivelado

 

Note que o eixo Z fica perfeitamente alinhado com a gravidade da Terra e os eixos X e Y perfeitamente perpendiculares.  Nessa situação, o acelerômetro deverá apresentar leituras de 0 g nos eixos X e Y enquanto apresenta +1 g no eixo Z, onde g = 9,8 m/s². Se o acelerômetro não estiver nivelado (Figura 2) ou fora de calibração, ele indicará valores distintos dos esperados.

Figura 2 – Acelerômetro desnivelado

 

  • O giroscópio mede alterações na direção do movimento. Para calibrar o zero de um giroscópio, basta deixar o componente parado e em repouso.

 

Assim, para podermos calibrar simultaneamente tanto os zeros dos 3 eixos dos acelerômetros quanto as referências dos giroscópios, basta nivelar o sensor e mantê-lo parado e em repouso.

 

Recursos auxiliares

 

Para viabilizar a calibração de zero é necessário preparar uma superfície plana e nivelada horizontalmente. Essa superfície será a base sobre a qual será colocado o acelerômetro e que facilitará a realização do processo de calibração. É recomendada a utilização de ferramentas auxiliares para ajudar a medir o nivelamento da superfície. Uma ferramenta bastante comum e fácil de usar é o medidor de nível que usa ampolas de vidro com bolhas de ar dentro (Figura 3).

Figura 3 – Nível de bolha para nivelar 2 direções

 

Você pode também utilizar um App de medidor de nível tipo bolha para seu celular, o Bubble Level Galaxy, por exemplo (Figura 4) e usar o seu celular como ferramenta.

 

Figura 4 – Vista do aplicativo Bubble Level Galaxy

 

Se houver a necessidade de um ajuste mais fino, mais preciso, pode-se confeccionar uma plataforma de superfície plana, na qual sejam montados 3 pés niveladores, conforme ilustrado na Figura 5. Para ajustar os  níveis da plataforma, devemos ajustar um pé nivelador de cada vez.

Figura 5 – Superfície plana com pés niveladores

 

Preparada a superfície nivelada, podemos posicionar o acelerômetro sobre essa superfície e iniciar o processo de calibração. Note que o plano XY do acelerômetro deve ser precisamente paralelo à superfície nivelada.

 

Calibração do MPU-6050

 

O componente eletrônico MPU-6050 possui recursos para calibração dos zeros dos sensores. É recomendável realizar uma leitura criteriosa dos manuais desse componente para uma melhor compreensão:

O manual que trata especificamente dos registros de offset é o último da lista acima [3]. O MPU-6050 tem algumas particularidades com relação aos registros de offset:

  • Eles já vêm pré-programados de fábrica e esses valores originais são carregados nos registros ao energizar o componente;
  • Os registros de offset são voláteis, ou seja, os valores são apagados ao desligar o componente. Se inicializados com valores distintos dos originais, esses valores serão perdidos se não forem providenciados mecanismos de inicialização ao religar;
  • O bit zero de cada registro de offset dos acelerômetros deverá ser preservado, pois são bits reservados;
  • No caso dos giroscópios não é necessário preservar o bit 0;
  • A escala para a calibração apresentada no manual [3], é de ± 8 g. Sugiro que se faça essa calibração na mesma escala em que o acelerômetro irá trabalhar.

O programa desenvolvido para a calibração dos zeros do MPU-6050 é parte integrante do projeto de monitoramento de estruturas, projeto apresentado aqui anteriormente. Pode-se ver os detalhes do projeto como um todo, lendo o artigo técnico a seguir.

 

Para testar as rotinas de calibração, basta baixar o programa MPU6050 (51 MB) e descompactar o projeto no diretório de sua preferência. Em seguida utilizar o PlatformIO para abrir esse projeto (Figura 6).

Figura 6 – Vista da janela de abertura do PlatformIO

 

Não é necessário instalar algum programa de aquisição de dados para comandar a calibração de zeros. Tudo será feito na janela do terminal do PlatformIO. Após descompactar o programa, inicie o PlatformIO. Em seguida compile e transfira o programa para o seu Arduino. Depois, selecione a opção Serial Monitor (Figura 7).

 

Figura 7 – Selecionando o comando Serial Monitor

 

Após abrir o terminal do Serial Monitor, basta teclar c para iniciar a calibração. Veja os detalhes na Figura 8.

 

Figura 8 – Tela típica da calibração

O programa é executado na parte inferior da tela. As informações mostradas na tela do terminal podem ser vistas na Figura 8. São:

  • Calibrando (0) …. Sinaliza que está realizando a operação de calibração e entre parêntesis o número da interação (no caso 0 = 1ª). Os pontinhos sinalizam que o programa está realizando as medidas e sinalizam que está operando normalmente;
  • Offset do Giro eixo (X, Y, Z) = NNNN mostrando os últimos offsets lidos dos giroscópios;
  • Offset do Acel eixo (X, Y, Z) = NNNN mostrando os últimos offsets lidos dos acelerômetros;
  • Offset do Giro padrão eixo (X, Y, Z) = KKKK mostrando os parâmetros calculados que serão transferidos para os registros de correção de offset dos giroscópios;
  • Offset do Acel padrão eixo (X, Y, Z) = KKKK mostrando os parâmetros calculados que serão transferidos para os registros de correção de offset dos acelerômetros;

 

A calibração é executada repetidamente dentro da função vLeOffsets(), durante N_INTERACOES_CALIBRACAO vezes, realizando a coleta de N_MEDIAS_CALIBRACAO amostras, para calcular a média das medidas realizadas. Após essas leituras, são calculados os valores médios e são comparados esses valores médios com os valores esperados. Na sequência, as diferenças são multiplicadas por um FATOR_DE_APROXIMACAO_CAL e subtraídas dos valores dos registros de offset. Uma vez que a relação entre o conteúdo do registro de offset e o offset propriamente dito não é linear, a aproximação por realimentação de uma quantidade pequena do erro para esse ajuste resulta em melhor convergência do que a correção direta.

No programa disponibilizado, os valores usados para as variáveis acima são:

  • N_INTERACOES_CALIBRACAO     –  9
  • N_MEDIAS_CALIBRACAO             – 1024
  • FATOR_DE_APROXIMACAO_CAL – 0,1 (na escala de 2g)

Se acontecer do programa ainda não ter convergido para os valores desejados, basta teclar o c novamente que o processo será repetido a partir do ponto em que parou. Esse processo é demorado e é importante esperar que ele termine todo o ciclo, pois só no final que os parâmetros de offset são gravados na memória para uso posterior.

Quando o resultado for satisfatório, basta teclar <ctrl-c> para encerrar a execução do programa no terminal do PlatformIO.

 

Calibração do ADXL355

 

O componente eletrônico ADXL355 é um acelerômetro de 3 eixos. Ele não possui outros sensores de movimento. Possui, porém, o recurso para calibração de zero dos sensores de aceleração. É recomendável que se faça a leitura criteriosa do seguinte manual desse componente:

O programa desenvolvido para esse acelerômetro é semelhante ao que apresentamos para o MPU-6050. Assim como foi mostrado para o MPU-6050, para testar as rotinas de calibração, basta baixar o programa ADXL355 (50 MB) e descompactar o projeto no diretório de sua preferência. Em seguida utilizar o PlatformIO para abrir esse projeto (Figura 6). Em seguida compile e transfira o programa para o seu Arduino. Depois, selecione a opção Serial Monitor. Após abrir o terminal do Serial Monitor, basta teclar c para iniciar a calibração. Veja os detalhes na Figura 9.

Figura 9 – Vista das mensagens de calibração

As mensagens e a operação são muito semelhantes às já apresentadas anteriormente. Repare apenas que são calibrados apenas os acelerômetros.

 

Conclusão

 

Os sensores de movimento MPU-6050 e ADXL355 possuem recursos para calibrar o zero dos acelerômetros e o MPU-6050 o zeros dos giroscópios. Este artigo técnico apresenta programas desenvolvidos para o Arduino, que facilitam a calibração e guarda dos parâmetros para uso posterior.

Os algoritmos desenvolvidos para essa finalidade, funcionam e convergem satisfatoriamente para os valores de compensação necessários.

Referências

 

[1] MPU-6000 and MPU-6050 Product Specification

[2] MPU-6000 Register Map and Descriptions

[3] MPU Hardware Offset Registers Application Note

[4] AXL354/355

 

 

Licença Creative Commons
Esta obra, “Calibração de zero dos sensores de movimento MPU-6050 e ADXL355“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.