LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: phoenix127 em 23 de Julho de 2010, 11:00

Título: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: phoenix127 em 23 de Julho de 2010, 11:00
Boas,

Sou um novato nestas coisas do arduino e da electrónica, e ando a ver se aprendo isto um pouco por minha conta. No outro dia recebi o acelerometro que encomendei à lusorobotica (MMA7260Q) e para ver se estava a funcionar tentei seguir este tutorial:

http://lusorobotica.com/index.php/topic,902.0.html (http://lusorobotica.com/index.php/topic,902.0.html)

Contudo não consigo obter os resultados esperados nos gráficos, além de obter outras coisas que acho um pouco estranhas.
Pus o acelerometro na breadboard com um conector com 8pinos (não soldei ao acelerometro) e de seguida fiz as ligaçoes com o SLP e VCC no 3.3V do arduino (um duemilanove), o GND, GS1 e GS2 no GND do arduino para obter os 1,5G de seguida liguei os tres eixos aos pinos analogicos do arduino (0,1,2), tudo tal e qual como no tutorial. Descarreguei os ficheiros do arduino e do processing, nada alterei no primeiro e passei no processing o indice da COM para 0 (meu caso) de resto manti tudo como vinha. Fiz o upload do ficheiro do arduino para o mesmo e fiz correr o processing, quando carrego nas teclas dos eixos aparece o gráfico, embora haver sempre um eixo que no gráfico e menor que os outros apesar da voltagem que aparece ser praticamente a mesma..... o que achei estranho e quando movo a board com o acelerometro.....nada! As voltagens obtidas andam sempre a volta de 1,7V mais coisa menos coisa.

Alguém tem uma ideia? Será defeito do acelerometro? Que fiz mal?  :(
Desde já obrigado pela atenção!
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: metRo_ em 23 de Julho de 2010, 13:36
Código: [Seleccione]
int val_x = 0;
int val_y = 0;
int val_z = 0;

void setup()
{
  Serial.begin(9600);       
}

void loop()
{
  val_x = analogRead(0);
  val_y = analogRead(1); 
  val_z = analogRead(2);

  Serial.print("x:");
  Serial.println(val_x);
  Serial.print("y:");
  Serial.println(val_y);
  Serial.print("z:");
  Serial.println(val_z);
}

Testa este código, não tenho a certeza só ali no serial print, se é, "z:" ou 'z:'
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: phoenix127 em 23 de Julho de 2010, 14:52
Experimentei o código que enviaste metRo_ e ainda assim não consegui alterações quando faço mover a board... obtive um gráfico que se move mais rapidamente e que é mais irregular, as voltagens variam muito... já tentei inclusive um outro tutorial e nada...  :'(
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: TigPT em 23 de Julho de 2010, 17:51
Experimentar ligar apenas a alimentação ao sensor e com um multimetro verificar se a tensão de saída em cada um dos eixos, corresponde ao vector da gravidade (segundo o datasheet), depos muda o sensor de posição de forma a ficar com a gravidade paralela a outro eixo para verificar se este reage como devia a todos os eixos.

Os valores esperados são os correspondentes a 1G com o acelerometro parado.
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: phoenix127 em 23 de Julho de 2010, 19:51
Ligo apenas o VCC e GND? É necessário ligar o SLP e os GS1 e 2?
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: TigPT em 23 de Julho de 2010, 20:27
GS1 e GS2 colocas a GND para obter valores mais altos, conforme indica na tabela deste site:

http://itp.nyu.edu/physcomp/sensors/Reports/MMA7260Q (http://itp.nyu.edu/physcomp/sensors/Reports/MMA7260Q)

Quanto menos Gs estiveres a medir, mais precisão na escala. (se estes estavam em alta impedancia (desligados), podia ser isso a causar os valores baixos)

Já o sleep colocas a high visto que ele é negado e desliga a board (coloca em poupança de energia) quando a low. (mante-lo sem ligação também não deve de ser bom)
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: phoenix127 em 24 de Julho de 2010, 16:14
Fiz o que disseste e....... 0 foi o resultado! Verifiquei inclusive as tensões de entrada a ver se não era problema de alimentação bem como os GS's e SLP e verifiquei que estavam bem a marcar os 0V ou 3,3V certinhos conforme a situação. Quando fui verificar os eixos propriamente ditos nada, independentemente do eixo e da posição! O que fiz foi colocar um fio no GND e outro no eixo e medi a tensão entre os dois com o multimetro, certo? Ou fiz asneira?.....  :-\
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: TigPT em 24 de Julho de 2010, 23:48
Envie-nos o mesmo para análise, contudo iremos desde já proceder ao envio de um sensor de substituição (aberto por nós apenas para teste garantindo que não tenha o mesmo problema se for algum defeito de fabrico deste lote) para garantir que fica o menor tempo possível sem o item em condições.
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: cpalha em 25 de Julho de 2010, 10:26
Olá a todos

Apenas respondo a este forum para reportar um problema identico com o mesmo acelerometro.
Vi que mandam conectar o GS1 e GS2 ao GND, mas se nao estou errado no datasheet do acelerometro diz que para +-1.5g deixa-los desconectados. Foi o que eu fiz, mas sempre tive valores estranhos nos outputs dos tres eixos.
Uma outra duvida, a minha placa tem auma alimentação de saida de 2.5 volts e 5 volts, se eu alimentar com 2.4volts o acelerometro funciona? Segundo fabricante a alimentação podera ir de 2.2 a 3.6, teoricamente deveria funcionar ou nao?

Cumprimentos

CPalha
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: TigPT em 25 de Julho de 2010, 12:55
Boa tarde,

Sendo que apareceram 2 pessoas com o problema, passamos ao teste do lote e não encontramos nenhum problema.

O código utilizado foi:
Código: [Seleccione]
int val_x = 0;
int val_y = 0;
int val_z = 0;

void setup()
{
  Serial.begin(9600);       
}

void loop()
{
  val_x = analogRead(0);
  val_y = analogRead(1); 
  val_z = analogRead(2);

  Serial.print("x:");
  Serial.print(val_x);
  Serial.print("   y:");
  Serial.print(val_y);
  Serial.print("   z:");
  Serial.println(val_z);
}

Ligações utilizadas no teste.
VCC = 3,3V
GND = GND
X = Analog0
Y = Analog1
Z = Analog2
GS1, GS2 = alta impedância
SLP = 3,3V (logical high)

Experimentamos colocar o SLP a alta impedância ou a LOW e este deixa de fazer amostragens ficado a apresentar sempre valores fixos, contudo não são valores iguais. São os da ultima leitura válida +/- ruído.

Agradecemos a ambos os membros com o problema a fazerem uma montagem semelhante e testarem o acelerómetro com um microcontrolador a ler valores do ADC para serial como exemplificado em Arduino.

Se estes valores não variarem com a posição do acelerómetro rodando o mesmo para que cada um dos eixos fique estável paralelamente ao eixo da terra, então contactem o fornecedor para que possa substituir o mesmo. No caso das compras na Loja LusoRobótica o contacto é loja@lusorobotica.com

Quanto à alimentação de 2,5V, não devia haver qualquer problema, já os 5V podem queimar o sensor já que este funciona de 2,2V a 3,6V como indica o fabricante.
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: cpalha em 25 de Julho de 2010, 16:22
Acabei de voltar a testar o meu e desta vez com 3.3V ligados no DCC e no SLP e ja funciona, pelo menos com o multimetro ja tenho valores identicos ao do datasheet nas varias posicoes.

Saudacoes.

CPalha
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: cpalha em 25 de Julho de 2010, 17:14
Caros membros do forum

Finalmente tenho o meu acelerometro a funcionar numa placa de aquisição da National Instruments. Alimento o sensor com 2.5V (tensao de saida da placa), assim como o terminal SLP.
Depois leio os 3 eixos. O Valor do output nao é igual ao do data sheet, mas isso deve-se à tensao de alimentação ser inferior.

Quero deixar aqui ao forum o meu agradecimento ao membro Tiago Rodrigues pela ajuda e deixar claro que desde o inicio que a loja lusorobotica prestou todo o apoio, nomeadamente, caso necessario, troca imediata do sensor.

Por ultimo tenho apenas uma pequena duvida, para mudar de ganhos, no GS1 e 2, basta alimenta-los com tensao de alimentacao do sensor e conforme tabela de selecção, que no meu caso seriam 2.5V?

Saudacoes
CPalha


Go
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: phoenix127 em 25 de Julho de 2010, 17:31
Desde já obrigado pelas respostas! Já agora que valores seriam de esperar? (lidos no serial monitor (?))
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: TigPT em 25 de Julho de 2010, 17:39
@cpalha: estamos cá para ajudar. Quanto à alimentação de GS1 e GS2, deverá ser feita com 0 ou VCC (no seu caso os 2,5V)

Desde já obrigado pelas respostas! Já agora que valores seriam de esperar? (lidos no serial monitor (?))
A 3,3V os valores da gravidade deverão variar entre 200 e 700.
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: cpalha em 25 de Julho de 2010, 17:40
Tens o datasheet?
Na pagina 6 do mesmo (Static Acceleration) tem la as tensoes de saida que cada eixo deve ter em determinadas posições e parado.

CPalha
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: phoenix127 em 25 de Julho de 2010, 20:04
Pois..... obtenho nessas condições valores à volta dos 270 para todos os eixos, contudo mantêm-se relativamente constantes mesmo que mova o acelerometro....
Título: Re: Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!
Enviado por: TigPT em 25 de Julho de 2010, 20:23
Os valores tem que variar quando se "mexe" o sensor. Confirma que SLP está ligado a high.

Se o problema continuar após todos os testes como descritos neste tópico. O melhor é contactares-nos por e-mail para procedermos à garantia do mesmo. Contudo todos os produtos que vendemos são testados pelos nossos fabricantes antes de serem embalados.