collapse

* Links de Robótica

* Posts Recentes

Escolher Multimetro por filjoa
[Hoje às 14:46]


Ontem pequei... por dropes
[Hoje às 14:45]


Qual a melhor técnica? por dropes
[Hoje às 14:30]


Wamp Server por jm_araujo
[Ontem às 23:07]


TV Avariou - Sanyo por almamater
[Ontem às 13:54]


Ligar telefone fixo a arduino por helderjsd
[Ontem às 11:07]


Procuro cristal de 30.875 Mhz? por Hugu
[25 de Setembro de 2016, 17:20]


Encomenda Colectiva N2-2016[@Mouser - Aberta a pedidos!] por Hugu
[25 de Setembro de 2016, 16:42]


Mosfet trocado? por almamater
[25 de Setembro de 2016, 12:42]


Motherboard por SerraCabo
[24 de Setembro de 2016, 10:04]

Autor Tópico: Acelerômetro ADXL345 + Arduino Duemilanove  (Lida 3682 vezes)

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

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Acelerômetro ADXL345 + Arduino Duemilanove
« em: 03 de Agosto de 2012, 01:32 »
Olá amigos!

Tenho pesquisado a respeito desse acelerômetro aqui do lusorobotica.com, mas não obtive muito êxito quanto ao que eu preciso, por isso resolvi iniciar um novo tópico.

Recentemente eu adquiri um acelerômetro ADXL345 (http://www.lctech-inc.com/Hardware/Detail.aspx?id=d39b68c5-a8a3-4dd4-ab97-76fc2f7f4b44) e preciso entender como o mesmo funciona e como eu o ligo no Arduino Duemilanove.

Eu tenho encontrado na net, inclusive aqui no fórum um outro ADXL345 (http://lusorobotica.com/index.php?topic=1889.msg18115#msg18115), mas a pinagem na placa e o nome dos referidos pinos são diferentes.

Nesse que adquiri possui duas fileiras de 5 pinos (X, Y, Z, SL, OG e 5V, 3V3, GND, GS e ST).

Consegui verificar pelo site do fabricante que o módulo pode ter alimentação de 5 ou 3,3 volts, pois o mesmo possui regulador de tensão para 3,3 volts. Verifiquei, ainda, que X, Y e Z são os pinos de saídas dos respectivos eixos X, Y e Z.

Minha principal dúvida é onde conectar no Arduino esses outros pinos (SL, OG, GS, ST) e o que eles significam ou quais suas funções.

Se alguém o conhece e/ou já o utilizou e puder me ajudar, ficarei muito agradecido. Sem falar que eu não tenho a mínima ideia de um código que faça funcionar tudo isso.

Eu gostaria de receber os valores lidos nos eixos do sensor e apresentá-los na tela do Serial Monitor.

Desde já, obrigado! :D
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.942
  • Helpdesk do sitio
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #1 em: 03 de Agosto de 2012, 01:38 »
Acho que deves começar por estudar a datasheet desse sensor, porque o ADXL345 só tem interface digital.
http://www.analog.com/en/mems-sensors/mems-inertial-sensors/adxl345/products/product.html
Avr fanboy

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #2 em: 03 de Agosto de 2012, 21:38 »
Certo Senso, e obrigado pela prontidão em responder, mas você saberia me dizer o que significa esses pinos? Por que em diferentes módulos esses pinos também são diferentes, por exemplo SL, OG, GS, ST neste meu e CS, Int1, Int2, SDO, SDA, SCL, como neste https://www.loveelectronics.co.uk/Tutorials/12/adxl345-accelerometer-arduino-tutorial.

O que eu não entendo é como os pinos da board tem nomes diferentes se se tratam do mesmo chip ADXL345?
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #3 em: 03 de Agosto de 2012, 23:20 »
Senso, dei uma lida rápida no datasheet do mesmo, mas o que mais me incomoda é que o datasheet é do chip e não da placa que eu adquiri, pois na placa tem pinos com nomes diferentes dos pinos do chip.

No datasheet eu vejo que o chip tem 14 pinos:

1 - VDD I/O
2 - GND
3 - RESERVED
4 - GND
5 - GND
6 - VS
7 - CS
8 - INT1
9 - INT2
10 - NC
11 - RESERVED
12 - SDO/ALT ADDRESS
13 - DSA/SDI/SDIO
14 - SCL/SCLK

O que eu gostaria é que alguém me dissesse qual a correspondência desses pinos com os do módulo que eu adquiri (que são X, Y, Z, SL, OG e 5V, 3V3, GND, GS e ST) e que pudesse me ensinar alguma rotina pra ler os dados via I2C para mostrá-los na janela do Serial Monitor.

Se eu souber como ler os dados do acelerômetro, vou poder aproveitar esses dados para outras aplicações.
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #4 em: 03 de Agosto de 2012, 23:23 »
Podes confirmar que chip tem a placa? Colocar aqui a referencia? Parece-me que essa placa tem um acelarometro analogico e não digital.
Dronetech BlogThe Scientist and the Geek

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #5 em: 03 de Agosto de 2012, 23:31 »
Marvin, obrigado pela resposta!

Mas é muito difícil saber qual é o chip que tem na placa, pois a descrição é muito miúda e meio que apagada, mas no site do fabricante da placa diz que é o ADXL345.

Em todo exemplo que vi sobre esse chip (ADXL345) as saídas são ligadas em pinos analógicos do Arduino, nos que são compatíveis com I²C. Inclusive eu gostaria de saber quais são esses pinos no Arduino Duemilanove?
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #6 em: 03 de Agosto de 2012, 23:35 »
Marvin, obrigado pela resposta!

Mas é muito difícil saber qual é o chip que tem na placa, pois a descrição é muito miúda e meio que apagada, mas no site do fabricante da placa diz que é o ADXL345.

Em todo exemplo que vi sobre esse chip (ADXL345) as saídas são ligadas em pinos analógicos do Arduino, nos que são compatíveis com I²C. Inclusive eu gostaria de saber quais são esses pinos no Arduino Duemilanove?

os pinos I2C da Arduino são nos pinos analogicos, por isso se encontram ligados nos exemplos.
Dronetech BlogThe Scientist and the Geek

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #7 em: 03 de Agosto de 2012, 23:48 »
Então posso usar qualquer dos 6 (0 a 5), né??

Mas me diga: você saberia como ligar essa plaquinha ao arduino??

Pelo que me parece, se quero obter a leitura dos eixos X, Y, e Z, preciso de 3 portas analógicas (0, 1 e 2, por exemplo), certo?

Pelo que li sobre acelerômetros, precisamos definir a sua precisão (+/- 2g, +/- 4g, +/- 8g e +/- 16g), e essa precisão é feita colocando dois pinos em nível alto ou baixo (dois pinos com duas possibilidades = quatro estados), mas não sei quais desses pinos (SL, OG, GS e ST) devem ser utilizados para fazer essa configuração.

http://www.google.com.br/imgres?q=aceler%C3%B4metro+ADXL345&um=1&hl=pt-BR&sa=N&biw=1137&bih=741&tbm=isch&tbnid=-TgP53wlkjQZzM:&imgrefurl=http://www.robocore.net/modules.php%3Fname%3DGR_LojaVirtual%26prod%3D343&docid=NDUenNGg0i4oJM&imgurl=http://www.robocore.net/upload/lojavirtual/ADXL345.png&w=250&h=250&ei=f1IcUNTEGcbt6wGi4oHIBg&zoom=1

Na imagem acima, vemos que a plaquinha tem os mesmo terminais do chip, mas que na minha plaquinha, tem nomes diferentes destes. :(
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.942
  • Helpdesk do sitio
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #8 em: 04 de Agosto de 2012, 01:01 »
Acho que devias contactor o vendedor dessa placa, nem sempre o que é muito barato é bom, pois neste caso não tens ponta de documentação para onde te virares.
Olha bem para o chip com boa luz e escreve aqui todos os numeros que estão lá escritos.

O ADXL345 tem interface digital, ou SPI, que usas os pinos digital 13,12,11 e 10 ou i2c que usa os pinos analógico 4 e 5 e não são permutaveis por outros pinos por o hardware que faz o i2c está ligado internamente no chip a esses pinos.
Avr fanboy

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #9 em: 04 de Agosto de 2012, 16:14 »
Olá Senso e Marvin, estive a pesquisar pelo sensor de aceleração que eu adquiri e descobri que o mesmo não usa o chip ADXL345 mas sim o MMA7361 (http://www.freescale.com/files/sensors/doc/data_sheet/MMA7361L.pdf), que por sinal tem saída analógica. Baixei, inclusive, o datasheet do mesmo e este me esclareceu muitas coisas, no entanto, tenho uma dúvida:

No datasheet diz: "O acelerômetro de 3 eixos fornece um Modo de Espera, que é ideal para baterias produtos operados. Sleep Mode é ativo, as saídas de dispositivos são desligados, proporcionando redução significativa da atual operação. Um sinal de entrada baixo no pino 7 (Modo Sleep) vai colocar o dispositivo neste modo e reduzir a corrente de 3 mA typ. Por menor consumo de energia, recomenda-se para definir g-Selecione o modo 1,5 g. Ao colocar um sinal de entrada de alta no pino 7, o dispositivo irá continuar para o modo normal de operação."

Além de não entender muito o que quer dizer aí, não sei o que dizer sobre nível alto ou baixo, pois se o chip é do tipo TTL, nível alto = 5V e nível baixo = 0V, certo? Mas o MMA7361 também trabalha com 3,3V, inclusive, na board do sensor vem um conversor 5V-3,3V, mas penso eu que serve apenas para o pino de alimentação (VDD). A dúvida é: nos pinos que podem ser configurados com nível alto ou baixo devo colocar 5V ou 3,3V? Esses pinos são: SL, 0G, GS e ST.
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline msr

  • Mini Robot
  • *
  • Mensagens: 777
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #10 em: 04 de Agosto de 2012, 16:40 »
Junior Frota, logo na primeira página da datasheet do MMA7361 diz o seguinte:
"Low voltage operation: 2.2V - 3.6V"

Logo, não podes por nem mais nem menos do que isso. Se usas 5V arriscas-te a queimar o acelerómetro. A não ser que a placa que tens e que contém o MMA7361 inclua "level translators/shifters", aí sim poderás usar 5V.

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #11 em: 04 de Agosto de 2012, 18:55 »
Obrigado pela resposta MSR!

Eu já havia lido sobre isso, mas na placa do sensor tem entrada para 5V, pois o mesmo tem um conversor 5V-3,3V. Mas como eu disse no outro post: acho que esse conversor se aplica apenas ao pino de alimentação.

Sendo assim, qualquer que seja o pino de configuração do chip (SL, 0G, GS e ST) deve ser usado 3,3V para nível alto, né isso?

Mas pelo que eu entendi sobre "Low voltage operation: 2.2V - 3.6V", é que isso é uma propriedade do chip, pois essa informação está listada juntamente com outras que especificam o chip, o que eu entendi sobre essa frase é que ele indica que o chip trabalha em ~3,3V e não em 5V (ou seja, consome pouca energia).

Contudo, não me arriscarei a colocar 5V nos pinos de configuração do chip, mas preciso saber como faço pra ativar a saída de 3,3V do Arduino?
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)

Offline Junior Frota

  • Mini Robot
  • *
  • Mensagens: 39
Re: Acelerômetro ADXL345 + Arduino Duemilanove
« Responder #12 em: 04 de Agosto de 2012, 19:48 »
Olá amigos, resolvi testar aqui utilizando como nível alto 3,3V, já que não queimaria o chip se o correto fosse usar 5V. O sensor até que funcionou direitinho, mas acho estranho os resultados obtidos.

Fiz a seguinte ligação aqui:

Acelerômetro --> Arduino
             pin X --> analógico 1
             pin Y --> analógico 2
             pin Z --> analógico 3
            pin SL --> power 3V3
            pin GS --> power 3V3
           
e utilizei o seguinte código:

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

 void loop()
 {
   int xaxis = analogRead(1);
   int yaxis = analogRead(2);
   int zaxis = analogRead(3);
 
   Serial.print("x-axis");
   Serial.print("\t"); 
   Serial.println(xaxis);

   Serial.print("y-axis");
   Serial.print("\t"); 
   Serial.println(yaxis);
 
   Serial.print("z-axis");
   Serial.print("\t"); 
   Serial.println(zaxis);

   Serial.println(""); 
   delay(200);
 }

E obtive no Serial Monitor apenas os valores 1023, sem nenhuma variação entre eles, por mais que eu movimentasse o sensor.

Foi então que eu resolvi comentar a linha "analogReference(EXTERNAL);" e passou-me a informar valores que estão em torno de 300, por mais que eu movimentasse o sensor, esses valores variavam bem pouco. Acho que teria que dar algo próximo de 0 até próximo de 1023 para os extremos de movimento.

O que acham??
"Nossa maior fraqueza está em desistir. A forma mais certa de vencer, é tentar mais uma vez" (Thomas Edson)