TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Marttyn en 07 de Noviembre de 2011, 16:33:15

Título: Como implementar un encoder optico absoluto?
Publicado por: Marttyn en 07 de Noviembre de 2011, 16:33:15
Hola!
Me gustaria hacer una especie de robot con unas ruedas que solo pueda avanzar y retroceder (movimiento en una unica dimension) un metro en total. Pero quiero que el robot sepa en cada momento en que posicion se encuentra desde el origen para poder "medir" digitalmente cuanto avanza o retrocede.
En un papel de un metro de largo imprimiria un patron "especial" de lineas (tipo codigo de barras) y el robot tendria un sensor optico que detectaria blanco/negro y con esto deberia ser capaz de situarse en que punto se encuentra.

Se me ocurrio primero un patron simple, negro/blanco/negro/blanco... y el robot, contando con el sensor sabria la posicion, pero el problema es que esto seria "incremental", es decir, tendria que empezar desde el inicio para saber en donde se encuentra, y yo quiero que en todo momento, empezando desde cualquier sitio poder llegar a otro sitio con una precision de 1mm mas o menos. Puedo permitirme hacerlo andar hasta llegar a un punto de referencia cercano (quizas podria poner 10 puntos de referencia a lo largo de un metro), pero no puedo hacerlo volver al inicio.

Luego pense en el protocolo de comunicacion serial sincrono, es decir, tener dos patrones y dos sensores, uno haria la señal de reloj, y el otro podria leer informacion en serie. Deberia ser poca la informacion que deba leer....

Buscando encontre teoria sobre los encoders absolutos, pero requieren un sensor por cada bit de resolucion para lo que yo necesitaria unos 10 sensores para obtener una resolucion cercana a 1mm.

Hay algun protocolo simple que me pueda posicionar con un maximo de 2 sensores? Como dije antes, podria "caminar" algunos centimetros para un adelante o atras para llegar a un punto de referencia.

Algun tipo de sensor/integrado que lea codigos de barra?

En fin, seguire pensando, si se os ocurre algo espero vuestras ideas  :mrgreen:
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: MGLSOFT en 07 de Noviembre de 2011, 16:57:15
Y si le pones un encoder absoluto en el eje, y alli lo lees??
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: rivale en 07 de Noviembre de 2011, 17:16:59
y si usas una pista con diferentes tonos de grises o diferentes colores, y lees con una IR comun y dependiendo del tono de gris puedes saber en que posicion se encuentra.

es lo que se me ocurrio aunque no se si tenga la resolucion que necesitas, en teoria cada tono de gris te va a reflejar una diferente cantidad de luz que puede leer con tu ADC
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: KALLITOS en 07 de Noviembre de 2011, 17:19:45
Hola, existen dspic con modulo que maneja encoder, este trae un registro de 16 bits, creo que mas que suficiente para que lleve la posicion en la distancia que mencionas.

saludos.
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: Nocturno en 08 de Noviembre de 2011, 01:56:11
Si quieres usar sólo dos sensores, yo pondría en uno de ellos una rayita cada milímetro (sensor A), y en el otro (sensor B), coincidiendo con cada rayita una combinación de 4 bits que representarán un número del 0 al 10. Los 4 bits ocuparían las 4 rayitas que comienzan cada decímetro.
Para saber que comienza un decímetro, y que por tanto el otro sensor debe leer sus 4 bits, podrías dejar en blanco la rayita del sensor A de cada decímetro.

Algo así

Código: [Seleccionar]
  0         1         2         3         4         5         6         7         8         9         0         1         2         3         4         5         6         7         8         9         0         1         2
mm01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
 A 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111
 B10000                                                                                               10001                                                                                               10010               
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: tapi8 en 08 de Noviembre de 2011, 07:41:17
¿Con motores PAP no te valdria?

Los hay de 200pasos, cada paso 1.8º esto despues traducido a m/m lineales depende del diametro de la rueda. Si no te llegara esta resolucion tienes movimiento a micropasos que le puedes dar 10, 20,30....pasos entre bobinas por lo que multiplicarias esos pasos.

Ejemplo: 200 pasos del motor 1.8º, le das 20 entre bobinas 4000pasos. 360º/4000=0.09º por paso.

Te dara trabajo hacerlo pero....
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: Marttyn en 08 de Noviembre de 2011, 21:01:44
Marcos, quiero mantener el precio y el espacio al minimo, y los encoders absolutos son grandes y caros...  :?
Tapi, un motor PaP es incremental, como un encoder normal, por lo que si muevo accidentalmente al robot, ya no tiene referencia de donde esta.
rivale, tu solucion es muy ingeniosa! pero no creo que vaya a tener la resolucion necesaria para lo que lo busco.
Noc, yo estaba pensando algo similar:
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/Encoder.jpg)

Esto seria un "3", y se puede leer de derecha a izquierda o de izquierda a derecha.
El patron de abajo seria el reloj, y el de arriba los datos. El patron de reloj cada 1mm. Los datos se transmiten en los "blancos" de reloj. Cuando el reloj y los datos lea "negro" en ambos significa que estoy en un punto de referencia, y segun cuantos cuadrados haya contado seria el punto de referencia en el que me encuentro. Creo que es mas o menos lo que tu dices, solo que el tuyo es mas eficiente, ya que al ser en binario solo ocuparias 4 pulsos de reloj, mientras que el mio al ser en decimal, puedo ocupar hasta 10 pulsos de reloj para leerlo.

Me gusta esta solucion, solo tendre que hacer pruebas para ver hasta que punto es realizable, ya que un sensor optico de proximidad como estos: http://www.taydaelectronics.com/servlet/the-1486/REFLECTIVE-OPTICAL-SENSOR-1mm/Detail
no se que resolucion tendra. Voy a probar con el osciloscopio.
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: rivale en 08 de Noviembre de 2011, 21:44:04
me gusta tu ida Marttyn, pero creo que tendras que probar para ver si tienes la resolucion necesaria.
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: Nocturno en 09 de Noviembre de 2011, 01:32:28
Procura que te sirva, porque los comerciales no son baratos.
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: Marttyn en 12 de Noviembre de 2011, 12:07:33
Me estoy rompiendo la cabeza para encontrar una pareja de led IR y fototransistor SMD y en un mismo encapsulado...
Si bien ya encontre algunos, el problema es que lo tenga Farnell, o RS para saber que siempre que lo necesite lo tendre en 24hs en casa.
de momento encontre esto que me parece increible!
http://es.farnell.com/avago-technologies/aedr-8300-1w2/reflective-opt-encoder-2ch-212lpi/dp/1735258
Es un encoder optico reflexivo, con una resolucion de 8 lineas por milimetro!!!
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: RALF2 en 12 de Noviembre de 2011, 14:03:14
Marttyn y que te parece este (http://www.sparkfun.com/products/10932) o este otro (http://www.sparkfun.com/products/246)   :mrgreen:

Saludos
Título: Re: Como implementar un encoder optico absoluto?
Publicado por: Marttyn en 12 de Noviembre de 2011, 21:10:36
Gracias Ralf!
Como te decia, un encoder me encarece todo (40 dolares segun veo), asi que intentare hacerlo con un sensor optico.
El que me muestras seguro puede desempeñar la funcion perfectamente, pero quiero ponerlo en un lugar muy pequeñito, por lo que estoy buscando uno de montaje superficial...
Este por ejemplo creo que es un buen candidato:
http://es.farnell.com/fairchild-semiconductor/qre1113gr/opto-switch-reflective/dp/1471020?crosssellid=1471020&crosssell=true&in_merch=true&
(http://rocky.digikey.com/weblib/Panasonic/Web%20Photos/New%20Photos/CNB10010RL.jpg)