sábado, 29 de agosto de 2015

Jeppesen FS-200 - ¿Version 2?

Curioseando por internet he encontrado en ebay a la venta un panel FS-200 ¡CON SU SOFTWARE!,
Espero que el comprador se acuerde de mi.
Rápidamente me ha llamado la atención la foto, tenia "algo diferente".


Si lo comparamos con las fotos que puse aqui antes:


Vemos que tiene pequeños cambios estéticos, en general me gusta mas, los "cuadrados negros" tienen mas sentido, y ha mejorado la legibilidad de algun cartel, y una importante funcionalidad añadida:
Pulsando a la vez dos de las tres teclas de debajo de los encoders de frecuencia, podemos usarlo para cambiar la radio y el transpondedor.

Unos pequeños cambios en el script de SIOC, que puedes descargar de este enlace, y ya tenemos la nueva funcionalidad.

He aprovechado ademas para hacer un poco de limpieza del script, limitando a un solo bloque de números las variables, para hacerlo "mas compatible" con otros añadidos, y simplificado un poco algunas programaciones, para que sea mas facil leerlo y modificarlo.
Ademas de cambiar la frecuencia de COM1 pulsando NAV1 y NAV2 a la vez, y la del transponder pulsando NAV2 y ADF a la vez, he asignado el boton de ADF ACTV-STBY al COM1, ya que en el fsx no hay frecuencia del adf en standby.

viernes, 28 de agosto de 2015

Jeppesen FS-200 - PLAN C - Funcionando completo con FSX,

Lo de plan C es por que el plan B no funciono, mi idea era sustituir únicamente el microcontrolador sin modificar físicamente el equipo, finalmente tuve que realizar 3 soldaduras (bueno, alguna mas, pero es que algunos componentes ya son demasiado viejos).

Al final del articulo pongo las conexiones entre el arduino y los componentes:

La alternativa a sido utilizar un arduino mega, y mediante un cable plano y este conector de la marca Kobicomm, referenci151-2P40-E , sustituir al microcontrolador (cuando yo lo pedi aun no estaba descatalogado y los vendian de uno en uno, una alternativa seria el Harting 09 17 040 9622 y siempre se pueden soldar los 30 cables por la parte de atras de la pcb.


Detalle del montaje y conexión al arduino mega.

Detalle de como plegar los cables para poder montar la placa de nuevo.

Como mas adelante se vera, he eliminado completamente el cable y la fuente de alimentacion, ahora solo necesita un usb. si teníais el joke y pedales, necesitareis otra manera de conectarlos al pc, los convertidores de Joy analógico de 15pines a usb son bastante asequibles de todas formas.
Separadores de nylon, con pegamento de contacto, seguro y fácilmente quitable sin dejar rastro.


Vista de todo montado, se observa los cables de las analogicas, y que tuve que limar el conector usb para que pasase por el agujero de la caja.

Una vez cableado todo, me dispuse a programar el arduino, primero los interruptores, que no dieron ningún problema.

Luego los encoders, no tengo claro como funcionan (hay 3 registros de 8 bits para los encoders, el que genera la interrupción, y las patillas A y B de cada encoder, si bien todos los registros se leen correctamente desde arduino por pooling, cuando se genera la interrupción, el puerto B siempre se lee como 0xFF) en cualquier caso, los encoders funcionan, al menos en el 97% de las veces, (de vez en cuando leo algun encoder al revés).

Por simplificar utilice la patilla de interrupción 2, no queda tan compacto, pero me simplifica la programación.

Lo que no conseguí, fue comunicar con el chip ADC, realmente no tengo mucha experiencia en comunicaciones SPI, pero el analizador logico me decia que todo era correcto, no descarto que mi equipo tenga el chip mal.

Asi que toco el plan C, cablee las entradas del ADC directamente a las patillas analógicas del arduino, no es que me haga mucha gracia gastar patillas, y ademas tengo un ruido muy muy alto en la conversión, de los 10 bits de resolución, he tenido que descartar los 4 inferiores, y aplicar un filtro, y aun asi baila un poco.
Probablemente debería cambiar los condensadores y los potenciometros, apantallar los cables. pero bueno, para la demo era suficiente la resolución que obtuve.

El programa que corre en el arduino es bastante sencillo, cuando encuentra un cambio en algun mando, lo publica por el puerto serie, utilizando el protocolo IOCP.

Por ahora es unidireccional, pero en el futuro me gustaría al menos añadir varios paneles LCD, a través del bus I2C, para poder mostrar la información de radios, AP, etc...

Mi antiguo programa en python hace de enlace entre el puerto serie y el programa SIOC

Y la programación del SIOC hace el resto, poco que destacar, quizá la parte de programación de los encoders, que SIOC solo esta pensado para utilizar con encoders conectados a las placas opencockpits,

Hay una parte que no me ha gustado como quedo, los botones de cambiar la altura del AP, y el cursor de HDG del AP no he encontrado la manera de pasarselos al FSX, por lo que he tenido que recurrir a un truco, en lo unico que se nota es que ese encoder va un poco mas lento que los demás.

Hay varios botones que han quedado sin utilizar, pero es que no se muy bien para que usarlos, en términos generales el concepto es el mismo que para el resto de los botones, estoy abierto a ideas sobre como usarlos.

Otro día publicare el código SIOC para el X-Plane.

Ahora los enlaces a los programas:
Descargar Codigo para Arduino
Descargar Codigo para SIOC
Descargar el programa Arduino2iocp en python

Y el video de rigor de su funcionamiento:


Y ahora las conexiones que utilice entre el arduino y la placa:

Arduino -> Zocalo de 40 pines del MC68HC705C8A
 2  ->  2
30  ->  4
31  ->  5
32  ->  6
33  ->  7
34  ->  8
35  ->  9
36  ->  10
37  ->  11
22  ->  12
23  ->  13
24  ->  14
25  ->  15
26  ->  16
27  ->  17
28  ->  18
29  ->  19
GND ->  20
48  ->  23
49  ->  24
47  ->  25
39  ->  26
40  ->  27
41  ->  28
50  ->  31
51  ->  32
52  ->  33
VCC ->  40

Arduino -> Patillas del chip CDP68HC68A2E
 A8 -> 11
 A9 -> 12
A10 -> 13

Una explicacion rapida:

Conectamos masa y positivo a sus respectivas patillas, arduino inyecta el voltaje desde aqui, y no hace falta fuente de alimentacion.
Unimos la patilla 2 del chip a la 2 de arduino, es la señal de interrupcion de los encoders.
El puerto B del chip lo conecto al puerto A del arduino (estado de la interrupcion de los encoders).
El puerto A del chip lo conecto al puerto C del arduino (datos desde el multiplexor de los botones)
Los cuatro bits inferiores del puerto C del chip los conecto a PG0-PG3 y PL2 para gestion del multiplexor.
PC4 se controla desde PL0 para resetear el registro de interrupciones.
PL1 del arduino va conectada al SS del chip ADC.
MISO, MOSI, y SCK se conectan al chip ADC para gestionar la comunicacion SPI
Y como no funciono conecte las entradas A8,A9 y A10 a las patillas 11,12 y 13, salida de los op-amp y entradas del ADC a las entradas analogicas de arduino.

sábado, 22 de agosto de 2015

Horizonte Artificial con 2 servos.

Despues de Casi 5 años rodando por encima de mi mesa, este verano me he decidido a terminar, al menos el prototipo de horizonte artificial para el panel del avion.

Este horizonte utiliza dos servos de modelismo de 9gr. y la idea es conectarlo a una tarjeta de servos de opencockpits.

Esta muy limitado, aproximadamente a 45º en cada dirección, pero tampoco vamos a hacer acrobacias con una cessna...

El aspecto es un poco cutre, pero al fin y al cabo son 2 servos (6€) un monton de palitos,1 hoja impresa y un monton de silicona caliente, no hay que olvidar que es un prototipo, espero para navidades tener una version buena, con el tamaño adecuado, que parezca de verdad, etc, etc...

Os dejo un par de fotos del despiece, el archivo en formato sketchup por si quereis trasetear y un pequeño video.

Otro dia ya pondre el script que hay que utilizar en SIOC para controlarlo.






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.