Olá a todos ;D!
Hoje venho-vos mostrar um dispositivo bastante interessante. Com certeza que já todos conhecem aqueles telemóveis que quando são girados o ecrã também roda. Pois é, isso normalmente é feito à custa de um pequeno integrado chamado acelerómetro.
Para este tutorial vou usar o pequeno acelerómetro da Freescale, o MMA7260. Este é um acelerómetro de 3-eixos, isto é, consegue detectar acelerações em 3 direcções (X, Y e Z), isto é bom para aplicações 3D.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.sparkfun.com%2Fcommerce%2Fimages%2Fproducts%2FMMA7260Q.jpg&hash=04099e7c25b4365667a5ad8a184b1a955aab9326)
A Sparkfun vende este acelerómetro Sparkfun MMA7260Q (http://www.sparkfun.com/commerce/product_info.php?products_id=308), mas pelo preço compensa comprar a board feita pela Sparkfun já com os componentes necessários todos soldados e com os pinos de modo a que seja só preciso encaixa-la na breadboard! Link Sparkfun MMA7260Q Breakout Board (http://www.sparkfun.com/commerce/product_info.php?products_id=252).
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.sparkfun.com%2Fcommerce%2Fimages%2Fproducts%2FTri-Ax-Breakout.jpg&hash=82c23a55655b9c8b0a044fe1d0ac6aef4b22cc61)
A Freescale também envia gratuitamente samples deste acelerometro aqui (http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA7260QT&nodeId=01126911184209).
ATENÇÃO O CHIP DE SAMPLE É SMD, É NECESSÁRIO BASTANTE EXPERIÊNCIA E TÉCNICA DE SOLDADURA PARA FAZEREM A VOSSA PCB E SOLDAREM LÁ ESTE CHIP.
Pelo trabalho mais vale comprarem a Breakout Board da Sparkfun!
O datasheet MMA7260Q (http://www.sparkfun.com/datasheets/Accelerometers/MMA7260Q-Rev1.pdf) (este acelerómetro) é muito bom e simples, explica tudo o que é necessário saber para trabalhar com o acelerómetro!
Lendo o datasheet tiramos a seguinte informação:
• O Output dos valores dos 3-eixos é analógico;
• Alimentação 0 GND / 3.3v VCC
• Tem 4 modos de operação, 1.5G / 2G / 4G / 6G (Valores G máximos)
• 2 Selectores para seleccionar o modo de funcionamento, GS1 e GS2
• Pino Sleep, 3,3v – acelerómetro ligado, 0v – acelerómetro desligado
• Estes 3 pinos podem ser controlados por um microcontrolador (Arduino por exemplo com os pinos digitais)
GS1 GS2 G-range Sensitivity
GND GND 1.5g 800mV/g
GND 3.3V 2g 600mV/g
3.3V GND 4g 300mV/g
3.3V 3.3V 6g 200mV/g
Quadro que mostra a relação entre os pinos GS1, GS2 e a sensibilidade do aceletrometro/modo de funcionamento.
Neste tutorial vou usar o primeiro modo, para manter tudo simples.
Começamos por ligar o acelerómetro, se estiverem a usar a placa da Sparkfun a cerigrafia é bastante boa e intuitiva. Os pinos GND, GS1, GS2 ligam a 0V e os pinos VCC e Sleep ligam a 3,3V. Tem de ter cuidado pois este integrado é bastante sensível e 3,3V é mesmo o máximo que lhe podem dar!
A sensibilidade deste acelerómetro pode ser alterada “on the fly”, isto é, se ligarem os pinos GS1 e GS2 a um microcontrolador podem alterar-lhe a sensibilidade mudando o valor lógico dos pinos. O mesmo aplica-se ao pino Sleep.
Não se esqueçam de usar a electrónica necessária para garantirem que no máximo fornecem 3,3v neste pinos!
Se estiverem interessados em usar uma placa feita por vocês, nos anexos deste tópico estão dois PDFs com o desenho de uma pcb que podem imprimir para fazer a vossa, um feito por mim e outro pelo metro_ (Obrigado metro_ ;); O do metro tem pistas mais fininhas pelo que se forem fazer por metodos arcaicos não o aconcelho). Se fizerem a vossa placa têm mesmo de usar os filtros constituídos por uma resistência de 1Kohm e um condensador de 0.1uF (ou 100nF) em cada output dos eixos. Têm também de usar um condensador de 0.1uF entre GND e VCC para fazer “Decoupling” da fonte. Estes filtros eliminam bastante ruído e poupam o acelerómetro.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi240.photobucket.com%2Falbums%2Fff159%2Fsuper-mascarada%2Fdiagrama.jpg&hash=26b92d807993bf76ba8a5dcd37c25d4dc76c8652)
Esquema de ligação do acelerómetro MMA7260Q
Fiz um código para o Arduino para poderem testar o vosso acelerómetro. O eixo X liga ao pino analógico 0 do Arduino, o eixo Y liga ao pino 1 analógico e o eixo Z liga ao pino analógico 2.
Este código envia 3 bytes consecutivamente por Serial a um baudrate de 9600, no pc fiz uma aplicação em Processing (muito boa esta ferramenta; Baseei-me no código de Tom Igoe) que os recebe e tradu-los (os 3 bytes) para um gráfico. Nesta aplicação se carregarem na tecla X começa a desenhar o gráfico com os valores obtidos da Serial relativamente ao eixo X, se carregarem na tecla Y e Z o comportamento repete-se para os eixos respectivos.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi240.photobucket.com%2Falbums%2Fff159%2Fsuper-mascarada%2Fesquema.jpg&hash=e7a7259dfd018db39956b0e479430042cd4de238)
Deixo-vos um vídeo que fiz para vos elucidar um pouco.
http://www.youtube.com/watch?v=ifFgPJoblNU
O eixo de Z é o mais traiçoeiro, parece-me que é feito à custa do eixo X e Y mas não tenho a certeza. Contudo funciona tudo bastante bem :), mas é preciso ter mesmo muito cuidado pois é um dispositivo bastante sensível à tensão fornecida :S.
Quando o acelerómetro está no seu estado normal e quieto, tem à saída dos seus pinos de X e Y metade da tensão fornecida, sensivelmente 1.65V. No pino Z tem 2,45V isto porque a terra já está a fazer uma força de 1G, ora se no modo 1.5G temos uma sensibilidade de 0,8v/G e se 0G são 1,65V então:
1,65v + 0.8v < = > 0G + 1G = 2,45V.
Quando é feita uma aceleração no sentido positivo dos eixos o valor da tensão no seu pino aumenta e quando é feita uma aceleração no sentido negativo dos eixos o valor da tensão no seu pino diminui.
Expero que entendam tudo e se houver alguma dúvida é só dizer!
:D
Agora ficam aqui dois videos que fiz onde jogo GTA IV com este novo "comando" : ehehe :D :D ;)
Playing GTA IV with an Arduino + MMA7260Q 3-Axis Accelerometer - Part 1 (http://www.youtube.com/watch?v=NXsnOc8kfyg#lq-lq2-hq-vhq)
Playing GTA IV with an Arduino + MMA7260Q 3-Axis Accelerometer - Part 2 (http://www.youtube.com/watch?v=I3OYw0Y61y0#lq)
Antes de mais nada o meu nick é metRo_ com o R grande e não essas derivações que voces inventam :) lol
Muito bem :) Já andava para fazer isto à meses mas nunca mais :S
No meu caso compensa em muito fazer eu a placa :)
Epá desculpa aí ó m3tro_ ... Ai bolas metRo_ , eu sou mesmo mau com nomes! :P
Como já disse no tópico e aqui vai mais uma vez, Obrigada Sr. metRo_ por me teres guiado! Foi o metRo_ que me indicou esta sample, deu o esquema da PCB e um pdf com o PCB que era so imprimir. Infelizmente vi-me forçado a fazer a minha PCB pois no ISEL o processo disponível para fazer PCB é mesmo muito arcaico e como as pistas eram tão fininha no esquema do metRo_ ... puff. Também me deu algumas dicas para soldar o chip!
Só por causa das coisas aqui vão mais uns videos de Eu a jogar GTA IV com esta montagem! :D
Playing GTA IV with an Arduino + MMA7260Q 3-Axis Accelerometer - Part 1 (http://www.youtube.com/watch?v=NXsnOc8kfyg#lq-lq2-hq-vhq)
Playing GTA IV with an Arduino + MMA7260Q 3-Axis Accelerometer - Part 2 (http://www.youtube.com/watch?v=I3OYw0Y61y0#lq)