collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino + MMA7260Q Acelerometro de 3 eixos  (Lida 55141 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Arduino + MMA7260Q Acelerometro de 3 eixos
« 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.

A Sparkfun vende este acelerómetro Sparkfun MMA7260Q, 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.


A Freescale também envia gratuitamente samples deste acelerometro aqui.
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 (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.


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.


Deixo-vos um vídeo que fiz para vos elucidar um pouco.



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


Playing GTA IV with an Arduino + MMA7260Q 3-Axis Accelerometer - Part 2
« Última modificação: 20 de Novembro de 2009, 00:01 por tr3s »
Tr3s
Daniel Gonçalves

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #1 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

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #2 em: 24 de Maio de 2009, 21:36 »
Bom trabalho, tr3s. :-D Excelente documentação ;)

Offline msr

  • Mini Robot
  • *
  • Mensagens: 798
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #3 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

Mas só tem um eixo.

Offline rjrv

  • Mini Robot
  • *
  • Mensagens: 84
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #4 em: 24 de Maio de 2009, 23:26 »
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. :)
"Somos humanos, demasiado humanos." - Friedrich Nietzsche

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #5 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
Tr3s
Daniel Gonçalves

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.064
  • El RoboSapiens
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #6 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

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #7 em: 25 de Maio de 2009, 20:58 »

:) brutálico.. ;)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #8 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 :)

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.064
  • El RoboSapiens
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #9 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?

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #10 em: 25 de Maio de 2009, 23:03 »
tem uma estação de jeito e paciencia.. o home é maluco co'as soldas.. :P

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #11 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.

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.064
  • El RoboSapiens
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #12 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)

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #13 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


« Última modificação: 26 de Maio de 2009, 00:49 por tr3s »
Tr3s
Daniel Gonçalves

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Arduino + MMA7260Q Acelerometro de 3 eixos
« Responder #14 em: 26 de Maio de 2009, 00:58 »
lol.. só tenho a dizer: és o máior!