lunes, 1 de abril de 2013

Trabajo intensivo

 
 
Acababa el artículo anterior, diciendo que debería ponerme a trabajar sobre el software para obtener los perfiles de las locomotoras, ya que mientras esto no esté disponible no tiene sentido tratar de ajustar los controles de velocidad de las locomotoras.
 
El problema es que, como siempre, todo cuesta más trabajo de lo que parece inicialmente, y además siempre surgen lo que un amigo mío llamaba los posyaques. Es decir "pos ya que estamos con esto, vamos a hacer además esto otro"
 
El tema de los perfiles surge de lo siguiente. Un sistema electrónico como el mío, puede ajustar la velocidad de una locomotora, en "pasos" es decir en incrementos discretos. En mi caso el número de pasos es de 255, lo cual está muy bien, ya que es superior a lo habitual en los sistemas digitales. Lo que se trata es de averiguar la velocidad de la locomotora cuando ajustamos el control a cada uno de esos pasos. Puede ocurrir, y de hecho ocurre, que con los pasos más bajos la locomotora no llegue a moverse, así que esos primeros pasos hay que despreciarlos. Por otro lado los pasos más altos probablemente hacen a la locomotora ir muy deprisa, mucho más de lo que podría hacerlo la locomotora real. Si queremos ser rigurosos ninguna locomotora debería circular más deprisa que la velocidad reducida a escala de su prototipo. Esto da lugar a que se inutilicen también pasos por la parte de arriba de la escala.
 
La forma de conseguir que una locomotora se mueva a una velocidad determinada es determinar previamente  la velocidad que corresponde a cada paso, y la forma de hacerlo es medir la velocidad para cada uno de ellos. Para ello hacemos circular la locomotora por la maqueta y medimos el tiempo que tarda en recorrer una determinada distancia.
 
Para que la medida tenga buena precisión la distancia a medir debe ser relativamente larga. En mi caso voy a hacerlo sobre el recorrido de la zona superior de la maqueta, que son 15,8 m de vía, o sea a escala 3,47 Km. Las locomotoras deben recorrer ese bucle idefinidamente cada vez con un ajuste distinto del paso.
 
Realmente no hace falta hacer una pasada para cada uno de los 255 valores del paso, porque eso tardaría una enormidad. Lo que hago es hacer sólo 9 vueltas con intervalos de 32 pasos. Así que se obtienen 9 valores de velocidad correspondientes a los valores 0, 32, 64,----, 255 del paso.
 
Estos 9 valores se guardan como datos de cada locomotora, y se utilizan cada vez que queremos variar la velocidad. Por ejemplo si los valores para 64 pasos son 45 km/hr y para el siguiente valor que sería 96 pasos la velocidad es 53 km/hr, si queremos que la locomotora circule a 50 Km/hr interpolamos el valor del paso, obteniendo por ejemplo un paso de 69. Podemos así obtener un valor aproximadísimo del número de paso para cualquier velocidad deseada.
 
Así que necesitaba tres cosas: una función del programa que vaya cronometrando el tiempo que tarda en realizar una vuelta la locomotora, y cada vez que pasa por una determinada baliza calcular la velocidad media realizada , y cambie el valor del paso para la siguiente vuelta. El programa empieza con paso 255 y va bajando de 32 en 32 hasta llegar a cero. Todo el sistema funciona automáticamente.
 
La segunda cosa es guardar esos nueve valores como datos asociados a cada locomotora, lo cual supone adaptar la estructura de la base de datos para almacenar estos valores. De hecho hay un décimo valor que no es una velocidad sino un número de paso y que corresponde al valor mínimo del paso con el que la locomotora se mueve.
 
La tercera cosa, claro está, es modificar el programa, en la parte que genera la señal PWM para que con cada velocidad se realice la interpolación y se determine el paso correcto que a su vez definirá la anchura de los pulsos que generan esa velocidad exactamente.
 
Todo esto ha supuesto crear una nueva pantalla en el programa, y es la que vemos más a la derecha en la figura de la cabecera. Todo lo que se relaciona con lo dicho hasta ahora, queda dentro del recuadro rotulado como "Perfil Dinámico" Vemos por ejemplo que aquí se indica cuál es la baliza que va a detectar los pasos de las locomotoras, la longitud del tramo de vía, y una serie de ventanas que van mostrando los valores de tiempos, velocidades y pasos, según avanza el procedimiento. A la izquierda hay un gráfico de fondo verde donde queda dibujado el perfil dinámico de la locomotora.
 
Pero aplicando aquello de "posyaque estamos...." he aprovechado para que esta pantalla sea sea la de mantenimiento de locomotoras, es decir la que permite dar de alta nuevas locomotoras y suprimir locomotoras. El dar de alta una locomotora supone asignarle un código y un archivo de imagen. Esta imagen aparecerá en varias pantallas en las que se maneje la locomotora. En la fotografía de la cabecera vemos como la imagen de la BR001 aparece en todas las ventanas.
 
Otra cosa que se asigna desde aquí es la velocidad máxima de la locomotora en Km/hora. En Wikipedia se obtiene este dato para cualquier locomotora alemana o suiza.
 
También le podemos asignar una ruta. Esta ruta actuará como ruta por defecto, permitiéndose luego que el usuario varíe la ruta durante el funcionamiento. También podemos situar la locomotora en un determinado cantón y en un determinado sector. Esto es para que cuando colocamos una locomotora en la maqueta el programa sepa localizarla. Análogamente si ponemos como localización "Retirada de servicio" el programa considera que esa locomotora no está en la maqueta.
 
Y además he incluido algo curioso: Tres archivos de sonido (MP3, WAV, etc) que contienen respectivamente el sonido del silbato o bocina, del ruido de la marcha, y del ruido de una frenada. Hace ya tiempo se habló en un foro de la posibilidad de añadir un sonido externo, es decir no generado por altavoces en las propias locomotoras, sino reproducido por altavoces situados en la maqueta o junto a ella. Como estaba modificando la base de datos para incluir todos los datos de una locomotora, se me ocurrió prever espacio para los nombres de estos ficheros. Y claro, quise probar cómo podía hacer sonar estos archivos. Al final, la solución es muy simple ya que Visual Basic tiene un control denominado "Microsoft Multimedia Control" que hay que añadir al proyecto y colocarlo en los formularios que queramos que reproduzcan los sonidos. En la fotografía de la cabecera, vemos a la izquierda una ventana de "cabina", y en ella, en la esquina inferior izquierda dos botones. El que tiene la imagen de un altavoz es un conmutador que enciende o apaga la reproducción del sonido de la  marcha. Cuando lo dejamos activado reproduce indefinidamente el archivo de sonido correspondiente. A su lado hay otro botón con el dibujo de un silbato. Cuando se presiona suena el sonido del silbato mientras el botón está presionado.
 
Lo curioso del caso es que si hay varias cabinas con archivos de sonido distintos, como cada formulario de cabina lleva dos "Multimedia Control" cada una reproduce su sonido con independencia de las demás, y efectivamente todos los sonidos mezclados salen por los altavoces del ordenador. Voy plantearme poner un pequeño amplificador y un par de cajas acústicas para obtener un sonido decente.
 
Los que sepan de programación valorarán que conseguir que todo eso funcione y que todas las pantallas involucradas respondan sincronizadamente es una labor muy complicada. Me ha costado pasarme la Semana Santa encerrado, y tecleando como un poseso, pero parece que está prácticamente conseguido. Afortunadamente estos días ha llovido todo lo que ha querido, así que no me he perdido nada con mi encierro.
 
 
 


5 comentarios:

  1. Hola Ignacio, soy el de la soldadura fría, la próxima vez diremos que te toque la lotería o mejor ... que seas feliz.
    Estoy siguiendo tu trabajo, yo lo veo descomunal, como poco a poco has hecho un "imperio" de tu maqueta. Enhorabuena.
    Te escribo ya que estoy haciendo pruebas de varios inventos publicados en este blog, especialmente el PWR. Yo tengo escala "n" y resulta que la locomotora va un poco disparada al arrancar, ¿es posible que sea por la tensión de entrada? Creo que en "n" es de 12V máximo y en "z" se que es 9V. Cambiando el L78S09 del FTE09V.01 por un L78S12 ¿conseguiré mejores resultados? (cambiaré R1 por 1K2 para no quemar el LED).

    ResponderEliminar
    Respuestas
    1. Hola Jose

      Ten cuidado,¡a ver si vas a ser brujo!

      Efectivamente para N hay que dar una tensión de pico de 12 V en el PWM, asi que efectivamente hay que poner un L78S12.

      Conozco a varias personas que lo han hecho con un resultado perfecto.

      De todas maneras, me extraña lo que dices de que la locomotora arranque deprisa, porque dería ocurrir todo lo contrario. No se si has tenido en cuenta una cosa: si conectas el PWM a la vía hay que eliminar cualquier tipo de condensador, que muchas vías llevan como antiparasitario en el punto de conexión.


      No todos los motores responden igual de bién a los pulsos de PWM. Por ejemplo los motores de cinco polo son mucho mejores

      Tiene que funcionar como en este vídeo:

      http://youtu.be/fi_o5aJnQ1U

      Un saludo

      Eliminar
  2. Hola Ignacio

    Puede ser que los motores estén sucios ya que llevan parados más de 10 años, pero ¿podría ser por el potenciómetro? No tenían logarítmico y me dieron uno lineal diciendo que en los PWM debía ser así.

    Tengo que decirte que no me canso del Blog, ahora que tengo tiempo (sin trabajo, no por jubilación) me lo estoy pasando bomba, documentandome bien.

    Otra cosa, ¿tienes algún invento para desenganchadores? Se podrían hacer con un servo, parecido a los desvíos ¿no?

    Gracias por el blog y tus respuestas y hasta pronto.

    ResponderEliminar
    Respuestas
    1. Hola Jose.

      Desde luego, si las locomotoras no están en buenas condiciones, nunca vas a conseguir un funcionamiento perfecto. Te recomiendo que les hagas una buena limpieza y las engrases un poquito con un aceite adecuado. Tienes que conseguir que la locomotora funcione muy bien con corriente continua antes de intentar meterle PWM

      El que el potenciometro sea lineal o logaritmico no tiene importancia alguna. La única influencia es si la velocidad crece de forma proporcional al giro del mando (lineal) o más suavemente al principio y más acusadamente al final(logaritmico) Hay a quien le gusta más una cosa que otra pero no tiene otra repercusión.

      Sobre el tema desenganchadores hay un artículo en este blog dedicado a ellos:

      http://mimaquetaz.blogspot.com.es/2012/03/viessmann-y-jorger.html

      Sin embargo se refiere a desenganchadores para escala Z, y como sabrás, los enganches de Z son absolutamente distintos de los de N, que es tu escala.

      Un saludo y gracias por tu entusiasmo!

      Igbnacio

      Eliminar
  3. Buenos días Ignacio.

    Ya sabes que en el tema de la escala no estamos de acuerdo.
    Pero ello no obsta para que me descubra ante este trabajo tuyo.
    Me parece una vía válida para el control de los trenes.
    Por lo tanto, mi enhorabuena.
    Santiago.

    ResponderEliminar

Gracias por expresar tus opiniones.

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