segunda-feira, 30 de janeiro de 2017

Sense HAT - O acelerómetro

Tal como indicámos em artigo anterior, o Sense HAT tem incluído um IMU que comporta um acelerómetro.

Há que compreender o que é medido pelo acelerómetro. Em primeiro lugar, o acelerómetro do Astro Pi  é um acelerómetro 3D, isto é, apresenta o valor da aceleração relativamente a 3 eixos: X, Y e Z. De acordo com a data sheet do IMU LSM9DS1, o que encontramos no Sense HAT, a direção de cada um dos eixos é a seguinte:

Se atentarmos à posição do IMU no Sense HAT, podemos indicar os eixos relativamente à placa:

Nem sempre é fácil interpretar os valores obtidos a partir de um acelerómetro. Isto porque um acelerómetro mede aceleração própria, isto é, a aceleração é medida em relação a outro sistema em queda livre. Matematicamente, isto é o mesmo que dizer que o acelerómetro mede não o valor da aceleração, a, mas outra grandeza, a', dada por:


Por isso, caso deixemos o acelerómetro em repouso numa mesa, com a face superior virada para cima, ele medirá:


Como o eixo Z do IMU usado tem o sentido de baixo para cima, contrário à direção da aceleração gravítica, o valor medido será positivo e igual ao valor da aceleração gravítica.

Caso o corpo se encontre em queda livre, sem rotação, o valor registado pelo acelerómetro será:


Mais sobre este assunto pode ser encontrado nos seguintes artigos: Experimentos com Acelerômetro de Tablets e Smartphones e Um passeio sobre a noção de aceleração.

Quanto à unidade da aceleração, no Sistema Internacional, é m/s2. No entanto, é possível também usar a unidade g que corresponde à aceleração devida à força gravítica da Terra sobre os corpos na superfície terrestre. 1 g corresponde ao valor 9,806 m/s2. Será esta a unidade de medida do acelerómetro do Sense HAT.

De acordo com a documentação da API do Sense HAT, são estes os comandos que temos disponíveis para tirar partido do acelerómetro:

get_accelerometer: Desativa o magentómetro e o giroscópio e obtém a orientação apenas através do acelerómetro. Os calores obtidos corresponderão a ângulos de orientação relativamente aos eixos pitch, roll e yaw.

from sense_hat import SenseHat

sense = SenseHat()
accel_only = sense.get_accelerometer()
print("p: {pitch}, r: {roll}, y: {yaw}".format(**accel_only))

# alternatives
print(sense.accel)
print(sense.accelerometer)


get_accelerometer_raw: Devolve o valor da aceleração (em g) segundo os eixos X, Y e Z.

from sense_hat import SenseHat

sense = SenseHat()
raw = sense.get_accelerometer_raw()
print("x: {x}, y: {y}, z: {z}".format(**raw))

# alternatives
print(sense.accel_raw)
print(sense.accelerometer_raw)

Façamos um programa muito simples:


Observando os valores obtidos e, de acordo com o que estudámos, podemos já responder às seguintes questões:
  1. Porque é que, em repouso sobre uma mesa, o valor da aceleração segundo o eixo Z indicado pelo acelerómetro é positivo (indicando para cima) e não negativo (indicando para baixo)?
  2. Porque é que, em repouso na ISS, o acelerómetro indica geralmente valores próximo de zero em todos os eixos?
Apesar do valor lido pelo acelerómetro num Astro Pi em repouso na ISS ser geralmente próximo de zero, há uma situação em que tal não acontece. Na verdade, mesmo nas altitudes a que a ISS gravita existe sempre alguma atmosfera, responsável por uma pequena mas contínua perda de altura. Por isso, uma ou duas vezes por mês, a ISS está sujeita a um "reboost", uma correção de órbita. Esta alteração do movimento deve ser possível de identificar com o acelerómetro do Astro Pi. Este assunto está bastante bem explicado no documento Astro Pi Worksheet

Ainda sobre a aceleração na ISS, vale a pena ver o vídeo realizado pelo Comandante Jeff Williams:



Sem comentários:

Enviar um comentário