LusoRobótica - Robótica em Português

Robótica => Tutoriais => Tópico iniciado por: tr3s em 24 de Maio de 2009, 20:52

Título: Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: tr3s em 24 de Maio de 2009, 20:52
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)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: TigPT em 24 de Maio de 2009, 21:30
Excelente tutorial tr3s, já tens controlo de inclinação para o teu avião... quando é que começa a voar!? :D
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: microbyte em 24 de Maio de 2009, 21:36
Bom trabalho, tr3s. :-D Excelente documentação ;)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: msr em 24 de Maio de 2009, 22:53
Excelente tr3s! Obrigado!

Já agora, conheces algum acelerometro em PDIP package? Até agora, encontrei este:
http://digchip.com/datasheets/download_datasheet.php?id=669258&part-number=MMAS40G10D (http://digchip.com/datasheets/download_datasheet.php?id=669258&part-number=MMAS40G10D)

Mas só tem um eixo.
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: rjrv em 24 de Maio de 2009, 23:26
http://global.ebay.com/3-Axis_low-g_Accelerometer_MMA7260_prototype_PCB/370205679002/item (http://global.ebay.com/3-Axis_low-g_Accelerometer_MMA7260_prototype_PCB/370205679002/item)
Vi esta placa no ebay, já traz o regulador de 5v para 3.3v. :)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: tr3s em 25 de Maio de 2009, 00:10
MSR:
  Infelizmente não, não conheço. E este aquifoi o mestre das Samples A.K.A. Metro_ que me indicou!

rjrv:
  Bem fixe, eu aproveito os 3v3 que o Arduino já debita :P!

Obrigado a todos! Agora bou a fazer um video para bos mostrare daqui a pouco! :D
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Fifas em 25 de Maio de 2009, 02:14
bom post ;)

Excelente tutorial tr3s, já tens controlo de inclinação para o teu avião... quando é que começa a voar!? :D

hehe....queremos ver isso tr3s! :D

eu vou ter de dar uso ao meu nunchuck....ter um acelerometro e nao usar é mau :P
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: ricardo-reis em 25 de Maio de 2009, 20:58

:) brutálico.. ;)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: metRo_ em 25 de Maio de 2009, 22:15
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 :)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Fifas em 25 de Maio de 2009, 23:00
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 :)

off-topic:
porrada no tr3s....não sabe escrever o teu nick ;D

on-topic:
como é que soldas o IC? tens estaçao de ar quente?
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: ricardo-reis em 25 de Maio de 2009, 23:03
tem uma estação de jeito e paciencia.. o home é maluco co'as soldas.. :P
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: metRo_ em 25 de Maio de 2009, 23:40
on-topic:
como é que soldas o IC? tens estaçao de ar quente?

Sim, na minha faculdade não me posso queixar em relação aos equipamentos que estão à disposição dos alunos.
Mas basicamente é o seguinte:
1)Com a ajuda do fluxo colocar um pouco de solda em cada pino do IC.
2)Com a ajuda do fluxo colocar um pouco de solda em cada da pcb.
3)Colocar o IC sobre a pcb.
4)Encostar a ponta do ferro de soldar ao pontos que têm solda e eles se tudo correr bem juntan-se logo sem grande problema.

Eu volto a referir o fluxo pois para este tipo de trabalhos dá bastante jeito para distribuir solda pelos pinos sem que se junte os pinos com a solda.
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Fifas em 26 de Maio de 2009, 00:01
ah...entao nao tens estaçao de ar quente :D tens estaçao de solda como eu :P

o fluxo é uma pequena maravilha que inventaram nas soldaduras :P

(por falar nisso tenho de comprar que o meu ja era :P)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: tr3s em 26 de Maio de 2009, 00:46
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)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: ricardo-reis em 26 de Maio de 2009, 00:58
lol.. só tenho a dizer: és o máior!
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Fifas em 26 de Maio de 2009, 01:02
bah....gta sucks....lol

muito bem conseguido ;)

off-topic: andava de olho num monitor desses :P mas tou a ver que reflete um pouco e nao gosto disso :P
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: metRo_ em 26 de Maio de 2009, 01:02
ah...entao nao tens estaçao de ar quente :D tens estaçao de solda como eu :P

o fluxo é uma pequena maravilha que inventaram nas soldaduras :P

(por falar nisso tenho de comprar que o meu ja era :P)

Tenho estação de ar quente, simplesmente nem utilizei :)
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: metRo_ em 26 de Maio de 2009, 01:06
E disponibilizares o código para eu jogar PES com isso??  ;D Ou mesmo um tutorial a explica como fizes-te a interface entre o arduino e o jogo? :)

Outra coisa calculas-te o ruído? A mim na altura dava-me algo à volta de 5%

Off-topic:

Oh tr3s no GTA ninguém fica à espera que o semáforo fique verde para avançar.
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: tr3s em 26 de Maio de 2009, 01:19
E disponibilizares o código para eu jogar PES com isso??  ;D Ou mesmo um tutorial a explica como fizes-te a interface entre o arduino e o jogo? :)

Outra coisa calculas-te o ruído? A mim na altura dava-me algo à volta de 5%

Off-topic:

Oh tr3s no GTA ninguém fica à espera que o semáforo fique verde para avançar.

Claro metRo_ (ah viste ja nao me engano no teu nick metr0!), até estou a preparar um tutorial pa isto da interface com jogos, pq dos DirectInput e xInput no DirectX 10!

Não calculei o ruído não, mas parece-me que não é tanto no meu caso. Alterei um pouco os filtros e notei que o ruído baixou.


Fifas o monitor é um espetáculo, notas reflexo porque tinha um candeeiro a apontar directamente po monitor, que era para a camera nao queimar a imagem e estabilizar a iluminação à volta!!
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: TigPT em 26 de Maio de 2009, 10:11
Excelente tr3s, já agora como estás a enviar os comandos para o GTA? qual a interface de software?!
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: pauloricca em 03 de Junho de 2009, 11:53
Olá pessoal :)
De vez em quando dava uma vista de olhos pelo lusorobótica mas ainda não me tinha dado para escrever!
Vim dar a este post quando hoje de manhã recebi hate-mail por ter copiado o teu projecto :) e eles nem sabiam o quanto eu ainda ia copiar! mas por coincidencia :)
nunca tinha visto este projecto mas andei a divertir-me com uma cena muito semelhante, aqui há uns dias! caramba, até os acelerómetros são os mesmos! e tinha a ideia de controlar agora o GTA IV porque ando a joga-lo :P
escrevi um blog post aqui: http://altlablx.org/?p=340 (http://altlablx.org/?p=340) que podem ver, se quiserem
não sabia que tinhas este projecto (embora imaginasse que algures no mundo várias pessoas provavelmente já o tinham feito.. mas afinal tinha sido logo aqui ao lado! :) )
vou por um link para este teu post, espero que não tenhas ficado ofendido, foi uma coincidência, realmente!
abraço e bom trabalho!
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: lobueno em 15 de Junho de 2009, 01:45
mto bom o tópico, achei muito interessante.
Tenho que voltar a trabalhar logo pra comprar meu arduino *-*
Espero naum encontrar muitas dificuldades na hora de programar, visto que até hj só programei os 8051 xD
vo pedir um sample desse acelerometro hehe

edit* $33 de taxas o.o...acho melhor comprar na sparkfun msm T_T
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: tr3s em 15 de Junho de 2009, 10:43
mto bom o tópico, achei muito interessante.
Tenho que voltar a trabalhar logo pra comprar meu arduino *-*
Espero naum encontrar muitas dificuldades na hora de programar, visto que até hj só programei os 8051 xD
vo pedir um sample desse acelerometro hehe

edit* $33 de taxas o.o...acho melhor comprar na sparkfun msm T_T

Lobueno, estás a pagar isso porque te registas-te no site com um e-mail publico (hotmail, gmail, live, etc. ...), regista-te com um e-mail da universidade ou escola. Aí já nao vais pagar taxas!
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: lobueno em 15 de Junho de 2009, 15:21
mto bom o tópico, achei muito interessante.
Tenho que voltar a trabalhar logo pra comprar meu arduino *-*
Espero naum encontrar muitas dificuldades na hora de programar, visto que até hj só programei os 8051 xD
vo pedir um sample desse acelerometro hehe

edit* $33 de taxas o.o...acho melhor comprar na sparkfun msm T_T

Lobueno, estás a pagar isso porque te registas-te no site com um e-mail publico (hotmail, gmail, live, etc. ...), regista-te com um e-mail da universidade ou escola. Aí já nao vais pagar taxas!

hmm, mto bom saber disso, vou mudar meu registro então hehe
obrigado pela informação ;D
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Pessanha24 em 26 de Junho de 2009, 23:05
Só uma questão....

Depois de teres tudo a funcionar a 100% o Arduino+Acelerómetro como fazes  o interface com o jogo?

Sem mais,
Pessanha24
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Reonarudo em 27 de Junho de 2009, 11:26
O arduino pode mandar por porta COM os dados obtidos do acelerometro que podes "ler" através de qualquer linguagem de programação.
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: TigPT em 27 de Junho de 2009, 12:59
Sim.. isso calculo que ele já saiba. Eu acho que o tr3s criou um new human device no DirectX e controlou a partir de lá, mas o melhor é mesmo esperares que ele te diga. Sei que ele andava a preparar um tutorial com a parte de software toda explicada para postar.
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Pessanha24 em 27 de Junho de 2009, 15:06
O arduino pode mandar por porta COM os dados obtidos do acelerometro que podes "ler" através de qualquer linguagem de programação.

Obrigado pelo contributo "Reonarudo", mas não era essa a questão.

Era mesmo saber como fazer a interface com o jogo......fico à espera de novidades.

Sem mais,
Pessanha24
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: Pessanha24 em 04 de Julho de 2009, 21:20
Só uma questão....

Depois de teres tudo a funcionar a 100% o Arduino+Acelerómetro como fazes  o interface com o jogo?

Sem mais,
Pessanha24

Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: antonio_jose em 05 de Julho de 2009, 01:52
Um dia quando o meu robo tiver quase pronto, irei lhe meter um Acelerometro de 3 eixos

 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: microbyte em 05 de Julho de 2009, 02:09
Também tenho curiosidade em saber como é feita a interface com o jogo...
Título: Re:Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: metRo_ em 05 de Julho de 2009, 15:26
até estou a preparar um tutorial pa isto da interface com jogos, pq dos DirectInput e xInput no DirectX 10!

Acho que é só esperar :)
Título: Re: Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: tr3s em 20 de Novembro de 2009, 00:08
Hi everyone! It's been a long time... Hard times for me, sory. :-[

I've uploaded the files to the first post, they are working again!!

* Tr3sAxis_by_Tr3s.rar (45.09 Kb) - Rar including Arduinos files for Arduino IDE and Processing files to plot the Axis graphics on PC.

* triaxv2_By_Tr3s.pdf (9.49 Kb) - PDF with the PCB schematic made by me.

* AccePCB_By_Metro_.pdf (19.79 Kb) - PDF with the PCB schematic made by mr3tr0 (ehee).

------------------------------------------------------ PT ----------------------------------------------------------------

Olá a todos! já la vai bastante tempo... Tenho passado uns tempos dificeis, sory. :-[

Já fiz o upload dos ficheiros para o primeiro tópico, já estão a funcionar de novo!!

* Tr3sAxis_by_Tr3s.rar (45.09 Kb) - Rar que inclui os ficheiros do Arduino IDE e os ficheiros de Processing para desenhar os graficos do eixos no PC.

* triaxv2_By_Tr3s.pdf (9.49 Kb) - PDF com a PCB feita por mim.

* AccePCB_By_Metro_.pdf (19.79 Kb) - PDFcom a PCB feita pelo mr3tr0 (ehee).

Título: Re: Arduino + MMA7260Q Acelerometro de 3 eixos
Enviado por: eduardo_d em 27 de Abril de 2010, 17:03
Boas pessoal!
Desculpem desenterrar este tópico, mas pareceu-me bastante interessante. Alguem fez ou me indica um tutorial que explique como se faz a interface com o jogo? Ja procurei e n encontrei nd  :P

Abr