sábado, 28 de diciembre de 2013

Jeppesen FS-200 - Esquema Electrico (rev2)

Esta entrada aun esta incompleta, a medida que vaya sacando el esquema electrico, la ire actualizando, el esquema lo estoy haciendo con eagle, si alguien quiere los archivos antes de que los acabe, que me los pida.

Este esquema electrico me ayudara en el caso de que no consiga descifrar el protocolo de comunicaciones, y opte por la opcion de sustituir le motorola 68HC705 por otro, o por un arduino (un mega probablemente).

El esquema esta completo, aunque no tiene valores las resistencias, y algun componente no tiene el tamaño correcto.

Como referencia, pongo también una imagen de la disposición de los componentes, no es correcta del todo, pero ayuda a identificar algunos componentes que en la placa original no tienen serigrafia visible:


viernes, 27 de diciembre de 2013

Jeppesen FS-200 - Ingenieria inversa al protocolo de comunicaciones

Lo primero que hacemos es mirar el datasheet del microcontrolador, lo que nos dará una idea de que velocidades puede utilizar con el cristal de 4Mhz. de la tabla se deduce que las velocidades que permite el microcontrolador que se ajustan al estandar RS-232, van de 75 a 9600 bps. ya que el resto difieren demasiado.
Con el programa realterm compruebo que a la velocidad de 9600 8-N-1, obtengo datos por el puerto serie, mientras que en le resto de velocidades, no obtengo nada o el programa me informa de errores (incluso si pruebo velocidades fuera del rango 75-9600).

Lo que obtengo es el byte 0x85 unas 350 veces por segundo. independientemente de la posicion que tengan los pulsadores y encoders.
He probado a enviarle 1 byte a ver si obtenia algun tipo de respuesta y nada.

Tengo pendiente crearme un programa en freebasic, que envie varios bytes seguidos, y me indique si con alguno obtengo una respuesta.

Como no tengo el programa original, no se si el chip require unos datos expeciales de inicializacion (el microcontrolador permite un bootloader y ejecutar desde ram, aunque me extraña que usasen esta opcion)

El panel permite ser utilizado sin pedales, pero se supone que require el Joke, asi que lo que estoy viendo podria ser un codigo de error indicando una mala conexion, tengo que hacerme con un joystick analogico de PC para comprobar este punto.
 
Pero si no es eso, estoy en un callejon sin salida, y habra que probar el plan B, sacar todo el circuito y conectarlo a un arduino mega que tengo en camino.

Ire actualizando esta entrada a medida que consiga mas datos.

martes, 24 de diciembre de 2013

Jeppesen FS-200 - Descripcion Interior

Continuamos la descripcion del panel, esta vez mirando entre las tripas:
Si abrimos el panel, nos encontramos que esta vacio al 99%, unicamente tiene una placa de circuito impreso sobre la que van montados todos los elementos, y una conexion de la pantalla del cable a la tierra del panel.

Sorprende que no hayan incorporado la fuente de alimentacion en el interior del panel.

Una vez desmontados los enbellecedores de los encoders y potenciometros, quitamos el conector del cable, y los 5 tornillos que sujetan la PCB al frontal y nos encontramos:
En la parte de abajo del PCB se puede observar el logo de MDM, las fechas 1991-1993 y el texto "MADE IN USA" (en la caja pone Made in Mexico) lo que me sugiere que es la misma placa que el FS-100 sin apenas modificacion.

El cableado 

El unico cable del equipo acaba en un conector en el borde de la placa de circuito impreso, las conexiones que tiene son:
 1- Violeta, no utilizado (en la PCB esta conectado a la tierra)
 2- Naranja, al DB9 patilla 2 - Envio de datos a RX en el ordenador
 3- Rojo, al DB9 patilla 3 - Recepcion de datos de TX desde el ordenador
 4- Rosa, al DB15 patilla 11 - Eje X del 2º Joystick (habitualmente el Rudder o pedales)
 5- Amarillo, al DB15 patilla 3 - Eje X del 1º Joystick (para el joke, profundidad)
 6- Verde, al DB15 patilla 6 - Eje Y del 1º Joystick (para el joke, alabeo)
 7- Azul, al DB9 patilla 5, y al DB15, patillas 1,4,5 y 9, en la PCB se une a la patilla 8, es masa o 0V
 8- Marron, al mini-din 3, patilla de 0V (-RTN en la pegatina)
 9- No conectado
10- Gris, al mini-din 3, patilla de +9V
11- Blanco, al DB15 patilla 2 - Boton 1 del 1º Joystick
12- Negro, al DB15 patilla 7 - Boton 2 del 1º Joystick

En el conector de alimentacion, la patilla central, que deberia ser tierra, no esta conectada a nada, en cambio, lo que si estan son las tres carcasas metalicas de los tres conectores, que van conectados a la pantalla del cable, y llevados por medio de un tornillo a la tierra de la caja, curiosamente el mismo sitio al que la PCB conecta el cable violeta que no se utiliza.

La conexion al puerto serie es la tipica de 2 hilos mas masa.

En el conector de joystick, vemos que hace una cosa rara, pues cortocircuita las patillas de 5V (la 1 y la 9) con las de 0V (la 4 y la 5) aunque esto no deberia suponer ningun problema o incompatibilidad.
Ademas solo tiene 3 ejes analogicos cableados y solo 2 botones.
Eso significa que esta pensado para utilizar con los pedales de thurstmaster, que no tenian frenos diferenciales, y con la version sencilla del CH virtual pilot, que no tenia mando de gases, y solo dos botones.
Los 2 ejes adicionales del CH Virtual Pilot dejan de funcionar, y lo mismo si intentamos montar cualquier otro tipo de pedales que tenga frenos diferenciales, o jokes con mas botones, o joysticks POV.
Una decision de diseño realmente sorprendente, pues como otro dia explicare, era perfectamente posible haber llevado los 4 ejes y los 4 botones (o 16 o 8 + 2 POV) sin ninguna modificion hardware.

El porque de estas limitaciones, junto a la falta de otros elementos basicos para un panel que permitirian hacer un vuelo completo sin tocar el teclado, supongo que viene dada por la funcion del aparato, que es entrenamiento para IFR exclusivamente, cosas como el taxi o el arrancar el avion, la gestion del combustible, no importan, al fin y al cabo son las mismas que para VFR.

Los componentes electronicos

El corazon de este panel es un microcontrolador de la familia Motorola, un MC68HC705C8A al que han puesto poco interes en borrar las marcas (pero lo han intentado) este integrado tiene 8Kb de EPROM (OTP por que no tiene ventana para borrar) 300bytes de RAM, y la posibilidad de utilizar hasta 24 patillas como Entradas o salidas y 7 mas como salidas, asi como un modulo de comunicaciones serie, asumo que el codigo interno esta protegido. Tiene un cristal de cuarzo de 4Mhz.

Junto a el hay un chip ICL7660 que es un regulador de tension negativa, supongo que se utilizara para los -12V del puerto serie.

Despues nos encontramos con un convertidor A/D de 8 canales y con una resolucion de hasta 10bits, CDP68HC68A2E que se utilizara sin duda para los 3 canales analogicos del conector de joystick y los 3 internos de los 3 potenciomentros. (luego quedan 2 libres que se podian haber utilizado, p.e. para el 4º canal del joystick).
Encontramos tambien 2 chips KA324A con un total de 8 amplificadores operacionales, que seran usados tambien por la parte analogica.

Un integrado 74HTC138 que actua como decodificador de 3a8, junto con 6 integrados tipo 74HTC373, buffer triestados, serviran, para utilizando solo 12 patillas del microcontrolador, leer los 7 encoder y hasta un total de 48 pulsadores. (asumiento que los encoders. rockets y flaps utilizan 2, 20 patillas, mas 22 pulsadores, el mando de gear, los dos botones del joystick, salen 45, quedando libres 3 entradas, que podian haber utilizado para los 2 botones adicionales del joystick)
Todos los pulsadores tienen una patilla a masa, y la otra a una resistencia pullup (encapsuladas en grupos de 8 resistencias con un lado comun).
Este sistema, mas complicado pero que evita los efectos de ghosting tipicos de los teclados y otros elementos que utilizan matrices para su conexion.
Para completar estos integrados 8 resistencias en un encapsulado SIL, se encargan de hacer de Pull-up de cada entrada.
Otras dos encapsulados de resistencias estan asociados a la parte analogica, probablemente a los amplificadores operacionales.

Los encoder son de tipo cuadratura, utilizan 2 bits de los buffer triestados, y tienen unos condensadores puestos entre sus 2 patillas y masa, para reducir los rebotes del encoder.
Ademas, 4 chips tipo 4013 (MC14013B, con 2 basculas tipo D) estan asociados a los encoder, supongo que con algun tipo de sistema de interrupciones para realizar correctamente la deteccion del giro.
Cabe suponer que para los botones no se utilizan interrupciones y el microcontrolador esta realizando pooling constantemente a estas entradas.

Para la adaptacion de los niveles TTL del controlador a los niveles del puerto RS232 se utilizan una serie de resistencias, diodos y transistores de los que mas adelante sacare su esquema electrico.

Existen ademas varios chips de los que aun no he determinado su utilidad, entre ellos un CD4068BE
Tampoco esta claro de donde se consiguen los +5V estabilizados para los chips TTL, etc...

Los componentes electromecanicos

Los pulsadores se distinguen de los interruptores en que el eje que soporta el boton es de color blanco en los pulsadores y azul en los de 2 posiciones.
Estos parecen ser los del fabricante C&K, de la serie PVA, teniendo las referencias:
PVA1-OA-H?-?.?N-NONE-V2 para el pulsador
PVA1-EE-H?-?.?N-NONE-V2 para los interruptores
PE-WH para los embellecedores de plastico de los botones
Aunque estos pulsadores cuentan con 2 circuitos, solo se utiliza uno, quedando las otras dos patillas libres para cualquier uso.

En los pulsadores viene marcado el nº de lote, y el año de fabricacion, asi que mi panel es o del año 96 o posterior.

Los interruptores, son tambien de la marca C&K, probablemente de la serie 7000, algun modelo Vxx, pues tienen un chapita para soldar al PCB y dar mayor resistencia mecanica, con el acesorio J90/J91 en el caso de los flaps y gear, y J3/J37 en el caso de los trim y piloto automatico.
 
Los encoders son de la marca Bourns, probablemente de la familia ECW1J
Lo unico destacable es el sistema utilizado para el encoder doble, que mediante 2 engranajes iguales, separa cada mando a un encoder diferente.
En mi panel, el mando "gordo" no funcionaba, resulta que el engranaje va pegado al eje de giro con pegamento epoxico, y en mi caso se habia despegado, un poco de loctite y arreglado.

En una proxima entrega empezaremos intentaremos sacar el esquema electrico y tener mas detalles sobre su funcionamiento.

lunes, 23 de diciembre de 2013

Jeppesen FS-200 - Descripcion Exterior

El panel

 El panel es completamente metalico, tiene unas medidas de 28.5x19.5x21.5cm, cuatro patas de goma en la parte de abajo, y un unico cable asomando por la parte de atras.
En el frontal estan los mandos, no tiene ninguna luz o indicacion, y unicamente, se ve casi de casualidad, en la ranura que queda entre el mando de las ruedas y el panel, un led de color rojo que indica que la alimentacion esta conectada. (en la foto junto al texto de UP)

Tiene un total de 5 mandos rotativos simples, y un mando doble, todos a encoders (giran sin fin).
Tiene 3 potenciometros deslizantes para las funciones de Gas, Paso y Mezcla de combustible.
Tiene una palanca de 2 posiciones para las Ruedas, y una de 3 posiciones (normal, despeguar, aterrizar) para los Flaps.
Tiene 2 pulsadores dobles (interruptores tipo rocket momentaneos) uno para el trim y otro para la altura del piloto automatico.
El resto se divide entre pulsadores (momentaneos) y pulsadores de interruptor(2 posiciones) en estos ultimos la diferencia es de apenas unos mm. entre cuando estan activados y cuando no.

El cable

 En el diseño del panel han optado por una solucion limpia pero poco practica para mi gusto, en lugar de tener conectores para el puerto serie, el del joke (y pedales) y la fuente de alimentacion, tiene un solo cable, bastante largo (aprox. 3m) que hacia la mitad se divide en tres, el cable serie de 9 pines, el cable para la conexion del Joke y pedales, y la hembra mini-din para la fuente de alimentacion.

La fuente de alimentacion

La fuente de alimentacion que me vino no era la original, al menos no era igual a la otra que vi por internet (traia el logo de MDM) supongo que es por que la mia es de 220V 50Hz.

Tiene un conector mini-din de tres patillas, positivo, negativo y tierra, como mi trafo tiene enchufe europeo sin tierra, esta ultima esta sin conectar, asi como la carcasa del conector.
La fuente de alimentacion es de 9V DC, sin regular (en vacio da 12V) y de 0,2A (0,1 en la version americana) un valor pequeño, ya que el panel apenas tiene grandes consumidores mas alla del led escondido.
Cumpliendo con los requisitos de FCC cerca del transformador hay dos ferritas dentro de un tubo termoretractil, curiosamente no cumple lo de que el cable tienen que ser apantallado.

Jeppesen FS-200 - Haciendo de arqueologo por internet

En internet hay realmente poca informacion acerca de este panel, hay que tener en cuenta que en la epoca que se vendian, internet estaba empezando.
Hay un documento escrito por un piloto y formador profesional acerca de la falta de soporte por parte de jeppesen, el documento original esta perdido, pero en las webs recopilatorias de pdfs esta disponible,   de este documento se sacan dos cosas, un esquema del conexionado, y la pegatina del transformador, donde se indica el patillaje, y que contiene el logo "MDM"
Hay un par de foros, donde la gente modifica ampliamente el panel para usarlo con el flight simulator, ahora solo encuentro una:
- http://www.flightsim.com/vbfs/showthread.php?181630-Making-an-old-Jeppesen-FS-200-Panel-usable-for-FS2004
Como hay disponible una copia de casi toda internet en cualquier fecha pasada, es posible ver la web de jeppesen en el año 96, donde vemos que la venden por 700$
https://web.archive.org/web/20010418040537/http://www.jeppesen.com/prodserv/flitepro/equipment.phtml
En este pdf, vemos un anuncio donde es un poco mas caro:
http://ww1.jeppesen.com/download/aopa/sep-aopa.pdf

 
y desde alli podemos bajarnos el manual de instrucciones de Flite Pro, donde entre otras cosas describen las conexiones del panel:
 https://web.archive.org/web/20010418040109/http://www.jeppesen.com/prodserv/flitepro/download.phtml
 https://web.archive.org/web/20010418040109/http://www.jeppesen.com/download/fliteprohelp.pdf


En las FAQ, informan ademas de que pulsando las teclas de ACT<->STBY del NAV1 y ADF es posible resetear el panel.

Lamentablemente no he podido conseguir el archivo con la demo del FLITE 6.0, que seguramente me hubiera permitido comprobar el correcto funcionamiento del panel.
Si investigamos en la web de FCC acerca de su codigo de homologacion, encontramos poca informacion,  principalmente que es un acesorio de ordenador, y que esta fabricada por una empresa llamada MDM.

https://apps.fcc.gov/eas/GetEas731Report.do?applicationId=79336&fcc_id=JWJM2JDBM1C
Su certificado FCC:
https://apps.fcc.gov/oetcf/eas/reports/Eas731GrantForm.cfm?mode=COPY&RequestTimeout=500&application_id=79336&fcc_id=JWJM2JDBM1C
Buscando informacion de esta empresa, aqui:
http://www.trademarkia.com/mdm-74175438.html
Vemos que el logotipo que tenian es el mismo que aparece en la fuente de alimentacion.
Investigando la relacion entre Jeppesen y MDM, resulta que en esas fechas, Jeppesen compro a una pequeña empresa llamada MDM que se dedicaba a la realizacion de paneles de simulador
http://www.aopa.org/News-and-Video/All-News/1995/September/1/Pilot-Briefing-%283%29.aspx
, y buscando informacion sobre MDM, lo unico que encontramos es que fabricaba un panel llamado FS-100, que es virtualmente identico al FS-200 en los mandos, aunque montado en una caja de madera.
Hasta tal punto es el mismo, que su codigo de aprobacion FCC es el mismo.

Aqui una pequeña descripcion:
http://www.aopa.org/News-and-Video/All-News/1993/November/1/Computers-in-Aviation
En este documento:
http://www.gpo.gov/fdsys/pkg/GAOREPORTS-RCED-99-143/html/GAOREPORTS-RCED-99-143.htm
Discuten acerca de este informe:
http://www.aviation.illinois.edu/avimain/papers/research/pub_pdfs/techreports/99-06.pdf
Que describe las ventajas de utilizar un PC ( con un panel FS-100) para el entrenamiento de pilotos
Y esta es toda la informacion que he podido encontrar en internet sobre este panel.

domingo, 22 de diciembre de 2013

Ya (casi) tengo un simulador Aprobado FAA - el Panel Jeppesen FS-200

Desde hace mucho tiempo llevo siguiendo este panel, en internet hay muy poca informacion sobre el, pero me parecio interesante, asi que tras casi un año de estar atento a ebay, por fin encontre uno a un precio asequible (45€ con envio a españa).
Cuando me llego, ¡Sorpresa!, es pequeño, no, es enano, mi idea era integrarlo con el simulador de C-172 que estoy haciendo, y no sabia si seria demasiado grande, pero que va, si lo pienso un poco, todas las fotos que vi eran de cuando los monitores eran de 14", y claro frente al de 21" que tengo ahora, parece un juguete.

La segunda sorpresa fue, que no tiene certificacion FAA, tras investigar un poco, resulta que solo el panel FS-200AC junto a los pedales de PFC y el Yoke de PFC puede tener certificacion FAA, pero el FS-200 que el el "Basic Panel" no la tiene.
El par de menciones que hay en internet sobre el, se dedican a "canibalizarlo" y convertirlo en un mero teclado o joystick usb, mi idea es investigar un poco en como esta construido, y crear algo que permita usarlo con FS X y con X-Plane, Pero quiero hacer algo "no-destructivo", mi primera opcion es un programa en python que lea los datos serie y los pase al servidor IOCP, como hice con el arduino, otra opcion es instalar un arduino dentro del panel.
Con el tiempo, pretendo escribir una serie de articulos describiendo mis investigaciones con este peculiar aparato.

viernes, 15 de marzo de 2013

Seguimos con los Coches.

Aparentemente esta entrada es casi identica a la anterior, pero por dentro tiene mucha mas miga.

Existe un software para simuladores (aviones o coches) disponible en www.x-sim.de y mientras lo investigaba para un futuro simulador con movimiento, descubri que tambien permite realizar paneles de instrumentos, sobre todo orientado a los simuladores de coches, asi que decidi actualizar el display.

Este software tiene varias ventajas, por un lado puede utilizarse con varios simuladores, simplemente configurando el perfil adecuado, por otro, tiene un modulo de comunicacion serie, por lo que eliminamos varias capas intermedias, recordemos que antes teniamos:
simulador->servidor iocp->SIOC->script en python->arduino 
y ahora se reduce a:
simulador->software x-sim->arduino

Desde aqui podeis bajaros el programa para arduino:
https://www.dropbox.com/s/nwc9pek3ynyj2qw/xsim_rpm5.ino

Esta ampliamente inspirado en el que aparece en este post: http://www.x-sim.de/forum/viewtopic.php?f=40&t=155

Tiene dos mejoras, por un lado la gestion de las RPM maximas y minimas, y por otro lado tiene una conexion serie mas fiable, que soporta sin problemas interrupciones y desconexiones del puerto serie.

Funcionamiento:

En el display numerico aparecen:
Indicador de Bandera (no funciona, deberia aparecer cuando hay bandera amarilla, pero el xsim no lo exporta).
La marcha actual.
La velocidad en km/h.

Los led se encienden progresivamente y se ponen todos rojos con brillo al alcanzar las maximas rpm, el valor de minimas rpm (cuando se enciende el primer led) y maximas (cuando se ponen en rojo) es configurable con los botones, este es su funcionamiento:
  • Boton 1 - Establece el modo F1, rpm minimas = 5000, rpm maximas = 18500
  • Boton 2 - Establece el modo GT, rpm minimas = 0, rpm maximas = 9000
  • Boton 3 - Recupera de la eeprom los valores de rpm personalizados (modo CU).
  • Boton 4 - Guarda en la eeprom los valores de rpm personalizados, al arrancar el arduino lee esto valores y los utiliza, asi para que siempre arranque en modo F1 pulsamos el boton 1, luego el 4 y confirmamos que queremos guardarlos pulsando otra vez el 1.
  • Boton 5 - decrementa el valor de rpm minimas
  • Boton 6 - incrementa el valor de rpm minimas
  • Boton 7 - decrementa el valor de rpm maximas
  • Boton 8 - incrementa el valor de rpm maximas

 Ademas de la parte visible del programa, las salidas 5 y 6 estan configuradas como servos de modelismo, de cara a experimentar con la simulacion de movimiento de 2DOF.

Configuracion de x-sim.de

El archivo de configuracion se puede bajar de aqui:
https://www.dropbox.com/s/ldc191rbhn2glzn/display.rn2

Basicamente el truco esta en configurar adecuadamente la parte matematica, asi como para el valor de velocidad y rpm utilizamos 16bits y un valor siempre positivo, hay que poner el valor maximo de esa señal en 65535, y ajustar el offset a la izquierda del todo.
Para las marchas, utilizamos 8bits, y el valor puede ser negativo, asi que ajustamos a un valor maximo de 128, simetrico, y el offset lo dejamos a 0.

La cadena que envia, usando el modulo SIO, cada 20ms, (puede ser menos), seria:
R~01~~04~S~02~G~03~~05~~06~~07~
Siendo 01 las RPM, 02 la velocidad, 03 la marcha, 04 la bandera, 05 reservado para un futuro force feedback del pedal de freno (8bits), y 06 y 07 (8bits) las posiciones de los 2 servos para la simulacion de movimiento de la cabina.

Como veis, tiene alguna cosa añadida que no esta un implementada, pero para tener un display delante del volante esta perfecto

EDITADO: Nueva version del software, los led funcionan diferente segun sea F1 o GT. Aqui: https://www.dropbox.com/s/uwkqgulp2bohj7a/xsim_rpm6.ino