# encoder incremental, sensor posicion



## ELCHAVO (Abr 7, 2008)

mis queridos amigos y colegas :

Necesito por favor su ayuda en lo siguiente :

Me gustaria alguien me enviara un archivo donde encuentre un micocontrolador con un sensor encoder del tipo incremental y/o me explicara como detecta exactmente el sentido del giro con las diferentes señales que envia el encoder.

tengo entendido que envia 3 señales desfasadas dos y la tercera tiene un periodo mayor, pero no he omprendido aun como hacer el algoritmo para detectar el cambio de giro.


muchas gracias, espero me ayuden !.


----------



## Luis Eduardo Sánchez (Abr 9, 2008)

Amigo por tus mensajes veo que estas trabajando con VFD´s bien ahi va:

Los enconder para este tipo de aplicaciones como afirmas tienen 3 señales dos de las cuales son A (A+ y A- este es una par aislado) B(B+ y B-) y el pulso Z (Z+ y Z-) donde una señal del par  aislado es el complemento de la otra es decir su negación y con respecto de B se encuentra desfasado 90º grados electricos es decir 1/2 pulso ya este desfase es el que detecta en que sentido va el eje del motor si C.W o en sentido C.C.W.Con la lectura de una de sus dos señales A o B se puede calcular la velocidad a partir de los pulsos por revolucion (PPR). El pulso Z se utiliza solamente cuando se quiere saber cual es la posicion 0º de el encoder y a partir de ahi poder conocer como cuadrariamos el eje y a que grados queremos que se utilize nuestro motor. Esto se utiliza mucho en Spindle de CNC para cuando se necesita cambiar herramientas, si no se tuviese este pulso Z, se presentaria choque o daño del eje. 

Espero que con esto puedas tener claro el concepto.

Saludos


----------



## ELCHAVO (Abr 9, 2008)

te agaradezco luis eduardo, pero pues ese dato lo conozco y no ha problema. mi pregunta era cual o deque manera es el algortimo para con el microcontrolador detectar el sentido de giro.


Agradezco la ayuda, ya se como es el algoritmo, ayerdepues de haberme sentado a pensar lo pude sacar y creo me estaba enfrascando en una bobada.

gracias.


----------



## Eduardo (Abr 9, 2008)

Hay varios algoritmos que te generan distinta cantidad de cuentas por vuelta.
Esos ejemplos de pseudocodigo no son optimos, de acuerdo al manejo que se haga con las interrupciones puede mejorarse.


Llamo A y B a las señales leidas y Ao y  Bo a la lectura anterior.
A' B' Ao' Bo'  son los complementos.


* Algoritmo x1

  IF Ao'·A = 1   (flanco ascendente)
    IF B = 0   --> Suma 1   (UP)
    ELSE       --> Resta 1  (DOWN)
  ENDIF           


* Algoritmo x2

  IF Ao'·A = 1   (flanco ascendente)
    IF B = 0   --> Suma 1   (UP)
    ELSE       --> Resta 1  (DOWN)
  ELSE IF Ao·A' = 1  (flanco descendente)
    IF B = 0   --> Resta 1  (DOWN)
    ELSE       --> Suma 1   (UP)
  ENDIF  


* Algoritmo x4

  IF Ao'·A = 1   (flanco ascendente)
    IF B = 0   --> Suma 1   (UP)
    ELSE       --> Resta 1  (DOWN)
  ELSE IF Ao·A' = 1  (flanco descendente)
    IF B = 0   --> Resta 1  (DOWN)
    ELSE       --> Suma 1   (UP)
  ELSEIF Bo'·B = 1   (flanco ascendente)
    IF A = 0   --> Resta 1  (DOWN)
    ELSE       --> Suma 1   (UP)
  ELSE IF Bo·B' = 1  (flanco descendente)
    IF A = 0   --> Suma 1   (UP)
    ELSE       --> Resta 1  (DOWN)
  ENDIF


----------



## ELCHAVO (Abr 9, 2008)

exacto ! 

Eduardo muchas gracias eso era lo que buscaba !


muchas gracias compañeros.


----------



## Eduardo (Abr 9, 2008)

Yo me acordaba que por algun lado tenia una forma compacta del algoritmo x4 usando la funcion XOR,  no es tan 'legible' como lo anterior pero es mas simple.


Con PIC:
-   Para A,B se usan los pines que tienen Interrupt On-Change.
-   Durante la interrupcion, A y B a las señales leidas y Ao y Bo las de la interrupcion anterior.

-   En la interrupcion:  
   IF  Ao XOR B = 0    THEN   Suma 1
   ELSE    Resta 1
   ENDIF


Con compuertas:

Ao y Bo son las señales despues de pasar por un flip flop D.
P,Q  las salidas de dos compuertas XOR.

clokUP y clockDOWN   las señales de reloj a ingresar a un contador UP/DOWN de dos entradas tipo 74LS192/193

P = Ao XOR B
Q = A XOR Bo

clockUP       = P'·Q
clockDOWN = P·Q'


----------



## OZKR_86 (May 20, 2008)

que onda yo en estos momentos estoy tratando de hacer el encoder de posicion ya tengo la idea de como hacer el programa pero tengo duda con el disco ranurado he visto varios en internet pero la verdad no me doy idea de como realizarlo quisiera saber si me podrias pasar tu diseño y si es posible la codificacion para ver que tan cerca o tan errado ando.
si puedes pasarmelos o decirme de donde sacaste el diseño muchas gracias.


----------



## Victor Gonzalez (Nov 17, 2009)

hola...

Ya que s encuentran hablando de lectura de encoder, necesito ayuda de como poder leer 3 encoder's con un solo modulo de cuadratura del PIC18f4431, mas o menos he investigado y se que necesito el retraso que me proporcionan los Flip Flop tipo D, mas sin embargo no logro imaginarme como conectarlos..  ???  agradeceria su ayuda...


----------



## sirgroll2 (Nov 22, 2009)

hola.

alguno de ustedes conoce algun encoder comercial de bajo costo?? (que no sea el de un mouse)

me he puesto en la tarea de preguntarlos y solo consigo  elementos muy costosos, ya estoy pensando en hacerlos yo mismo. muchas gracias!!!


----------



## ramirin (Nov 22, 2009)

Me parece bastante interesante el tema que auí han tratado, ya se despertó la imaginación sobre posibles aplicaciones. Ahora solo tengo una pregunta para Eduardo; el algorítmo que has desarrollado, ¿es para usarse en un microprocesador o a través de la PC? Me intriga saber a quién conectar la interfase.


----------



## ERCH07 (Nov 25, 2009)

Un encoder de precio razonable lo puedes conseguir en www.usdigital.com


----------



## ramirin (Nov 25, 2009)

Mmm, bueno. El encoder no solo depende de cuánto quieras gastar en él, depende de su calidad y resolución. Si les interesa, puedo cotizarles encoder o reglas de la marca Heidenhain. Son caros, sí, pero lo bueno cuesta. Si es para un proyecto escolar, entonces busca encoder de la marca Sino (Chinos, por cierto) muy baratos y aceptable el desempeño para ese fin.


----------

