Encoder por Hardware
Importante.
Me he metido en el mundo de las FPGAs libres y desde entonces casi no cojo una puerta lógica. Gracias a las FPGAs el diseño electrónico digital se ha hecho mucho más cómodo y sencillo: diseñas tu circuito desde el PC de forma gráfica y lo envías a la FPGA, eso es todo. Si quieres comenzar en este apasionante mundo haz clic en este enlace.
Por otra parte, la información que doy en esta página tiene muchos años y ya he conseguido hacer lectores de encoder x4 dentro de una FPGA. Para más información haz clic en este enlace (ten presente que la señal de clock que verás en esa página es de varios MHz).
Lector de encoder electrónico x1.
El lector de encoder por hardware tiene la particularidad de ser tremendamente rápido y los que aquí se describen pueden llegar a funcionar a más de 500 KHz de frecuencia de entrada (comprobado) y diría que soportan varios MHz. Si necesitas una lectura de encoder extremadamente rápida esta información te será muy útil. Los circuitos que se muestran más adelante son compatibles para encoders incrementales ópticos y magnéticos.
Acondicionador:
Esta parte has de considerarla independiente del discriminador, por eso he puesto una línea amarilla de separación. Se utiliza "puertas Not" con disparador Schmitt para convertir las señales del encoder en niveles lógicos puros. Es esencial utilizar este tipo de acondicionador en encoders ópticos y siempre aconsejo que sean de tecnología TTL. El encoder fabricado con sensores Hall digitales no necesita acondicionador porque ya lo lleva integrado dentro del propio chip.
Flip-flop tipo D:
Para conseguir discriminar el sentido de giro y/o los pulsos correspondiente se utiliza el llamado flip-flop "tipo D". El 74LS74 contiene dos. El nivel lógico (0 ó 1) que haya en D pasará a Q y quedará retenido ese valor (memorizado) cuando, y sólo cuando se produzca un flanco de subida. Nos interesa dos detalles más que tiene este flip-flop, y es la patilla negada C (clear), que sirve para poner a cero la salida Q en cualquier momento independientemente de lo que haya en D y del flanco de subida; y el inverso de Q que es Q negada. Todo circulito que veas en las entradas o salidas significa que es lógica inversa.
Funcionamiento:
Se trata de crear pulsos de periodo muy corto, del orden de nano-segundos (10^-9). Poder leer este tipo de pulsos de periodo tan corto sólo lo pueden hacer contadores, en nuestro caso contadores reversibles. Otra electrónica no serviría, por eso es necesario poner contadores como salida para visualizar el conteo en binario, o bien, para meter los datos de salida del contador a un microcontrolador.
Las señales del encoder entran por A y B. Cada vez que el CP (símbolo >) de cualquiera de los 74LS74 recibe un flanco de subida y si la entrada D está a 1, Q se pone a 1 y /Q se pone a 0. La señal de /Q va a una red de atraso de 4 inversores para crear el nano-pulso. Cuando esto sucede hay un tiempo de demora (de nano-segundos = 10^-9s) provocado por las cuatro puertas Not consecutivas. Una vez que la señal se hace presente en el "clear" del Flip-Flop correspondiente (se activa por cero), Q pasa a valer 0. El flip-flop de abajo tiene el mismo comportamiento que el de arriba pero como tiene la señal B negada entonces funcionará por flanco de bajada. Dependiendo de si el disco del encoder va hacia delante o hacia atrás, sucede en un flip-flop o en el otro, nunca ocurre en los dos a la vez.
Tipos de contadores reversibles:
Existen dos tipos de contadores reversibles, los que tienen entrada Up y Down (ó cpU y cpD) independientes como por ejemplo el 74LS192, y los que tiene U/D y CP como por ejemplo el 74LS191.
Contadores con entradas Up y Down independientes.
Si quieres montarlo en una protoboard te será más sencillo usar como red de atraso el integrado 74LS240 porque es un buffer inversor con 8 entradas/salidas. Se usa 4 puertas NOT (de las 8 que tiene el 74LS240) para el flip-flop de arriba y las otras 4 para el flip-flop de abajo.
Necesitarás un contador reversible con salidas a LED para poder probar el circuito, si no, no podrás ver nada, ya que la electrónica para este tipo de encoder son de periodos muy cortos, de nano-segundos, y estos son invisibles a la vista. Sólo los contadores son capaces de percibir periodos de pulsos tan pequeños, cualquier otra electrónica no sería capaz de contabilizarlos, esto quiere decir que ni un microcontrolador ni un PLC es capaz de poder leer pulsos tan breves. Es obligatorio usa contadores reversibles.
Normalmente los contadores reversibles son de 4 bits (0..15). Poniendo 2 contadores en cascada tienes 8 bits de resolución (0..255), y poniendo 4 contadores reversibles tienes 16 bits de resolución (0..65535), así sucesivamente dependiendo de la resolución que necesites.
Aquí tienes el esquema completo para ver el conjunto de funcionamiento con un contador reversible con entradas UP y Down independientes:
Contadores con entradas U/D y CP
No todos los contadores reversibles tienen Up y Down independientes. Los más usados (y baratos) tienen una entrada llamada U/D (Up/Down) y la otra entrada se llama CP (Clock Pulse). Para este tipo de contador el esquema queda de la siguiente manera:
Al igual que en el primer esquema podemos usar un 74LS240 para la red de atraso, quedando así:
Necesitarás un contador reversible con salidas a LED para poder probar el circuito, si no, no podrás ver nada, ya que la electrónica para este tipo de encoder son de periodos muy cortos, de nano-segundos, y estos son invisibles a la vista. Sólo los contadores son capaces de percibir periodos de pulsos tan pequeños, cualquier otra electrónica no sería capaz de contabilizarlos, esto quiere decir que ni un micro-controlador ni un PLC es capaz de poder leer pulsos tan breves. Es obligatorio usa contadores reversibles.
Esquema completo con un contador reversible con entradas CP y U/D:
Para este circuito has de usar disparadores Schmitt de tecnología TTL (7414 ó 74LS14) para acondicionar las señales del encoder óptico. Nunca uses disparadores Schmitt de tecnología CMOS (HC y HCT es CMOS), como por ejemplo el 74HC14, te daría fallos intermitentes, para el resto del circuito puedes usar la tecnología que quieras.
Este enlace explica una forma parecida a lo que aquí he expuesto y además tiene la posibilidad de aumentar la resolución del encoder hasta por cuatro.
Recuerda que siempre es aconsejable poner condensadores de 100nF en las alimentaciones de los integrados (entre VCC y GND), especialmente en circuitos secuenciales: contadores, registros de desplazamientos, Flip-Flops (también llamadas "básculas"), microcontroladores, etc.
Nota importante: Hace muchos años, cuando comencé a experimentar con encoders electrónicos, realicé multitud de montajes que hay por Internet, pero me daba cuenta que sólo funcionaban bien en apariencia. Con encoders de mucha resolución es muy difícil darse cuenta de esto, es por eso que siempre recomiendo hacer las pruebas con encoders de muy baja resolución, como por ejemplo de 4 pulsos por revolución. Con encoders de baja resolución puedes mover el disco como si fuera a cámara lenta y provocar movimientos y combinaciones erráticos (hecho a propósito) para ver si comete errores el lector. Una vez que verifiques que todo funciona perfecto es entonces cuando puedes ponerle el encoder con la resolución que necesites. Los lectores de encoders que presento en esta página son totalmente fiables y nunca pierde ni añade pulsos bajo ninguna circunstancia si el montaje es correcto.