martes, 10 de marzo de 2009

Nuevo oficio



En mi anterior artículo, dejé a los posibles lectores con la intriga de si sería capaz de hacer funcionar un circuito de regulación mediante el ordenador. Con la mejor técnica de los escritores de misterio, había hasta un tibre sonando para anunciar la llegada de la pieza clave.....

Bueno es hora de resolver el misterio: El mensajero me trajo dos circuitos integrados de referencias AD5220 100 y DS1669-100. Ambos son potenciómetros digitales, es decir circuitos integrados que en tres de sus terminales presentan una resistencia variable, exactamente igual a la que presenta un potenciómetro clásico, pero que "se mueve" en respuesta a impulsos digitales que recibe por otros de sus terminales.

Me costó un buén rato conseguir que funcionasen, pero al final lo pude conseguir. De los dos, me gustó mucho más el segundo, por la razón de que tiene dos terminales, uno que hace subir la resistencia y otro que la hace bajar. Por el contrario, el primero tiene un terminal que recibe los pulsos y otro que indica si esos pulsos hacen subir o bajar la resistencia. Esto me va mucho peor porque requiere dos señales simultáneas, lo cual es muy malo para mi idea de como debe funcionar.

En resumidas cuentas me quedo con el DS1669 a pesar de que es bastante más caro (6,59 €).

En resumen para variar la resistencia hay que hacer llegar pulsos a un determinado terminal, si se quiere que la resistencia suba, y a otro distinto si se quiere que la resistencia baje. Conectando los correspondientes tres terminales que emulan un potenciómetro en sustitución del potenciómetro que llevaba el circuito del regulador, se consigue controlar la velocidad de la locomotora, a base de hacer llegar al circuito los pulsos correspondientes.

Aunque el circuito es bastante tolerante a la frecuencia y duración de esos pulsos, me encontré con la dificultad de que el programa de ordenador que estoy utilizando hasta ahora (el proporcionado por Micropick con su placa) no produce pulsos, de manera que la forma de probarlo era hacer click con el ratón muchas veces seguidas en la casilla de salida. Naturalmente no hay forma de hacer una buena prueba con este sistema.

Podía haber hecho un programa especial sólo para la prueba, pero he pensado que lo que tenía que hacer era comenzar a hacer lo que será el futuro programa de control de la maqueta, y a eso me he dedicado los tres últimos días. Evidentemente, de momento, voy a hacer sólo la parte de programa que controlará las locomotoras.

Así que he vuelto a mi antiguo oficio de analista de aplicaciones informáticas y me he puesto a trabajar en el el futuro programa. Por cierto,provisionalmente he bautizado a este programa como "ControlZ"

En la imagen de cabecera, vemos un esbozo de lo que será el programa, incluyendo la presencia de cuatro ventanas de "regulador de locomotoras". Utilizando una imagen sermejante a la de otros programas usados para el control de centrales digitales, he puesto una imagen de un velocímetro que indicará en cada momento la velocidad de cada locomotora. Hay también una imagen de la locomotora que se está controlando (el nombre aparece en la cabecera de la ventana) y la indicación de en qué cantón está (en esta imagen todas aparecen en el mismo cantón, denominado "1-Rojo", lo cual es evidentemente irreal)

En cuanto a los mandos hay tres: A la derecha un botón deslizante simula manejar el regulador de la locomotora, es decir, al abrirlo, la locomotora debe avanzar cada vez más deprisa. A la izquierda un mando similar simula el freno. En la parte inferior, otro mando simula el cambio de marcha, con tres posiciones Adelante(F) Neutro(N) y Atrás(R).

Hay una cosa que me ha parecido interesante: La mayoría de los programas, para manejar el movimiento de la locomotora, utilizan un deslizante que se mueve de izquierda a derecha. De esa forma, algunas veces, si queremos que una locomotora se mueva hacia la derecha tenemos que mover este mando hacia la izquierda y viceversa. Es más "ergonómico" poner como yo he hecho un mando que se mueve de arriba a abajo. Es mucho más fácil asociar intuitivamente el movimiento hacia delante de la locomotora con un movimiento hacia arriba, y el frenado con un movimiento hacia abajo. Por este motivo he puesto todos los mandos con desplazamiento vertical.

De momento no es más que un esbozo de programa, pero espero que unos días podré tener operativa la parte que me permita controlar el regulador de velocidad por PWM.








5 comentarios:

  1. Excelente. Viéndolo así me resulta mucho más atractiva la idea del control digital. Estoy de acuerdo contigo que resulta mas intuitivo el mando en vertical.¿No has pensado en la posibilidad de reproducir un panel de control de una locomotora real?

    ResponderEliminar
  2. Mikel:
    Gracias por tu entusiasmo!

    El imitar el panel de control de una locomotora tiene una dificultad: ¿De cuál locomotora?. No tiene nada que ver el aspecto del panel de mandos de un ICE con el de una locomotora de vapor del siglo XIX. Por otra parte, estoy programando en Visual Basic, y por lo tanto utilizando los controles que existen en ese lenguaje. Concretamente los mandos que he usado son controles "slider" que imitan en cierta forma una palanca deslizante, pero nada más.

    Tratar de imitar con más realismo un panel de mando real, aparte de entrar en el campo de los programas de simulación, sería un trabajo de programación enorme, y no digamos nada si lo que se pretende es imitar el aspecto real del panel de la locomotora que estamos utilizando en cada momento.

    Lo que si es cierto es que la mayoría de las locomotoras, desde las de vapor a las más modernas tienen fundamentalmente los tres mandos que reproduce mi programa: Un "regulador" para aumentar progresivamente la potencia del motor, y por lo tanto la velocidad, un "freno" para disminuir esa velocidad, y un "cambio" para moverse hacia adelante o hacia atrás.

    ResponderEliminar
  3. Veo que te has metido de lleno en el control por ordenador. ¡¡ c.d.c. !!

    Ya sé que estás en los comienzos, pero se me plantea una duda: No hay problema en identificar el tramo de vía que estás controlando, pero ¿cómo saber qué locomotora está en él? a no ser que las digitalices ....

    .... o pongas en práctica la idea del código de barras que creo que ya comentaste alguna vez ;-)

    ZaludoZ

    ResponderEliminar
  4. Hola Angel:

    Como buen Zetero has visto dónde está la dificultad. Los acostumbrados al control digital con decoders en la locomotora, no se dan cuenta de este problema. En efecto cada circuito de control actuará sobre un determinado cantón, y no sobre una determinada locomotora

    La idea es que el programa mantenga en memoria la situación de cada loko. Es decir, si una determinada loko está manejada por el contol de un cantón, y los sensores detectan que esa loko ha salido de ese cantón y a entrado en otro, los valores de control del cantón anterior se copian al nuevo cantón, de modo que la loko es ahora controlada por el control del segundo canton, sin que haya ninguna variación en sus valores de marcha.

    Pretendo que esa función sea automática, y como se dice en informática "transparente para el usuario" de modo que éte tenga la sensación de que está manejando un control de locomotoras y no de cantones.

    ResponderEliminar
  5. Tienes razón Ignacio, mi entusiasmo y mi ignorancia sobre programación me han hecho fantasear. Lo cierto es que lo que se ve en la foto tiene ya un aspecto estupendo.

    ResponderEliminar

Gracias por expresar tus opiniones.

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