Autor Tema: Acelerómetro  (Leído 98353 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: Acelerómetro
« Respuesta #255 en: 24 de Noviembre de 2010, 22:00:08 »
Bueno despues de renegar un tiempo volvi pero sin resultados positivos. Encontre esta web en internet:

http://forums.freescale.com/t5/8-Bit-Microcontrollers/Problems-with-MMA7660/m-p/54971

En donde habla un tal Nocturno no se si sera el mismo de aqui   :-/
Configure el acelerometro con los pasos que ahi indica pero no logro que salte la interrupción por cambio de estado en los ejes, les dejo el programa que use:

Código: [Seleccionar]
DO{
i2c_start();                                                                     //configuracion de los registros
ACK = i2c_write(I2C_ESCRIBIR);                                                   //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
   DO{
ACK = i2c_write(MODE);                                                           //registro MODE
   }WHILE(ACK !=0);                                                             
i2c_write(0b00000000);                                                           //acelerometro stand-by
i2c_stop();

   DO{
i2c_start();
i2c_write(I2C_ESCRIBIR);                                                         //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
i2c_write(SPCNT);                                                                //registro SPCNT
i2c_write(0b00000000);                                                           //sin sleep-count 
i2c_stop();

RESTART_WDT();
   
   DO{
i2c_start();
i2c_write(I2C_ESCRIBIR);                                                         //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);       
i2c_write(INTSU);                                                                //registro INTSU
i2c_write(0b00000011);                                                           //interrupcion solo por movimientos sobre X,Y,Z
i2c_stop();

   DO{
i2c_start();
i2c_write(I2C_ESCRIBIR);                                                         //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
i2c_write(PDET);                                                                 //registro PDET
i2c_write(0b11100000);                                                           //sin tap-detection
i2c_stop();

RESTART_WDT();

   DO{
i2c_start();
i2c_write(I2C_ESCRIBIR);                                                         //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
i2c_write(SR);                                                                   //registro SR
i2c_write(0b00000000);                                                           //120 muestras por segundo, sin TILT debounce filter
i2c_stop();

   DO{
i2c_start();
i2c_write(I2C_ESCRIBIR);                                                         //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
i2c_write(PD);                                                                   //registro PD
i2c_write(0b00000000);                                                           //No tap detection debounce count enabled
i2c_stop();

RESTART_WDT();

DO{
i2c_start();
i2c_write(I2C_ESCRIBIR);                                                         //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
i2c_write(SRST);
i2c_write(0b00000001);
i2c_stop();

DO{
i2c_start();                                                                     //configuracion de los registros
ACK = i2c_write(I2C_ESCRIBIR);                                                   //direccion del acelerometro y modo escritura
   }WHILE(ACK !=0);
   DO{
ACK = i2c_write(MODE);                                                           //registro MODE
   }WHILE(ACK !=0);                                                             
i2c_write(0b01100001);                                                           //acelerometro activo interrupcion activa = 0
i2c_stop();

Ya entre en la desesperacion y lei todas las notas de aplicacion pero todas se basan en ese orden de la configuracion de los registros así que demasiada info no hay. Ya cambie el acelerómetro para descartar que estuviera quemado pero aun asi no funciona, lo estoy alimentando con 3V y al parecer funciona ya que responde con el bit ACK al I2C.

El amigo Nocturno comento unos post atras que descubrio lo de la direccion del acelerometro 0x98 y 0x99 y habia podido medir las haceleraciones correctamente, agradeceria si pudiera pasarme el codigo que uso para ver si puedo hacer funcionar el mio.

Muchas gracias!!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Acelerómetro
« Respuesta #256 en: 25 de Noviembre de 2010, 00:07:48 »
Alguien tiene la libreria para el eagle?? Estuve buscando por todas partes pero no encontre nada.
Gracias!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado victormanuel12

  • PIC10
  • *
  • Mensajes: 2
Re: Acelerómetro
« Respuesta #257 en: 17 de Enero de 2011, 09:07:19 »
Hola a todos. Hace poco que estoy investigando acerca de los acelerometros, y me surgieron un par de dudas. A ver si es posible que alguien me las resolviese, muchas gracias con antelacion:

1. Que es lo que hay que conectar exxactamente a las entradas g-select1 y g-select2??
2. Que diferencia principal hay entre los modelos mma7260, mma7260q y mma7260qt?
 Se que son preguntas de novato, y presento mis disculpas si a alguien le molestan estas preguntas, pero estaria muy agradecido por su ayuda.

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Acelerómetro
« Respuesta #258 en: 10 de Diciembre de 2011, 17:32:39 »
Hola chicos,

Iba a ponerlo en el tema del robot equilibrista pero creo que es mucho mejor que lo pregunte aqui.

Voy al grano, no se como tratar los datos que leo de los registros de un acelerometro digital (MMA7544) Me se "desbordan" los registros al llegar a su tope de 8bits y no se muy bien como tratar los datos.

Estoy intentando realizar un filtrado en conjunto con los datos que obtengo de un giroscopo pero llevo bastante rato pensando como poder hacerlo y no se me ocurre nada para poder usar los datos sin meterme con mucho algoritmo

Os dejo una foto de los datos que tengo de mi acelerometro girandolo en sentido antihorario y leyendo el eje X. Mis datos redondeados en rojo

A ver si me iluminais por favor
Gracias

Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Acelerómetro
« Respuesta #259 en: 10 de Diciembre de 2011, 19:05:50 »
Hola chicos,

Iba a ponerlo en el tema del robot equilibrista pero creo que es mucho mejor que lo pregunte aqui.

Voy al grano, no se como tratar los datos que leo de los registros de un acelerometro digital (MMA7544) Me se "desbordan" los registros al llegar a su tope de 8bits y no se muy bien como tratar los datos.

Estoy intentando realizar un filtrado en conjunto con los datos que obtengo de un giroscopo pero llevo bastante rato pensando como poder hacerlo y no se me ocurre nada para poder usar los datos sin meterme con mucho algoritmo

Os dejo una foto de los datos que tengo de mi acelerometro girandolo en sentido antihorario y leyendo el eje X. Mis datos redondeados en rojo

A ver si me iluminais por favor
Gracias



No entendi bien a q te refieres con q se te "desbordan". Todos los sensores tienen un punto de saturacion, no podes medir mas de eso. Fijate si tu acelerometro no permite ajustar la sensibilidad.
Con respecto al filtro, en el hilo del robot equilibrista hay mucho material al respecto. Podes utilizar un filtro de kalman, o un filtro complementario que es mil veces mas simple.
Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Acelerómetro
« Respuesta #260 en: 10 de Diciembre de 2011, 20:20:17 »
Hola Gera

Me refiero a que el registro de la lectura de cada eje tiene 8 bits, y digamos que tan pronto tengo una lectura de "0" como de "255".
Mas bien es que no se como tratar los valores de los registros.

En los giroscopos analogicos, estos poseen un offset, que por un lado es beneficioso ya que en reposo tienen un valor determinado. Yo ese valor mismo se lo resto y digamos lo "calibro" a cero.

En el caso del acelerometro este me pasa lo que describo en la foto:En la posicion en la que las primeras patillas 1-6 estan arriba tengo lecturas tan pronto de cero como de 255. si sigo girando en sentido antihorario los valores empiezan a ser crecientes hasta que llegan a 60 aprox y comienzan a descender a 0, y si sigo girando nuevamente "desbordamos" y nos ponemos en 255 y sigue bajando hasta llegar a 190. Posteriormente comienza a subir hasta llegar a 255 y luego desborda nuevamente a 0 cuando volvemos a la posicion inicial

(trato de describir lo que me esta pasando paso a paso)

La verdad que se hace un poco complicado sacar el angulo de esta forma. No se si tendre que emplear dos ejes y realizar trigonometria (no se si sera muy efectivo a nivel de calculo con el pic) pero en fin, que estoy en vuestras manos, para la busqueda de ideas al respecto.

Por cierto, Si sigo muy atento el hilo del robot. En mi caso trato de hacer una plataforma estabilizada, pero el principio del robot o el segway es el mismo. Trato de conocer de forma precisa el angulo tanto frente a vibraciones como frente al tiempo :-/

un saludo!!! :)
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home


 

anything