En mi último artículo se me notaba un tanto "rebotado" ante las dificultades con las que me estaba encontrando con la placa de comunicaciones. Desde entonces han pasado un par de cosas que me han reconciliado un poco con el Mundo.
La primera es que he conseguido montar un programa fuente que funciona, a partir de los pedazos que me ha suministrado MicroPick. En efecto me han mandado los fuentes del programa para otra de sus placas y un formulario suelto del programa de la placa de PCB. Con esas partes, y algunos arreglos de mi cosecha, he conseguido un programa fuente que funciona, con lo que doy terminado el incidente, aunque la solución que me ha dado MicroPik dista mucho de lo que debería haber proporcionado.
Poco a poco voy montando más módulos del circuito demodulador, y todo va funcionando correctamente. La imagen de la cabecera, aparte de dar una idea del pequeño laboratorio de electrónica que me he montado, tiene muchos elementos interesantes.
En la pantalla del ordenador se ve (ampliando la imagen) que el dato de salida que el ordenador ha escrito en la salida es 11000001. En el ángulo inferior izquierdo vemos el demultiplexor, del cual he construido ya cuatro placas. Las direcciones de estas placas están ajustadas a 1100, 1101, 1110 y 1111 o sea precisamente las direcciones más altas. (Para los que conozcan la notación hexadecimal, estas direcciones son C, D, E, y F). Se pueden ver en el detalle reproducido a continuación una etiquetas pegadas en cada placa con esta dirección)
El dato de salida como decía es 1100 0001. Los cuatro bits de la izquierda seleccionan la placa, luego habrán seleccionado la que tiene la dirección 1100. En efecto se puede ver el piloto de esa placa (la más a la izquierda de las cuatro, con la etiqueta "C") encendido mientras las otras están apagadas
A la derecha, delante del teclado, hay otra placa, conectada a la salida de la placa decodificadora. Esta es una placa DEMU 04 que será la encargada de llevar relés para controlar la corriente de tracción en los apartaderos. No están puestos los relés, pero como tiene unos leds para ver que dato llega, la utilizo para visualizar el funcionamiento. Se puede ver encendido un led verde, corrrespondiente a la decodificación de los cuatro bits bajos de la salida del ordenador. En este caso 0001
En resumen, que todo funciona bien.
La otra cosa que me ha dado una buena noticia es la posibilidad de leer entradas de tipo analógico con esta placa. Yo había entendido que era una entrada analógica, pero en realidad son ocho, de modo que hay de sobra para construir algún tipo de mando que permita el manejo de los trenes con algún dispositivo mecánico (simplemente potenciómetros) y no exclusivamente con el ratón del ordenador.
Así que vuelvo a pensar en mantener la comunicación por USB, a pesar del tema de las lecturas de las entradas en modo polling. Mi amigo Marco Retama ha incluido un comentario en el artículo anterior, aconsejándome el uso de un control timer para leer periódicamente las entradas. Desde luego esa es la forma de hacerlo, pero sigo pensando que para detectar el paso de una locomotora sobre un reed, habría que hacer lecturas con una frecuencia muy alta para que no se escape el momento en que el contacto está cerrado.
Sin embargo, me he dado cuenta de una cosa: En los sistemas analógicos como el que acaba de publicar mi amigo Ángel en su blog el paso de las locomotoras sobre los reeds provoca el movimiento de unos relés biestables.....¡biestables! O sea que si una locomotora pasa sobre el reed, la posición de un relé cambia y queda cambiada hasta que "algo" no lo restablece a la posición inicial. Por lo tanto poniendo unos relés de este tipo, puedo hacer lecturas de su estado con un intervalo de tiempo muchísimo mayor y con la seguridad de que no se me escapa ninguna detección. El "algo" que restaura los relés puede ser una orden dada por el programa, un vez que ha reconocido la posición de los mismos.
De hecho ni siquiera harían falta relés. Existen unos chips llamados precisamente "enclavamientos " (latch en inglés) cuya misión es justamente esa: Mantener indefinidamente un dato hasta que son restaurados. Creo que utilizando circuitos de estos se puede hacer un sistema de detección seguro y sin demasiadas complicaciones en la programación.
Mmmm.... ¡que cosa tan curiosa...! La palabra "enclavamiento" tiene un significado muy ferroviario, ya que se llamaban así los sistemas de mando mecánico para las agujas de las estaciones. Seguro que cuando los electrónicos hispanohablantes empezaron a utilizar la palabra "enclavamiento" como traducción de la palabra "latch" para denominar este tipo de circuitos electrónicos, no podían sospechar que un día, alguien como yo, podía llegar a utilizar un "enclavamiento" electrónico para simular la función de un "enclavamiento" ferroviario.