Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Zarith (referente a google+): es que estoy probándolo, y no tengo a quién enviar la invitación  
 

Experimentos (III)

Habi - 14/09/2007 23:33:53 - Tecnoesoterismo

Hace poco retiré del trabajo un ratón óptico al que no le iba bien la ruedecilla. Por curiosidad lo abrí, y debo decir que es una de las cosas más baratas que he visto. La parte de la ruedecilla es un sensor mecánico realmente cutre. El resto, dos integrados y un LED.

Este es el ratón:

Por curiosidad miré los integrados. Y me pareció muy curiosa la funcionalidad del OM01, es una versión clónica y capada de un ADNS-2051. Este tipo de integrados contienen un sensor CMOS con el que obtienen una imagen unas 1700 veces por segundo y calculan el desplazamiento del ratón comparando.

Lo gracioso es que tienen un puerto serie SPI para mandar y recibir comandos. Y que uno de ellos es volcar la matriz de puntos.

Como todo va a niveles TTL, la solución obvia es conectarlo por el puerto paralelo. La programación no fue tan obvia, ya que mi ordenador es demasiado rápido para acceder directamente, y los sistemas operativos modernos no tienen un control del tiempo fino, pues no son sistemas de tiempo real.

Este es el ratón hackeado:

Aquí enchufado al ordenador y a una fuente de alimentación externa:

Y aquí una lectura del papel que tengo debajo; es un "JA" de Javier (subí un poco el plástico con el sistema óptico, para que cogiese más área):

Otra cosa menos.


He visto que en este sitio detallan algo parecido, pero con un ADNS-2610, que es un chip de verdad y no esta cutrería. Un conjunto mejorado de comandos, un chip compacto con sólo la interfaz serie, y una matriz de 18x18 en vez de 16x16. Aparte de ser Agilent y no un cutre OM01 sin marca.

Por otra parte, yo no lo extraje y conecté con 4 hilos, sino que acoplé otro conector al ratón, para que siga funcionando a la vez. Lo alimento con dos hilos (enchufados a los mismos sitios que la alimentación PS/2) y otros 3 los uso para el puerto serie (GND, TIO y TCLK) y son los que van al paralelo del ordenador.


pepegru - 02/10/2007 20:58:34

Estoy tratando de hacer lo mismo con el ADNS 2051, pero la programación se me complicó.  
No me darías una mano enviándome algunas ideas (si me mandás el programa mucho mejor)



Habi - 04/10/2007 13:05:48

El OM01 es una versión clónica del ADNS-2051, así que se aplica todo. De hecho, tuve que recurrir al datasheet de éste para ver el protocolo de su bus SPI. Las patas a usar son SCLK y SDIO, niveles TTL (por eso usé el puerto serie). 
 
Respecto al programa... depende de qué pines uses al final. El del link que puse separaba el I/O mediante un diodo y usaba un pin de datos y otro de status para SDIO. Yo puse el puerto serie en modo bidireccional y usé un solo pin de datos para lo mismo. 
 
El programa depende de cómo lo hagas y los pines que elijas. Y por supuesto, tendrás que usar algún driver que permita acceder a los puertos a bajo nivel. Eso sí, si tienes un ordenador muy rápido, tendrás que añadir retardos para los accesos. Los tiempos vienen bien indicados a partir de la página 7 del datasheet. 
 
Sólo hay que usar el comando Pixel Dump (usando el registro Configuration_bits, $A), y leer los 256 bytes (16x16) con los registros Data Out. Los valores son de 6 bits, así que si los quieres a 8 tendrás que escalarlos. 
 
Realmente es un proyecto fácil, no dices ni veo que pudo complicársete.




Post cerrado