ESTE BLOG COMENZÓ A PUBLICARSE EN 2008, POR LO TANTO MUCHOS DE LOS TEMAS HAN QUEDADO DESACTUALIZADOS U OBSOLETOS. LOS LECTORES QUE DESEEN UTILIZAR ALGUNO DE LOS ELEMENTOS AQUI DESCRITOS DEBERÏAN ASEGURARSE DE BUSCAR LAS REFERENCIAS MAS MODERNAS DE LOS TEMAS DE SU INTERÉS. EL BUSCADOR INCLUIDO SERÄ UNA AYUDA PARA ESA BÚSQUEDA

martes, 17 de abril de 2012

Encoder


Una vez tomada la decisión de utilizar sensores Hall para detectar los trenes, viene el problema siguiente: ¿Cómo hacer que el programa de control se entere de que se ha activado un determinado detector? La solución pasa desde luego por la placa Velleman que cuenta con cinco "entradas digitales", es decir capaces de reconocer un cero o un uno (0 voltios o 5 voltios) y transmitir esta información hacia el ordenador. Sin embargo, aparece el mismo problema que teníamos con las salidas: Allí había ocho salidas únicamente, pero mediante un circuito demultiplexor (DEMU01, DEMU02 y DEMU03) las convertíamos en hasta 256 señales distintas.

Con la entrada tenemos un problema parecido pero al revés: Solamente hay cinco entradas en la placa, pero mediante una conversión a código binario, podemos detectar muchas más de cinco señales. En concreto el número es 2 elevado a 5 o sea 32 señales distintas.  32 Es un buen número, teniendo en cuenta que necesito dos por cada cantón, o sea 2 x 8 =16, más una por cada vía de la estación oculta (6) y otras tantas para la estación principal, lo cual da ya 28. Y seguramente saldrán más necesidades. Tampoco me preocupo mucho, porque en caso de que me falten tendría la posibilidad de otras 32 entradas contando con la segunda placa Velleman que va llevar mi instalación.

El problema entonces consiste en convertir 32 posibles señales individuales en una señal de cinco bits. Es decir exactamente el problema contrario al que resolví con el demultiplexor. Puede uno pensar que si lo anterior lo hacían unos circuitos llamados "demultiplexores", lo que yo ahora necesito es un circuito "multiplexor", pero eso sería demasiado fácil. Los multiplexores existen, pero hacen algo totalmente distinto, así que tuve que hacer una investigación para llegar a saber que los circuitos que hacen lo que yo quiero se llaman "encoders", en inglés. La palabra española sería "codificador" pero resulta tan genérica que nadie la usa, así que nos quedaremos con encoder. Dicho sea de paso, tampoco la palabra encoder es demasiado precisa: Hay varios dispositivos totalmente distintos incluso dentro de la especialidad electrónica, que reciben este nombre. Uno de los más conocidos son los "posicionadores" que devuelven un código digital en función de la posición de un eje que puede girar........como por ejemplo el eje de giro del puente de una rotonda....(en que estaré yo pensando?)

Bueno, pues también podía uno pensar que hubiese circuitos encoder capaces de convertir 16 entradas a cuatro bits, que sería lo contrario a lo que usé en el demultiplexor (de cuatro bits a 16 salidas). Pues tampoco: lo que he encontrado son encoders de 8 entradas a 3 salidas. Concretamente el circuito que he localizado es un "8-line to 3-line priority encoder" con referencia 54HT148.

Afortunadamente, los señores de Texas Instruments, en la hoja de datos de ese circuito han tenido la amabilidad de incluir (ver la página 7 del documento enlazado) el esquema para conectar dos de estos circuitos para hacer un encoder de doble capacidad, es decir de 16 entradas a cuatro bits, o sea lo que yo esperaba encontrar en un único chip. Esto incluye, además de los dos 54HT148 un circuito HC08 que es una cuádruple puerta AND. La fotografía de la cabecera recoge exactamente ese circuito realizado en la protoboard con unos cuantos leds para ver las señales. Pues si: funciona.

Naturalmente, puedo hacer dos de estos circuitos, con lo cual ya tengo las 32 entradas, pero claro, por las salidas tendría 4 bits de uno más 4 bits de otro. Hay que poner además una tercera matriz de puertas para pasar de 4 + 4 a 5 bits. Podía haber hecho todo el circuito en la protoboard pero decidí arriesgarme y pasar a construir directamente el circuito que sería un encoder de 32 entradas y cinco bits de salida. Antes de fabricarlo, dibujé el esquema, que resulta bastante espectacular:



El diseño del circuito impreso para este dispositivo resulta bastante complicado. En primer lugar hay un montón de conexiones, ya que en definitiva hay siete circuitos integrados, pero además como prácticamente no hay más componentes, resulta que no hay forma de cruzar las pistas (normalmente cuando el circuito tiene resistencias y otros componentes discretos, se aprovecha para cruzar por debajo de ellos las pistas de cobre). La solución a esto es evidentemente hacer un circuito de doble cara, y estuve a punto de lanzarme a ello, pero ya he comentado que salvo por el tema estético, los circuitos de doble cara no tienen ninguna ventaja y si varios inconvenientes. Yo lo siento por los puristas, pero este circuito va a llevar un montón de puentes de alambre. La verdad es que yo mismo he contribuido bastante a esta falta de componentes discretos, ya que por primera vez he empleado las llamadas matrices o arrays de resistencias. Estos componentes son un conjunto de resistencias del mismo valor con un extremo común y el otro individual, montadas en una única cápsula. Cuando hay que poner una serie de resistencias iguales como es el caso de las resistencias de pull-up en las entradas de este montaje, o las resistencias que limitan la corriente en los Leds de una serie de ellos que visualizan la salida de datos, resultan muy cómodas porque ahorran espacio y simplifican el cableado.

Me ha llevado unas cuantas horas hacer el diseño, pero finalmente el resultado es el siguiente:


Y todo eso, da como resultado..... ¡esta preciosidad1:


Bueno, bonita precisamente no ha quedado con tanto puente, pero la belleza de un circuito electrónico se mide por su eficacia. En el vídeo siguiente podemos ver como funciona.

Los cinco Leds amarillos que se ven a la derecha de la placa son indicadores del estado de los cinco bits de salida. Para probar el funcionamiento, voy tocando sucesivamente con un cable cada una de las entradas 32 entradas del circuito. Cada vez que toco una entrada, en la salida se enciende la combinación de leds que corresponde al número de la entrada que se ha activado.

Ese cable con el que voy tocando cada entrada está unido a masa, de manera que la acción de tocar con él cada entrada, es equivalente a que se cierre un interruptor que ponga a masa la entrada correspondiente. Esto puede hacerse con cualquier dispositivo que actúe como interruptor al paso de un tren, ya sea una vía de contacto, un reed, o un sensor hall.

Las cinco salidas que vemos en la foto en primer término se conectarán directamente a las cinco entradas digitales de la placa Velleman (el conector tiene un sexto pin para la masa)



Bueno, pues con esto, estoy a punto de terminar uno de los "subproyectos" que me había marcado, ya que si efectivamente todo funciona como espero con la placa Velleman, se habrán cumplido los objetivos para el tema de detección de trenes, y por cierto en un tiempo record.
Tampoco quiero dar la impresión de que todo ha ido sobre ruedas. La primera vez que conecté la placa no funcionó correctamente y uno de los chips comenzó a calentarse de forma alarmante.

Inmediatamente supuse que el fallo estaba en la parte del circuito que no había ensayado en la protoboard, así que desmonté varios chips y fui haciendo comprobaciones cuidadosas y avanzando paso a paso hasta que llegué a reconstruir todo el circuito de nuevo. Lo curioso es que desde ese momento ha funcionado bien, sin hacer cambio alguno, así que mi conclusión es que ese circuito integrado que se calentaba estaba defectuoso. En la fotografía pequeña vemos el montaje en plena comprobación.

Por supuesto queda por desarrollar el software que interprete estas señales, pero esto pertenece ya más al tema del software y será objeto de otro capítulo.


NOTA: En la página "Descargas" de este blog, están disponibles para su descarga los archivos necesarios para poder construir este circuito electrónico

3 comentarios:

  1. Impresionante, soy aeromodelista pero espero con impaciencia cada nueva entrada en el blog .No descarto en el futuro, cuando la vista afloje hacer una maqueta de trenes.
    Es usted un maestro en electrónica e informática y me hace recordar los viejos profesores que me enseñaron electrónica y algo de informática
    Saludos desde Galicia ,España.

    ResponderEliminar
  2. Genial, como siempre, un gran trabajo.

    No sé mucho de electrónica, pero echo de menos una cosa, los condensadores de desacoplo. Cada vez crece más el circuito electrónico, cada vez con más integrados, y, corrígeme si me equivoco, todos utilizan la misma fuente de alimentación. En el caso de producirse ruido en uno de los integrados todos los demás se verían afectados. Usando condensadores cerámicos de unos 100nF entre la entrada de alimentación del integrado y la masa se puede evitar.

    Incluso creo que sería bueno utilizar alguno electrolítico más grande en la entrada de alimentación de cada una de las placas. Como ya he dicho antes no soy un experto en la materia y no puedo asegurar nada al 100%. Si alguien con conocimientos en la materia pudiese aportar más información sería fantástico.

    Un saludo.

    ResponderEliminar
    Respuestas
    1. Hola Raul.

      Seguro que tienes razón. Yo siempre digo que mis conocimientos de electrónica son menos que elementales. Me voy apañando copiando de aquí y de allá como digo en el artículo, que sólo gracias al esquema que aparece en el datasheet del 54HT148, he podido diseñar este circuito.

      Lo tendré en cuenta de cara al futuro.

      Eliminar

Gracias por expresar tus opiniones.

Los comentarios aparecerán en el blog normalmente en unos pocos segundos