IOCards paso a paso            

 

                                                          por Claude Kieffer   http://www.simucockpit.com

                                                                                                    Traducción : Michel Alcantara

 

 

 


 

 

En  este tutorial vamos a tratar:

 

 

1 - El montaje de la placa Master
2 - El montaje de la placa USB
3 - Unas placas IOCards adicionales
4 - Los cables de conexión
5 - Las comprobaciones iniciales
6 -La primera programación
7 - Una palanca de control de flaps básica
8 – Una palanca de control de flaps con 7 grados de calaje
9 - Las variables « encajadas »
10 - Como encender un led testigo
11 - Como añadir ejes
12 - Los encoders rotativos
13 - Los dígitos
14 - Conclusión provisional

 

El diseño IOCards es un conjunto de tarjetas electrónicas cuyo objetivo es de gestionar las funciones de una cabina : controlar el Flight Simulator por medio de interruptores, pulsadores, encoders rotativos, etc...mostrar en los displays las frecuencias que se usan en vuelo y los parámetros del piloto automático, control de servo-motores o de motores paso a paso, emulador de teclado, etc...

IOCards es un diseño no comercial.  Fue posible su desarrollo gracias a Manuel Vélez,  el principal y benévolo diseñador.

Se puede hacer el pedido de las placas IOcards en kit, o montadas y testeadas, en la pagina Web de Opencockpits . Se venden todas las tarjetas a precio de costo sin lucro...

Este tutorial no dispensa la lectura preceptiva de los anexos que se pueden bajar en la página Web de OpenCockpits. Sobre todo los anexos I y II.

Mi intención en este tutorial es de proponer un enfoque diferente del de los Anexos. Vamos a intentar destacar más el aspecto práctico, que el teórico y abordar las fases un poco complejas paso a paso. Todo eso con muchos ejemplos muy detallados. Claro que algunas veces podrán tener la impresión de que las explicaciones son muy elementales o repetitivas. Pero tengan en cuenta que solo se trata aquí de los "primeros pasos" con las IOCards. No todas las posibilidades de este sistema serán abordadas aquí. Nos limitaremos a lo esencial.

Lo que quiero es que un novato que no entienda nada de electrónica y aún menos de programación informática pueda llevar a cabo sin fracaso un proyecto con las IOCards.

 

Solo fue posible la elaboración de este tutorial con el apoyo, la ayuda y los consejos de Guy Boullu, Jean Claude Pinardon y Jean Pierre Lalanne que son tres excelentes constructores franceses de cockpits. Se los agradezco muchísimo.

 

 


 

 

1 – El montaje de la placa Master

 

La placa Master es el corazón del sistema IOCards. Proporciona entradas, a las que se pueden conectar cualquier tipo de interruptores, y también salidas que pueden encender Leds testigos o mostrar información en los displays.

Inicialmente, solo podía funcionar la placa Master si se conectaba al puerto paralelo del ordenador. Esto aun es posible... a la condición de que su ordenador lleve todavía ese tipo de puerto. La verdad es que el puerto paralelo va siendo cada vez más escaso desde que las impresoras llevan todas el USB. Hoy en día resulta mejor conectar la placa Master en el puerto USB. Por eso se necesita una placa adicional pero merece la pena por cantidad de razones.




 

 

 

 

 

Para empezar... vamos a sacar de sus bolsitas los componentes



 

 

La placa de circuito impreso de la Master: esta dibujada la disposición de los componentes.



Empiecen a soldar los componentes los mas pequeños: los 72 diodos 1N4148  las 9 resistencias 6,8 Ko (azul, gris, rojo)
No deben de aplicar el soldador mas de un segundo sobre cada soldadura para evitar un exceso de calor en el componente.
Tienen que evitar tanto las soldaduras demasiado gruesas porque pueden provocar cortocircuitos si tocan las pistas vecinas, como las soldaduras demasiado finas porque no se hará correctamente el contacto entre el componente y la pista. 



Comprueben que todas las rayas negras de los diodos queden siempre con la debida colocación. Las resistencias no tienen especial cuidado a la hora de colocación, pero mas vale colocarlas del lado que permite leer el código de sus colores.



Después soldaremos los zócalos de los integrados. Hemos de tener en cuenta que no los proporcionan Opencockpits porque no son indispensables pero se recomienda vivamente conseguirlos. Cuidado con la posición de la muesca semicircular. Esta dibujada en el circuito impreso. Soldaremos solo dos patillas del zócalo y comprobaremos que se encaja correctamente sobre el circuito impreso antes de soldar las demás.



Por ultimo soldaremos los componentes más gruesos : los conectores. Notemos la posición del rebaje de los conectores de 40 pines. La posición de los pines 1, 2, 39 y  40 esta pintada sobre el circuito impreso. Acuérdense bien que una vez colocado el conector ya no se le puede ver

 


 




 

2 – El montaje de la placa USB

 

 

 

 

Por supuesto, para el montaje de la placa USB seguiremos exactamente las mismas fases que para la placa Master.
El circuito impreso es de calidad excelente. Como el de
la Master.

 

 

Empezaremos soldando los componentes los mas pequeños : las resistencias, los  condensadores, y luego los zócalos de los integrados. Se acuerde que el condensador C1 que lo dan para 220 nF (o 0,2 µF) en la nomenclatura esta proporcionado para O,1 µF. El valor correcto es este último.



El diodo LED esta soldado (¡ cuidado con la orientación ! Al revés no se encenderá): si el diodo lleva  una muesca, se debe de colocar del lado de la USB. Ya están colocados los conectores.

 





La placa USB finalizada             
 

 

 

 


 

 

 

3 – Unas placas IOCards adicionales

 

 

 

 

 

La placa Display II
(105 x
65 mm)

 

 

 

La tarjeta emuladora de teclado USB Keys
(55 x 60 mm)

 

 

 


 



 

4 - Los cables de conexión

 

Cada uno tiene su método para evitar de hacerse un lió con la multitud de cables que salen de las placas IOCards. Yo personalmente, recurro a cables planos de 40 hilos que van distribuidos por toda la cabina. Cada panel del cockpit (así como el del tren de aterrizaje, el EFIS, etc.…) debe ser independiente y fácilmente desmontable. Así pues, los hilos de los interruptores, de los leds así como de los displays de cada panel deberán ser reunidos y engarzados en un conector macho HE10 de 2 x 20 pines (es muy fácil conseguirlos en las tiendas de electrónica).

Mi método es el siguiente : la placa Master proporciona los conectores HE10 machos J3 y J4. En cada uno, conecto un cable plano de 40 hilos con un conector hembra. Uno va hacia la parte derecha del cockpit y otro hacia la izquierda. Al llegar el cable plano cerca de un modulo (por ejemplo el del tren de aterrizaje), se le conecta con una pinza de grimpar un conector HE10 hembra. Entonces como los hilos del panel del tren de aterrizaje están soldados en un conector HE10 macho pues solo falta que conectarlo al conector hembra que hemos grimpado. Bueno, tengan en cuenta que solo se utilizaran 10 hilos del cable plano para este módulo. Los demás siguen mas lejos, por ejemplo hasta el EFIS que necesita él 15 hilos. Y así seguimos puesto que se pueden grimpar varios conectores HE10 hembras al cable plano. Cada conector hembra corresponde a un panel.

Esta manera de proceder tiene varias ventajas : queda claro el cableo. También así es más fácil modificarlo y extenderlo. Digamos que el inconveniente es que hay que grimpar los conectores y es mejor tener una pinza especial para ello. También le puede dar a uno la impresión de derroche puesto que llevan pocos hilos algunos conectores. Pero, resultan baratos los conectores HE10.

Con estas fotos resulta mas explícito :

 



Aquí podemos observar un cable plano con 3 conectores hembras HE10 grimpados, la pinza de grimpar, y unos conectores pendientes


Un conector HE10 macho : aqui solo los 9 primeros hilos están conectados. Nunca hay que soldar los hilos directamente sobre los pines. Hay que soldar los pines sobre un trozo de circuito impreso y luego los hilos sobre dicho circuito.





 


 

 

5 - Las primeras comprobaciones

 

Bueno, ya tenemos montadas nuestras placas, y listos los cables. Primero tendremos que comprobar que todo funciona correctamente. Para eso, necesitamos una  alimentación de 5 V cc. Se remitan al "Anexo I", pagina16, si quieren utilizar una fuente de alimentación de ordenador. Hay mas soluciones. Deben de tener en cuenta de que las placas IOCards consumen poca corriente. Lo que mas corriente consumen son los Leds y los displays que se pueden conectar. Un Led consume aproximadamente 10 miliamperios, un display de 7 segmentos (solo una "cifra" para mostrar una frecuencia por ejemplo) puede consumir 10 veces más. Para estar cómodos, una alimentación de 5 V 2 amperios será suficiente.

Cuidado : algunas alimentaciones tienen una "corriente de fuga " bastante elevada y eso puede dañar algunos integrados. Para evitar ese riesgo, siempre hay que utilizar un enchufe con toma de tierra para conectar esas alimentaciones a la red.  

El "Controlador".

El programa "Controlador" que forma parte del conjunto del software IOCards, pues como parece lógico, nos va a servir para comprobar el correcto funcionamiento de la placa Master y también para localizar las entradas y las salidas. Parece interesante reunir los programas y los ficheros en una carpeta única, por ejemplo en Program Files \IOCards.

Antes de todo, ejecuten el fichero Controlador.ini que se encuentra en la carpeta IOCards. A continuación pueden ver lo que debe mostrarnos. Si algunas líneas son diferentes, modifíquelas :

[ fichero de configuración para el programa CONTROLADOR ]
[ Configuration file for CONTROLADOR ]

[ Uso de Expansión USB ]
[ Iocard Master expansion USB ]
USB=yes

[ Múltiples USBs ]
[ Non unique USB ]
MUSB=No

[ Número de periférico para el USB ]
[ USB Device number ]
deviceUSB=2048


[ Número de A/D a usar de la placa de Expansión USB ]
[ A/D used by Iocard Master expansion USB ]
USB_AD=0


[ Puerto donde se encuentra conectada la IOCard Master ]
[ Iocard Master, parallel port address ]
Port=$0378


[ Modo compatible yes/no , necesita cable especial ]
[ Compatibility Mode yes/no, needed special cable ]
FullCompatible=No


[ Utiliza placa de expansión yes/no]
[ Use Expansion card yes/no]
Expansion=no

[ Activar en modo SIMULADOR yes/no]
[ Use simulated card yes/no]
simulator=no

[ Numero de tarjetas Master inter-conectadas ]
[ Number of connected master cards ]
NCards=1


[ Refresco de poll tarjetas Master ]
[ Master cards refresh ]
MasterRefresh=10


[ End of File ]

 

Ahora vamos a ejecutar el "Controlador".. Hacemos un clic en el botón COMENZAR : el programa muestra la pantalla tal y como sigue. Solo nos interesa por el momento la parte  rodeada de rojo :




En la parte superior, muestrara IOCardUSB running. Eso significa que la placa Master y la placa USB están funcionando. Con el puerto USB,  ya no nos interesa todo lo que se refiere al puerto paralelo y a su dirección.

Nada debe de aparecer en la casilla Entradas. Ni tampoco en la subventana blanca. Si sale alguna serie de cifras en dicha subventana puede significar  que hay un cortocircuito en las entradas de la placa Master o un cable de conexión defectuoso.

Activamos ahora una entrada.

Prepare un trozo de cable plano de 40 pines de 30 centímetros. En un extremo del cable, grimpe un conector HE10 2 x 20 hembra. Cuidado con el hilo de color (el n°1) que debe de encontrarse del lado del triangulo chiquitín grabado en el  HE10). Al otro extremo del cable desprenda los 10 primeros hilos, pele los y conecte un interruptor de bascula entre el hilo de color (n°1) y el hilo n°10.

 Para activar la entrada n°1, conecte el HE10 en el conector J3 de la placa Master (abajo, en la izquierda), y cierre el interruptor : inmediatamente aparecerá el 001 en la casilla entradas y  001- en negro en la subventana blanca. ¡ Perfecto ! La entrada  n° 1 funciona. Deje soldado el interruptor con los hilos que nos hará falta mas tarde.

Vamos a comprobar ahora el correcto funcionamiento de las 8 entradas siguientes. Tengan en cuenta el aspecto práctico que ya hemos comentado en la página 15 del anexo I : las entradas físicas o pines no corresponden siempre numéricamente con las entradas lógicas. 

A continuación exponemos un diagrama con las  correspondencias :

Conector J3:

ENTRADAS

002

003

007

006

GND

011

012

016

015

GND

020

021

025

024

GND

029

030

034

033

GND

PINES

2

4

6

8

10

12

14

16

18

20

22

24

26

28

30

32

34

36

38

40

PINES

1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33

35

37

39

ENTRADAS

001

004

008

000

005

010

013

017

009

014

019

022

026

018

023

028

031

035

027

032

Conector J4:

ENTRADAS

038

039

043

042

GND

047

048

052

051

GND

056

057

061

060

GND

065

066

070

069

GND

PINES

2

4

6

8

10

12

14

16

18

20

22

24

26

28

30

32

34

36

38

40

PINES

1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33

35

37

39

ENTRADAS

037

040

044

036

041

046

049

053

045

050

055

058

062

054

059

064

067

071

063

068

Como ya lo pueden ver, las entradas van por grupos de 9. La primera entrada lleva el numero 000. En total, los dos conectores J3 y J4 proporcionan 72 entradas.  Se activan las entradas al unir uno de los pines de un mismo grupo con el pin de tierra (GND) del mismo grupo.

Hemos descubierto que se activaba la entrada 001 al unir con un interruptor el pin 1 con el pin 10 del conector J3. Igualmente, se activara la entrada 009 uniendo los pines 17 y 20, etc...

Ahora podemos testearlas entradas 000 a 008 uniendo los hilos pelados de nuestro cable plano de 40 hilos con el hilo de masa n°10.

Si todo funciona, es decir si cada entrada esta localizada correctamente en la subventana blanca lo demás también funcionara bien. 

Por supuesto nada nos impide que hagamos lo mismo con el conector J4.

De momento solo haremos esto con el Controlador.

 

 

 


 



 

6 - La primera programación

 

Config IOCard

Lo mismo que el programa anterior, ConfigIOCard tiene un fichero de configuración : ConfigIOCard.ini

Este fichero es muy importante  y debe mostrarnos lo siguiente. Modifíquenlo si es necesario :

[ fichero de configuración para el programa IOCARD ]
[ Configuration file for IOCARD ]


[ Uso de Expansión USB ]
[ Iocard Master expansion USB ]
USB=yes

[ Múltiples USBs ]
[ Non unique USB ]
MUSB=No

[ Número de periférico para el USB ]
[ USB Device number ]
deviceUSB=2048

[ Número de A/D a usar de la placa de Expansión USB ]
[ A/D used by Iocard Master expansion USB ]
USB_AD=0


[ Numero de tarjetas Master inter-conectadas ]
[ Number of connected master cards ]
NCards=1


[ Utiliza placa de expansión yes/no]
[ Use Expansion card yes/no]
Expansion=No


[ Activar en modo SIMULADOR yes/no]
[ Use simulated card yes/no]
simulator=no


[ Refresco de FSUIPC ]
[ FSUIPC refresh ]
FSUipcRefresh=100


[ Desabilitar lectura de las FSUIPC ]
[ FSUIPC disable mode yes/no ]
FSUipcdisable=no


[ Refresco de poll tarjetas Master ]
[ Master cards refresh ]
MasterRefresh=10


[ Desabilitar protocolo IOCP ]
[ IOCP disable mode yes/no ]
IOCPdisable=yes

[ Dirección IP local para el protocolo IOCP (UDP) ]
[ IP address for IOC protocol (UDP) ]
ioc_ip=127.0.0.1


[ Puerto local para el protocolo IOCP (UDP) ]
[ port for IOC protocol (UDP) ]
ioc_port=8090


[ Nombre y localización del fichero de configuración ]
[ Name and path of Config file ]
ConfigFile=.\iocard.dat


[ Nombre exacto de la ventana donde se enviarán las teclas ]
[ Name of window for key send ]
[window = "Project Magenta Glass Cockpit - Build 396" ]

window = "a.txt - Bloc de notas"


[ End of File ]

La pantalla inicial al ejecutarlo es la siguiente :

Este programa es el que utilizamos para crear todas las instrucciones de programación  que vamos a usar.

Iremos despacito. Nos vamos a plantear un primer objetivo muy modesto : seleccionar el mando del tren de aterrizaje. Nada más.

Para su funcionamiento interno, el Flight Simulator utiliza "variables". Todas las funciones del simulador, y no solo las que tratan del vuelo, se refieren a una variable. Peter Dowson ha conseguido desmenuzar el código de Flight Simulator y ha sacado la lista de esas variables. De este modo, un software tal como IOCard puede gestionarlas y por mediación de FSUIPC se podrán enviar a  FS. Solo se les da una dirección…¡ Y allá van ! 

La lista de las variables de Flight Simulator van  incluidas en  la documentación de IOCards, en el anexo IV, y también en la  web de Peter Dowson. Hay centenas (el anexo IV consta de 43 páginas), pero tranquilos porque si dejamos de lado las variables que tratan del servicio meteorológico, de las coordenadas geográficas, o de las características físicas de un avión, lo que compone realmente una cabina es bastante menos importante.

¿ Variables o equivalentes del teclado ?

Muchas funciones de Flight Simulator tienen un equivalente definido en el teclado. Es decir que apretar una tecla  causara lo mismo que si enviamos una variable. Apretar en la tecla G del teclado o con la tarjeta emuladora tendrá como efecto de retractar el tren de la misma manera que si enviamos la variable correspondiente.¿ Entonces por qué interesa utilizar IOCards ?

Lo primero es que hay muchos controles que no tienen  equivalente en el teclado. 

Después, numerosas funciones necesitan darnos una confirmación : cuando sacamos el tren de aterrizaje, pues sale y cuando ha salido, se encienden unas luces para confirmarlo. Esa información que necesitamos  no pueden gestionarla las tarjetas emuladoras.
Ni tampoco pueden, por supuesto, mostrarnos información de datos numéricos, tales como las frecuencias, la altitud con el P.A. etc.

Ya veremos pronto que hay una diferencia muy importante entre controlar mediante un pulsador, o una tecla del teclado, o mediante un interruptor de báscula. Este último envía una instrucción y permanece en una posición. Es el hecho de ponerlo en otra posición que anulará la acción anterior. Y esto no puede gestionarlo el teclado.  Si uno a intentado alguna vez controlar los luces de aterrizaje con pulsadores, pronto se dará cuenta de lo que significa un "enredo".

Sin embargo para instrucciones tales como cerrar FS (CTRL C) o volver a calibrar el altímetro (B) etc...  Una tarjeta emuladora de teclado resultara tan eficaz.

Volvemos a Config IOCards.

En la pestaña "Variables" podemos ver las columnas siguientes : 


NOMBRE : aquí pondremos el nombre que queremos darle a la primera VARIABLE que nos interesa. Para el tren de aterrizaje, podremos llamarla TREN o GEAR por ejemplo. Este nombre se va a asignar a una dirección y a partir de ahora se podrá  utilizar únicamente para definir la función retraer o sacar el tren de aterrizaje, y nada mas. Por eso es importante elegir un nombre suficientemente representativo. Por ejemplo,  si llamamos a una variable FRENO, es cierto que no vamos a saber al cabo de un poco tiempo si se trata del freno izquierdo, del derecho o del freno de parking.

En la columna NOMBRE, pondremos GEAR por ejemplo. Acabamos de definir un nombre de VARIABLE.

DIRECCIÓN : La dirección que debemos utilizar para la variable que hemos definido nos la proporciona Peter Dowson en la lista de offsets fsuipc (Anexo IV). No podemos poner la que queramos, nos tenemos que remitir a las definidas en las fsuipc. En la lista,  podemos ver "Gear Control". Pues esa es la que necesitamos.

Nos tenemos que remitir a la dirección 0BE8. Pero todavía falta algo : tenemos siempre que anteponer el signo $ a cada dirección.  Entonces en la columna DIRECCIÓN, pondremos : $0BE8

LONGITUD : es el número de "bytes" que tiene cada variable (es decir el  nombre de "palabras" de 8 bits). Confiamos en la palabra de Peter Dowson y pondremos la longitud que nos da y que en este caso para el tren de aterrizaje  será 4.

De momento dejaremos de lado las dos columnas siguientes :

Entonces tenemos : ¡ Pues no esta mal para comenzar !

Para nuestro mando del tren de aterrizaje, vamos a utilizar un interruptor "normal" de tipo micro-switch, con una posición Cerrado y una posición Abierto.  Hacemos un clic en la pestaña SW-NORMAL.

NOMBRE : No debemos de confudirlo con el NOMBRE anterior. Aquí vamos a darle un nombre al interruptor del tren de aterrizaje y no a la variable del tren. Por ejemplo tomaremos GEAR_SW, o INTER_TREN.

ENTRADA : Pues nada más informaremos aquí el número de la entrada de la placa Master sobre la cual conectaremos el interruptor del tren de aterrizaje. Puede ser la primera, la que lleva el numero 0, o la entrada n°1. Pongamos el n° 1 por ejemplo.

VARIABLE : Aquí volvemos a encontrar de nuevo el nombre de la VARIABLE que hemos definido en la pestaña anterior. No hay que cambiarlo. Habíamos elegido GEAR, pues pondremos GEAR en esa columna. Consejo : para evitar errores cuando recopiamos el nombre de la variable, porque sin lugar a dudas, sería causa para no ser reconocida, hagan un doble clic en la columna Variable. Entonces, saldrá la lista de las variables que ya hemos utilizado y solo tendremos que escoger.

VALOR_ON y VALOR_OFF : esta parte sí que es interesante. Aquí tenemos que indicar que valor debe tomar la variable cuando el interruptor este cerrado (Valor_ON/Key) y cuando este abierto (Valor_OFF/Key). Tenemos varias opciones, según el tipo de control. Ya veremos algunos ejemplos luego. Para el tren de aterrizaje, la solución más sencilla consiste en poner ON=1 y OFF=0, entonces interruptor cerrado = tren de aterrizaje sacado, y interruptor abierto = tren de aterrizaje retraído. Nada más. El programa entiende perfectamente lo que significa 0 y 1. Es su lengua materna. 

Bueno, también podemos tratar esto de forma diferente. Fijense de nuevo en la linea de la  Offset de Peter Dowson : ¿ Y que vemos ?

Gear Control: 0=UP, 16383=Down.

Es otra manera de llegar al mismo resultado, porque de hecho no lo sabemos, pero cuando retraemos el tren de aterrizaje con OFF=0, la variable ella misma, sin decirnos nada, toma el valor 0. Y curiosamente, cuando sacamos el tren de aterrizaje, con ON=1, esa variable "Tren" toma el valor 16383. Entonces podríamos en vez de poner 1 en la columna Valor_ON y 0 en la columna valor_OFF, poner 16383 en la primera y 0 en la segunda. Sucedería exactamente lo mismo.

Al haber definido una variable y un mando por medio de un interruptor, acabamos de programar la primera entrada en la placa Master. 

Ahora tenemos que hacer dos cosas muy importantes : 

Acaba de recibir el  programa Config IOCard las informaciones de un fichero importante, el ".dat". Ese es el fichero al que el programa principal, IOCard.exe, se va a  referir para  saber cual es nuestra programacion. Pero antes, hay que grabarlo, porque de momento, como pueden verlo arriba de la ventana de Config IOCard, se llama "sin_nombre.dat". Ejecutamos entonces Ficheros/Guardar como y salvaguardamos ese nuevo fichero.dat con un nombre cualquiera, aeris.dat o... mi_avión.dat . Se guarda este nuevo fichero.dat junto con los demás, que dimos como ejemplos, en la carpeta de IOCard.

Muy importante : también debemos informar IOCard.exe que es con este fichero .dat que debe actuar. Para ello ejecutamos de nuevo el fichero ConfigIOCard : al llegar al las últimas líneas de este fichero esta el grupo de líneas siguiente :

[ Nombre y localización del fichero de configuración ]
[ Name and path of Config file ]
ConfigFile=.\iocard.dat

Cambie la última línea y ponga

ConfigFile=.\aeris.dat

(o ConfigFile=.\mi_avion.dat)

De ahora en adelante IOCard sabe que es ese fichero de configuración al que tendra que referirse. Observe que “\" ante le nombre de vuestro fichero significa que el fichero.dat se encuentra dentro de la misma carpeta que IOCard.exe

Solo nos queda que ejecutar el Flight Simulator, y IOCard.exe cuya ventana debe indicarnos que ha encontrado entre otras cosas FS2004 y FSUIPC. Minimice IOCard en la barra de tareas.

Cargue un avion con tren retráctil, como el 737. Los hilos 1 y 10 del conector J3 permanecen soldados en el interruptor de las primeras pruebas que hicimos. Cierren el interruptor y entonces van a oír como un chillido. Eso es para recordarnos que no se retracta el tren de aterrizaje de un avión cuando esta en la pista...¡ Perfecto, ya funciona !

Si quiere ser el testigo visual de ese milagro de la informática, ponga la vista exterior. Coloque su avión a 10 000 pies en el modo desplazamiento, y suelte el modo slew : antes de que tome el avión una posición peligrosa, fíjese en el tren de aterrizaje que esta sacado. Ponga el interruptor en la otra posición y... ¡ Se retracta !

En cuatro fases : definir una variable, definir una entrada, grabar un fichero .dat y configurar ConfigIOcard para ese “.dat” hemos programado la primera función del sistema IOCard.

A manera de ejemplo, pueden ahora programar el interruptor de la batería. La dirección de su variable es $3102, la longitud 1 y lógicamente el Valor_ON será 1, y el Valor_OFF será 0. Habrán notado que cuando ejecutamos de nuevo el programa ConfigIOCard, nos muestra una página blanca : Hay que abrir el fichero.dat que queremos utilizar en  Ficheros \ abrir.¡ Y no olviden de salvaguardarle cada vez que se modifique algo !

La programación del interruptor de la batería es especialmente concluyente : resulta mucho más realista controlarlo con un interruptor que con el teclado o con pulsadores. 

¿ Que os parece si añadimos el freno de parking  ($0BC8) ?

Comentario 1 : algunas funciones exigen activar un pulsador- y no un interruptor de báscula. Por ejemplo para la función SLEW (desplazamiento, Y). Una presión, se le activa, otra presión en el mismo pulsador, se le desactiva. Se informa  IOCard de esta modalidad poniendo un P como Pulsador en la columna TIPO de SW_NORMAL. Haga una prueba con $05DC, que es la dirección de SLEW.

Comentario 2 : Cuando modificamos algo en el fichero ConfigIocard, siempre hay que salvaguardar ese fichero con Fichero \ Guardar.  Pero si esta ejecutándose también IOCard.exe, para que sean efectivas las modificaciones, hay que hacer clic en  RECARGAR.

Comentario 3 : Algunas veces la ventana de inicio de IOCards nos indica errores, y no puede ejecutarse el programa. Los errores más frecuentes son :

“no es un valor entero”: cierren IOCards con SALIR, ejecútelo de nuevo y no haga clic en el botón RECARGAR, sino en  EMPEZAR.

También podemos tener "Variable errónea en la linea de salida". Eso ocurre principalmente cuando una o varias líneas de programación han sido abiertas con ADD, pero dejadas en blanco. Supriman las casillas vacías, vuelvan a ejecutar IOCards y todo volverá a la normalidad.

 

 


 

 

 

7 – Una palanca de control de flaps básica

 


Ya hemos visto que algunas variables tienen valores ON-OFF que pasan de 0 a 16383. Así es el ejemplo del tren de aterrizaje. Podría ser lo mismo para los frenos. También es así para el mando de los flaps con la dirección $0BDC (página 14 del anexo IV). Se puede leer : "Flaps control: 0=UP, 16383= Full". En el ejemplo de los flaps, esto nos da posibilidades interesantes.

Es que  podemos perfectamente asignar, por ejemplo, tres interruptores a la variable de los flaps. Correspondiendo cada uno a una posición.  Un mando de flaps con 3 posiciones, es lo que se suele encontrar en el Beech 1900D, Baron 58, ATR 72 etc. Es muy corriente.

El primer interruptor corresponderá al valor ON=0, es decir Flaps UP.

El tercer interruptor correspondera al valor ON= 16383. Es decir que cuando cerramos este interruptor (valor ON) la variable tomará el valor 16383, y los flaps totalmente sacados.

En cuanto al interruptor del medio, le daremos un valor ON de la mitad de 16383, o sea, redondeando, 8191. Así tendremos 3 grados de calaje, por ejemplo 0 - 15° - 30°.

En el aspecto físico esos interruptores pueden ser micro-switches, pero también pueden ser los contactos de un conmutador rotativo de 12 posiciones. Cada uno de los contactos ira unido a una entrada de la placa Master, el punto del medio ira unido a la tierra del mismo grupo. Para nuestra prueba de programación, utilizaremos las entradas 0, 4 y 5

Con este principio de programación, ya no es necesario detectar el sentido de rotación de la palanca de los flaps. El interruptor de la posición 2 corresponderá a flaps=2.

En la pestaña VARIABLES ConfigIOCard nos muestra, de ahora en adelante lo siguiente :

 

En cuanto a la pestaña SW-NORMAL, ahora nos muestra lo siguiente :

Así pues notaremos lo siguiente :

- Encontramos tres veces el nombre de la variable FLAPS, en tres entradas diferentes : 0, 4 y 5.
- Hay Valores_ON, pero no hay valor _OFF. El interruptor cambiará el valor de la variable cuando estará cerrado pero no cambiara nada cuando lo abramos.
- Solo podríamos poner  2 interruptores : el primero tendría un valor_ON=0 y un valor_OFF=8191. No se uniría a ningún interruptor el grado de calaje del medio, el ultimo grado de los flaps llevaría un Valor_ON=16383, y un valor_OFF=8191. Si en teoría tal cosa es posible,  es inútil con un conmutador rotativo. El único interés es ahorrar una entrada en la placa Master.

 

 


 

 

8 – Una palanca de control de flaps con 7 grados de calaje

 

El ejemplo anterior es bastante sencillo : 0, 15, 30. Ya nos figuramos que el valor 15 es la mitad del valor 30. Las cosas son más complicadas cuando tenemos más grados de calaje.    

En todos los casos, el valor de la variable $0BDC será 0 para la posición FLAPS UP y 16383 para la posición FLAPS DOWN.

La regla general es que el "paso" de cada grado de flap (aumentación del valor de la variable de un grado al otro) esta dividido con regularidad sobre todo el recorrido. Si el despliegue efectivo de los flaps no se hace con regularidad de un grado al otro, el fichero Aircraft.cfg se encarga de hacer lo necesario.

Cálculo del paso : se divide 16383 por el número de grados -1.

Ejemplo : un 767 con 7 grados de calaje de flaps, de 0 a 30. Dividiremos 16383 por 6 lo que nos dará 2730 para cada paso.

Entonces estos serián los valores que nos mostraría nuestro fichero ConfigIOCards, en la pestaña SW-NORMAL:



Observe que cuando el cálculo no nos da un número entero, se puede sin problema ninguno redondearle al más próximo. 

Bueno, podríamos dejarlo esto así ya, pero vamos a aprovechar para ver como funcionan y que útiles son los botones LEER y GRABAR  en la parte inferior de ConfigIOCards :



Estas funciones permiten visualizar los valores que toman las variables cuando cambia algo en  Flight Simulator, un grado de flaps por ejemplo, (botón LEER) y inversamente cuando se pone un valor en la casilla Valor, se le puede enviar a Flight Simulator para ver como interactúa (función GRABAR).

Vamos a ver lo que ocurre con el control de los flaps. La variable $0BDC  tiene que estar introducida ya en la lista de las variables.

Ejecutamos FS con el B777 inicial, lanzamos ConfigIOCards con un fichero .dat que lleve 7 grados de calaje de flaps.
Puede haber tantos ficheros .dat
como de aviones que utilizamos frecuentemente, pero sobre todo no se le olvide, si cambia el fichero de config, de modificar la línea ConfigFile= en el fichero IOCard.ini porque de lo contrario IOCards seguirá leyendo el  config. anterior.
Abrimos IOCards.exe.

En la pantalla de ConfigIOCards, la ventana de derecha se encuentra vacía. Hacemos clic en LEER : nos muestra los valores de todas las variables que hemos previsto :

Solo la última línea: FLAPS nos interesará para nuestro ejemplo. De momento marca el valor decimal 0.

Con FS, ponemos los flaps en el primer grado : flaps 1. En ConfigIOCards, hacemos clic en LEER : el valor que muestra es 2730.
Volvemos a FS y ponemos el segundo grado : flaps 2, LEER y nos da el valor de la variable : 5460. Y así sucesivamente para todos los grados hasta el último que tendrá el valor :16383. Cuando usamos la función LEER, pues entonces es Flight Simulator el que nos dice lo que desea para controlar los flaps.

Comprobación contraria. Tenemos tres casillas vacías : Offset, Longitud y Valor. En Offset, ponemos la variable $0BDC de los flaps, la longitud es 4, y en Valor ponemos 2730.

Hacemos clic en GRABAR y observamos lo que pasa en FS : los flaps se ponen en la posición 1. Además, si hacemos clic en LEER, el nuevo valor que mostrará es 2730. Así podemos comprobar el funcionamiento correcto de los flaps controlando directamente las variables en FSUIPC, sin tener que tocar la palanca de control de los flaps. Si luego salían de capricho los flaps, no se podrá aún sospechar la programación. Solo tendremos que ir investigando el cableo.

Esta función LEER / GRABAR resulta muy útil para comprobar o comprender el funcionamiento de cualquier variable de FSUIPC.

 

 

 


 

 

9- Las variables « encajadas »

 

Algunas veces, daremos con variables un poco "raras". No cambian su valor de manera global sino interactuando en uno de sus "bits" (cifras o letras que la componen).

Tenemos aquí un buen ejemplo con la dirección $0D0C : las luces y los varios faros de un avión.

Con solo una dirección, tenemos 10 luces. La selección se hará cambiándose el valor de 0 a 1 del bit n°0, del n°1 etc. La verdad es que es muy fácil, además nos limitaremos a las 6 primeras luces.  

En ConfigIOCard, la definición de la variable se hara como de costumbre. Llamaremos a esta variable LIGHTS:

En la pestaña SW-NORMAL, tendremos un interruptor. Lo que significa una entrada para cada dispositivo de luz en la Master. Añadimos las lineas necesarias con los botones ADD, DELETE e INSERT, debajo de la ventana de ConfigIOCard. Para que sea más fácil el cableo, vamos a unir todas estas entradas en el grupo "azul" de las entradas de 009 a 017 (vean el diagrama anterior).  La masa comun es el pin n° 20.

Definiremos de manera bastante explícita el Nombre de la función de estos interruptores. Por supuesto el nombre de la variable sigue siendo LIGHTS.

Todos los valores _ON mostraran 1 y todos los OFF 0. Es lógico. En cambio, hay que interactuar en solo un Bit. Por eso está la letra B en las columnas valor_ON y OFF. El + o el - que nos informa de la acción que tenemos que hacer, activar o desactivar, y por fin, la cifra de 0 a 5 en nuestro ejemplo corresponde al bit cuyo valor habrá que modificar. ¿ Cual es ? No lo dice Peter Dowson : cuando queremos encender las luces de navegación, habrá que interactuar en el  bit n° 0, si son las luces de aterrizaje, será en el bit n°2, etc...

Esto resulta muy sencillo y muy eficaz porque ya veremos pronto, con el uso, que cada interruptor de báscula estará "hacia abajo". Por ejemplo, las luces están siempre encendidas, aunque hayamos lanzado FS con una situación  donde estaban apagadas. Y cuando ponemos la palanca "hacia arriba" se apagan siempre. Así se acaban los líos que resultan con los controles mediante teclas o interruptores (ON)-OFF-(ON).

Comentario : Hay mas variables con varios valores en la lista de Dowson. Fíjese por ejemplo en la 2F80, para el Auto-Brake. Aquí Peter Dowson ya no da valores de bits para cambiar, sino valores absolutos: 0= RTO, 1=OFF, 2=Brake 1 etc... Es otra manera de definir los "valores ON" de una variable, y en este caso tendremos un interruptor (de hecho una posición de un conmutador rotativo) para cada una de las posiciones con valor ON =0 para la posición RTO, o 1 para la posición OFF etc...

Tanto mas cuanto que se pueden asociar a esas funciones diodos LEDs testigos para indicarnos el estado de los controles. Para que no se nos olvide de apagar las luces de aterrizaje cuando vamos volando en crucero. Pues  trataremos ahora ese tema…  Ya no vamos a enviar instrucciones a  Flight Simulator, sino que nos va a mandar él informaciones. Dejamos de lado los Inputs, y vamos ahora con los Outputs.

 

 

 

 


 

 

 

10 – ¿Como encender un LED testigo ?

 

La placa Master proporciona dos conectores de salidas : el J2, en la izquierda, es un conector HE10 macho de 40 pines. Nos proporciona las 38 salidas n°11 a 48. ¡ No lo confundan con el  J1 de derecha ! También nos proporciona salidas, pero son para la placa de displays. Arriba, en la derecha, el P2, es un conector DB9 macho que proporciona las 7 salidas n°49 a 55.

Para comprobar donde se localizan las salidas en el conector J2, utilizaremos de nuevo el Controlador, pero al revés. Cuando probemos las entradas, conectemos los pines 1 a 10 y comprobemos que se trataba efectivamente de la entrada  n°001, lo que suponíamos.

También se pueden conectar los hilos de la mejor manera posible en la cabina y buscar después  con el  Controlador a que número corresponde tal o tal conexión. Apuntamos entonces ese número, que se introducirá en el fichero de ConfigIOCard, en cualquier orden. Eso es lo que haremos aquí.

La disposición de las salidas en los pines del conector J2 es muy diferente de la de las entradas en los conectores J3 o J4, pero mas sencilla. En efecto, el pin n°1 corresponde al +5 v, y el 2 a la masa. ¿Y los otros pines? Vamos a  verlo con el  Controlador.

Volvemos a tomar el cable plano de 30 cm que habíamos preparado. Desoldamos el interruptor. Soldamos una resistencia de 270 o 330 ohmios en la patilla corta de un diodo LED. No se olvide : el hilo más corto es el NEGATIVO, el hilo más largo de la LED es el POSITIVO.

Soldaremos el otro extremo de la resistencia al hilo n° 2 (pin 2) del cable plano, o sea a la masa. Para evitar un cortocircuito, pegaremos con cinta adhesiva el hilo n°1 (de color) , que corresponde al +5voltios a lo largo del cable plano. La otra patilla del LED ira soldada a  cualquier de los otros hilos, por ejemplo al hilo n°3. El Controlador nos dirá a que salida corresponde este empalme.

Arrancamos el Controlador (botón START) . En la casilla IN/DPLAY, ponemos 11, el n° de la primer salida. Hacemos clic en ON. Si el diodo se enciende pues ¡ Que suerte ! Eso nos indica que el hilo n° 3 corresponde a la salida n°11. Hacemos clic en OFF para  interrumpir el diodo, y ponemos 12. Hacemos clic de nuevo en ON, el diodo no se enciende. Es normal.
Ahora soldamos la patilla del diodo que no lleva resistencia a cualquier otro hilo. Ponemos 11 de n° de salida. Claro,  si hacemos clic en ON, no pasa nada... Buscamos a que salida  está unido el LED haciendo clic en +ON. Cuando demos con la salida correcta, el LED se encenderá. Solo nos queda apuntar el n° de la salida  que aparece en la casilla.

Tenga en cuenta que solo se puede apagar el diodo con OFF si el  n° marcado corresponde a la salida activa. No se puede, por ejemplo, cuando la 15 está activa hacer clic en -ON para volver a 13 y hacer clic en OFF. Así no funcionara, habrá que volver de nuevo a 15 para hacerlo. 

Así pues podemos  dar con los números de las salidas que ya están conectadas.

Supongamos que nuestro diodo LED este ahora conectado en la salida n°20, una cifra a ciegas.

Cerramos el Controlador, y abrimos ConfigIOCards. Cargamos nuestro fichero.dat y abrimos la solapa OUTS_CONFIG, o configuración de las salidas.

En la columna NOMBRE, daremos un nombre a la salida. Por ejemplo, LED_LDG_LIGHTS para diferenciar correctamente el nombre de la entrada del  interruptor y el de la variable.

En la columna N.Salida pondremos el número de la salida que queremos activar al cerrar el interruptor LDG_LIGHTS. El n°20 en nuestro ejemplo. 

En la columna Variable, daremos el  mismo nombre de la variable que pusimos en la solapa VARIABLES. En nuestro caso : LIGHTS. Cuidado con no programar una salida LED para una variable que no estuviera  en la lista VARIABLES. Resultaría un error ("Variable errónea en la linea de salida") en la ventana de lanzamiento de IOCards.

Por fin, en la columna Valor ON, indicaremos que valor de esta variable va activar la salida 28 y encender nuestro LED. En la solapa SW_NORMAL, había que activar el bit n°2 para encender las luces. Entonces pondremos aquí B2 (y no B+2). ¡ Nada más !

Salvaguardamos nuestro fichero.dat y cerramos ConfigIOCard.

Arranquamos Flight Simulator. Mejor de noche. Abrimos IOCard.exe. Cerramos el interruptor de la entrada 11 poniendo un hilo entre los pines 12 y 20 del conector J3. Entonces vemos que las luces se encienden y que el diodo LED también se enciende.

Hemos hecho un LED testigo para el interruptor de las luces de aterrizaje. Solo nos queda hacer lo mismo para los demás interruptores de LIGHTS, incluso para la calefacción del  Pitot, el Yaw Damper, la posición "spoilers armados", bueno, todo aquello que no salta a la vista y que necesita un testigo visual para recordarlo.

Otro buen ejemplo pueden ser los tres diodos verdes del tren de aterrizaje, con las direcciones $0BEC, $0BFO et $0BF4, con valores ON de 16383 y OFF de 0. O también activar los Outer, Middle y Inner Markers, etc, etc...

Los diodos LEDs van muy a menudo incluidos en los pulsadores de forma rectangular. Entonces se ponen 2 o 4 en cada pulsador.

Comentario 1: Cada vez que añadimos una salida LED, es bueno comprobar que la  VARIABLE existe bien en la primera pestaña y que hemos escrito correctamente su nombre (causa n°1 de los errores).

Comentario 2: cuando sí que la variable existe, el LED que hemos configurado en salida se enciende cuando accionamos un interruptor. Pero, por supuesto, también cuando controlamos la acción con el teclado, y también con la tarjeta emuladora USB Keys. Eso significa que si resulta más práctico controlar Slew por ejemplo con la tecla Y generada por USB Keys, no es necesario tener un interruptor programado en la pestaña SW_NORMAL. No obstante podremos poner un LED de control.

 

 

 

 


 

 

11 –¿ Como añadir ejes ?

 

 

La tarjeta de expansión USB aporta 4 entradas A/D (analogico/digital) para potenciómetros que pueden gestionar por ejemplo, los gases o los aero-frenos. 

Lo primero que debemos de hacer es, por supuesto, extraer el offset de la lista de Dowson. Para las palancas de gases divididas en  dos partes nos da $088C para la palanca n°1, $0924 para la palanca n°2, y $0BD0 para los spoilers.

En la pestaña VARIABLES, pondremos un nombre para esas variables, por ejemplo THROTTLE_1, THROTTLE_2 y SPOILER, luego su dirección, su longitud, 2 y 4.

En la columna FUNCION vamos a informar para que van a servir esos ejes : podemos tomar de nuevo el mismo nombre que el de la variable, como THROTTLE_1, o un nombre diferente, como SPOILER_CTRL. Esos nombres son solo un punto de referencia para nosotros. 

Abrimos ahora la pestaña DEF.FUNCIONES : se supone que esas variables varían del valor 16384 al valor 0.


Si valor > significa : si el valor es superior a. Bueno, diremos superior o igual porque parece difícil para una variable límite de 16384 de tener un valor superior a ese número. Tenemos que entender que el Valor > se refiere al estado del potenciómetro   y en tal caso podemos leer : "si el valor que nos da el estado del potenciómetro es superior o igual a 16384, " Entonces Valor= " entonces el valor de la variable será 16384. Es decir los gases o los spoilers a tope.

Al contrario, Si Valor< , si el estado del potenciómetro es inferior o igual a 0, entonces la variable tendrá que tomar el valor 0

Finalmente, queda la columna Valor=valor por : es un coeficiente multiplicador que deriva del hecho que el convertidor Analógico / Digital funciona con 8 bits. Para explicar de manera sencilla, diremos que el valor de referencia es 64,25, cuando los valores topes son 0 y 255. Cuando aumentamos ese valor y que ponemos 80.3137 por ejemplo, cambiamos el tope alto del potenciómetro, es decir que lo calibramos, entonces llegará al valor máximo de la variable antes de llegar a su valor máximo en ohmios. 

Última fase, vamos a la pestaña  ENTRADA ANÁLOGICA :

En NOMBRE informamos un nombre cualquiera para definir nuestro eje analógico. Nada nos impide de utilizar de nuevo THROTTLE_1 y 2, y SPOILER_CTRL.

En la columna ENTRADA INICIAL, pondremos el número de la entrada analógica de la tarjeta USB. Eso de la manera siguiente : #1 para la entrada n°1, la que se encuentra al lado de la salida USB hacia el PC, luego #2, #3 o #4 si tuviéramos un cuarto.

En la columna VARIABLE, tomaremos exactamente el nombre de la variable que hemos definido en la pestaña VARIABLES.

Después, definimos el recorrido del potenciómetro, que va de 0 a 255. Si debe de ser linear, como tiene que ser para nuestros tres ejemplos de ejes, en el medio de su recorrido, tendrá 255:2=127.
Se encuentran frecuentemente  instalaciones cuyo potenciómetro no puede girar totalmente : y eso por razones mecánicas. Para "calibrar" ese potenciómetro podemos cambiar el coeficiente multiplicador como lo hemos indicado más arriba. Pero también podemos definir que la posición  "left pos" corresponderá a 35 por ejemplo en vez de 0. Lógicamente, la posición "Center Pos" debería encontrarse en el medio del recorrido, para que el potenciómetro siga linear : si tenemos un recorrido total de 0 a 255, el medio será 255/2= 127. En cambio, si queremos que empiece la carrera a 40 por ejemplo, porque la palanca está en el tope inferior antes de que el potenciómetro este a  0, desplazaremos hacia arriba el punto del medio.

Para determinar cual es el recorrido de un potenciómetro en una instalación particular, podemos referirnos al Controlador : abajo  se encuentran los valores A/D [1], A/D [2], etc... Ponemos las palancas en el tope alto e inferior, y copiamos el valor indicado aquí  en Left y Right Pos.

Grabamos las modificaciones en el fichero.dat.

También tenemos que ir al fichero IOCard.ini y en las líneas [Número de A/D a usar de la placa de expansión USB] indicaremos el número de entradas analógicas que debemos de utilizar : en nuestro caso serán 3.

Solo nos queda ejecutar FS, IOCard.exe y comprobar que en el 737, por ejemplo, estos tres ejes funcionan normalmente...

 

 

 

 


 

 

 

12 - Los encoders rotativos

 

Una de las funciones de IOCards es, por supuesto, poder mostrar y modificar los datos (frecuencias NAV, COM, altitud, transpondedor, etc...)
Todos esos datos tienen un punto común : se modifican en la cabina por mediación de un encoder rotativo. Girándolo en un sentido se aumentaran valores y girandolo en el sentido opuesto se disminuiran.

Según el principio de funcionamiento, hay varios tipos de encoders.  


Existen los encoders rotativos  con detección de fase que son dos discos que van a conmutar uno tras el otro pero con una pequeñita demora. Al conectarlos en un circuito electrónico especial, se podrá distinguir cual de los discos hizo contacto el primero e interpretar todo eso para generar una señal correcta. La placa Encoger II de IOCards esta destinada para este tipo de encoders.

Mucho mas sencillos e igual de eficaces, están los encoders de "tipo Gray" como el CTS 288. Son muy fuertes (totalmente de metal), poco voluminosos y se pueden conseguir en la Web de OpenCockpits. Este tipo de encoder no necesita la tarjeta Encoder II. Se conecta directamente en la placa Master y necesita dos entradas. Es una solución excelente que se puede utilizar para una cabina entera si tiene uno bastantes entradas libres en la Master u otra Master.

También existen encoders "mecánicos", que se pueden conectar directamente en una placa emuladora de teclado : por ejemplo el MRP1-20 y el MRP 11 de Knitter Switches. Son bastante baratos pero me parecen personalmente un poco frágiles.  

 

También existe un encoder muy particular : el que puede fabricarse cada uno en unos minutos con un conmutador rotativo de 12 posiciones. Y además no son caros.
Vamos a entretenernos un poco con este bicho raro porque de verdad puede resultar interesantísimo para nosotros. Y hasta incluso se puede usar para todos aquellos rotativos que sirven, en la cabina,  para mostrar y modificar informaciones tal como frecuencias.

Lo primero que tenemos que hacer es cortar el tope de la posicion n°12, para que pueda el conmutador dar todas las vueltas que se necesiten.

Después, uniremos las patillas como no los muestra el diagrama siguiente :

Las salidas 1,2 y 3 serán conectadas a tres entradas contigüas de la placa Master. La patilla del centro ira soldada al pin de tierra del mismo grupo.

Vamos a hacer nuestras primeras pruebas con este encoder muy básico. 

Volvemos a ConfigIOCard

Lo primero es configurar las entradas en el programa ConfigIOCard... Lo que vamos a hacer.

Bueno ya sabemos que antes de todo hay que abrir la solapa VARIABLES. Tenemos que indicar ahora para que queremos usar nuestro encoder.  Pues lo utilizaremos para que nos muestre la frecuencia de la NAV1. Hechamos un vistazo a la lista de Peter Dowson, y damos con  lo que estamos buscando : es exactamente la direccion $0350.

En la columna Nombre, le daremos un nombre a la funcion de nuestro encoder, por ejemplo ROT_NAV1 (ROT significa rotativo...) La dirección es $0350, y l longitud 2.

Columna FUNCION : a algunas funciones asignadas a un encoder, se les puede dar un nombre libremente. Eso es lo que hicimos para los ejes analógicos. (TRHOTTLE_1 por ejemplo). Sin embargo, hay funciones muy corrientes de las cuales forma parte la NAV1, que necesitan un tratamiento especial. Para comprobarlo, haga clic en la columna FUNCIÓN : se desenrolla entonces una lista. Vemos NAV : hacemos clic en la  línea de explicación de esta función "permite seleccionar un VOR..." y la función NAV aparece en la casilla correspondiente de nuestra variable. Hay que acostumbrarse a buscar siempre en la lista de funciones porque el hecho de hacer clic en una función predefinida ocasiona frecuente y automáticamente cálculos internos indispensables. Así sería el caso para ALT que tiene límites, o QNH que carga una fórmula de cálculo.

Nos queda la columna "VALOR INICIAL". Aquí indicaremos que valor tendrá que mostrarse en los digitos de 7 segmentos en nuestra cabina. Ya sabemos que la frecuencia NAV inicial es 108.00. Entonces, para evitar de comenzar a 000.00 y estar mucho tiempo girando el encoder hasta llegar a 118.60 (por ejemplo) podemos escoger el valor 108.00 como valor inicial. Pero nada impide de iniciar con la frecuencia del  VOR de su aeropuerto preferido. Por ejemplo 118.60. Un comentario importante : todas las frecuencias NAV, COM etc... siempre empiezan por un 1. Entonces resulta inutil de mobilizar los recursos de las IOCards para mostrar una cifra que no va a cambiar nunca. El 1 del primer "digito" (cifra de nuestro display) va a ser fijo. Es muy facil : nada más habra que unir los  2 segmentos del digito que forman la cifra 1 en un display de 7 segmentos a la alimentación de 5 voltios.  Permanecerán siempre encendidos (ya veremos esto luego).
Partiendo de este principio, nuestro valor inicial 108.00 será 0800. ¿ Y el punto de los decimales ? Él también es un segmento fijo. Si quisieramos iniciar con la frecuencia  117.55, pues indicaríamos 1755.

Ya está todo para la pestaña VARIABLES.

 

Vamos a ver ahora la pestaña SWR/ENCODERS



Ya hemos visto a propósito del control de las luces que era posible asignar varias funciones a una misma variable. Esa particularidad,  vamos a necesitarla otra vez aquí porque el control de nuestra frecuencia NAV necesita dos encoders rotativos : uno para modificar la parte entera de las frecuencias, 108 por ejemplo, y otro para modificar la parte decimal l .55 por ejemplo. El primer encoder pues lo llamaremos ROT_NAV1_EN para las cifras enteras, y el otro DC para los decimales.

ENTRADA  INICIAL : puesto que un encoder es un grupo de interruptores, tendremos que asignarle entradas en la placa Master. Necesita tres y que sean contigüas. Un vistazo en la solapa SW-NORMAL para recordarnos que habíamos utilizado las entradas hasta la n°18. Logicamente, tendríamos que tomar las 3 siguientes. Pero es imposible. Porque la 19 forma parte de un grupo (el grupo azul en el diagrama del conector J3 que vimos mas arriba), la 20, es la masa del grupo, y la 21 se encuentra en el grupo siguiente, el marrón. Ahora bien, necesitamos 3 entradas del mismo grupo, para tener una masa comun. Dejaremos entonces la 19 e indicaremos en Entrada inicial 21. El programa deducirá él solo que como necesitamos 3 entradas, debe automáticamente  dejarnos la 21, la 22 y la 23.

En la columna VARIABLE, vemos de nuevo el nombre que hemos dado a la variable 0350, es decir ROT_NAV1.

La columna ACELERACION la descubrimos ahora. Indicaremos aquí si los giros del rotativo seran muy rapidos o no. Habra que hacer pruebas. Si vemos que al girar el rotativo rapidamente, se hace un lío el programa tendremos que aumentar la cifra para conseguir una buena rapidez de acción. Con nuestro encoder casero, no se pueden dar giros muy rápidos. Será suficiente el valor 1.  Con un encoder de tipo 32 posiciones seguramente que pondríamos 8.

La columna CTE.INC es "la incrementacion". Es decir el valor que sumaremos o restaremos a la variable asociada por cada clic que realicemos en el rotativo de nuestra NAV1.  
En el primer caso, actuaremos en la parte decimal. Incrementará de 2 en 2, por ejemplo las frecuencias COM : 121.90 luego 121.92 luego 121.94 etc... En este caso, pondríamos 2 en la columna Cte.Inc. Como en nuestro ejemplo se trata de una NAV, las frecuencias incrementarán de 5 en 5: 108.00 luego 108.05 etc... Pondremos un 5. Si fuese un transpondedor, incrementaría de... 64 en 64.
Puede ocurrir  que las frecuencias incrementen en mal sentido, que vayan disminuyendo cuando giramos el botón en el sentido de las agujas del reloj. En vez de volver a  cablear los hilos, o de modificar las entradas ConfigIocard, podemos solamente anteponerle el signo a la cifra de la incrementación y todo volverá a la normalidad.


Nuestro ejemplo nos permite actuar  en la frecuencia NAV activa pero no en una frecuencia Stand By. Para eso haría falta otra variable ($3123). Hay varios ejemplos de ficheros de  configuración interesantes en OpenCockpits.

Si nuestro encoder tiene que incrementar las partes enteras : 108 luego 109 etc... , pondremos 100 en la columna incrementación. Podremos observar que se inicializan las frecuencias en 108 puesto que pusimos 0800 en Valor Inicial, y que, por un milagro de la técnica,  se paran en 117 : si seguimos girando el botón de la parte entera, después de 117  pues mostrará 108, como debe ser. 

Por fin en la columna TIPO, indicaremos que tipo de encoder utilizamos. Si es un encoder mecánico, como el conmutador de 12 posiciones modificado, no pondremos nada.

Si es un Gray, pondremos 2

Si es un encoder de desfasage que necesita la tarjeta Rotary Encoder II, indicaremos 1.

El primer encoder gestionará la parte decimal, le llamaremos ROT_NAV_1_DC, su incrementación  será de 25 en 25, entonces  -2. Se conectarán sus salidas a las entradas 21,22 y 23.
El segundo, ROT_NAV_1_EN gestionará la parte entera, su incrementación será 100. Los hilos de este encoder irán conectados a las entradas 24 a 26, siendo el hilo común del centro unido al pin GND del grupo, el pin 30 del conector J3.

Nuestros dos encoders pueden ser separados, o concéntricos según el principio de fabricación desarrollado por Pedro Bibiloni en OpenCockpits.

Muchos aviones llevan pilotos automáticos cuyo control lo gestionan solo encoders. Muestra la información directamente el instrumento. Así es en el Beech 350, 1900D etc... En este caso, nuestros encoders sencillos serán suficientes.
Otros llevan un marcador adicional en forma de dígitos rojos o amarillos directamente en el MCP.
Tenemos ahora que tratar de lo que es la continuación lógica de los encoders : los dígitos.

 

 


 

 

 

13 - Los dígitos (displays)

 

 

Existe un surtido importante de digitos. Frecuentemente se encuentran  digitos de cifras rojas, a veces denominados "HER" que significa High Efficiency Red. Esta por ejemplo el modelo HDSP-7503 cuyas cifras miden 7,6 mm de alto y el cuerpo 12,7 mm de alto. Estas dimensiones resultan ideales para los digitos de las radios, MCP etc... Es mucho mas difícil encontrar digitos de cifras amarillas salvo en… OpenCockpits. Una buena idea que han tenido ha sido de comprarlos en gran cantidad y de proponerlos a la venta en su catalogo de productos. Estos dos tipos de displays convienen bien para los circuitos impresos para 3 y 5 digitos que podéis conseguir en OpenCockpit. 

En ambos casos, se tratan de  dígitos de cátodo comun, condición indispensable para poder utilizarlos con la placa Display II multiplexada de IOCards. Tambien tenéis que tener en cuenta, al momento de elergilos, que para poder usar los circuitos impresos de OpenCockpits, los cátodos comunes deben de estar localizados en los pines 1 y/o 6 del dígito.

A continuación el diagrama interno de un HDSP-7503 que reune las condiciones anteriores.

Como podemos verlo, cada uno de los 7 segmentos del digito es un diodo LED. La rallita señala el catodo que se debe unir al - de la alimentación. Lo otro es el anodo. Todos los catodos estan unidos entre si y van conectados a las patillas 1 y 6 del digito. Los anodos de los segmentos a, b, c, d, e, f, g van unidos a las otras patillas. 

Aquí tenemos: a= pin 10, b= 9, c=8, d=5, e=4, f=2 et g=3. Que son 7 segmentos. Ademas, esta el que va unido a la patilla 7 que se denomina dp "dot point" o "punto decimal".

Atención : la disposición de las patillas que corresponde a cada segmento puede variar en cada modelo de display. Podeis acudir a la pagina del buscador Google con la referencia del display para conseguir la información técnica y la disposición correcta de las patillas. 

Por supuesto, se da la disposición de las patillas viendo el display por encima y no del lado de las patillas.

 

 

Este diagrama de OpenCockpits nos muestra la conexión de los digitos en la placa Display :

 

Todos los segmentos "a" de todos los digitos  están unidos entre si y conectados a la patilla "a" de la regleta situada arriba a derecha. Y asi para todos los demás b, c etc... El cátodo común de cada digito va unido a uno de los pins de la regleta del lado derecho. 16 pines, es decir 16 digitos por placa Display. El conector de 40 pines va unido con un cable plano de 40 hilos al conector J 1 de la placa Master.

Las pruebas. Igual que con cualquier LED, no se pueden conectar directamente los segmentos a una fuente de alimentación de 5 voltios. Hay que colocar una resistencia de unos 330 ohmios en serie para que baje la tensión a unos 2 voltios. Sin embargo, cuando conectemos los dígitos  a la placa Display, no hara falta ninguna resistencia, puesto que la placa proporciona la tensión adecuada salvo algunos casos particulares que ya veremos.

Antes de soldar sobre el circuito impreso, podemos comprobar la disposición de los segmentos conectando el catodo comun al de una alimentación de  de 5 voltios, y sucesivamente cada uno de los hilos de anodos al + con una resistencia de 330 ohmios. Más vale comprobar los dígitos antes de soldarlos porque la verdad es que a veces algunos están defectuosos.

Tambien es util apuntar las correspondencias, por ejemplo : el segmento a al pin x, el b al pin y etc... Y lo mismo para los cátodos. Una vez los digitos soldados resulta más difícil localizarlos. Pero podemos observar que los circuitos impresos están muy bien diseñados porque se suceden los números.

 

Mostrar una frecuencia.

Los preliminares.

Como hemos definido un encoder para la frecuencia NAV1, pues lo mas logico es utilizarlo, tanto mas cuanto que este ejemplo es el mas complejo. Sería más facil, para el montaje, mostrar el rumbo con 3 cifras, sin punto decimal y sin cifra fija…

Resulta mucho más facil el  montaje de los displays si se utilizan los circuitos impresos de OpenCockpits que son de doble cara y soportan  3 ,5 o 6 digitos. Como solo cuestan unos euros no vale la pena fabricarlos. Por supuesto, van unidos entre si todos los segmentos y se conectan a una regleta de tipo HE14 de 8 pines (claro que son 8 con el punto decimal). Los cátodos van unidos a un HE14 de 3 o 5 o 6 pines.

El punto decimal permanece fijo. No tiene que gestionarlo la placa Display. Para que permanezca el punto encendido en el dígito de las unidades, hay que aislar su cátodo y unirlo al +5 voltios de la alimentación o del conector de salida J5 de la placa USB si se encuentra en los alrededores. Tendrá que hacerse la conexión mediante una resistencia de 330 ohmios. Para aislar el pin 7 (en un HDSP-7503) de los demás pines 7 de los dígitos vecinos, la única solución es cortar la pista de circuito impreso antes y después de este pin. Le hará falta una buena lupa, un buen cutter o una taladradora pequeñita con  una broca bien afilada. Después de esto, será de rigor comprobar con un ohmiómetro que ningún pin 7 esta conectado al pin 7 del dígito de las unidades.

La cifra fija : es lo mismo. En todos los casos, les frecuencias empiezan por 1. Entonces, encenderemos permanentemente los segmentos b y c del dígito de las centenas uniéndolo al +5 voltios. También hay que aislarlo de los demás dígitos. Aquí tenemos dos posibilidades : sea unimos cada uno de los segmentos con una resistencia de 330 ohmios, sea unimos los dos segmentos en serie y conectamos el que esta más alejado  de la masa al +5 voltios con una resistencia de 150 ohmios aproximadamente. Los puristas pondrán resistencias ajustables en vez de las fijas para poder ajustarlas con la misma intensidad luminosa que los otros dígitos.

El - 5 voltios será el pin 1 o 6, común con los otros segmentos.

Soldar en el circuito impreso es sencillo, la única precaución que debemos tomar es de comprobar que los puntos decimales se encuentren todos abajo a derecha.

 La programación.

Ejecutamos ahora ConfigIOCard.

Ya hemos definido la VARIABLE de la NAV1, $0350, pero va asociada a encoders rotativos. Vamos a definir de nuevo esta  variable $0350, dándole una especificad, es decir que nos muestre información : la llamaremos DIS_NAV_1 (Display).

Vamos a abrir ahora la página DISPLAYS 7S:
- en la columna NOMBRE, pondremos el nombre que le queremos dar a nuestro display, por ejemplo D_NAV_1
- la columna 1er DGTO es importante. Ya sabemos que la placa Display II puede controlar hasta 16 dígitos, cada uno teniendo su cátodo común conectado al conector 16 pines en el lado derecho de la placa.  El que se encuentra abajo del todo corresponde al primer dígito que es... el número 0. El decimosexto arriba del todo pues es entonces el  n°15. Pondremos en 1er DGTO el n° que corresponde al primer dígito de cada display. Así, nuestro display de 5 dígitos irá conectado a las salidas 0 a 4.  Pondremos 0 en  la columna. Cuando queramos conectar el segundo display pues entonces el primer dígito será el n°5, y si lleva 3 dígitos se conectará a las salidas 5, 6 y 7, y así sucesivamente.

Atención : Resulta que la placa Display gestiona en primer lugar las cifras menos significativas, es decir las que se encuentran más a la derecha. Si tomamos por ejemplo el rumbo, que lleva un  digito para las centenas, uno para las decenas y uno para las unidades, la "primera cifra" para la placa Display es la de las unidades, que entonces se conectará a la salida 0, luego las decenas a la salida 1 y las centenas  a la 2. Empezamos entonces siempre por el final. En el caso contrario, en vez de mostrar el rumbo 349 mostraría  943. Igualmente, mostraría 570.11 una frecuencia NAV en vez de 110.75.


- en la columna VARIABLE, ponemos de nuevo el nombre de nuestra variable DIS_NAV_1,
- en la columna CIFRAS, informaremos cuantas cifras o dígitos compondrán al display del rumbo. En este caso 4 puesto que el primero es fijo.
- en la columna OPCIONES, no pondremos nada. En esta columna podemos encontrar a veces la opción N que ponemos cuando queremos que un display provisionalmente desactivado recobre el último valor que mostraba. Es como una memoria. Resulta útil, por ejemplo,  cuando un display puede mostrar varios valores, como el display IAS / Mach. Sin la opción N, cuando volvemos a utilizar un display, nos muestra su valor inicial, y no el último valor observado.

Así podremos observar la página DISPLAYS 7-S de Config Iocards :

 

Un circuito montado quedará así :

 

 

Nada más nos queda conectar los hilos y admirar el resultado de nuestro labor : 

No es que sea estupenda la fotografía pero se puede observar que el  1 (fijo) es más luminoso que los otros segmentos. Esto es normal puesto que va alimentado permanentemente mientras que los otros dígitos  los muestra la placa Displays uno después del otro. Para que resulte más bonito, podemos alimentar los dígitos del 1 fijo mediante una resistencia de valor más alto, preferentemente, si tenemos sitio, un potenciómetro. Además, se recomienda añadir esta resistencia para que dure más este dígito. 

Sea lo que sea,  girar un encoder y ver cambiar una frecuencia en "su" display es algo mágico… 

 

 

 

 


 

 

 

14 - Conclusión provisional

 

Con esto hemos visto lo esencial de las IOCards.

Puesto que fui escribiendo estos apuntes a medida que iba experimentando este proyecto, mi conclusión personal es que una persona como yo que no entendía absolutamente nada de programación de las IOCards puede salir de apuros sin gran dificultad. Claro que sin la ayuda de unos amigos con más experiencia las cosas hubiesen resultado más complicadas para mí y mucho mas largas. Toda la documentación de IOCards  que salio al principio tiene el mérito de existir pero, a lo largo, se ha ido volviendo obsoleta. En mi opinión es demasiado generalista y no lleva bastantes ejemplos concretos. Espero que puedan ser estos apuntes una ayuda para todos aquellos constructores que decidirán elegir IOCards.

Con las IOCards se pueden hacer muchas más cosas que las que hemos tratado en este tutorial. Como se trataba aquí de los primeros pasos, hemos dejado de lado cosas muy interesantes tales como el control de servos, de motores paso a paso, de displays LCD. No he mentado la utilización del Controlador para comprobar los displays, ni las variables "Libres" que podemos asignar como guste, ni tampoco de las funciones que permiten parar un display o un encoder cuando otro tiene que tomar el relevo, ni de las frecuencias en stand-by que se pueden transformar en activas, ni tampoco de muchas más cosas que pueden resultar muy útiles. Pero cuando uno ha entendido las bases, no es difícil de seguir mas adelante. Tampoco he hablado del protocolo SIOC, que es otro medio de poner en relación IOCard y Flight Simulator. El SIOC es más orientado a  "programadores" y es capaz de funciones lógicas inéditas.

Las placas IOCards, sin dejar de lado el emulador de teclado USBKeys que desde mi punto de vista es imprescindible, permiten  de gestionar todas las funciones de una cabina. Son a la vez fiables y de una robustez notable. Son capaces de encajar sin daños todas les errores de programación.

Cuando uno se da cuenta de que Iocards son un proyecto freeware, lo menos que podemos hacer es agradecer muchisimo a Manuel Vélez el haber puesto a nuestra disposición esta herramienta. 

 

 
Por Claude Kieffer