lunes, 11 de febrero de 2013

Lógica del control de tracción



Ya, el pasado mes de Junio, publiqué un artículo titulado Control de tracción en el que explicaba los fundamentos del control de tracción en el que me había metido. Sin embargo, ese artículo derivó por la parte del hardware, ya que se describían con detalle los esquemas y el funcionamiento de los circuitos que había diseñado, concretamente los circuitos CABCON00 y CABCON01.

Por otra parte, en el artículo Software de tracción describía la parte informática del control, es decir, la forma en la que se implementan en el programa de control las distintas funciones que se requieren para el control de las locomotoras.

Ahora, (¡por fin!) después de haberme liberado de algunos problemas personales y de de haber dado prácticamente por concluída la página web ¡Quiero una maqueta! me he hecho el firme propósito de meterme de lleno con este tema hasta conseguir que mis trenes circulen bajo el control de este sistema.

Y al ponerme al día yo mismo, me he dado cuenta de que faltaba por describir una parte importante del proceso, precisamente la ligazón entre la parte descrita como software y la parte descrita como hardware. Seguramente no lo hice en su momento porque yo tenía en la cabeza este enlace y me parecía obvio y simple, pero ahora al retomar el tema, me doy cuenta que yo mismo lo tenía bastante olvidado, así que si alguno de mis lectores ha pretendido seguir mi línea de razonamiento se habrá encontrado con la misma laguna que yo acabo de percibir. Así que voy a intentar rellenar esa laguna antes de que se convierta en un pantano y nos quedemos todos empantanados.

Lo primero que he hecho es un esquema del sistema, que aparece en la primera imagen de este artículo. Para hacerlo con detalle suficiente, he hecho una imagen bastante grande, así que aquí se ve bastante reducida. Para verla a su tamaño real basta hacer click en la imagen.

Esta imagen es bastante parecida a la del artículo  Control de tracción , porque evidentemente es la misma cosa, pero ahora se ha dibujado con mayor detalle, incluyendo por un lado una imagen real de los distintos elementos de hardware, y por otro lado un desglose de las distintas señales que circulan de uno a otro dispositivo, justamente porque eso es lo que nos interesa describir ahora. Incluso he dibujado cada señal saliendo o entrando por el correspondiente punto de conexión de cada placa.

Lo que vemos aquí, a la izquierda, son las tres placas Velleman K8055. Las tres van unidas por la entrada de USB a un concentrador de puertos USB que se conecta al puerto USB del ordenador que maneja el sistema.

La placa número 1, es la que lleva funcionando ya bastantes meses para el control de los aparatos de vía, señales, etc. Como se ve en el esquema las ocho salidas digitales, lineas azules, van a la placa DEMU01, en el sistema que ya se describió en su momento (Esquemas eléctricos). Además a esa misma placa número 1 llegan las cinco entradas digitales que provienen de la placa CODIF32 como y se describió en Encoder.

Así que esta placa número 1 está bastante completa porque además se recogen las dos salidas PWM (lineas verdes) Salvo por estas dos señales PWM, la placa número 1 no tiene ninguna relación con el sistema de tracción.

La placa numero 2, en cambio es la dedicada al sistema de tracción. Como se puede ver todas sus salidas digitales van unidas a la placa CABCON00 (lineas negra, magenta, cyan y amarillo). Además las dos salidas PWM van también a la placa CABCON00

En esta placa, de momento, no se usan las entradas digitales. Están en reserva por si se necesitasen más entradas que las que dispone la placa número 1

La placa número 3, de momento está casi libre. Sin embargo, tengo previsto utilizar sus entradas y salidas para una posible consola de mandos mecánicos.

De momento sólo se utiliza su salida PWM que va como se puede ver a la placa CABCON00 junto con las otras. Tengo en resumen 6 entradas de PWM que llegan a la placa CABCON00. Esta placa está prevista para tener incluso dos entradas PWM más, lo que daría un total de ocho señales PWM.

En la placa CABCON00 estas señales se invierten y se emiten por el bus de ocho vías que vemos representado en verde a lo largo de todo el dibujo.

Queda entonces claro que por cada una de las vías de este bus, circula continuamente una señal PWM que es la inversa de la generada por las placas. Naturalmente cada placa maneja la anchura de pulso de sus dos señales obedeciendo a las instrucciones que llegan por la conexión USB. Son señales continuas e independientes así que resulta un tanto abusivo hablar de "bus" para referirse a esa línea de comunicación.

Entre la salida de la placa Velleman número 2 y la placa CABCON00 tenemos una conexión de ocho vías que se ha representado en colores negro, cyan, magenta y amarillo. A esto si que le podemos llamar bus, puesto que trasmite palabras de ocho bits desde la placa Welleman a la CABCON00, aunque la transmisión es asíncrona, sólo cuando la placa 2 recibe por USB la orden de emitir una palabra, y sólo durante el tiempo que dura la orden.

Los distintos colores de estas líneas obedecen al distinto significado de cada uno de los bits de estas palabras. El esquema es el siguiente:

                                            6  5  4  3  2  1  0

El significado de cada bit es el siguiente:

Bit 7:            Strobe: Activa y desactiva la transmisión del bus de direcciones

Bits 6 5 4 :   Dirección del conmutador o dicho de otra forma cantón al que se dirige la orden

Bit 3 :          Sentido del movimiento

Bits 2 1 0:   Número de señal PWM

O sea, si queremos dar la orden de que el cantón 4 se conecte al PWM numero 6 marchando hacia delante, la codificación será como sigue:

Bit 7 =                1   (Transmisión activa)

Bits  6 5 4  =  011   (numero de cantón: 3  (como empieza en cero es el cuarto cantón)

Bit  3 =              0   (Hacia delante)

Bits 2 1 0  =   101  (PWM: número 5 = PWM6)

Así que la palabra que hay que transmitir es

                                                                    10110101
O bien, escrito en hexadecimal:
                                                                    B5

Después de un intervalo ajustable (por ejemplo una décima de segundo) se transmite la misma orden pero con el primer bit a cero, o sea  00110101 (hex: 35) con lo que la línea se corta y el latch que hay en el circuito CABCON01 se enclava y mantiene conectado el cantón 4 al PWM6.

Realmente hay una operación intermedia: En CABCON00 los bits 6 5 y 4 se demultiplexan a ocho señales llamadas L1 a L8 en el esquema. Por eso entran tres lineas de color cyan y salen 8. La demultiplexión es naturalmente esta operación:

000 = L1
001 = L2
010 = L3
011 = L4
100 = L5
101 = L6
110 = L7
111 = L8

Así que cuando se recibe una señal se "enciende" una de las 8 lineas L1 a L8 y simultáneamente por el bus de cuatro vías magenta y amarillo se transmiten los cuatro bits bajos de la señal. Así que

                                                                      10110101

Se divide en:  1   011   0101  El primer bit y los tres siguientes activan  la línea y precisamente la L4. los cuatro últimos bits son los que llegan al CABCON01 por el bus de cuatro vías dibujado en amarillo y cyan

Al encenderse L4 se activa el CABCON01 número 4 y éste leerá el dato 0101 del bus, con lo cual se conecta el cantón 4 al PWM6 en marcha adelante.

Cuando el bit más alto cambia a cero TODAS las líneas L1 a L8 se apagan y todos los CABCON01 quedan enclavados y conectados a la última señal PWM que se le haya ordenado.

Cada CABCON02 actúa como una fuente de alimentación que suministra a la vía corriente de hasta 1 Amperio y tensión de pico 9 Voltios modulada por la señal PWM a la que está conectado, así que una locomotora situada en el cantón al que está conectado, se moverá impulsada por una corriente pulsada con el mismo perfil que la correspondiente señal PWM que hayamos seleccionado, y que podemos manejar desde el ordenador a través de la conexión a USB.

Queda claro que cualquier cantón se puede conectar a cualquier señal PWM, o sea, que tenemos exactamente el "Conmutador electrónico" que necesitamos para hacer un circuito con esquema de CabControl, tal como se ha descrito en varios artículos de este blog, y simultáneamente tenemos ocho fuentes de alimentación de corriente pulsada cuya amplitud de pulso se regula desde el programa de ordenador.


2 comentarios:

  1. Hola

    Me ha parecido muy interesante esta explicación. ¿crees que podría hacerse algo parecido con Arduino?

    Jose Maria

    ResponderEliminar
    Respuestas
    1. Hola Jose María.

      Aunque no soy experto en Arduino, ya que aunque compré uno, prácticamente no lo he usado, te diría que no sólamente se puede hacer parecido, sino que prácticamente sería lo mismo.

      Fíjate que las entradas a la placa CABCON00 son ocho señales PWM (en mi caso sólo uso 6) más una señal digital de 8 bits con la codificación que se ha explicado en el artículo. Con eso puedes llegara a controlar 8 locomotoras con ocho cantones.

      Un Arduino, al menos el modelo Mega que yo tengo, puede generar perfectamente esas señales asi que no habría más que conectarle directamente a las entradas de la placa CABCON00.

      Para manejar el Arduino, se conectarían ocho potenciómetros a ocho entradas analógicas (o bien ocho "potenciometros digitales" o "encoders" a 16 entradas digitales)

      Y el Arduino deberia también conectarse a los sensores de vía que detectan el paso de las locomotoras de unos cantones a otros.

      Hecho esto, y naturalmente con el adecuado programa en el Arduino, se controlaría cada locomotora en cualquier lugar de la maqueta siempre con el mismo mando.

      Un bonito desafío: ¿Te atreves?

      Saludos.

      Ignacio

      Eliminar

Gracias por expresar tus opiniones.

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