• Welcome to LusoRobótica - Robótica em Português.
 

Ajuda com acelerometro 3eixos MMA7260Q+Arduino!!

Started by phoenix127, 23 de July de 2010, 11:00

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

phoenix127

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

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!

metRo_

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:'

phoenix127

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...  :'(

TigPT

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.

phoenix127

Ligo apenas o VCC e GND? É necessário ligar o SLP e os GS1 e 2?

TigPT

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

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)

phoenix127

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?.....  :-\

TigPT

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.

cpalha

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

TigPT

#9
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:
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.

cpalha

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

cpalha

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

phoenix127

Desde já obrigado pelas respostas! Já agora que valores seriam de esperar? (lidos no serial monitor (?))

TigPT

@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)

Quote from: phoenix127 on 25 de July de 2010, 17:31
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.

cpalha

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