O acelerómetro adxl330 é um sensor de aceleração sensível ao movimento nos 3 eixos (x,y,z) montado numa pequena placa com espaçamento DIP. Possui 6 pinos; VDD a 3 Volts, GND, X,Y e Z, sendo que o pino ST fica desconectado. Pode ser comprado por cerca de 35$ na loja online sparkfun onde se encontra também disponível para download o datasheet com informação técnica detalhada.
A sua ligação ao Arduino Deciemila ou ao Arduino BT é extremamente fácil, atendendo a que ambas as placas dispõem de uma saída de 3V3. O sensor envia a informação do movimento através das saídas analógicas X,Y e Z.
O programa que nós testámos envia repetidamente os valores da aceleração nos 3 eixos para a porta de comunicações podendo ser lido a partir de qualquer aplicação de terminal parametrizado com uma velocidade de transferência de 9600 bauds.
O acelerómetro pode ser usado para registar a aceleração do movimento mantendo a placa sempre orientada na vertical ou, alternativamente, para registar a orientação da placa, mantendo-a fixa numa posição e orientando-a livremente (tilt).
No primeiro caso, integrando a velocidade podemos interpolar a posição através do método de integração de Euler:
Se pretendermos usar o sensor para conhecermos a orientação da placa nos 3 eixos (segundo caso) basta-nos ler directamente os valores X,Y e Z.
Quando os dados são lidos directamente a partir da instrução analogRead e com a placa em repouso, verificámos que os valores oscilam bastante. O código que apresentamos resolve esse problema implementando um filtro digital que suaviza os dados. O método usado é simples; guardam-se as últimas 7 amostras e calcula-se a média.
Se o objectivo for implementar um sistema de interacção com o PC, ligando a placa arduino ao Processing, Flash, Max MSP ou outro SDK, temos de ter em linha de conta que a aplicação terá de calibrar os dados. No nosso caso, com a placa em repouso, os valores obtidos nos 3 eixos situavam-se próximos do valor 340. Uma rotação de +-90º ao longo de cada um dos eixos provocava uma oscilação proporcional de +-60 unidades, o que resulta uma resolução ligeiramente inferior a 2º por unidade.
Encontrei agora o seu blog. Aproveito para lhe dar os meus parabéns, ja que tem aqui uma boa fonte de entertenimento com electrónica/programação!