Autor Tema: mouse USB con pic18f4550 y acelerometro MMA7260QT  (Leído 48707 veces)

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

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
mouse USB con pic18f4550 y acelerometro MMA7260QT
« en: 22 de Mayo de 2009, 16:42:31 »
Buenas muchachos!!!
Les cuento q llevo unos dias trabajando en esto y luego de horas luchando contra el ruido y el stack por fin tengo una version relativamente funcional jeje. :-/
Les pido perdon por el esquematico, lo arme a las apuradas para q se den una idea del circuito, pero el q tengo ensamblado es un poquito mas elaborado jeje. El codigo es un poquito largo, pero trate de modularizar lo mas q pude para q lo puedan entender. Esta compilado con CSS C.
Todavia tengo unos problemitas de ruido por ahi :5]. La macana es q si filtro la señal, se genera un delay un poco molesto. Fijense q en el codigo hay un filtro butterworth comentado.
En fin, cualquier pregunta, sugerencia o critica sera bienvenida! :lol:
Gracias!!!


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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #1 en: 22 de Mayo de 2009, 17:14:26 »
Hola Gera

Qué curioso, un mouse movido con un acelerómetro, qué original.  :mrgreen:

Oye, ¿no te fue suficiente el filtro analógico que pones en la entrada? ¿Porqué quisiste poner el digital?

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #2 en: 22 de Mayo de 2009, 17:41:53 »
Hola Santi!! Gracias por tu comentario :)
Te cuento q tuve q aplicar 4 filtros para obtener una señal estable. Un pasabajos analogico, un promedio, una ventana, y un butterworth de 2º orden. Asiq el pasabajos analogico no es para nada suficiente, teniendo en cuenta q tambien hay q filtrar interferencias mecanicas y cosas por el estilo.
Ademas hay q integrar la aceleracion para obtener la velocidad (q es el parametro q se le pasa a la pc para q mueva el cursor), y ahi puede existir algun valor residual por el error en la integracion o ruido, asiq hay q aplicar una funcion q detecte cuando el mouse dejo de moverse.
Y bueno, son tantas etapas por las q pasa la señal q termina bastante distorsionada.. por eso me gustaria q me den una manito con los filtros ya q mi fuerte no es el analisis de señales.
Aunq estoy empezando a dudar q el problema es la exactitud y precision del acelerometro :S
En fin, saludos!!!

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

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #3 en: 22 de Mayo de 2009, 18:00:40 »
[...]Ademas hay q integrar la aceleracion para obtener la velocidad (q es el parametro q se le pasa a la pc para q mueva el cursor), y ahi puede existir algun valor residual por el error en la integracion o ruido, asiq hay q aplicar una funcion q detecte cuando el mouse dejo de moverse.
[...]

Hola gera!

¿Que tipo de acelerómetro es?¿Envía un voltaje proporcional a la aceleración en cada eje?

El problema de integrar es el que ya se conoce y es que hay una valor que se desconoce. Al integrar la aceleración obtienes la velocidad, pero te falta saber un parametro constante(llamado generalmente V0 o Vi(Velocidad Inicial) en estos caso). Partiendo de la aceleración, es todo un tema detectar cuándo está realmente en reposo el dispositivo sin utilizar algún otro sensor de apoyo, porque tanto para un estado de reposo como de movimiento uniforme, el acelerómetro dará valores semejantes(la aceleración tiende a 0, por lo que Vel=ctte). Similar sucede al integrar nuevamente para averiguar la posición...

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #4 en: 22 de Mayo de 2009, 18:02:38 »
Yo también he trabajado con ese tipo de algoritmos y tras bastante tiempo de probar y probar código lo deje estar. Mi problema estaba en las integrales. Aún haciendo la calibración del acelerometro, se introducía un pequeño valor constante que se hiba haciendo más y más grande en las integrales conforme pasaba el tiempo.
Si la entrada es f(t), y c una pequeña constante...
integral( f(t) + c ,t ) = integral(f(t),t) + c*t
La señal de salida es la integral deseada más un valor que crece con el tiempo...
Ahora la segunda integral (que según comentas no es necesaria para el mouse)
integral( integral(f(t),t) + c*t, t ) = integral(integral(f(t),t),t) + 1/2 * c * t^2 !!!
Para un muestreo de 1Khz, pasados unas fracciones de segundo el error supera varias veces la señal que queremos obtener...

Para corregir la señal también utilicé filtros digitales, pero no conseguí nada aceptable. Poco antes de abandonar el asunto estuve indagando sobre los filtros de Kalman, pero creo que necesitas más sensores aparte del acelerometro para poder utilizarlos.

Aqui los dos links por si alguien quiere obtener mas informacion sobre el tema, incluyendo un video del algoritmo funcionando:
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #5 en: 22 de Mayo de 2009, 18:05:53 »
Citar
El codigo es un poquito largo, pero trate de modularizar lo mas q pude para q lo puedan entender.
¿Que has modularizado?¿Si el código esta igual (o casi) que en la nota de aplicación de freescale?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #6 en: 22 de Mayo de 2009, 18:14:54 »
gera: A(t), V(t) y P(t) son funciones en el tiempo.

Tus cálculos de integración no son correctos a mi parecer por lo que miré en los algoritmos:

por ejemplo:

V(t+\Delta t)=V(t)+(A(t+\Delta t)-A(t))*\Delta t)
O lo que es lo mísmo:
V(t+\Delta t)=V(t)+(\Delta A*\Delta t)

En tu algoritmo esto sería:

Código: C
  1. velocityx[1]= velocityx[0]+ (accelerationx[1] -accelerationx[0])*tiempo;
  2. velocityy[1]= velocityy[0]+ (accelerationy[1] -accelerationy[0])*tiempo;

Por lo que es estrictamente necesario que cuentes el tiempo transcurrido entre cada medición y lo sometas a la fórmula.

Un saludo
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #7 en: 22 de Mayo de 2009, 18:30:53 »
Citar
Tus cálculos de integración no son correctos a mi parecer por lo que miré en los algoritmos:
BrunoF, los calculos que comenta gera estan basados en la nota de aplicacion AN3397 de Freescale, y son correctos. Mira el documento en la pagina 2, la formula "Formula 1", ademas esa parte del código la puedes ver igual en la pagina 11.

Si no recuerdo mal hay 3 algoritmos similares de integración numérica forward, backward y centered, todos validos.


Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #8 en: 22 de Mayo de 2009, 18:38:19 »
Citar
¿Que tipo de acelerómetro es?¿Envía un voltaje proporcional a la aceleración en cada eje?
Hola Bruno! El acelerometro es el MMA7260QT de freescale. Como vos decis, da una tension proporcional a la aceleracion en sus patas (es tri-axial).

Citar
El problema de integrar es el que ya se conoce y es que hay una valor que se desconoce. Al integrar la aceleración obtienes la velocidad, pero te falta saber un parametro constante(llamado generalmente V0 o Vi(Velocidad Inicial) en estos caso). Partiendo de la aceleración, es todo un tema detectar cuándo está realmente en reposo el dispositivo sin utilizar algún otro sensor de apoyo, porque tanto para un estado de reposo como de movimiento uniforme, el acelerómetro dará valores semejantes(la aceleración tiende a 0, por lo que Vel=ctte). Similar sucede al integrar nuevamente para averiguar la posición...
Es cierto, pero asumo q cuando se enchufa el mouse, este esta en posicion de reposo, por lo tanto Vi=0. Ademas para evitar ciertas derivas, hay una funcion q se fija si la aceleracion es nula en cierta cantidad de muestras, entonces asume q la velocidad tambien lo es (suponiendo q cuando uno esta moviendo el mouse con la mano, es improbable q logre una aceleracion constante igual a cero).

Citar
gera: A(t), V(t) y P(t) son funciones en el tiempo.
Tus cálculos de integración no son correctos a mi parecer por lo que miré en los algoritmos:
Lo que pasa es q uso el metodo del trapecio para integrar las funciones. Es bastante mas preciso q sumar los sucesivos valores.

¿Que has modularizado?¿Si el código esta igual (o casi) que en la nota de aplicación de freescale?
Jeje, si, mucho del codigo lo copie textual de la app note de freescale. Pero lo modifique bastante y agregue una q otra funcion (por el tema de usb y del filtrado).

Muchas gracias por sus comentarios!! Ya se me ocurrieron un par de ideas para mejorar mouse, pero me voy a poner de a poco porq es epoca de mesas (maldita facultad jeje).
Saludos!!!

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #9 en: 22 de Mayo de 2009, 20:20:14 »
Oye Gera, ¿de casualidad tu acelerómetro es como éste?



Es que lo conseguí esta semana y ya le tengo un proyecto planeado. Y pues aprovecharía que ya llevas camino recorrido.  :mrgreen: Me costó como 23USD, casi casi regalado.
« Última modificación: 22 de Mayo de 2009, 20:22:15 por migsantiago »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #10 en: 22 de Mayo de 2009, 20:26:12 »
 :( Perdón entonces, no me di cuenta que utilizabas el método de los trapecios para aproximar la integral.:8} :8} :8} :8} :8}

Un saludo.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #11 en: 22 de Mayo de 2009, 22:13:26 »
Oye Gera, ¿de casualidad tu acelerómetro es como éste?



Es que lo conseguí esta semana y ya le tengo un proyecto planeado. Y pues aprovecharía que ya llevas camino recorrido.  :mrgreen: Me costó como 23USD, casi casi regalado.

Santi, el mismo! solo q a mi me salio gratis :P (freescale da muestras gratis jeje). Eso si, no vino con la plaquita, y soldarlo fue un parto. Me encantaria q me acompañes con el proyecto, a ver si entre todos lo hacemos andar bien jeje.
Cualquier duda con gusto te la contesto.
Saludos!!!

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #12 en: 23 de Mayo de 2009, 09:57:29 »
Sí, pero lo usaré hasta empezar las vacaciones porque ya se me juntaron los proyectos de fin de semestre y reportes de avances de tesis y pues tú entiendes  :mrgreen:

Yo te aviso cuando lo estrene para trabajar contigo de forma remota.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #13 en: 23 de Mayo de 2009, 10:04:04 »
muy buen proyecto gera.... interesante... a ver si suben algun video sobre su funcionamiento...
Saludos 8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: mouse USB con pic18f4550 y acelerometro MMA7260QT
« Respuesta #14 en: 23 de Mayo de 2009, 12:42:31 »
Bueno, a pedido de NANO, aqui un video


Use el cubo de compiz para q se vea mejor, ya q el puntero no se distinguia bien, de paso aprovecho a demostrar q funciona bajo linux y por q no caretear un poquito el cubo jaja.
Saludos!!

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


 

anything