# Como acondicionar la señal de un encoder?



## valldy (Mar 16, 2005)

estoy usando un encoder incremental junto a un motor paso a paso para desarrollar un sistema de control por pc.
El problema esta en que los pulsos que leo del encoder a traves de la tarjeta capturadora no son nada regulares (unos mas anchos que otros, sin ninguna clase de ciclo) y no puedo medir una velocidad en condiciones.
Existe algun metodo para acondicionar esa señal y poder medir la velocidad real de giro del motor?


----------



## Nacho (Mar 16, 2005)

Hola valldy, si mal no estoy estas realimentando la posición del motor paso a paso con el encoder cierto?, lo que no entiendo es para que utilizas un encoder incremental si este es bueno para medir velocidades pero no te da una buena precisión en cuanto a la posición absoluta del eje del motor paso a paso.
La duda mas grande que surge de lo que comentas es que estas controlando:
La posición o la velocidad?, y si controlas la velocidad porque utilizas un motor de paso?

En cuanto a la conformación de la señal podrías utilizar un circuito simple con un LM555 que disparas por el pin 2 con la señal que viene del encoder y las salida del integrado la mandas a la tarjeta capturadora, el ancho del pulso lo defines con la relación R*C, pero tienes que asegurarte que tu valor calculado sea mayor que el pulso mas ancho que te entregue el encoder.


----------



## Ehecatl (Mar 18, 2005)

Si lo que vas a medir es la velocidad, podrías meter la señal del encoder en un divisor por dos hecho con un flip-flop tipo D. Aunque te dará una lectura de velocidad disminuida por dos, por lo menos el ancho del pulso será igual cuando la velocidad sea uniforme.


----------



## valldy (Mar 20, 2005)

Se trata de un proycto fin de carrera, por lo que tengo que controlar tanto velocidad como posicion (relativa al ser un encoder incremental).
probare las soluciones que me habeis propuesto, pero segun las ultimas medidas que he realizado el problema no es tanto que los pulsos no son regulares, sino que de vez en cuando un pulso desaparece, fundiendo dos en uno solo. Esto me produce que no puedo medir velocidad contando tiempo entre pulsos, ni consigo que en una vuelta me dé un numero regular de pulsos (deberia ser n=500 pulsos por revolucion y cada vuelta es distinta).
El problema puede estar en el motor que no de una velocidad cte (es lo siguiente que voy a probar), aunque la alimentacion a las bobinas medida en osciloscopio si es estable, o puede estar fallando el encoder de alguna manera.


----------



## Nacho (Mar 20, 2005)

Estoy pensando que es posible que ese encoder tenga problemas, porque los pulsos que entrega el encoder incremental en ningun momento se solapan.

Prueba con otro encoder.


----------



## valldy (Abr 22, 2005)

Gracias por vuestra ayuda. 
Escribo para informaciónrmaros que ya he conseguido solucionar el problema (aparentemente). 
La salida del encoder ha mejorado enormemente con solo colocar una pequeña carga de inercia en el motor para suavizar el giro, aunque tb ha sido necesario implementar un decodificador de cuadratura para eliminar los rebotes que aun existen en el giro.


----------



## ren (Feb 17, 2006)

oye vall 

como que programa estas usando y el tipo de targeta o dispositivo de entrada estas poniendo en operacion  por que yo que sepa para controlar un motor nesecitas los puntos de muestreos y despues meterlos como a una especie de memoria o dispositivo de muestreo y retensión para poderlo acondicionarlo y asi seria mas facil de trabajar.


----------



## Oceano (May 5, 2009)

Usa como acondicionador un 7414, es un inversor Schmitt-disparador. No uses de tecnologia HC, ni nada CMOS, sin tal como te comento: 7414. Va muy bien, yo lo uso en mis encoders y tuve el mismo problema que tu.

En breves publicaré en mi web cómo fabricar un buen encoder en esta web:

http://sites.google.com/site/proyectosroboticos/


----------



## betronics.man (Abr 24, 2010)

Tengo un encoder de 32 ranuras a una velocidad de 80rpm aprox, la pregunta es como acondicinar la señal, intente con un 74ls14 pero parece k no es suficiente, ahora no tengo forma de ver la señal en un osciloscopio pero lo k yo noto es que hay pulsos que se empalman, puede ser por el efecto schmitt trigger? ya que lei este IC impide cambios bruscos, por otro lado el detector siempre recive un minimo d luz pr que nunca esta del todo apagado... Agradeceria mucho su ayuda pues es un proyecto urgente

por cierto Oceano, no encotre nada respecto a encoders en tu pagina


----------



## savad (Jun 6, 2010)

Hola a todos

Bueno soy nuevo aqui, y tengo algunas dudas, que quiza ustedes me pudieran ayudar.

el motor que tengo para probar es de CD con carbones (Japan Servomotors type DS57B4-101) y trae un codificador en cuadratura que entrega una señal senoidal de 1 Vpp en canales A & B . .y se alimenta de 2 Voltajes +12, -5), la armadura del motor se puede alimentar hasta con 40Vdc.

Como puedo decodificar el encoder de manera que pueda saber la direccion, velocidad  y posicion angular del motor?

- He pensado en un inversor (HC) actuando omo Amplificador lineal para cambiar de senoidal a onda cuadrada como entrada a un decoder en cuadratura que me de el sentido de giro y los pulsos. Llevar estas salidas a un contador de 36 bits con un latch associado para capturar la cuenta del contador (una entrada de lacth) y multiplexar la salida para poder ser leida por un micro de 8-bits.

Cuando el contador este en FF FF FF FF el siguiente pulso acendente lo regresa a 0 y envia una interrupcion al procesador para que  tome nota y no se pierda la cuenta.
Si pasa de 0 a FFFF FFFF porque se invirtio el sentido de giro, tambien generara una interrupcion para notificarle al procesador. Claro tiene que tener una salida que el micro debe leer dentro de su rutina de interrupcion para saber el sentido.

El procesador debe mantener la cuenta, el sentido y calcular la velocidad & posicion angular y actualizar el display.

El procesador debe comunicarse con otros 3 procesadores para syncronizar otros servos y poder llevar rutinas de interpolacion, tanto lineal como circular. Para CNC.

El sistema va ser un tipo de maestro-esclavo de manera que el procesador maestro se encargue de:
1. Generar secuencia de rconocimiento de esclavos en el sistema
2. Iniciar los esclavos (número de pulsos/ avance, Comando, etc) 
3. Llevar a cabo el manejo de archivos (Crear, guardar y leer) algo como un DOS basico
4. Interpretar los archivos (Gerber ya que es un CNC)
5. Enviar telegramas al procesador del display

Alguien me puede ayudar.  Yo tome clases de programacion en Z-80 en los ochenta pero nunca realmente los aplique. Me dedique a pruebas de tablillas y mantenimiento industrial y actualmente desempleado . . . es duro ser Ilegal en USA desde el 2009

Bueno si alguien quiere ayuarme en esto y poder crear un buen control de CNC seria fantastico.

Gracias


----------



## Oceano (Jun 27, 2010)

Hoy he comenzado a publicar artículos sobre encoders. Lo estoy haciendo progresivamente en la medida que voy teniendo tiempo (fines de semana). Poco a poco iré ampliando el tema de los encoders. Ruego disculpa por tanto retraso en dar esta información. 

Esta es la web:
http://sites.google.com/site/proyectosroboticos/encoder


----------



## Dr. Zoidberg (Jun 27, 2010)

Oceano dijo:


> Hoy he comenzado a publicar artículos sobre encoders. Lo estoy haciendo progresivamente en la medida que voy teniendo tiempo (fines de semana). Poco a poco iré ampliando el tema de los encoders. Ruego disculpa por tanto retraso en dar esta información.
> 
> Esta es la web:
> http://sites.google.com/site/proyectosroboticos/encoder



Lo bueno sería que subieras esos esquemas a este foro, para que los usuarios no tengan que buscar en tu sitio...por que medio que suena a propaganda y te lo pueden moderar.

Por otra parte, el esquema por hardware tiene una sobrecarga de componentes muy importante y no es ni por cerca el mejor diseño que puede hacerse. Un doble FF D y una compuerta XOR es todo lo que necesitas para tener el sentido de giro y la resolución de conteo multiplicada por dos...y sí puede usarse lógica CMOS.


----------



## Eduardo (Jun 27, 2010)

ezavalla dijo:


> ...Por otra parte, el esquema por hardware tiene una sobrecarga de componentes muy importante y no es ni por cerca el mejor diseño que puede hacerse. Un doble FF D y una compuerta XOR es todo lo que necesitas para tener el sentido de giro y la resolución de conteo multiplicada por dos...y sí puede usarse lógica CMOS.


Además de eso, se está haciendo un* conteo x1* , que sólo es apropiado para para sensar velocidad+sentido. 
*No es apropiado *para medir posición porque si cuando está en reposo o a muy baja velocidad, cualquier vibración o inestabilidad del encoder hace contar pulsos sin que haya habido desplazamiento.  
Este efecto desaparece en los conteos x2 y x4.


----------



## Renato Masias (Jul 2, 2010)

hola, asegurate que el cable del encoder esté enmallado y conectado a tierra. Además si es single ended debes poner una resistencia pullup para que se forme el voltaje. El motor tiene un giro uniforme asi que deberías ver las dos ondas tambaleando pero de ahi a que desaparescan o superpongan ahi un error.

saludos


----------



## Oceano (Jul 4, 2010)

Los encoders están probados y no pongo nada que antes no haya probado. Tengo a mi lado un encoder en protoboard con otro diseño más simplificado todavía gracias a los sensores hall porque voy a meter un diseño nuevo. No se puede acusar de algo si no lo pruebas. Que hayas probado otros encoder de otras webs que sí fallan es cierto, a mi tb me pasó cuando comencé. Hace 4 años de eso, por eso me decidí a hacer mis propios diseños.

El encoder por Hardware  que publico no existe en ninguna web - que yo sepa -. Los míos salió de mi cabeza tras muchos meses de pruebas y error, y por supuesto: No falla y quien lo pruebe lo podrá decir.

Estaría bien que si sabéis cómo hacer otro tipo de encoder, el encoder de doble pulso del que habláis, pongáis el esquema o la web para poder verlo, así todos aprendemos algo nuevo.

Sobre el encoder por PIC, también salió de mi cabeza usar la interrupción RB0 y que cada vez que detectaba un flanco (sea de subida o de bajada) cambiase el registro INTEDG. Usar la RB0 y el registro INTEDG en cada flaco, tampoco lo he visto en ninguna web, pero al ser programación puede ser que ya haya más de 100 personas que se les haya ocurrido porque es la única forma de hacerlo bien sin perder pulsos (y hasta cierta velocidad de giro) y sin electrónica externa añadida más que el acondicionador de señal para las foto-barreras (un 7414 o 74LS14), cosa que con sensores Hall de la familia A110xx ni siquiera hace falta eso porque ya lleva dentro de su electrónica un disparador Schmitt integrado.

Alguien habló de sobre cargas. De momento no he visto humo por ninguna parte...
Tampoco uso malla de aislamiento ni nada parecido, y funciona perfectamente en una protoboard. Sobre la malla de aislamiento sólo lo imagino en cables largos, es decir, cable con malla de protección que sí se usa cuando entre el sensor y el circuito hay una cierta distancia y pueda sufrir ruido externo.

Sobre hacer publicidad de mi web, sólo tendría sentido si vendiera algo, cosa que como podrás comprobar no vendo nada. Sólo me dedico a explicar experiencias para que otros que han estado como yo no tengan que volverse loco con el Google buscando. Permito que Google pueda publicar un anuncio y lo hago como algo ético como pago por ofrecerme un espacio donde poder publicar mis inquietudes y poder compartirlas. Los anuncios de Google que yo he visto son dos y nunca, al menos a mi, no cambia. Uno es sobre los micro-créditos y parece ser que está relacionado con el tercer mundo. El otro es sobre energía solar pero no sé mucho más. Ambos son presentados en inglés. Hace casi dos años que abrí la web y hasta el día de hoy no he ganado nada. Y si tienes dudas, te puedo demostrar esto porque Google lo registra todo y mi web tiene registro en Google Analytics.

Yo uso mucho los foros, sobre todo para programación porque siempre me he considerado un auto-didacta en programación y tengo muchas preguntas que hacer. Hay preguntas que es mejor responderlas explicándolo todo y en un foro yo lo veo más para responder rápido. Es la misma diferencia que mirar un diccionario o empaparse en una enciclopedia. Por suerte la mayoría de las veces no es así y no hace falta ir a ninguna web, pero en mi caso, para exponer 4 tipos de Algoritmo de Bresenham (2D, 3D, hasta 6D y DDA), para explicar la cinemática inversa con ejemplos (2 grados de libertad(con ejemplos de tipo "Scara" y otro sobre el brazo cilíndrico), 3 grados y 5 grados de libertad), pienso que sería muy engorroso explicar eso en un foro por el gran espacio que se necesita. Los foros está bien para hayar la respuesta sea en el propio foro o recomendando una web donde explica con detalle el problema que uno tiene. Yo no consigo ver como problema esto.

Sobre denunciar lo que publico, tienes todo el derecho a hacerlo si así lo piensas. Yo ahí no quiero meterme. Cada ser humano es una conciencia y no voy a juzgar la tuya. Lo que sí haré siempre es quitarme del medio acusaciones que no son ciertas.
Hace mucho tiempo me echaron de Robots Perú, por cierto, una buena web con foro incluido. Pensaron al igual que tu que me publicito y se debatió si ganaba o no dinero con ello. Lo comprobaron, cosa que reconocieron que no, pero aún así me echaron. No me dieron muchas explicaciones, tampoco yo las pedí. Pero entiendo que ellos venden Lego (materiales y talleres) y que si viene alguien diciéndote de cómo hacerlo por ti mismo puedes menoscabar un poco su negocio. Yo entendí que ellos defienden su negocio y así lo tomé, pues están en su perfecto derecho.
También estoy en otra web con foro sobre Basic Stamp (y venden todo tipo de materiales para la robótica) y pese a que en ningún momento hablo de Basic Stamp nunca he tenido problemas con ellos, más bien todo lo contrario, en momentos muy puntuales me ha pedido colaboración.

Podéis seguir haciendo publicidad para menoscabar la información que doy, no entraré más en ese juego. Muy rara vez, por mail, me han criticado y "puesto a parir" profesores de informática por que les ha sucedido que muchos presentan trabajos copiados directamente desde mi web, sin tener la precaución de darle un toque personal o modificar ciertas cosas, sobre todo en cuanto a simulación de brazos robot.


----------



## Oceano (Sep 19, 2010)

A partir de hoy (19.09.2010) rectifico lo dicho en el mensaje anterior con el tema de la publicidad. Voy a permitir anuncios en mi web de temas relacionados con la robótica. Y es probable que con el tiempo (a largo plazo) ponga a disposición pública la opción de tener algo ya realizado para los que no quieran líos con el montaje de circuitos electrónicos y quizás también engranajes prefabricados a medida. Aunque esto último de momento está en el aire.

Saludos.


----------



## ellogu (Dic 8, 2010)

hola oceano me gusria que me orientaras de como meter las salidas del encoder a la pc por medio de la DAQ usb 2008 ya que estoy trabajando con labview.


----------



## Oceano (Ene 2, 2011)

Hola ellogu,

desconozco los DAQ USB2008 y el LabView, entonces no puedo ayudarte.

Lo siento y suerte con tu búsqueda.


----------



## arturouc (Jun 23, 2011)

este es un conteo x2


como realizo un conteo x4?


----------



## savad (Ene 29, 2014)

Creo que les puede ayudar este pdf que explica el multiplicador x1 , x2 , x4


----------

