ESTE BLOG COMENZÓ A PUBLICARSE EN 2008, POR LO TANTO MUCHOS DE LOS TEMAS HAN QUEDADO DESACTUALIZADOS U OBSOLETOS. LOS LECTORES QUE DESEEN UTILIZAR ALGUNO DE LOS ELEMENTOS AQUI DESCRITOS DEBERÏAN ASEGURARSE DE BUSCAR LAS REFERENCIAS MAS MODERNAS DE LOS TEMAS DE SU INTERÉS. EL BUSCADOR INCLUIDO SERÄ UNA AYUDA PARA ESA BÚSQUEDA
domingo, 21 de abril de 2013
Control electrónico
Tanto hablar del Cab Control y estoy dejando algo de lado, que realmente es tanto o más importante para mi proyecto, y que es el sistema electrónico de tracción.
Ya el otro día puse un primer vídeo (Esto está encarrilado) , un tanto apresurado, el que se veía por primera vez rodar trenes en mi maqueta bajo el control del sistema electrónico de tracción que he construido.
Sin embargo, hoy, después de unos cuantos días de prueba, con algún susto incluído que al final ha resultado intranscendente, ya he podido grabar un vídeo con algo más de sosiego en el que se ve el funcionamiento de este control electrónico gobernado por ordenador. Realmente el control se compone de cuatro elementos bastante diferenciados en su origen e incluso en su ubicación en mi sistema, pero que trabajan en conjunto. El primero es el software que presenta en la pantalla del ordenador las ventanas o "cabinas" de control, con todos sus indicadores y elementos de mando, y que interacciona con el hardware para conseguir que las locomotoras respondan a ese control. El segundo elemento, no lo he hecho yo, sino que corresponde a una función de las placas de comunicaciones Velleman K8055 que incorpora mi sistema, y de las cuales he aprovechado los generadores de señal PWM, de los que cada placa incluye dos. El tercero es el hardware diseñado por mi, para la placa CABCON01, que no solo contiene el sistema de conmutación de cantones, sino también la etapa de potencia y el inversor, que convierten la señal PWM seleccionada por el multiplexor en una corriente PWM con la potencia y la polaridad adecuadas para alimentar las locomotoras, y por fin el cuarto elemento, que es un sistema de limpiavías electrónico de Gaugemaster, que como he comentado, favorece el contacto eléctrico ente las vías y las ruedas de las locomotoras.
Todos estos elementos, que como digo están aparentemente dispersos, de manera que es imposible poner aquí una fotografía del "control electrónico de tracción", trabajan coordinadamente para producir como resultado el movimiento de las locomotoras en la maqueta. La verdad es que he quedado gratamente sorprendido del buen resultado obtenido.
La idea era hacer un control electrónico que maneje las locomotoras, de una forma muy realista, es decir con control de aceleraciones y frenadas y con velocidad ajustada a la realidad de cada prototipo. Los que me conocen saben que tengo el mantra de que los aficionados hacen correr a sus locomotoras como si fueran coches de fórmula 1. Esto puede estar bien para un tren de alta velocidad, pero ver a una locomotora de vapor lanzada como una flecha por las vías, es algo que me repele profundamente.
Curiosamente se da un efecto, que no se a qué obedece, pero que se ha comentado en alguna ocasión, que cuando se graba un vídeo de una maqueta con los trenes circulando, en la reproducción, los trenes parecen ir mucho más deprisa de lo que aparentemente vemos en vivo en la maqueta. La mayoría de la gente piensa que esto es un efecto del vídeo que por algún motivo parece aumentar la velocidad. Yo estoy convencido de que es precisamente todo lo contrario: Lo que vemos en el vídeo es mucho más parecido a la velocidad real a la que se mueven los trenes, que la impresión de velocidad que nos producen en la realidad.
Mi teoría es que cuando miramos el vídeo, sobre todo si está bien hecho, y presenta tomas cercanas de los trenes en medio de un paisaje, perdemos la referencia del tamaño de los trenes y tenemos una imagen bastante similar a las imágenes que podemos tener de un tren real, vistas en cine o televisión, por lo que tenemos un término de comparación real, y la impresión que nos produce es comparada con esas experiencias previas de imágenes anteriores. Por el contrario, al ver una maqueta somos conscientes del tamaño de los trenes y de que estamos viendo unas miniaturas cuyo tamaño podemos apreciar directamente. Como no tenemos término de comparación, parece que nuestro cerebro se despista y nos da la falsa impresión de que los trenes de la maqueta van muy despacio. Y no estoy hablando de una sutileza de un poco más despacio o un poco más deprisa. estoy hablando de que en el vídeo nos puede parecer que el tren va al doble de velocidad que cuando lo vemos en la maqueta, y curiosamente en esto no parece influir demasiado la escala.
Si le preguntamos a un espectador que está viendo los trenes en vivo circular en una maqueta ¿A qué velocidad crees que va ese tren, a la escala de la maqueta? es posible que nos diga por ejemplo que va a 80 o 90 Km por hora, y si hacemos el cálculo nos sorprenderá ver que realmente la velocidad que lleva el tren representa 200 km/hora en la realidad. Curiosamente, los fabricantes de trenes no se cortan un pelo y siguen vendiendo locomotoras, incluso de vapor y de mercancías, que circulan a 250 km/hora por las maquetas. La verdad es que hacen bien porque si nos vendieran por ejemplo una BR44 que no pasara en la maqueta de la velocidad máxima a escala de los 80 km/hora que era su velocidad real, la inmensa mayoría de los compradores la rechazarían porque dirían que ¡iba lentísima!.
Es una lástima porque lo que se gana en velocidad máxima se pierde en velocidad lenta, y si la escala de velocidades fuera real, las locomotoras tendrían engranajes con mayor reducción, y por lo tanto podrían mantener velocidades muy lentas, lo que sería, de nuevo, mucho más prototípico.
Bien, pues lo primero que he hecho, es un sistema para obtener el perfil dinámico de mis locomotoras, es decir cronometrar la velocidad a la que se mueven y obtener una relación entre el ajuste del controlador y la velocidad a escala de las locomotoras. Como ya comenté el programa hace circular una locomotora con distintos ajustes y obtiene una gráfica con las velocidades en función de la posición del control. Como estamos hablando de un control electrónico, la "posición" se mide por un parámetro digital que puede tomar un valor entre 0 y 255.
En la cabecera de este artículo se ve el resultado de esa operación reflejado en el gráfico con fondo verde. Como se ve, en el eje horizontal se representan pasos entre 0 y 255 y en el vertical velocidades. Vemos que el mínimo valor del eje horizontal es 21. Eso quiere decir que por debajo del paso 21 en el controlador, la locomotora no se mueve. Vemos que el máximo valor del paso es 95 y que para 95 la locomotora se mueve ya a una velocidad que representa ya 161 km/hora. Estos son los valores máximo y mínimo que van a utilizarse para controlar esa locomotora. Observese que 161 km/hr sobrepasa ya en un 30% la velocidad máxima real de la locomotora BR003 que era de 130 km/hora. Entre uno y otro valor se han leído 10 valores de pasos y las correspondientes velocidades lo que permite por interpolación encontrar el valor del paso necesario para conseguir que la locomotora se mueva a cualquier velocidad entre 0 y 161 km/hr. Naturalmente hay que sacar la gráfica para cada una de las locomotoras. Como curiosidad: Si llevamos el control al máximo, es decir al paso 255, la velocidad a la que se mueve esta BR003 supera los 300 km/h, y eso que la tensión de alimentación es de 9 Voltios. Eso si: 9 Voltios estabilizados, que no decaen por mucho consumo que demande la locomotora.
Bien, pues una vez que el software tiene en cuenta este perfil de cada locomotora, se obtiene una regulación extraordinariamente realista y precisa. En el vídeo siguiente se ve como el tren de prueba, arrastrado por la BR003, se mueve a velocidades moderadas que nos parecen (en el vídeo) bastante realistas. En más de una oportunidad se superpone a la imagen del tren, la del control de tracción, que muestra el valor de la velocidad a la que se mueve el tren. Al principio del vídeo lo vemos circular a 120, 90 y 60 Km/hora. Las velocidades responden rigurosamente a la conversión a escala de la velocidad de la locomotora en cada momento , y puede comprobarse cómo en el vídeo parecen bastante adecuadas, mientras que vistas en la maqueta, los trenes parecen ir muy lentos. Por ese motivo me he tomado la licencia de permitir sobrepasar en un 30% las velocidades máximas de las locomotoras.
Hay un momento en que se ve el amperímetro del EPCC, mostrando el consumo de la locomotora que está rodando
Luego se hace la demostración del control en modo Maniobras. En esa modalidad, la velocidad del tren se controla haciendo girar la rueda del ratón, tal como muestran las imágenes
A continuación vemos en el vídeo la demostración de los simuladores de inercia y de carga. En el controlador hay un primer ajuste del "simulador de inercia", y vemos dos paradas del tren con dos valores de este parámetro distintos. Ambas paradas se inician justamente al pasar por el puente. En la primera, con un valor alto, el tren tarda en pararse aproximadamente 500 metros a escala. En la segunda, con un valor bajo, el tren se para en aproximadamente 100 metros.
El segundo parámetro, denominado "factor de carga" simula el efecto de un tren pesado o un tren ligero. Un tren ligero acelera o frena con valores de aceleración similares, valores que dependen del "simulador de inercia" pero un tren pesado, por ejemplo un mercancías con muchos vagones tarda mucho más en acelerar que en frenar, y este parámetro permite establecer esta relación. El la imagen vemos como se ajusta el valor a 5, lo que representa que tardará cinco veces más en acelerar que en frenar, y a continuación vemos la imagen de como el tren empieza a acelerar y va ganando velocidad muy lentamente. Esto es real: Téngase en cuenta que un tren muy pesado cuenta sólo con la locomotora para ganar velocidad, pero a la hora de frenar, cada vagón tiene sus frenos que contribuyen decisivamente a detener el tren.
Se termina con una nueva demostración de sonido. Ya he montado un pequeño (3W) amplificador y unos altavoces, así que "en vivo" suena bastante bien, aunque lo tengo muy bajito por respeto a los vecinos. Tengo todavía que resolver el tema de conseguir que en los arranques y en las frenadas el sonido se cambie al correspondiente a cada situación.
Espero que os haya gustado
Supongo que ya todo el mundo sabe que locomotora que vemos en el vídeo NO ES digital. Sin embargo, como vemos, el comportamiento se aproxima mucho al de una locomotora digital. En particular, en este vídeo hemos visto como se ajustan los valores de inercia y carga, aspectos que todo el mundo identifica solamente con un sistema digital, por no hablar del propio control por ordenador. Aquí tenemos el caso de una locomotora analógica respondiendo a esos controles con la particularidad de que pueden ajustarse sobre la marcha, incluso con la locomotora rodando.
¿Qué era eso de las CV's....?
miércoles, 17 de abril de 2013
Mi EPCC y su abuelo
¿¿EPCC?? ... Y eso....¿¿.qué e lo que eee??
Ya he comentado muchas veces que el sistema de control de trenes en mi maqueta se basa en el sistema denominado "Cab Control" por los aficionados americanos. No conozco una expresión equivalente en español ni por ejemplo en alemán, donde no me cabe duda que la habrá. Desde luego en español no hay nada parecido porque las traducciones directas, que serían Control de Cabina o Cabina de Control tienen otros sentidos muy alejados.
Esto es una dificultad cuando uno pretende localizar información en Internet con un buscador, porque la expresión "Cab Control" tiene bastantes significados, y desde luego aparecen toda clase de referencias a máquinas y aparatos que tienen algún tipo de cabina de control, Para mayor confusión existe un programa de ordenador llamado precisamente Cab Control que se usa para el control de ocupación de cabinas en locutorios y similares, y por si esto fuera poco se fabrica un elemento con el mismo nombre que es una especie de joystick sofisticado para conectarlo a un ordenador y utilizarlo con los simuladores de conducción de trenes.
Sin embargo, un poco por casualidad, he descubierto que si buscamos la expresión "Progressive Cab Control" aparecen bastantes referencias al sistema de control de maquetas de trenes que es nuesto objetivo, incluyendo, por ejemplo una definición bastante exacta en la DccWiki, una Wikipedia dedicada al control digital.
Como ya mis lectores tienen claro, el sistema se basa en compartimentar la vía en sectores o bloques aislados eléctricamente y alimentar cada sector de forma independiente con uno de varios controladores, pero dando la posibilidad de que cada bloque se pueda conectar a cualquier controlador. Es decir un esquema como este:
Donde A, B, C,... son los diferentes bloques y 1, 2, 3.... son los diferentes controladores
Como se ve se necesita, por cada cantón un conmutador de tantas posiciones como controladores tengamos. Esto ya es un sistema de Cab Control, y puede realizarse con conmutadores rotatorios manuales. Sin embargo manejar a mano todos esos conmutadores según los trenes ruedan y van pasando de un cantón a otro es casi imposible, salvo que haya una persona pendiente de cada tren
El sistema de Cab Control adquiere todo su sentido cuando esos conmutadores se mueven automáticamente, de modo que según el tren pasa de un cantón a otro el controlador abandona el cantón anterior y pasa a controlar el nuevo cantón en el que ha entrado el tren. De esta forma cada tren es controlado por un único controlador, siempre el mismo, con independencia de los otros trenes que pueden estar circulando por el mismo circuito manejados por los otros controladores. Dicho de otra forma, cada controlador pasa a manejar un cantón, luego cambia automáticamente a manejar el siguiente, luego el siguiente, etc. De aquí deriva la expresión Progressive Cab Control o PCC
Sin embargo el conseguir esto es más difícil de lo que parece, ya que si queremos un funcionamiento automático necesitamos algún tipo de conmutador que se pueda accionar eléctricamente y que pueda situarse en una de varias posiciones. No existen elementos electromecánicos que realicen esta función
Al decir que no existen, me refiero a que no se pueden comprar en una tienda de componentes electrónicos lo mismo que compramos un relé. Sin embargo la industria telefónica tenía el mismo problema (cada teléfono debe poder conectarse a todos los demás ) y se resolvió con con elementos llamados selectores, que inicialmente fueron mecánicos (conmutadores rotatorios movidos con motores) y posteriormente electro-mecánicos (mediante relés) y que funcionaban automáticamente por impulsos producidos por los discos de marcar en los antiguos teléfonos con conmutacióm electro-mecánica.
Así que no es de extrañar que los primeros intentos de realizar un "Progressive Cab Control" allá por los años 50, se hiciesen con material de telefonía. Ya lo menciona el artículo de DccWiki antes señalado, y hay más referencias a este mismo intento, como la que se recoge en la fotografía siguiente. Naturalmente resulta un sistema de una complejidad extraordinaria.
Cab Control automático con material de telefonía del Tech Model Railroad Club |
Realmente hay dos problemas distintos: Uno de ellos es el sistema de conmutación que permite que se conecte cada cantón a cada controlador. El segundo es decidir qué ordenes hay que dar a cada uno de esos conmutadores, en función de la situación de los trenes. En el caso de mi maqueta, el primero lo resuelve un chip multiplexor, 74HC4051 que conecta una de ocho entradas a una salida, en función del dato que lee en sus tres pines de datos. Claro que estos chips no pueden manejar la intensidad que requiere una locomotora, pero el truco ha consistido en manejar sólo una señal de control, y amplificarla después, una vez selecionada. Así que por detrás del conmutador que en este caso es electrónico, hay un amplificador de potencia (formado por un estabilizador de tensión y un transistor Darlington) y también el inversor (un relé DPDT), para cambiar la polaridad de la corriente y consecuentemente el sentido del movimiento. En el esquema siguiente, el amplificador de potencia se representa con un triángulo negro y el inversor con una X. Hay además un dispositivo Gaugemaster, indicado con una "G" que como sabemos superpone una señal de alta frecuencia que garantiza el contacto eléctrico de las ruedas de las locomotoras.
Excepto el limpiavías Gaugemaster, que es comercial, todos los demás elementos, multiplexor, amplificador de potencia e inversor, se encuentran agrupados en la placa CABCON01. Esta placa lleva además un circuito latch 74HC75 cuya misión es mantener indefinidamente la situación después de recibir una instrucción.
Así que con ocho placas como la que vemos a continuación, tenemos resuelto el problema de los conmutadores para los ocho cantones de mi maqueta.
En resumen, que tengo un sistema que es un Progressive Cab Control manejado por ordenador, así que habrá que llamarle Electronic Progressive Cab Control y para los amigos: EPCC
La verdad es que comparando la placa CABCON01 con el sistema a base de selectores telefónicos de
1949 resulta evidente el progreso. Bueno tan evidente como comparar un Smart-phone con los teléfonos de marcación por disco de aquella época.
En definitiva, que como un homenaje a aquellos pioneros del Tech Model Railroad Club del Instituto Tecnológico de Massachusetts que hace casi sesenta años diseñaron el primer sistema automático de Progressive Cab Control, he decidido llamar EPCC a mi sistema de control, que es un heredero tecnológico de aquél sistema, al que puedo considerar el abuelo de mi EPCC. Es curioso leer la historia de este club y ver cómo han ido evolucionando según avanzaba el estado de la tecnología desde 1954 hasta hoy mismo. Al final estan utilizando, como yo, sistemas electrónicos controlados por ordenador, aunque por lo que leo, no utilizan corriente PWM para la tracción
En los próximos días como es habitual, pondré en la página de descargas de este blog un enlace desde el que se podrán descargar los esquemas, plantillas de PCB, listas de materiales y demás elementos para las personas que quieran reproducir este sistema.
jueves, 11 de abril de 2013
Esto está encarrilado
Hoy ha sido uno de esos días en que hay que compartir las buenas noticias acerca del avance de mi proyecto.
Después de las primeras pruebas del sistema de control de tracción que ya he reflejado en artículos anteriores, he hecho alguna ligera modificación en las placas CABCON01 incluyendo un condensador para evitar la inestabilidad de la señal de strobe, y también después de hacer alguna modificación, relativamente importante en el programa de comunicaciones, hoy he vuelto a probar el funcionamiento del sistema, y ha sido uno de esos días en que todo funciona como estaba previsto, y que le dejan a uno flotando en una nube de satisfacción.
He grabado el vídeo que encabeza este artículo para poder compartirlo con todos los amigos que siguen este foro, y aunque técnicamente tiene algunos fallos (es muy difícil manejar el sistema y al mismo tiempo grabar el vídeo) es un buen reflejo de lo ocurrido durante la prueba.
Destaco algunos aspectos interesantes:
El manejo de los trenes se hace desde las ventanas que yo denomino "cabinas". En la portada del vídeo se ve una toma cercana de una de estas cabinas, de las que el programa puede llegar a mostrar ocho. Todas las pruebas están hechas con una sola cabina, la número 1, porque solo se está manejando un tren.
En distintas fases del vídeo se ve como esta cabina número 1 está manejando la locomotora BR001 cuya imagen aparece en la misma cabina.
Cada cabina tiene un velocímetro cuya aguja indica en todo momento la velocidad real de la locomotora. Es decir cuando la aguja marca 90, es que la locomotora se está moviendo realmente a la velocidad a escala que corresponde a 90 km/h.
También vemos un cuentakilómetros. El cálculo es también real, y se puede ver a lo largo del vídeo como el valor va cambiando. De acuerdo con esos valores, se deduce que la locomotora recorrió unos 23 km durante la grabación del vídeo.
La forma de modificar la velocidad es clickar con el ratón en una zona próxima a la escala de velocidades. Al hacerlo se ve que un punto verde que hay en la periferia del velócimetro se pone en la velocidad que hemos seleccionado con el ratón, de manera que ese punto verde indica la "velocidad objetivo" Al hacer esto, el tren acelera o decelera para aproximarse a la velocidad objetivo y se puede comprobar como la velocidad del tren aumenta o disminuye de forma progresiva, y mientras lo hace la aguja del velocímetro va variando según el tren acelera o frena. Cada locomotora tiene sus propias curvas de aceleración y frenado para simular de la forma más aproximada posible el comportamiento de la locomotora real que representa. Sin embargo las aceleraciones no son reales, porque los trenes (y más las locomotoras de vapor como la del vídeo) tienen unas aceleraciones muy bajas y harían impracticable el manejo de la maqueta.
También vemos que para parar, simplemente clickamos en la escala cerca del cero y el tren efectúa una detención progresiva. También vemos que con el tren parado, clickamos en una velocidad y el tren arranca suavemente hasta alcanzar la velocidad pedida.
Una cosa que me gustaría resaltar es que en esta prueba, el tren está recorriendo tres cantones de la maqueta. Esto quiere decir que está recibiendo corriente de tracción desde tres fuentes de alimentación distintas, realmente desde tres placas CABCON01 distintas, pasando de una a otra, durante su recorrido. Como se aprecia en el vídeo no hay la más mínima irregularidad al pasar de un cantón a otro, es decir al pasar de una fuente de alimentación a otra, incluso aunque el tren esté acelerando o frenando, lo cual, teniendo en cuenta que se trata de fuentes de alimentación PWM, se debe a que estas fuentes no sólo están sincronizadas en cuanto a tensión de pico y en cuanto a anchura de pulso, sino también que están rigurosamente en fase, y con la misma frecuencia exactamente.
Lo que menos me ha gustado es el comportamiento a velocidades bajas. No se obtiene el movimiento superlento que consigo con mis controladores PWM manuales, Estoy casi seguro que esto se debe a que la frecuencia de las señales PWM de este sistema es de unos 20 KHz frente a los 40 Hz que utilizo en mis fuentes manuales. No puedo cambiar esa frecuencia porque viene impuesta por las placas Velleman que utilizo. Si algún día las sustituyo por un Arduino o algo parecido podré cambiar esta frecuencia.
Aún así, se ve en el vídeo circular el tren con una velocidad bastante baja. Yo diría que es una velocidad baja adecuada para una maqueta de circulación, pero no para efectuar maniobras. Quizá pueda introducir una fuente de 40 Hz para maniobras.
Hay otra forma de manejar la velocidad que no aparece en el vídeo. Pulsando el botón "Man" se pasa a modo maniobra, y entonces desaparecen las aceleraciones y se maneja directamente la velocidad, bien con el puntero del ratón, o bien haciendo girar la ruleta del ratón, Esta última forma tiene la ventaja de que no es necesario mirar a la pantalla para manejar el movimiento de la locomotora.
Y para final, y como fin de fiesta, vemos funcionar el sistema de sonido. Al pulsar el botón del altavoz, comienza a sonar el ruido del motor, y pulsando el botón del silbato, hacemos sonar éste.
Tengo ya pedidos unos altavoces y un pequeño amplificador para tener un mejor sonido, ya que lo que oímos en el vídeo es sólo el sonido de los altavoces internos del ordenador portátil.
No cabe duda que el proyecto va perfectamente encarrilado y avanzando a todo vapor!
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.
Suscribirse a:
Entradas (Atom)