Autor Tema: Como implementar un encoder optico absoluto?  (Leído 3768 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1818
    • IDEAA
Como implementar un encoder optico absoluto?
« 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:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7881
Re: Como implementar un encoder optico absoluto?
« Respuesta #1 en: 07 de Noviembre de 2011, 16:57:15 »
Y si le pones un encoder absoluto en el eje, y alli lo lees??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Como implementar un encoder optico absoluto?
« Respuesta #2 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
"Nada es imposible, no si puedes imaginarlo"

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Como implementar un encoder optico absoluto?
« Respuesta #3 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.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17909
    • MicroPIC
Re: Como implementar un encoder optico absoluto?
« Respuesta #4 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               
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Como implementar un encoder optico absoluto?
« Respuesta #5 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....

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1818
    • IDEAA
Re: Como implementar un encoder optico absoluto?
« Respuesta #6 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:


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.
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Como implementar un encoder optico absoluto?
« Respuesta #7 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.
"Nada es imposible, no si puedes imaginarlo"

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17909
    • MicroPIC
Re: Como implementar un encoder optico absoluto?
« Respuesta #8 en: 09 de Noviembre de 2011, 01:32:28 »
Procura que te sirva, porque los comerciales no son baratos.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1818
    • IDEAA
Re: Como implementar un encoder optico absoluto?
« Respuesta #9 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!!!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2049
Re: Como implementar un encoder optico absoluto?
« Respuesta #10 en: 12 de Noviembre de 2011, 14:03:14 »
Marttyn y que te parece este o este otro   :mrgreen:

Saludos

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1818
    • IDEAA
Re: Como implementar un encoder optico absoluto?
« Respuesta #11 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&
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.