Olá senhores,

Estou fuçando um acelerômetro há uns 4 meses e mesmo assim ainda apareceram algumas dúvidas.

O modelo que possuo foi um comprado no mercado livre que possui uma placa educativa, o modelo MMA7260QT 3 PCB.

1- Esse modelo passa as informações dos 3 eixos de modo analógico e acredito que digitais Tb, pois possui pinos RX  e TX.

2 - Verifiquei que alguns acelerômetros mais sofisticados, como este, possuem algumas rotinas ou bibliotecas internas, ou seja, gravadas no seu circuito de base.

Gostaria de ajuda dos camaradas para opinar sobre os itens 1 e 2 , ou seja, se é verdade o que eu mencionei.

Uma outra duvida é se esses acelerômetros possuem alguma biblioteca para ser usadas em conjunto.

A origem de minhas dúvidas foi quando me deparei com um projeto em que o autor move um acelerometro e ao mesmo tempo move uma imagem em um notebook do link que segue:

https://www.youtube.com/watch?v=l79ZiwbaHJY&feature=related

(Estou tentando fazer o mesmo com Flash + Serveproxy + Arduino + Acelerometro )

Além das rotinas comuns do arduino void setup() e void loop() há as rotinas, como:

void EndMessurement()

void StartMassurement()

int GetValue( byte Axis )

E não existe nenhuma refercia de comando #include <arquivo>, caso fosse uma biblioteca externa

Alguém ja se deparou com essas informações ou conhece algum link que tenha informações de como acessa-las e sua sintaxe?

Segue o codigo exemplo

Exibições: 374

Anexos

Responder esta

Respostas a este tópico

Olá amigo,

Já trabalhei com este acelerômetro, seguem as dicas:

1- O MMA7260QT só passa informações de modo analógico, ele não possui vias de comunicação serial. Talvez estes pinos TX e RX estão conectados a um outro chip que possa existir na placa que você comprou. Você tem o esquema elétrico desta placa?

2- Este acelerômetro é construído apenas de blocos analógicos, então não possui qualquer processamento interno. Alguns outros modelos possuem  algorítimos como detecção zero g, auto-escala e etc., mas geralmente estes são acelerômetros digitais (SPI/I2C).

Quanto ao código que você passou, todas estas funções que você está achando estranhas são funções locais do seu fonte, criadas pelo próprio programador do *.pde, então não vêm de nenhuma biblioteca. Você pode verificar que a maior parte delas são chamadas na função "GetValue()".

Porém este código parece emular uma I2C na mão (ou um One Wire, não consegui identificar rapidamente) para um acelerômetro digital, então não vai funcionar com o seu MMA7260QT... =T

Abraço!

Obrigado é isso mesmo.

Ele é analógico, depois que coloquei a saida do acelerometro para as entradas analogicas do Arduino tive sinal de vida no projeto.

Esse Rx e Tx deve ser para outro componente da placa q possuo.

Consegui sucesso 100% no uso do flash e na conexão deste com o arduino usando o servproxy

So que ainda não esta funcionando 100% a produção de dados do acelerometro, falta alguma coisa referente ao codigo do arduino pra ficar mais coerente a movimentação do acelerometro com a imagem no flash.

Obrigado, segue o o codigo bem simples para o acelerometro + arduino.

E o link do video do que eu já consegui fazer:

http://www.youtube.com/watch?v=0UMUT8faOzI

codigo:

Anexos

Então, tenta dar uma conferida apenas nas definições dos pinos analógicos que você está usando. Comecei a brincar com o Arduino há pouco tempo mas acho que tem que ser algo assim:

int xpin = A1;

[...]

void loop()

{

    Serial.print(analogRead(xpin));

    [...]

}

Nunca faça aquela subtração como entrada do analogRead(), pois alí você está mexendo, na verdade, em qual pino você está passando para a função.

Abraço!

sim, é que eu tentei compensar.

Mas acredito que o problema esta tb como trabalhar os dados que o acelerometro produz.

O Código de um americano que usa esse mesmo tipo de acelerometro, possui formulas que estou tentando isolar, são elas:

   //Calculate gyro turn rate
   //Calcular a taxa de volta gyro
   rate = (gRaw*Vin/100-gOffset)*0.0150;

   if (abs(rate) > 2.5) {
     angle += (rateold+rate)*0.010;  //trapz intergration
   }
   rateold = rate;

   //Calculate elevation and roll angles
   Ele = (atan2(zRaw,xRaw)*57.296-90+EleOld)/2;
   Roll = (atan2(zRaw,yRaw)*57.296-90+RollOld)/2;

......

Aqui ele tb usa um giro, vou estudar o codigo dele mais a fundo.

Ele tb tem um problema de compilação que ainda tb naum consegui resolver. Inclusive postei outro topico sobre o tema.

Anexos

O problema de complilação eu respondi lá no tópico, eu consegui compilar aqui.

Sobre este seu código, tente fazer qualquer compensação fora da chamada do analogRead(), por exemplo:

Serial.print(analogRead(xpin) - 10);

Verifique também o pino analógico, pois não são os pinos 0, 1 e 2. Tente utilizar A0, A1 e A2.

Abraço!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço