# ¿Como hacer para contar los pulsos de un encoder?



## flaco33 (Sep 23, 2010)

Hola como estan? les comento que necesito poder contar los pulsos pwm de un encoder HEDS 5540 que genera dos señales en cuadratura (Canal  A y canal B), las cuales determinan ademas de la posicion, el sentido de giro del motor brushless. Necesito un contador up/down a partir de las 3 señales de salida del encoder (Canal A, canal B e index para reset). Este encoder tengo entendido que genera 500 pulsos por cada vuelta completa, lo que significaria que necesito por lo menos 9 bits para representar 512 posiciones. 

Lo que necesito es encontrar algun contador que haga esto, puesto que no lo quiero hacer con microcontroladores o FPGA.

Muchas gracias por su aporte.

Me olvide de comentar que necesito enviar los datos de posicion a una pc, pero ya tengo la interfaz y todo para hacerlo. El tema es que ahora lo tengo implementado con un PIC, pero cada tanto se pierden bits y se generan errores, y yo necesito mucha presicion.

Saludos


----------



## lubeck (Sep 23, 2010)

> Lo que necesito es encontrar algun contador que haga esto


mmm. y como lo quieres visualizar con displays o en la pc o como???



> Me olvide de comentar que necesito enviar los datos de posicion a una pc, pero ya tengo la interfaz y todo para hacerlo.


y si lo conectas directamente al puerto paralelo del pc...
a que te refieres con interfaz el soft o hard???


----------



## flaco33 (Sep 23, 2010)

Tengo que enviar los datos a la PC y ahi un soft lo utiliza para hacer calulos y manejar el sistema. El tema es que ahora lo tengo implementado con un PIC, pero cada tanto se pierden bits y se generan errores, y yo necesito mucha presicion. Tenes alguna idea de como hacerlo? si existe algun contador para esto?


----------



## lubeck (Sep 23, 2010)

> Tenes alguna idea de como hacerlo? si existe algun contador para esto?



mas que idea.. tengo muchas dudas 

el soft que puerto utiliza???
lo hiciste tu??? que lenguaje???

imagino que por utilizar el pic lo envias por serial no???

como conectas el encoder al pic, tienes un diagrama???
no queda muy claro que pretendes hacer...
hay muchas maneras de hacerlo...


----------



## flaco33 (Sep 23, 2010)

Al hard, no me acuerdo como se llama la placa.. Pero lo que pasa es que el encoder genera dos cadenas de pulsos PWM desfasadas, y segun si el desfasaje sea 90º el motor gira hacia la derecha (conteo ascendente) y si es 270º el motor gira hacia la izquierda (conteo descendente). 
Por cada vuelta completa genera un pulso en la señal index, lo cual serviria para resetear el contador y empezar de nuevo. 
Entonces necesito un contador que a partir de estas señales determine si contar hacia arriba o hacia abajo e ir enviando el numero contado en forma de bits en paralelo a la PC continuamente.

Encontre algunos contadores en cuadratura que hacen esto, como el LM628, pero su salida es de 8 bits, lo que supongo que implica que cuenta hasta 256. Los puedo poner en cascada, pero primero quiero ver si encuentro uno con mas bits directamente.


----------



## lubeck (Sep 23, 2010)

> ir enviando el numero contado en forma de bits en paralelo a la PC continuamente.



si lo conectas directamente al puerto paralelo y usas visualbasic es muy sencillo, pero desconozco que soft tienes....


----------



## flaco33 (Sep 23, 2010)

Sobre como funciona el soft no tengo idea, porque no lo hice yo. En realidad no hice nada yo, me dieron ayer el trabajo de reemplazar la placa actual que hace este trabajo con un pic, para que lo reemplazara por algun decoder que haga esto de forma mas efectiva.


----------



## lubeck (Sep 23, 2010)

mmm... necesitarias saber exactamente porque puerto y que protocolo utiiliza el soft que tienes... sin saberlo yo creo que seria casi imposible...


----------



## Eduardo (Sep 23, 2010)

flaco33 dijo:


> ....Me olvide de comentar que necesito enviar los datos de posicion a una pc, pero ya tengo la interfaz y todo para hacerlo. El tema es que ahora lo tengo implementado con un PIC, pero cada tanto se pierden bits y se generan errores, y yo necesito mucha presicion.


Ajo y agua caballero... (AJOderse y AGUAntarse)  
Hubieras empezado el proyecto con el *PIC18F4431* (ver listado de Elemon) que tiene *QEI* (Quadrature Encoder Interface)...


Con lo que ya tenés hecho, habría que conocer el código que hiciste para ver si puede optimizarse y conocer la velocidad máxima de los pulsos.
Aunque si al PIC lo ponés a hacer otras tareas (como la comunicación con la PC) con motor girando, no se va a poder hacer gran cosa por soft.


----------



## Dr. Zoidberg (Sep 23, 2010)

Hummmmm....
Un par de FF D, una compuerta XOR y al contador por hardware (timer de 16 bits) del PIC...y listo...5 líneas de código controlan todo y no se pierde ningun pulso....si el muestreo es suficientemente rápido.


----------



## lubeck (Sep 23, 2010)

Eduardo y EZ 
como supieron que protocolo que recibe el software del PC???
tengo curiosidad... o sea como supieron si es usb o serial???

el puso esto...



> Sobre como funciona el soft no tengo idea, porque no lo hice yo.


----------



## Dr. Zoidberg (Sep 23, 2010)

Yo no tengo idea del protocolo de comunicaciones...y en realidad ni me interesa.
Si hacés el conteo por hardware y con las diferencias del contador entre muestreos actualizás un contador U/D por software, eso casi que no insume NADA de tiempo y todo lo que te quede lo podés usar para lo que quieras...a menos que quieras transmitir vía serie emulandola por software...o alguna barbaridad de ese calibre...


----------



## lubeck (Sep 23, 2010)

> Yo no tengo idea del protocolo de comunicaciones...y en realidad ni me interesa.


 ya entiendo...
 si yo creo que lo de menos seria corregir el micro... la bronca seria transmitir los datos que requiere el software del pc...

y como mencionaste en otro post lo mejor es que lo lleve con alguien que lo vea de cerca... creo yo


----------



## Dr. Zoidberg (Sep 23, 2010)

lubeck dijo:


> si yo creo que lo de menos seria corregir el micro... *la bronca seria transmitir los datos que requiere el software del pc*...



  
Pero él dijo:


			
				flaco33 dijo:
			
		

> Entonces necesito un contador que a partir de estas señales determine si contar hacia arriba o hacia abajo *e ir enviando el numero contado en forma de bits en paralelo a la PC continuamente*.



Naaaa.......Es tan fácil como tomar el valor del contador U/D por soft y mandarlo a un puerto predefinido en una o dos escrituras....tres líneas mas de código C...incluyendo la señal de sincronización entre bytes...


----------



## lubeck (Sep 23, 2010)

ok... yo mas o menos entiendo a que te refieres... espero el también...


----------



## flaco33 (Sep 24, 2010)

Muchachos muchas gracias por su aporte.. Entiendo lo que me dicen. Pero necesito saber con que familia de integrados TTL puedo hacerlo, es decir con que contador up/down en cuadratura puedo hacer el conteo. Yo encontre el LM628, pero quiero ver si encuentro alguno que tenga mas bits de salida, para no tener que enviar el valor del contador en dos partes, sino en una directamente. Ademas me pidieron que no lo haga ni con PIC ni con FPGA, porque se pierden bits y necesitan mucha precision..

Saludos cordiales


----------



## Dr. Zoidberg (Sep 24, 2010)

flaco33 dijo:


> Yo encontre el LM628, pero quiero ver si encuentro alguno que tenga mas bits de salida, para no tener que enviar el valor del contador en dos partes, sino en una directamente.


Pará! Para hacer un contador U/D podés usar 4 chips CD4029 en cascada y tenés 16 bits de resolución presentados en paralelo...es una solución totalmente troglodita, pero 100% funcional. Y no sé para que querés usar TTL que son mas sensibles al ruido... 


flaco33 dijo:


> Ademas me pidieron que no lo haga ni con PIC ni con FPGA, porque se pierden bits y necesitan mucha precision..


Si con PICs y FPGA perdés pulsos ES QUE ESTAN MAL DISEÑADOS. Punto. Y si el diseño es malo, no hay garantía de que no los pierdas haciéndolo con contadores U/D en cascada.

El problema de pérdida de pulsos no necesariamente es el mecanismo de conteo, sino la interfaz de adaptación del encoder a los módulos de cuenta...pero eso es una historia muy diferente.


----------



## Chico3001 (Sep 27, 2010)

flaco33 dijo:


> .....Pero necesito saber con que familia de integrados TTL puedo hacerlo....



Cualquier contador UP/DOWN de la familia 74 te sirve, pero en lo personal prefiero usar la serie 74HC, o si no hay la 74ALS, la ventaja de la HC es que te da un rango de voltaje y velocidad mayores, la desventaja es que la corriente de salida es menor, pero tu circuito no lo requiere... 

Por otro lado la ALS es la tipica TTL de 5V pero mejorada internamente, en todos los casos los pines tienen las mismas posiciones, pero las caracteristicas de operacion internas varian segun la subfamilia


----------

