sábado, 28 de enero de 2012

Un poco de software (y II)


En el artículo anterior, decía que puede hacerse un programa para manejar desvíos (y otros artículos electromagnéticos tales como desenganchadores señales de brazo y relés), de una forma muy sencilla, de modo que con un programa así, construyendo una o más placas DEMU02 de mi sistema de control, y comprando una placa Velleman K8055 es posible tener un sistema de control por ordenador para los aparatos de vía que sustituye con ventaja a un cuadro esquemático realizado de forma artesanal.

Esbocé un poco la forma de hacerlo, pero una vez publicado el artículo, pensé que realmente sería muy sencillo hacerlo, tan sencillo, que podría terminarlo, poco menos que en un rato.

Así que me puse manos a la obra, y el resultado es positivo. La imagen de cabecera muestra la pantalla de ordenador con el esquema de vías que he hecho para la prueba. Como se ve, en cada desvío, hay un botón que, al presionarlo actúa sobre el desvío correspondiente y al mismo tiempo cambia de color, con lo que se convierte en una excelente señalización de la posición del desvío. He llamado CzLite a este programa.

En este pequeño vídeo se ve el programa funcionando. Como se puede apreciar no hay más que el ordenador con el programa funcionando, y una conexión por USB a la placa Velleman. Siento no haber tenido disponibles algunas placas DEMU y algunos desvíos para verlos moverse en correspondencia con las pulsaciones del ratón en los botones del programa, pero lo que si se ve muy bien son los leds indicadores de las salidas de la placa, encendiéndose y apagándose. Esto es lo esencial del tema, lo demás está ya super comprobado.




Bueno, pues tal como anticipaba, el programa que hace esto es sencillísimo. De hecho son apenas cincuenta líneas de programa en Visual Basic.

Como es habitual, he puesto en la página de descargas de este blog un enlace a una página de mi web desde la cual es posible descargarse el programa, tanto en modo ejecutable como en modo fuente. Las personas que tengan conocimientos de programación pueden basarse en el programa fuente suministrado para modificarlo y perfeccionarlo de acuerdo con sus necesidades, pero con el programa que se incluye en la descarga es posible ya manejar siete desvíos y es posible modificarlo para manejar una gran cantidad de desvíos (124 exactamente). En esa página de descargas hay instrucciones de como cargar el programa y de como modificarlo para incluir el esquema de vías necesario y situar todos los controles que se necesiten para manejarlo, así que no voy a repetir aquí esas instrucciones.

Lo que si voy a explicar es la forma de conseguir que las órdenes generadas por el programa actúen sobre la placa Velleman.

Como ya comenté recientemente Velleman suministra con su placa una librería DLL. También comenté que es mejor descargarla de la página de Velleman para garantizar que tenemos la última versión. Esta DLL hay que copiarla al directorio Windows/System del ordenador. Esta Dll suministra una serie de funciones, que hay que declarar en el programa. Por eso el programa lleva un módulo de nombre Welleman.bas con la declaración de variables:

Option Explicit

Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long
' Declare Sub CloseDevice Lib "k8055d.dll" ()
' Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) As Long
' Declare Sub ReadAllAnalog Lib "k8055d.dll" (Data1 As Long, Data2 As Long)
' Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long, ByVal Data As Long)
' Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
' Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
' Declare Sub SetAllAnalog Lib "k8055d.dll" ()
' Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
' Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Long)
' Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
Declare Sub ClearAllDigital Lib "k8055d.dll" ()
' Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
' Declare Sub SetAllDigital Lib "k8055d.dll" ()
' Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean
' Declare Function ReadAllDigital Lib "k8055d.dll" () As Long
' Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long
' Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Long)
' Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long)

Este bloque está copiado directamente del programa ejemplo suministrado por Velleman. Como se puede ver, he dejado sólo tres funciones activas, que son las que se usan en este programa. El resto las he dejado comentadas.

Como decía el programa consta de un módulo denominado Welleman.bas y un único formulario, denominado Form1.frm. Al arrancar el programa se activa el formulario, así que lo primero que se ejecuta es el procedimiento Load del formulario Form1. Este procedimiento contiene las siguientes instrucciones:

Private Sub Form_Load()

Dim AnchoPixel As Integer
Dim AltoPixel As Integer

AnchoPixel = 1024 ' Resolucion de pantalla. Pixels ancho
AltoPixel = 600 ' Resolución de pantalla. Pixels alto


Me.Move 0, 0, AnchoPixel * Screen.TwipsPerPixelX, AltoPixel * Screen.TwipsPerPixelY
Me.Show


If Not AbreCanal(1) Then End ' Intenta abrir el canal de comunicación. Si no lo consigue termina

End Sub

Lo primero que hace este procedimiento es dar valor a dos variables que definen el tamaño que se desea dar a la ventana del programa. Aquí se le ha dado 1024 pixels de ancho por 600 de alto. La instrucción Move ajusta ese tamaño y la instrucción Show lo visualiza.

A continuación hace una llamada a la función AbreCanal. Esta función la veremos a continuación y lo que hace es "encender" la placa de comunicaciones. Como puede haber hasta cuatro placas de comunicaciones se incluye el parámetro 1 indicando que se debe abrir la primera placa. Esta función devuelve un valor True o False en función de si la placa ha respondido a la orden de apertura. Si la respuesta es False el programa termina, puesto que hay algo que no funciona.

Esta es la función AbreCanal:

Function AbreCanal(Canal As Integer) As Boolean


Dim CardAddress As Long 'Variables long para la función
Dim h As Long


CardAddress = Canal - 1 ' Puede abrir los canales 1 2 3 0 4 las direcciones de tarjeta son 0 1 2 y 3
h = OpenDevice(CardAddress) ' llama a la función y devuelve un valor h


Select Case h
     Case 0, 1, 2, 3 ' Si devuelve en h la dirección de tarjeta es correcto
           MsgBox "Canal " & Canal & " abierto", vbInformation + vbOKOnly
          AbreCanal = True
     Case -1 ' Si devuelve -1 no ha funcionado
          MsgBox "El canal " & Canal & " no funciona", vbCritical + vbOKOnly
          AbreCanal = False
End Select


End Function

Aquí hay por primera vez una llamada a una función de las incluidas en la DLL suministrada por Velleman. Se trata de la función OpenDevice que se invoca con la dirección de la tarjeta y devuelve en la variable h el mismo valor, si la apertura fue correcta, o el valor -1 si fué incorrecta. En ambos casos se emite un mensaje y cuando el usuario acepta el mensaje termina la función.

El otro objeto que tiene definido el programa es una matriz de "Command Buttons" de nombre Command1(). En la versión que se puede descargar desde mi página tiene definidos 8 elementos, numerados del 0 al 7. El primero de ellos Command1(0) tiene la propiedad Visible a False para que no se visualice en tiempo de ejecución. Se utiliza en tiempo de diseño para generar copias de si mismo y poder así hacer tantos elementos de la matriz de botones como sean necesarios. El resto son los botones que se activan al pulsarlos con el ratón y pasan de rojo a verde y viceversa, y emiten la orden de cambio.

Cuando presionamos cualquiera de estos botones se ejecuta el evento Command1.Click y la variable Index toma el valor del ídice del elemento pulsado. El código de este evento es el siguiente:

Private Sub Command1_Click(Index As Integer)



Dim Direccion As Integer
Dim Milisegundos As Single

Direccion = 2 * Index 'se asignan diecciones a cada botón segun su indice. De dos en dos
Milisegundos = 200 ' Tiempo de activación de los desvíos


If Command1(Index).BackColor = &HFF00& Then Command1(Index).BackColor = &HFF& Else Command1(Index).BackColor = &HFF00&


If Command1(Index).BackColor = &HFF00& Then ' botón verde
     SendData Direccion, Milisegundos ' Envía el dato para posición desvío en recto
End If


If Command1(Index).BackColor = &HFF& Then ' botón rojo
    SendData Direccion + 1, Milisegundos ' Envía el dato para posición desvío en curva
End If


End Sub

Aquí vemos que al ejecutarse este procedimiento, se calcula un dato denominado Direccion que es el dato que hay que enviar a la placa. Para hacerlo sencillo he hecho que la dirección se calcule a parttir del indice de cada botón, o sea de la variable Index. Asi para el primer botón Index vale 1 y Dirección se calcula igual a 2. Pra el segundo botón, la Dirección sale 4. Para el tercer botón la Dirección sale 6, y así sucesivamente hasta el botón numero 7 cuya Dirección es 14

La otra variable importante es Milisegundos Define el tiempo que va a durar el impulso que enviamos a cada desvío. Aquí está puesto fijo a 200 que representan 200 milisegundos.

La siguiente instrucción cambia el color de fondo del botón (variable BackColor del elemento de la matriz de botones) Si era verde lo pone rojo y si era rojo lo pone verde.

Y por último sea el color resultante verde o rojo se llama a la función SendData, que es la que efectivamente va a hacer la transmisión del dato. Obsérvese que en el caso de que el botón sea verde, o sea que queremos que el desvío se ponga recto, enviamos el dato Dirección, mientras que si el botón está rojo, queremos que el desvío se ponga en curva, y entonces enviamos el dato Direccion +1

O sea que, por ejemplo si presionamos el botón 4, y lo ponemos verde, llamamos a la función SendData con los parámetros 8 y 200 mientras que si lo ponemos rojo llamamos a la función con los parámetros 9 y 200.  Se ve claro, el porqué asignamos la Dirección con valores de dos en dos.

Y por último, aquí está la función SendData:




Sub SendData(Dato As Integer, Tiempo As Single)



Dim segundos As Single
Dim t As Long
Dim N As Long


If Dato = 0 Then Exit Sub
segundos = Tiempo / 1000


N = Dato


WriteAllDigital N


t = Timer: Do While t + segundos > Timer: DoEvents: Loop


ClearAllDigital


End Sub


Como se ve, sencillamente convierte la variable de dirección (que aquí llama Dato) a entero largo con el nombre N También convierte el tiempo de transmisión que venía en milisegundos a segundos.

Entonces llama a la función de Velleman WriteAllDigital con el parámetro N. Es decir ordena que la salida de la placa muestre el valor N

Despues hace un loop para esperar el tiempo definido, que en nuestro caso serán 200 milisegundos, y entonces llama a la función de Velleman ClearAllDigital, que borra la salida de la placa.

Y eso es todo!.  En este artículo he reproducido el código fuente del programa CzLite completo, tal como puede descargarse desde la página de descargas.

Como ya advertí en un artículo anterior, la parte de comunicaciones que a priori parece lo más difícil, es realmente mucho más sencilla de lo que cualquiera puede esperar, mientras que la parte gráfica, sobre todo cuando hacemos gráficos animados es mucho más dificil de hacer de lo que la mayoría espera. En este programa CzLite, la parte gráfica se ha reducido al mínimo, y por eso el programa ha resultado extraordinariamente simple. Por el contrario la parte de comunicaciones, no ha sido simplificada y de hecho, las funciones empleadas; AbreCanal, y SendData proceden del código del programa "grande" ControlZ.

Como vemos en el vídeo, hay unos Leds que se encienden en la placa Velleman cuando pulsamos los botones del programa. Supongo que muchos de mis lectores lo saben, pero aclaro que esos Leds están mostrando el nivel de tensión (0 voltios o 5 voltios) de los ocho bits de salida de la placa, bits que se activan para formar la expresión hexadecimal del dato que hemos enviado a la salida. Asumiendo que los leds encendidos representan los "unos" y los apagados los "ceros", los datos que enviamos se visualizan así:

0     00000000
1     00000001
2     00000010  --> Desvio 1 recto
3     00000011  --> Desvio 1 curva
4     00000100  --> Desvio 2 recto
5     00000101  --> Desvio 2 curva
6     00000110  --> Desvio 3 recto
7     00000111  --> Desvio 3 curva
8     00001000  --> Desvio 4 recto
------------------------------------------ etc

Las dos primeras direcciones no se usan porque la correspondiente a la posición recta es la 00000000 que en realidad es la posición de reposo, que adopta la salida cuando no hay ninguna orden

Nótese que esta tabla puede continuarse hasta el el valor 255, lo que da el enorme valor de 127 desvíos que sería posible manejar con este programa.

Y para el que no lo tenga claro, lo que hace el conjunto de placas  DEMU1 DEMU2 y DEMU3 de mi sistema es activar con 12 voltios cada una de las 255 salidas que puede llegar a tener, en respuesta a las 255 posibles situaciones de la salida de la placa Velleman. Esta salida de 12 voltios se mantiene durante el tiempo que dura la activación de la salida, en definitiva durante 200 milisegundos en este caso.En definitiva hemos mandado un impulso de 12 voltios y 200 milisegundos de duracuón por esa salida. Si en esa salida está conectado el cable de un desvío éste se moverá en consecuencia.

miércoles, 25 de enero de 2012

Un poco de software (I)


Pantalla del programa ControlZ en un ordenador de 1280 x 1024 pixels de resolución de pantalla.
Como saben mis lectores, en este blog voy publicando todos los avances que realizo en la construcción de mi maqueta. También voy explicando en los distintos artículos cómo y porqué voy haciendo cada cosa, y publico fotografías planos y esquemas de trazados de vía, esquemas eléctricos, etc. No sólo eso, sino que en las páginas de Descargas, a las que se accede desde el menú de la cabecera, publico esquemas eléctricos, plantillas de PCB, listas de material, y en definitiva todo cuanto se necesita para que si alguien quiere seguir mis pasos, pueda hacerlo.

Debo dejar claro, sin embargo que éste es un sistema absolutamente original, y distinto del sistema que se ha impuesto de forma absolutamente global. Me refiero, claro está al sistema digital, asi que el que quiera meterse por mi camino sabe que no va a encontrar prácticamente ningún producto comercial que venga en su ayuda, de forma que, como yo, tendrá que hacerse todo el hardware de forma artesanal.

Pero seguramente, con ser eso un problema, no es el mayor, porque realmente los elementos de hardware son bastante sencillos, y para el sistema de comunicaciones he podido utilizar una placa de comunicaciones comercial.

Sin embargo, apenas he comentado nada acerca del software que he desarrollado para mi proyecto, y que se materializa en el programa que he denominado "ControlZ".  En mi último artículo me referí de nuevo a él, comentando que había podido ponerlo en marcha en un nuevo ordenador (más bien un mini ordenador) y en un nuevo sistema operativo (Windows 7). Así que ahora que estoy de nuevo metido en harina con el software, es una buena oportunidad para hablar de este tema.

Lo primero que hay que decir, es que el programa está incompleto, tan incompleto como el resto del proyecto, porque todo va avanzando en paralelo.

Sin embargo, en algunas ocasiones, se han dirigido a mi algunos lectores pidiéndome que les explique cómo, o les ayude a realizar un programa similar para sus maquetas. En todos los casos he contestado a esas demandas con explicaciones o incluso aportando piezas de software, pero tengo la sensación de que a ninguno de esos demandantes les han servido de mucho mis respuestas.

Y es que parece que estos comunicantes esperaban algún procedimiento maravilloso para dibujar un desvío en la pantalla, desvío que cambia de posición al pulsar con el ratón sobre él, o para dibujar un semáforo cuyas luces cambian de verde a rojo, o un desenganchador que parece que se levanta al pulsar sobre el mismo y no digamos ya, si de lo que se trata es de dibujar un velócímetro, cuya aguja se mueve por la escala indicando la velocidad en cada momento de la locomotora, o de dibujar una rotonda cuyo puente hacemos girar con el ratón  y que como consecuencia hace que la rotoda de la maqueta se mueva.(ver: Rotondas digitales). Todo ello, como decía aquél, es "more transpìration than inspiration". Quiero decir que conseguir eso, es complicado, y requiere bastante experiencia en programación, y concretamente en programación de gráficos.  Se da la circunstancia de que la programación ha sido mi actividad profesional durante muchos años, así que estaba dentro de mi alcance el abordar este tipo de software, pero precisamente en esa actividad profesional he podido comprobar como muchos programadores expertos patinan clamorosamente, cuando se enfrentan a ese tipo de programación.

Tomemos como ejemplo  el conseguir que la aguja del velocímetro se mueva por la escala. Para ello hay que aplicar unos cuantos conceptos de trigonometría. Si se tienen, es fácil dibujar esa aguja móvil, pero si no se tienen, por mucha experiencia de programación que se tenga, no se será capaz de hacerlo.

Concretamente: las siguientes siete instrucciones de Visual Basic dibujan la aguja del velocímetro que vemos dentro de cada una de las ventanas de control de locomotora.

     Picture1.DrawWidth = 4
     Picture1.ForeColor = &HFFFFFF
     Picture1.FillColor = &HFFFFFF

     Picture1.Circle (0, 0), 6


     Grados = (VeloActual / VeloFondo) * 270
     Angulo = (225 - Grados) * 1.74532925199433E-02 'radianes
     Picture1.Line (-20 * Cos(Angulo), -20 * Sin(Angulo))-(51 * Cos(Angulo), 51 * Sin(Angulo))

Las tres primeras lineas establecen cómo se va a dibujar: Con trazo de grosor 4, con color blanco, y con color de relleno blanco.

La cuarta instrucción dibuja el circulito blanco que se sitúa en el punto de giro de la aguja.
En la quinta instrucción calculamos la proporción entre la velocidad actual, la que debe indicar la aguja, respecto de la velocidad de fondo de escala. Esta proporción aplicada al total de grados que abarca la escala, 270, nos da el número de grados que debe moverse la aguja.

En la siguiente instrucción cambiamos esa cifra de grados a radianes obteniendo el valor "Angulo"

Y en la última linea dibujamos la línea que representa la aguja trazando una línea entre dos puntos cuyas coordenaedas son: x=-20 * Cos(Angulo),    y= -20 * Sin(Angulo)    y    x=51 * Cos(Angulo),    y=51 * Sin(Angulo).

Observese que se está dibujando en el objeto "Picture1" que en una fase anterior se ha definido como un control de tipo picture con un sistema de coordenadas con el origen en el centro y 200 unidades de ancho y alto

El resultado se puede apreciar en el vídeo adjunto


video

Como se ve, intervienen las funciones trigonométricas seno y coseno, así que hay que tener claro su significado. Como antes decía, no hay nada mágico. Hay que calcularse el ángulo que debe tener la aguja, las coordenadas de los puntos extremos y dibujar una linea entre esos dos puntos extremos con un determinado color, y un determinado espesor. Realmente en programación, para dibujar, sólo hay dos instrucciones Line y Circle. Las dos las he usado aquí, y no hay ninguna más, asi que cada dibujo que queramos ver hay que componerlo a base de estas dos instrucciones.

Realmente estas dos instucciones corresponden a una regla y a un compás, y como sabemos, esos son los dos únicos instrumentos imprescindibles para dibujar.

Y para que la aguja realmente se mueva, el truco es el mismo que el del cine o la televisión: La aguja se está dibujando continuamente, cada vez en la situación que corresponde a la velocidad en cada momento. Esto también es poco habitual en programación: Realmente el programa está permanentemente metido en un bucle que redibuja continuamente los elementos gráficos que cambian. Por ejemplo en la esquina superior derecha de la pantalla de la cabecera vemos un cronómetro que va calculando los minutos y segundos que lleva funcionando el programa. Los números van cambiando porque el programa redibuja continuamente las cifras.

Si nos fijamos, en el caso de la aguja del velocímetro, hay una variable, de nombre VeloActual que determina la posición en que debe aparecer la aguja. Cada vez que se ejecutan esas instrucciones se dibuja la aguja de acuerdo a este valor. Se trata de una variable analogica, porque realmente su valor corresponde a la velocidad teórica de la locomotora en Kilómetros/hora, que varía de forma continua entre cero y el valor máximo.

En otros casos la variable es de tipo digital, por ejemplo un semáforo de dos luces, puede lucir en rojo o en verde.por lo que la variable que dice como se debe dibujar, solo puede tener dos valores. Bueno en realidad tiene cuatro posibilidades: encendido el rojo, encendido el verde, encendidos ambos y apagados ambos. Pero en todo caso, se trata de una variable entera que solo admite unos pocos valores. En este caso 0, 1 o 2 (el caso de los dos apagados no se contempla) Tratándose de semáforos, el nombre de esta variable es "Aspecto".  Si algún lector se pregunta cuando se muestran encendidos simultáneamente el rojo y el verde la respuesta es que se muestran así en el modo de diseño, es decir cuando el usuario está definiendo que en una determinada posición, va un semáforo.

Bueno pues la rutina que dibuja un semáforo es la siguiente:

Case 1 'semaforos dos aspectos


    Destino.DrawWidth = Grueso
    Destino.Line (x - 3 * a, y)-(x + m, y), Negro 'palo
    Destino.Line (x - 3 * a, y + n)-(x - 3 * a, y - n), Negro 'base


    Destino.DrawWidth = Grueso * 4
    Destino.Line (x - m, y)-(x + m, y), Negro ' cabeza

    Destino.DrawWidth = Grueso


    Select Case Aspecto
        Case 1
            Destino.Circle (x + m, y), Grueso / 1.6, Rojo
        Case 2
            Destino.Circle (x - m, y), Grueso / 1.6, Verde
        Case Else
            Destino.Circle (x + m, y), Grueso / 1.6, Rojo
            Destino.Circle (x - m, y), Grueso / 1.6, Verde
    End Select



Ya sé que para la mayoría de los lectores, el presentar aquí estos segmentos de código puede resultar aburrido, pero, insisto, lo hago para aquellas personas que tengan conocimientos de programación, y que tengan curiosidad por saber cómo se pueden hacer este tipo de programas con gráficos móviles. Vemos como aquí la variable "Aspecto" hace que ejecuten unas u otras instrucciones del último bloque, y que en definitiva están dibujando un circulo de color rojo o verde.

Esta rutina es polivalente, ya que se usa para dibujar semáforos en más de una situación de programa. Por eso se usa la variable Destino que indica dónde hay que dibujar en cada caso. Las variables x e y especifican las coordenadas donde debe hacerse el dibujo, a es la altura del poste y m es la altura de la cabeza del semáforo. La variable "Grueso" indica el espesor de las líneas de dibujo, y las variables "Rojo", "Verde" y "Negro" contienen la definición binaria de esos colores.

Y naturalmente, el caso de los desvíos es análogo. Una variable, que por cierto también se llama "Aspecto" dibuja las lineas correspondientes a la posición del desvío. Hay desvíos con dos aspectos, y otros con tres, caso de los desvíos triples.

De hecho cualquier segmento de vía se dibuja igual que un desvío ya que puede corresponder a un trazo vertical, horizontal, inclinado a derecha, inclinado a izquierdas, y todas las combinaciones de esquinas que permiten cerrar los dibujos. Sin embargo, los tramos simples no tienen aspectos, por lo que se dibujan siempre igual, a diferencia de los desvíos.

Seguramente algún lector que tenga experiencia en programación se habrá visto sorprendido por el hecho de que el programa dibuja CADA VEZ cada elemento utilizando las instrucciones Line y Circle para dibujar las imagenes. Cuando se hacen cosas parecidas a esta, muchos programadores realizan previamente una gran cantidad de imágenes, utilizando un programa de dibujo (Paint o PhotoShop, por ejemplo), almacenan todas estas imágenes, y luego durante la ejecución presentan unas u otras imágenes en el lugar oportuno. Mi experiencia es que ese tipo de sistemas resultan más lentos, y mucho más difíciles de mantener, pero sobre todo, el dibujar los elementos cada vez durante la ejecución tiene la enorme ventaja de que puede dibujarse a cualquier escala sin más que dar un nuevo valor a las coordenadas. De esta forma se consigue muy sencillamente que se pueda hacer zoom sobre cualquier zona del dibujo y a cualquier grado de ampliación. También es posible utilizar colores variables con significados apropiados porque en definitiva para la rutina de dibujo los colores son variables cuyo valor le viene dado.

También es facilisimo adaptarse a las distintas resoluciones de pantalla. En la imagen de cabecera de este artículo vemos la imagen del programa en un ordenador de sobremesa con pantalla de 1280 x 1024 pixels, pero como contaba en mi anterior artículo, no he tenido la menor dificultad eh hacerlo funcionar en un pequeño ordenador con bastante menos resolución, incluso con proporciones distintas, ya que tiene una pantalla apaisada, tal como vemos en la fotografía de cabecera de mi anterior artículo (Un hito).

Si algun lector, que estaba considerando la posibilidad de hacer un programa para controlar su maqueta, se ha asustado al leer todo lo anterior, le hago la advertencia de que hacer un programa de la forma en que yo lo he hecho, es realmente un lujo, ya que el programa está hecho como si fuera a venderse, es decir que permite definir cualquier trazado de vías y colocar los desvios, señales, y demás elementos que sean necesarios. Esto está muy bien, porque permite hacer modificaciones con toda facilidad, y tiene las ventajas que he comentado en cuanto a la posibilidad de zoom y la adapatación a distintas resoluciones de pantalla, pero realmente se puede hacer un programa mucho más sencillo, si nos conformamos con que sea hecho específicamente para una determinada maqueta, y para una determinada resolución de pantalla. En un próximo artículo trataré más extensamente este tema.

Claro que aquí viene la segunda parte: ¿Como hacemos para que esas "ordenes" que el programa envía salgan del ordenador y lleguen a mover un desvío en la maqueta? Aunque parezca raro, esto es muchísimo más sencillo que lo que hemos explicado hasta ahora, pero de eso trataremos en el artículo siguiente.


lunes, 16 de enero de 2012

Un hito


Supongo que algunos lectores de este blog, habrán pensado más de una vez, "pero este tío, ¿cuándo va a poner en marcha la maqueta de una vez? Y es que en efecto, desde hace aproximadamente un año, se han ido sucediendo una serie de problemas, el principal de los cuales ha sido el traslado de domicilio, y las consiguientes obras de adaptación de la maqueta a su nueva ubicación.

Pero no ha sido éste el único problema: He tenido problemas con los dos ordenadores que manejo. El que utilizo habitualmente, que es un sobremesa, tuvo una serie de problemas de software que casi me hacen perder un montón de cosas. Afortunadamente tenía copias de seguridad, pero siempre falta algo.

El principal problema fue con el ordenador portátil que había ya asignado a controlar la maqueta. Este sencillamente se averió, sin reparación posible.

Sopesé varias opciones, pero al final decidí comprar un nuevo portátil, de los más sencillos y de pequeño tamaño, con la intención de usarlo primordialmente para manejar la maqueta, aunque si quería, para evitar problemas de compatibilidad, que tuviera sistema operativo Windows. Al final compré un Dell Inspiron mini, que podemos ver en la foto de cabecera.

Me vino con Windows 7, lo cual no me gustó demasiado, porque en el otro ordenador conservaba  (y conservo) mi Windows XP de siempre.

Y esto me llevó a una cuestión: El desarrollo de mi programa de control de trenes está hecho en Windows XP. ¿Funcionará en Windows 7? La duda es bastante lógica, porque este programa, como mis lectores saben se mete en muchas interioridades, como son los gráficos animados, las comunicaciones por USB, etc.

La verdad es que el temor a lo que pudiera encontrarme ha sido otro de los motivos de que no me decidiera a probar a hacer el montaje en el nuevo ordenador, pero este fin de semana  decidí que ya estaba bien de marear la perdiz, y me puse con el tema.

En primer lugar se trataba de volver a poner en marcha el entorno de desarrollo en Visual Basic del ordenador grande, cosa que no había probado desde la recuperación de las copias de seguridad. Tal como sospechaba faltaba algún módulo, pero afortunadamente pude recargar el Visual Basic y dejar todo operativo de nuevo. Así que me volvió a funcionar mi programa, y pude hacer una compilación del mismo sin problemas, que funcionó perfectamente con las placas Welleman.

El siguiente paso fue crear un paquete de instalación y cargarlo en el ordenador pequeño como quien instala un producto comercial. Aquí me esperaba problemas, pero para mi sorpresa el Windows siete se dejó instalar el programa sin problemas. Esto puede parecer elemental, pero la instalación es compleja y lleva un montón de librerías dll's varios módulos ejecutables, archivos de datos, etc. creados para un entorno de Windows XP antes de que existiese Windows 7. Mi enhorabuena a Microsoft.

Ya estaba yo aplaudiendo con las orejas, cuando al probar el programa, veo que todo funciona....excepto que la placa Welleman conectada al puerto USB no reacciona. Naturalmente si esto no se resuelve, todo el montaje no sirve para nada.

Bueno, ¡que no panda el cúnico! La placa Welleman viene con una dll que hay que instalar en el ordenador, y seguramente es la que no funciona. ¡vaya por Dios! la única que no es de Microsoft ni mía.

Rápidamente me metí en la web de Welleman a ver si tenían una nueva versión de esta dll...... Y... ¡ SI ahí estaba! Descarga, copia, instalación, prueba... ¡Y funcionando!


Asi que por fin, tengo el programa de control instalado y completamente operativo en el ordenador portátil. Al menos esta gente de Welleman son serios y cuando han comprobado que su sistema no funciona en Windows 7, han corregido el problema y lo han puesto a disposición de los usuarios. Me gustaría saber que me hubiera pasado si hubiese tenido este problema con la placa de Micropick que utilicé inicialmente.

El peligro de hacer estos desarrollos propios, es precisamente éste. Al paso que avanza la tecnología informática, puede uno encontrarse fácilmente con que con alguno de estos cambios algo deja de funcionar y el arreglo, suponiendo que se sepa localizar cual es el problema, lleva un tiempo prohibitivo para una sola persona. Las grandes empresas de Software pueden ir actualizando sus productos para mantener la compatibilidad con los nuevos sistemas, pero hacer esto para un programa que es ejemplar único y desarrollado por una única persona, resulta prohibitivo.

Afortunadamente, por esta vez he salvado el problema, y bueno, Windows 7 es un standard bastante actual, así que puedo estar tranquilo por un tiempo.

miércoles, 11 de enero de 2012

Neuschwanstein


Supongo que mis lectores conocen el castillo de Neuschwanstein, un castillo-palacio construido en Baviera por Luis II, y que actualmente es uno de los principales destinos turísticos de esta zona. Lo curioso es que estamos hablando de un edificio construido a mediados del siglo XIX (1866) y no de un castillo medieval como parece a primera vista. Realmente podemos decir que es un elemento decorativo, fruto del capricho del rey, al que por algo llamaron "el rey loco". Realmente construyeron un bonito escenario entre el paisaje y la arquitectura.

Esto viene a cuento de que en muchas maquetas de trenes se utilizan castillos, sobre todo en los paisajes montañosos coronando las cimas de los puntos más altos del paisaje. En muchos casos, estos castillos se hacen a escala menor, ya que su situación en puntos elevados y de último término, favorece esta posibilidad Todas las marcas de accesorios para maquetas (Faller, Kibri, etc) tienen castillos. El problema como siempre en las escalas mayores que la Z es que un castillo, reproducido a escala H0 o N resulta un elemento muy grande, por lo que la solución es reproducir castillos muy pequeños (apenas una torre y algo más) o falsear descaradamente la escala.

Ya he comentado en otras ocasiones que la escala Z permite introducir en las maquetas elementos que resultan prohibitivamente grandes en otras escalas, ya sean, altos hornos, catedrales.... o castillos, sin tener que recurrir al truco de reducir la escala. Así que no es descabellado introducir en una maqueta de Z la reproducción de un castillo de una vez, como Neuschwanstein. Ya hace tiempo que me rondaba por la cabeza la idea de colocar un gran castillo coronando el promontorio que oculta la rampa espiral en la parte derecha de mi maqueta. En alguna ocasión he situado en esa zona una reproducción en papel de la iglesia de nuestra señora de Dresde, que compré y monté para mi primera maqueta, y que podemos ver en la fotografía. Sin embargo, si en aquella maqueta, esta iglesia quedaba bien situada, en la nueva maqueta no acabo de encontrarle un lugar adecuado, y los intentos que he hecho de situarla en la cima de ese promontorio, han resultado muy poco apropiados. Se trata claramente de un edificio "de ciudad" y por lo tanto subirla a la cima de un monte resulta poco apropiado.

Por otra parte, hace ya tiempo que tenía localizada una maqueta de papel del castillo de Neuschwanstein, y siempre he pensado que algún día, cuando comenzase con el tema de la decoración, me plantearía si utilizaba definitivamente la iglesia de Dresde o montaba el castillo de Neuschwanstein.

Quiero aclarar, para quien no lo conozca, que la construcción de maquetas de papel, es una alternativa muy válida al montaje de los típicos edificios de plástico para decoración de maquetas de trenes. Hay varias casas que fabrican maquetas de papel para armar a base de cortar y pegar adaptándose a las escalas ferroviarias.

Sin embargo, en general, estas maquetas de papel, pecan del defecto de ser demasiado simples. Todas caen en la tentación de "pintar el relieve" es decir, si una fachada tiene por ejemplo cornisas o pilastras, éstas están pintadas en el papel que forma el edificio, y para simular el relieve incluso se pintan sombras de estos elementos, lo cual naturalmente da un resultado totalmente falso. Sin embargo unos pocos fabricantes de estos modelos de papel, hacen que cada elemento arquitectónico tenga su correspondiente relieve ya que está formado por piezas que se montan y pegan para tener el relieve real. Naturalmente la construcción de este tipo de modelos es muy laboriosa porque todos esos elementos sólidos requieren multitud de piezas cuidadosamente recortadas y pegadas, pero el resultado no tiene nada que ver. Yo digo que los primeros hacen un recortable y los segundos una maqueta de papel. Realmente en todos los casos se llega hasta un cierto punto, y al final, determinados elementos están impresos, pero en general se debe llegar a imprimir las texturas y no los relieves.

He probado algunas marcas de fabricantes de estos elementos, y algunas me han decepcionado totalmente. Recuerdo que empecé una maqueta de la marca L´INSTANT DURABLE y ni siquiera  la llegué a acabar porque aquello era una birria. Y el precio no era desde luego birrioso. Al final me he convencido de que los mejores modelos son los de la marca SCHREIBER - BOGEN. Invito a mis lectores a que visiten la web de este fabricante y su tienda on-line. Esta marca fabrica muchos modelos de papel, no solo de edificios, sino también de barcos, aviones, etc. Lo malo es que las escalas no corresponden a las escalas de modelismo ferroviario, aunque la verdad es que parece que se han dado cuenta de este fallo, y últimamente han sacado modelos ajustados exactamente a las escalas H0,N y Z y además marcan con los símbolos de estas escalas algunos modelos que están más o menos próximos a las mismas. Este es el caso por ejemplo de la iglesia de Dresde que monté hace unos años, cuya escala es 1/300. O sea que es más reducida de lo que corresponde a la escala Z pero aún así quedaba impresionante en mi primera maqueta, tal como se puede ver en la fotografía que he incluido antes. Por cierto, veo en el catálogo, que hoy, esa maqueta vale 16 €, así que una ventaja adicional, frente a los edificios de plástico es su menor precio. Claro que requieren un trabajo de montaje mucho mayor.

Ya que hablo del tema, quiero mencionar aquí a una empresa que fabrica modelos de papel para armar en las escalas ferroviarias: H0, TT, N y Z, y además de casi todos sus modelos hace las cuatro versiones. Me refiero a Effekt-Kartonmodellbau. Sus modelos son desde luego mucho más modestos que los de Schreiber-Bogen, pero se puede poblar con ellos una maqueta con mucha facilidad. En la fotografía de mi anterior maqueta, con excepción del edificio de la estación, y de la iglesia de Dresde, todos los demás edificios que se ven, son de esta marca.

Bueno, pues el caso es que el otro día, alguien me preguntó en un foro donde podría comprar un kit para la famosa maqueta de la iglesia de Dresde, y eso me hizo repasar, los puntos de venta que yo tenía localizados. Y lo que pasó es que uno de ellos había desaparecido, y en otro figuraba como "últimos ejemplares" así que se me puso la mosca detrás de la oreja, no fuera a ser que la famosa crisis estuviese dando al traste con estas empresas. Así que, me puse a buscar el kit del castillo de Neuschwanstein, no fuera a ser que cuando llegase el momento, me quedara sin él.

Lo encontré sin problemas, por cierto en una tienda española, Papel 3D. Así que pude comprobar que tal como yo creía se trata de un kit de Schreiber-Bogen, que la escala es 1/250 y que las medidas son 59 x 20 cm en planta por 30 de altura,  lo cual me va perfecto, porque como al final hice la rampa en hélice en forma de óvalo, el promontorio que la cubre es mucho más largo que ancho. ¡Justo como la base de este modelo!

Así que, claro, hice el pedido y hoy lo he recibido. La verdad es que impresiona bastante, ya que estamos hablando de 12 láminas de tamaño DIN A4 llenas de cientos de piezas a recortar y pegar. ¡Todo un trabajo de chinos! Hay que tener en cuenta que esas maquetas, lo mismo que las de barcos y aviones de plástico o de madera, se venden para los aficionados al maquetismo, cuyo aliciente es precisamente el montaje, por lo que no se escatiman medios para que éste resulte entretenido. Estas maquetas, lo mismo que cualquier otra son un problema una vez montadas, porque no tienen más utilidad que su contemplación y ocupan mucho espacio. El hecho de que yo la vaya a usar como elemento de paisaje en una maqueta de trenes es algo fuera de su objetivo original.



La imagen reproducida sobre estas líneas, está sacada de la portada del cuadernillo del kit, y da una idea bastante buena del aspecto final de la maqueta montada. Comparándola con la imagen de la cabecera vemos que es una reproducción de una gran fidelidad. Espero que pronto pueda hacer yo una fotografía así de mi propia maqueta.

Por cierto. la asociación de el castillo de Neuschwanstein con la escala Z no es nueva. Hace años, Märklin lanzó una caja de iniciación que incluía un tren, reproducción del tren que utilizaba el rey Luis II de Baviera, que venía acompañado de una maqueta del castillo de Neuschwanstein.

Por las fotografías que yo he visto, esta maqueta de plástico está mucho menos detallada que la que estamos describiendo. He podido localizar en E-Bay un ejemplar de este castillo, y adjunto la fotografía publicada con el anuncio, que dio lugar a su venta por 129 dólares. Por cierto, en ese mismo anuncio se pueden ver las dimensiones de este castillo de plástico que traducidas a cm son 43 x 15, o sea que es también más pequeño que el de papel. Tratándose de una caja de iniciación es admisible esta falta de detalle y de exactitud en la escala, ya que ésto es prácticamente un juguete.

Y para final, seguro que algún lector se preguntará si estas maquetas de papel son lo suficientemente resistentes. En primer lugar, al hablar de "papel" estamos falseando un poco el tema. Se trata de un papel especialmente grueso, casi de una cartulina. Además se incluyen en el kit unas cuantas hojas de cartón, que están destinadas a reforzar determinadas piezas, según se indica en las instrucciones. Esto da lugar a una estructura rígida que mantiene la forma de la maqueta son ningún problema.

Además yo lo que hago con estos modelos es darles unas capas de barniz, acabando con un barniz mate. Esto impermeabiliza el papel y además aumenta su rigidez.

Como ya he dicho, tengo algunas de estas maquetas y las construí yace ya varios años. No he notado ningún deterioro ni decoloración ni nada parecido. Están como el primer día.


lunes, 9 de enero de 2012

Electrónica de diseño


Aunque ya he comentado varias veces que mi afición no es la electrónica, últimamente me he dedicado un poco a este tema, aunque desde luego orientado a los trenes, y más concretamente a los controles de tracción por corriente pulsada. En un artículo reciente, mostré un controlador (PWM09V) diseñado y construido por mi, del cual quedé muy contento.

Pero me quedaba el gusanillo de que se podría construir un controlador doble utilizando dos de las placas controladoras y una única fuente de alimentación, y montarlo todo en una caja. Como en mi último artículo hablaba de que quizá me meta en un camino, en cuanto al desarrollo de mi maqueta, en el cual voy a necesitar varios controles PWM, quise lanzarme a construir una unidad doble, y de paso probar una serie de perfeccionamientos que se me han ocurrido a la vista de los resultados del primer diseño.

 Asi que he construido el equipo que vemos en la foto de cabecera, al que he denominado PWM09VD, o sea, lo mismo que el anterior pero añadiendo una "D" con el sentido de "Dual"

Los perfeccionamientos que quería introducir, además de hacerla doble, son estos:

  • Permitir un ajuste de la tensión de pico de la salida. El anterior tenía una tensión de pico fija a 9V (de ahí el nombre) pero en esta se permite un ligero ajuste, más o menos entre 8 y 10,5 V

  • Incluir un amperímetro para medir la intensidad de corriente que estamos haciendo llegar a las vías.

El primer cambio permite dejar ajustada una tensión de pico que determina la velocidad máxima de las locomotoras. He visto que los 9 V fijos del primer diseño son un poco cortos, y en todo caso al permitir ajustarlo se podría tener una velocidad máxima distinta, por ejemplo en una maqueta con locomotoras de vapor y en otra con trenes de alta velocidad.

El tema del amperímetro es un poco capricho, pero me parece interesante que podamos ver continuamente cuál es el gasto de corriente de la maqueta, sobre todo porque si sube en algún momento, indicará que algo está funcionando mal. Sobre todo, con una única locomotora en marcha, podremos ver cuál es su consumo, lo cual nos puede indicar si necesita una sesión de mantenimiento.

El primer tema lo resolví fácilmente utilizando un estabilizador de tensión ajustable, tipo LM350. El montaje es un poco más complejo que el de un estabilizador fijo, pero merece la pena.

Respecto del amperímetro, quería un amperímetro digital, así que busqué algo que me pudiera servir. Encontré uno de Welleman que me pareció adecuado (PMLED) , y lo pedí. Como saben mis lectores, he tenido muy buenas experiencias con la marca Welleman así que me pareció una buena compra.

Al final el famoso amperímetro me ha dado bastante guerra, pero he conseguido hacerlo funcionar. Mi principal queja, respecto de este elemento no es exactamente respecto al aparato en si, sino a su documentación, escasa y confusa. (la documentación a la que me refiero se puede bajar pinchando en el logo de PDF que aparece en el enlace que he puesto).

Por ejemplo, en un párrafo dice: "Aplicaciones: Voltímetro, termómetro, Phmetro, dBmetro, Vatímetro, capacímetro, luxómetro, LCRmetro, otras aplicaciones industriales y domésticas" Vale. Maravilloso. Pero ni una palabra de como se consigue hacerlo funcionar en ninguna de esas formas.

Se supone que es un aparato para gente que ya lo sabe usar, pero bueno, no estaría de más que diesen algunas indicaciones.

En el apartado Funcionamiento se explaya con la frase siguiente:

Si fuera necesario, añada los potenciómetros (no incl.) y un puente para el punto decimal:

(RA y RB son resistencias con capa de metal 1/2 W 0.5%)

Ante esta frase el desconcierto es total: ¿ Que tengo que añadir unos potenciometros? ¿cuales? ¿cuantos? ¿donde? ¿para qué? ¿porqué no están incluidos?

Y ¿a que resistencias Ra y Rb se refiere?

Para terminar de aclararlo incluye este cuadro:


¿Cómo que desconecte el potenciómetro de RB? ¿no habíamos dicho que no está incluído? ¡Yo no veo ningún potenciómetro!
Como se puede comprobar ni una sola imagen para dar luz en todo este maremagnun.

¡De locos!

Afortunadamente se me ocurrió mirar la explicación en inglés, y..... ¡Se hizo la luz!

Como se puede ver, en la versión inglesa no existe nada parecido a potenciómetros! Donde en español dice "Desconecte el potenciómetro" en ingles dice "Disconnect wire jumper" o sea "desconecte el puente", etc.

Tampoco es que sea maravillosa la explicación, sigue faltando alguna figura, pero al menos se entiende.

En definitiva: bronca para los señores de Welleman. La traducción al español es no solo confusa sino contraproducente. Lo malo es que está escrita en correcto español, así que se la ha hecho un traductor competente, pero que no tenía ni idea de lo que estaba traduciendo.

Bueno, al final, y para ayudar a los que puedan encontrarse con este problema en el futuro, el asunto es que estos "instrumentos digitales de panel" no son más que un voltímetro digital con un rango de lectura de 0 a 200 mV. Así que cualquier cosa que queramos medir con ellos hay que convertirla a una tensión en ese rango.

Para mi caso, que lo que quería era un amperímetro, la forma de hacerlo está en todos los libros clásicos de electricidad: se trata de hacer un "shunt". Es decir hacer pasar la corriente que queremos medir a través de una resistencia, y medir la caída de tensión que se produce en la resistencia.

Pero claro, si hacemos circular toda la intensidad a medir por una resistencia, esto hará que la resistencia se caliente, que la tensión se reduzca por la caída de tensión en la resistencia, etc. La solución a esto es un resistencia de un valor muy bajo. Tan bajo como un ohmio. Como curiosidad, los anillos de color de una resistencia de un ohmio son marrón negro oro y oro. El tercer anillo de color oro significa un factor de 0,1, que aplicado al valor de los dos primeros uno y cero, da un total de 10 x 0,1 =1

Bueno, pues está claro que esa resistencia produce una caída de tensión de un voltio por cada amperio, de manera que poniéndola en la alimentación de mi circuito, si lo ajusto para que la tensión de salida sean 10 voltios, si circula un amperio habrá una caída de tensión de 1 voltio por lo que al generador de pulsos le llegan 9 Voltios. Como normalmente circulan 100 o 200 Miliamperios, la caída de tensión es de 100 o 200 miliamperios que es lo que lee el "Instrumento digital de panel"

Esto me plantea un problema, porque yo quiero que a fondo de escala mi amperímetro marque 2 amperios que correspondería a estar funcionando a tope, algo así como con ocho locomotoras. Pero si vemos el cuadro proporcionado por Welleman vemos que da la opción de 200 mV a fondo de escala y de ahí pasa a 20 V a fondo de escala. ¡Rayos! y la opción de 2 V a fondo de escala ¿no es posible? Naturalmente que si, pero me ha tocado calcularme yo los valores de las famosas resistencias Ra y Rb. Tal como era previsible los valores son Ra=9 MΩ y RB=1 MΩ. Pero ¿Porqué no incluyen esta opción en su cuadro?

Bueno, pues con todo eso, ya funciona más o menos bien, aunque hay que tener en cuenta que por encima de 500 mA la caída de tensión en el shunt se debe apreciar en forma de caída de velocidad de los trenes.

Pero no acaban ahí mis problemas. De acuerdo con el folleto, el medidor digital necesita una alimentación de 9 V que según dice por algún sitio debe ser independiente de la tensión a medir. Pensé que quería decir que las variaciones de la tensión a medir no debían influir en la alimentación, así que hice una sección de alimentación para el medidor con un segundo estabilizador esta vez fijo a 9 V. Pero no: completamente independiente quiere decir completamente independiente o sea que aunque se trata en realidad de dos fuentes independientes al tener ambas la alimentación externa en continua con el mismo adaptador de red, la masa resulta común.... y no vale!

Bueno, ya en plan chapuza decidí alimentarlo con una pila de 9 voltios, pero claro tenía que conseguir que se encendiera y se apagara al encender y apagar la fuente principal, así que.....¿dónde tenía yo un relé?.... ¡claro un relé monoestable!... Pues si, tenía unos pocos relés monoestables, pero ¡De cinco voltios! no de 9 que es lo que me daba fuente prevista para el instrumento. Ah, Pero lo que si tengo por ahí es un estabilizador de tensión de 5 voltios..... ¡Bueno; Funciona!

Es una pena toda esta chapuza para hacer funcionar el amperímetro, porque en realidad me había esmerado para hacer este controlador con un cuidado estético importante. Prácticamente electrónica de diseño, pero al final el resultado no corresponde a ese cuidado.

Lo que si me han quedado muy bien son las placas de circuito impreso serigrafiadas. Ya comenté el año pasado (Un error afortunado) como es posible crear una imagen transferible con la serígrafía de componentes utilizando el papel para calcomanías que se vende para modelismo.

La imagen siguiente muestra el buen aspecto de estas placas con su serigrafía realizada por este procedimiento.




Es un poco pesado, porque  este papel especial no absorbe la tinta de impresora, así que hay que esperar venticuatro horas hasta que la tinta se seque, pero si no hay prisa el resultado merece la pena. Una cosa curiosa es que la tinta azul se comporta muy bien, pero la tinta verde no, de manera que si hacemos el fondo verde, al final se obtiene una especie de color kaki. Así que he decidido "arduinizarme" y hacer mis placas con fondo azul. He comprobado que una vez todo terminado y perfectamente seco, la adherencia de la capa impresa a la placa es perfecta, de modo que no se levanta ni siquiera al apretar tuercas de radiadores o separadores contra ella.

Una vez colocados los componentes, las placas quedan con un aspecto profesional impresionante. En esta imagen vemos las dos placas generadoras de corriente pulsada que he utilizado en este controlador dual.




No es más que decoración, pero da una imagen muy profesional. Lo podemos comparar con la imagen del mismo circuito del controlador que hice inicialmente y que vemos a la izquierda.

Es el mismo circuito, pero la estética gana mucho.

Como ha quedado claro, este nuevo controlador, aunque funciona perfectamente no ha sido precisamente un éxito de diseño, así que no lo voy a poner en la página de descargas. Si alguien quiere hacerse un controlador dual, no tiene más que utilizar los circuitos realizados para el primer diseño, poniendo dos circuitos de generación de pulsos en lugar de uno. La fuente de alimentación vale perfectamente para un controlador dual.

Y antes de que alguien me lo pregunte, si, en este segundo controlador he puesto la rotulación en inglés. La razón es la falta de espacio, ya que al ser doble y llevar además el amperímetro, queda poco espacio para las rotulaciones, por lo que convenía que estas fuesen muy concisas.

Por ejemplo el conmutador del primer controlador llevaba las indicaciones "Adelante" "Paro" y "Atrás". Estas palabras son largas pero si las abreviamos quedan ilegibles. En cambio todo el mundo reconoce al menos la "R" como indicativo de marcha atrás (En las palancas de cambio de los coches una "R" indica la marcha atrás") También la "N" como inicial de neutro se emplea mucho para "punto muerto" o similar. Así que decidí que las iniciales F (forward) N(neutral) y R(reverse) son muy reconocibles en cualquier panel de mando. Lo mismo, la palabra "ON" es muy concisa para indicar que algo se ha puesto en marcha y hasta "OVLD" es una abreviatura conocida de Overload. También he suprimido, por falta de espacio el dial numerado de la primera versión, sustituyéndolo por los dibujos en forma de "ceja" que también se usan para indicar algo que aumenta o disminuye con el giro del mando. En definitiva, como decía antes, es una cuestión de diseño.

martes, 3 de enero de 2012

Cab Control


 
 
Últimamente he escrito en este blog, y en algunos foros, algunos mensajes en los que me he referido al sistema denominado "Cab Control", como forma de establecer los circuitos eléctricos de tracción de una maqueta analógica. Sin embargo siempre ha sido de una forma marginal mientras escribía sobre otro asunto, de manera que no he explicado muy bién en que consiste este sistema. Como me han hechos varias consultas sobre este tema, creo que merece la pena dedicar un artículo a comentarlo.

Insisto en que vamos a hablar de sistemas de maquetas analógicas, por lo que muchos considerarán que me estoy refiriendo a un tema obsoleto. Bueno, ya sabemos que el control digital ha superado todos estos sistemas, pero teniendo en cuenta las dificultades para digitalizar las locomotoras de la escala Z puede ser útil para personas que no deseen dar el paso a digital.  ¿Qué mejor sitio que uno dedicado a la escala Z como éste para hablar de sistemas analógicos, teniendo en cuenta que la escala Z es nativamente analógica?.

Sin embargo, lo que aquí vamos a tratar se aplica tanto a la escala Z como a cualquier otra, y tanto a sistemas de corriente continua como de corriente alterna.

Veamos pues:

Hace tiempo, lei un artículo titulado nada menos que "Dioses frente a heroes" que hablaba de la distinta forma de concebir el funcionamiento de una gran maqueta, entre los europeos y los americanos. Viene a decir que los europeos tienden a manejar las maquetas desde un plano elevado (como los dioses) controlando varios trenes simultáneamente y manejando complejos sistemas de control y señalización, mientras que los americanos tienenden a adoptar el papel de maquinista del tren, y se ocupan de manejarlos individualmente a nivel del terreno (como los héroes), incluso caminando al lado de la maqueta y acompañando el movimiento del tren.

No se si esto es tan cierto como cree el autor de ese artículo, pero parece que hay algunas diferencias entre la concepción del hobby a uno y otro lado del Atlántico, y que curiosamente tienen un cierto reflejo en la distinta organización de los circuitos de control.

Todo ello surge en cuanto sentimos la necesidad de que en una maqueta circulen simultáneamente varios trenes y deseamos tener control individual sobre cada uno de ellos. Estas palabras, hoy en dia encienden en nuestra mente la palabra DIGITAL pero el mundo existía  antes de Motorola y los aficionados habian conseguido esto muchos años antes.

Hasta la llegada del digital, lo usual en Europa era hacer, en las grandes maquetas, una serie de circuitos de tracción aislados unos de otros y alimentados cada uno de ellos por un controlador distinto. Estos circuitos aislados podían estar hechos de forma que un tren pueda circular idefinidamente por uno de ellos, mientras otros trenes lo hacían por otros circuitos también de forma indefinida. La imagen más típica que responde a este esquema es la clásica maqueta con varios óvalos concéntricos.  Estos circuitos no son completamente independientes sino que hay una serie de desvíos para pasar de uno a otro. Naturalmente estos desvíos tienen entre si uniones aisladas para que la alimentación de cada circuito sea independiente, lo cual quiere decir que cuando un tren pasa de un circuito a otro, pasa de ser manejado por un controlador a ser manejado por el otro controlador. Por lo tanto cuando se produce esta transición, hay que cuidar de que los dos controladores tengan en ese momento la misma polaridad (ésto para corriente continua) y aproximadamente el mismo ajuste de velocidad para que no se note un brusco cambio de movimento al pasar la locomotora.

El esquema más sencillo de esta situación es el que refleja la siguente imagen (que ya he utilizado anteriormente)
Figura 1

En esta imagen, y en todas las demás, represento los trazados de vía en la forma más esquemática posible. Por supuesto, esos dos óvalos no tienen que tener precisamente esa forma, sino que pueden ser trazados muy extensos y sinuosos. Lo esencial es que hay dos circuitos aislados por cada uno de los cuales puede circular indefinidamente un tren y cada circuitro es controlado por un controlador, que es siempre el mismo, es decir el controlador de la derecha siempre maneja el circuito rojo y el controlador de la izquierda siempre maneja el circuito verde.

Hay puntos de unión entre ambos circuitos que necesitan tener un aislamiento eléctrico, y que sólo se utiliza de forma exporádica cuando se desea pasar un tren de un circuito a otro. Esta situación requiere la atención del operador para manejar los desvíos y los controladores de forma que no se produzca un salto brusco al pasar el tren de uno a otro circuito.

Ya hemos visto también que en caso de ser los controladores de tipo PWM esta situación es poco deseable porque es inevitable el efecto "tirón" que se produce cuando la locomotra pasa de un PWM a otro.

Evidentemente podemos tener muchos más de dos circuitos, cada uno con su propio controlador, y podemos llegar a trazados muy complejos simplemente con esta topología. De hecho muchísimas maquetas, sobre todo las de nuestros padres y abuelos se hicieron con este sistema, y muchas de ellas siguen funcionando asi. Lo esencial es como digo que hay "n" sectores eléctricamente aislados y cada uno de estos sectores es controlado por un controlador determinado. Hay tantos controladores como sectores.

Sin embargo este tipo de circuitos tienden a resultar monótonos, ya que cada tren recorre solo una parte del circuito y solo en un sentido, de manera que pronto nos aprendemos ese movimiento. Una maqueta debe ser todo lo contrario, es decir debe siempre sorprender al espectador de manera que no se sepa por dónde van a aparecer los trenes, asi que buscando esta cualidad, muchos aficionados cambiaron la forma de diseñar sus maquetas, pasando del tipo"óvalo" al tipo "hueso de perro". Ya dediqué un artículo de este blog a los huesos de perro, exponiendo sus ventajas y sus inconvenientes, pero no hablé apenas de la alimentación eléctrica de esos trazados.

Figura 2

Refiriéndonos a la figura 2, vemos que hemos convertido el doble óvalo de la figura 1 en un hueso de perro. Como ya sabemos el hueso de perro es un único circuito, de manera que un tren que lo recorra acaba por pasar por todos los puntos del trazado, circulando unas veces en un sentido y otras en sentido contrario y haciendo un recorrido mucho más largo y variado que el que hace un tren circulando en uno de los óvalos de la figura 1.

Como es un único circuito lo podemos alimentar con un único controlador. pero hay que tener en cuenta que si hacemos esto, y sólamente en el caso de los sistemas de corriente continua, tenemos un cortocircuito en cada una de las dos parejas de desvíos, ya que se unen dos vias con sentido contrario de circulación. Asi que un circuito asi solo puede hacerse con la vía de tres carriles de Märklin. Asi que hemos ganado mucho en cuanto a vistosidad y longitud del recorrido de los trenes pero al tenner ahora un circuito único y un solo controlador, sólo puede circular un tren al mismo tiempo. Por otra parte hemos introducido un problema eléctrico al crear un cortocircuito en el caso de corriente continua.

Una solución para solventar esto, es dividir el circuito en sectores, de manera que como al principio, tengamos varios tramos aislados y varios controladores, alimentando cada controlador a un tramo.

Figura 3
En la figura 3 hemos mejorado esta situación en dos aspectos: Por un lado ahora volvemos a tener dos sectores, rojo y verde, manejados cada uno de ellos por un controlador distinto, asi que podríamos tener dos trenes circulando simultáneamente. Por otro lado hemos eliminado el cortocircuito en las parejas de desvíos intercalando una "via de intercambio" entre ambos circuitos. Como se puede ver, esta via está aislada electricamente de ambos sectores y se conecta mediante desvios a ambos sectores. Como está aislada de ambos, no recibe alimentación, asi que de momento no nos sirve para nada.

Sin embargo, hay una diferencia fundamental con el circuito de la figura 1. Allí un tren podía circular indefinidamente por el circuito rojo o por el circuito verde, y por lo tanto siempre estaba manejado por el mismo controlador. Aquí, en cambio, en el punto A el tren pasa de estar controlado por el controlador verde a estarlo por el rojo, y lo contrario ocurre en el punto B. Así que ahora cada tren cambia dos veces de controlador en cada vuelta al circuito. La operación de cambio de uno a otro controlador, que exigía el cuidado de que estuvieran en la misma polaridad y aproximadamente a la misma velocidad y que por lo tanto exigía la atención del operador, ahora se produce inevitablemente dos veces en cada vuelta de cada tren.

Lo esencial de este sistema de alimentación es que los trenes van pasando de un sector a otro, y por lo tanto de un controlador a otro a lo largo de su recorrido, a diferencia del caso anterior en que los trenes permanecen indefinidamente en un solo sector y bajo el mando de un único controlador. El que la topologia del circuito sea o no un hueso de perro es accidental, aunque lo he introducido asi, porque es la primera dificultad con la que se encuentra el modelista cuando decide usar esta forma de trazado.

Asi que, en su recorrido cada tren pasa continuamente de estar manejado por un controlador a estarlo por otro, de manera que hay que fijarse dónde está cada tren para saber sobre qué controlador hay que actuar para manejarlo, y tener cuidado de que no llegue al punto en que cambia de sector, porque entonces obedecerá al segundo controlador. Hay que mentalizarse de que los controladores manejan "zonas" y no "trenes". Como muchas veces las locomotoras responden de forma diferente a la misma tensión de la vía, nos podemos encontrar co que si ajustamos una zona para que una locomotora circule a una velocidad correcta, cuando otra locomotora llega a esa zona, circule demasiado despacio o demasiado deprisa. Si el operador pretende ajustar cada zona a cada locomotora en el momento que pase por ella puede fácilmente enloquecer

La única forma de que el operador no se vuelva loco, es que no toque los controladores y los deje permanentemente en la posición en que permiten el paso suave de un sector a otro, y más o menos ajustado a cualquier locomotora. Pero, si no debemos tocar los controles ¿para qué los queremos? ¿ no se trataba de controlar independientemente cada tren?

Y por último, ya que tenemos varios circuitos y varios controladores, querremos ver circular varios trenes simultáneamente, pero, ¿qué garantía tenemos de que uno de ellos no alcance al otro? ¿como podemos asegurar que en cada sector hay un solo tren, de modo que cada mando actúe en cada momento sobre un único tren?

Afortunadamente la respuesta a esas dos preguntas es la misma: lo que hay que hacer es establecer un sistema de bloqueo automático. Este sistema, que es el mismo empleado en el tren real, consiste en dividir un trazado de vía en sectores y garantizar que en cada sector sólo existe un tren. Estos sectores se llaman en español cantones y en inglés blocks, por lo que el sistema se llama acantonamiento, block system y también bloqueo automático.

Figura 4
En esencia de lo que se trata es de poner a la entrada de cada cantón una señal, que impide la entrada de un tren si el cantón está ocupado por otro tren. Cuando el tren que ocupaba el cantón sale del mismo, se abre el paso de la señal que impedía el acceso al siguiente tren. En principio este sistema no tiene relación con los sectores en los que dividimos el circuito para su alimentación, pero ya que en ambos casos se trata de dividir la vía en sectores, lo normal es que los cantones se correspondan con los sectores electricos.

En la figura 4 hemos representado el mismo trazado anterior, pero ahora dividido en cuatro sectores eléctricos que a su vez son cuatro cantones de un sistema de bloqueo automático. Los circuitos ahora son el verde, azul, rojo y fucsia. los puntos de unión de estos cuatro circuitos son los marcados con A, B, C y D. y hemos puesto cuatro controladores que alimentan respectivamente a cada circuito.

Junto a cada uno de esos puntos de transición hemos dibujado una señal que sería la señal que evita la entrada de trenes al cantón que tiene detrás. No voy a explicar aquí como automatizar el funcionamiento de esas señales en una maqueta de trenes, pero está explicado en otro artículo de este blog: Cantones

He dispuesto dos cantones (azul y fucsia) en correspondencia con las vias de estación, por lo que doy por supuesto que esta estación tiene las vías suficientementemente largas. Asimismo he hecho coincidir las señales, y por lo tanto los principios de cada cantón, con lo que serían las señales de entrada y salida de una estación. Todo esto es accesorio, lo importante es que tenemos cuantro cantones coincidentes con los cuatro sectores.
Bueno, pues este sistema resuelve todos los problemas. Por un lado se garantiza que los trenes no se alcanzan, se garantiza que en cada momento cada controlador maneja un único tren, y no hay problemas de cortocircuito, ya que la via de intercambio de color turquesa en el dibujo, aisla las vias de paso de direcciones distintas, dibujadas aquí en azul y fucsia. Obsérvese que esta vía de color turquesa recibe alimentación desde el controlador fucsia o desde el controlador azul, según cual sea la posición del conmutador representado. Este conmutador tiene una posición intermedia que deja la vía aislada, asi que puede dejarse un tren estacionado en esa vía mientras otros trenes pasan por las vías azul y fucsia.

Siguiendo esta sistemática podemos hacer la maqueta todo lo grande que queramos, añadiendo cantones y controladores y realizando un trazado todo lo complicado que queramos. Lo esencial es que cada controlador maneja un sector  de via, y que los trenes van pasando de un sector a otro cambiando por tanto de controlador.

Volviendo al artículo del principio, el operador "dispone" que los trenes circularán más rápido por aquella zona, más lento por aquella otra, y que por ejemplo cuando un tren entre en el sector azul que corresponde a la estación, puede tomar el control del mismo y detenerlo suavemente en la estación. Mientras tanto los trenes circulan solos, parándose y arrancándo automáticamente en las señales y obedeciendo los ajustes de velocidad preestablecidos en los diferentes controladores. Es en efecto una actitud "divina" por parte del operador.

Todo lo que hemos expuesto hasta aquí, se conoce en el argot de los modelistas americanos con el nombre de "Block Control", porque en efecto lo que estamos controlando es cada uno de los bloques del trazado empleando un controlador para cada bloque, y dejando que los trenes pasen de un bloque a otro.

Mmmm....¿un controlador por cada bloque? ¿y el bloque de color turquesa? Este bloque pasa alternativamente a ser manejado por el controlador fucsia o por el azul, pero no tiene controlador propio. Parece que va en contra de toda la filosofía de "un controlador y siempre el mismo para cada bloque" Esto es una pista para lo que veremos más adelante

Como comentábamos al principio, los modelistas americanos prefieren conducir su tren, manejando cuidadosamente la velocidad en cada momento, parando y arrancando en las señales, pero no de una forma automática, sino porque el operador lo ordena con su control. Para hacer esto, el sistema propuesto no vale, porque el operador tendría que estar continuamente cambiando de controlador, lo cual resultaría muy confuso e incómodo. El operador "heroe" quiere que su tren responda a un mando de forma continuada durante todo su trayecto.

Por supuesto, el sistema digital les ha venido a estos aficionados de maravilla, porque lo que ellos pretenden es justamente lo que se obtiene con el sistema digital. En cambio a los europeos les descoloca un poco, porque salvo que se recurra al mando por ordenador, el sistema de bloqueo que hace pararse a los trenes automáticamente delante de cada señal, dejándolos sin alimentación, no se lleva muy bien con el mando digital.

Pero, ¿y en una maqueta analógica, puede conseguirse que un único controlador maneje un tren durante todo el recorrido, permitiendo la circulación de varios trenes en el mismo trazado? La respuesta es afirmativa y la forma de conseguirla es lo que los americanos llaman "Cab Control", queriendo decir que cada controlador maneja una cabina de locomotora.

Para verlo más claro, vamos a dibujar en primer lugar, el trazado de la figura 4, pero representándolo de forma lineal y fijándonos solo en los cantones y en su alimentación. El dibujo será así:

Figura 5

Como vemos otra vez, cada uno de los cuatro bloques está alimentado por un controlador determinado, de manera que el circuito fucsia siempre está conectado al controlador 1, el verde al controlador 2, etc.

Pues bien: el sistema de "Cab Control" consiste en hacer esto:
 
Figura 6

Como vemos, por cada circuito, hemos introducido un conmutadorde tipo rotatorio que permite conectar el circuito electrico del cantón a cualquiera de los controladores. Además he dibujado una posición vacía en cada comnmutador, de modo que poniendo el conmutador en esa posición el cantón queda aislado, lo cual quiere decir que podrá haber un tren aparcado en ese cantón.

Veamos como funciona esto: Supongamos que un tren circula por el cantón de color fucsia y tenemos el conmutador de ese cantón en la posición 2. Entonces será el controlador 2 el que regule la marcha del tren.

Cuando el tren se aproxima al punto A, lo que hacemos es poner el conmutador del cantón verde en la posición 2 de manera que cuando el tren pasa sobre el punto A los dos cantones fucsia y verde están alimentados por el mismo controlador numero 2. Así que el paso de un cantón a otro será siempre imperceptile por la locomotora, puesto que recibe alimentación de un mismo controlador. Al pasar por el punto A la señal de entrada en el cantón verde se pone en rojo, impidiendo que otro tren entre en el cantón verde. Una vez que el tren ha entrado ya en el cantón verde, el cantón fucsia queda liberado.

Al acercarse al punto B, lo que hacemos es poner el conmutador del cantón azul en la posición 2. De nuevo cuando el tren entra en el cantón azul, el controlador 2 alimenta los dos cantones contiguos al punto B, y de nuevo la transición se produce sin posibilidad de ninguna perturbación. Cuando el tren ha entrado ya en el cantón azul, se pone a rojo la señal del punto B y se pone a verde la señal del punto A.

Obsérvese que si en este momento viene un segundo tren manejado por el controlador 1, por el cantón fucsia, al aproximarse al punto A lo que se hará es poner el conmutador del cantón verde al cotrolador 1, de manera que este segundo tren entre en el cantón verde manejado por el controlador 1

Exactamente lo mismo ocurre cuando el primer tren llega al punto C el segundo al punto B, etc. de manera que cada  tren se mueve indefinidamente, de cantón a cantón, controlado siempre por el mismo controlador.

Obsérvese que en todo este razonamiento no han entrado más que los controladores 1 y 2. En efecto, el número de controladores no depende del número de cantones que tenga el sistema, sino del número de trenes que queramos manejar simultáneamente.

En todos los sistemas de acantonamiento se tienen que cumplir dos condiciones: El número de cantones debe ser mayor que el maximo número de trenes que vayan a circular, y la longitud de cada cantón debe ser mayor que la longitud del mayor tren que vaya a circular. De manera que por ejemplo en una maqueta con ocho cantones el máximo número de trenes que pueden circular simultáneamente es de siete, así que con siete controladores es suficiente, pues en ningún caso van a circular ocho trenes. Pero podemos también poner un número menor, por ejemplo cuatro o cinco controladores, y manejar solo cuatro o cinco trenes simultáneamente. 

He descrito el sistema en la forma más general posible, es decir con "n" cantones y "m" controladores. En muchas (muchísimas) instalaciones el número de controladores es sólamente dos, lo cual quiere decir que pueden manejarse dos trenes simultáneamente en una maqueta de por lo menos tres cantones. Si se usan sólo dos controladores tenemos la ventaja de que los conmutadores de cada cantón pueden ser sencillos conmutadores de palanca de dos posiciones, o mejor aún con posición central desconectada para dejar el cantón aislado. En caso de ser más de dos, se necesitan conmutadores rotativos.

Algún lector se preguntará: Pero bueno, ¿quién pone cada conmutador en la posición adecuada cuando se aproxima el tren a cada punto? La respuesta a esto, puede ser variada. Ya hemos dicho que los americanos prefiieren manejar todo manualmente, asi que para ellos es un aliciente tener que ocuparse de ir ajustando los conmutadores de cada cantón según se aproxima el tren que conducen. De hecho, sobre todo en las grandes maquetas de los clubs, está previsto que cada operador acompañe a su tren andando junto a la maqueta, de modo que los conmutadores están junto a cada cambio de cantón.

Nos puede parecer un engorro tener que andar ajustando la posición de los conmutadores de bloque, pero consideremos que aunque aquí hemos hablado de que cuando "el tren se acerca al punto se pone el conmutador..." en realidad cada conmutador puede estar en la posición necesaria con antelación, es decir tendremos preparado un itinerario de cantones lo mismo que preparamos un itinerario de desvios antes de que llegue el tren. Si nadie se queja de que hay que mover a mano los desvios tampoco debería quejarse de que hjaya que mover a mano los cantones.

Habrá que estar mucho más pendiente de los conmutadores cuando estén circulando simultáneamente varios trenes, ya que el ajuste para cada tren será distinto, asi que accionarlos manualmente requiere la atención de un operador para cada tren, y que al mismo tiempo se ocupa controlar la velocidad, de vigilar las señales y pararse manualmente ante ellas etc. Todo un trabajo de maquinista, digno de un heroe.

Pero no tiene porqué ser así. Según lo he descrito, el sistema de conmutación de controladores (vamos a llamarlo así) funciona prácticamente sincronizado con el sistema de señales del bloqueo automático, y como sabemos, éstas señales se pueden manejar muy bien de forma automática mediante sensores situados en las vías. Como sensores podemos utilizar las vías de contacto, ampollas reed, infrarojos, y hasta detectores de efecto Hall (a ver si los pruebo, por cierto)

Yo creo que para un sistema de sólo dos controladores, es suficiente un sistema basado en reles biestables, aunque no tendrían la posición de desconexión.

Pasar de ese punto, es decir, pasar a manejar mas de dos controladores posiblemente requiere algo de inteligencia, pero seguramente un microcontrolador puede hacer esa labor tranquilamente. Un buen desafío para mis lectores que se han metido en ese mundo.

Evidentemente un PC con el programa correspondiente puede hacer perfectamente ese cometido con la interfase adecuada y un sencillo programa. La página de la que he tomado la imagen de cabecera  describe un sistema hecho asi con un ordenador muy sencillo. Por lo que se ve tienen un sistema con tres controladores ya que vemos los conmutadores rotativos con tres posiciones. (Recomiendo a los interesados en este sistema una visita a esa página, aunque evidentemente se le notan los años)
Queda muy claro que una de las ventajas de este sistema de control es perfectamente compatible con los controladores PWM ya que al mantener siempre el mismo controlador actuando sobre cada locomotora se evita radicalmente el problema del tirón descrito en un artículo anterior (PWM y III). Por eso en ese artículo mencioné el sistema "Cab Control" pero de una forma superficial toda vez que el objeto de ese artículo era otro. El autor del artículo "Gods versus heroes" antes mencionado, clama al final del artículo por un controlador para Märklin Mini-Club capaz de controlar las locomotoras con gran suavidad y lentitud. Estoy por regalarle un PWM09V.

Curiosamente, el sistema que yo tengo previsto para mi maqueta es prácticamente un "Cab Control" con la conmutación de cantones manejada por ordenador. Y digo curiosamente porque he llegado prácticamente a esta solución sin conocer previamente la filosofía del Cab Control. Cuando después de repensar y evolucionar mi sistema, (véase: "Acantonamiento electónico") he encontrado algunas referencias al Cab Control, he leído algunos artículos, y he reconocido que es casi exactamente lo que yo había pensado. ¡Qué bien: no estoy tan chiflado como pensaba!

Como resultado de todo esto, me estoy planteando un cambio de estrategia respecto de mi maqueta. Si me construyo unos cuantos controladores PWM como los descritos en artículos anteriores, puedo empezar a manejar mis trenes con un sistema cab control que puede ser inicialmente manual, y progresar hasta llegar a ser controlado por ordenador como estaba previsto inicicialmente.