lunes, 8 de enero de 2018

Altimetro, FS2Link y enlaces...

Sin un orden concreto sigo paso a paso dando forma a la cabina, una foto del estado actual (para poder enseñar a los amigos 😋)



En esta ocasión he añadido el altímetro, impreso en 3D, y ademas a diferencia del indicador de velocidad o el horizonte artificial, es totalmente funcional.
La única pega que le puedo poner... que es un poco lento.


Los archivos para poder imprimir uno vosotros mismos, estan en mi thingiverse, como es habitual:
https://www.thingiverse.com/thing:2473812

Este instrumento es un pelin mas complicado que los anteriores:
Por un lado, al llevar 3 agujas, tiene 3 ejes concentricos, los he echo de metal, un eje de 3mm sacado de un CD-Rom viejo, y dos tubos de 4 y 5mm de latón que encajaban como un guante.

Otra de las partes delicadas es la detección de 0 pies, lleva un interruptor optoelectronico (un diodo y un photo-diodo, sacados de un viejo ratón) le indican al arduino que las tres agujas están en la posicion de 0, al arrancar la aguja, el arduino busca esa posicion, y a partir de ahi el arduino lleva la cuenta de las ordenes que le da al motor y la posicion actual de las agujas.

El montaje no es precisamente trivial, en las siguientes fotos se ve como pego estos dos componentes a las piezas impresas, es conveniente tenerlo todo montado, volverlo a desmontar y ponerlas, con cuidado de no mover de sitio ningún engranaje.



Utilizo motores 24BJY, son unos motores paso a paso bastante cutres (tienen un paso de 5,7º frente a los 1.8 normales) con una desmultiplicadora, se suponía que de 1:16, aunque calculo que es de 1:512,  total que tienen 2048 pasos, 4096 si usamos medios-pasos para que sea un movimiento mas suave.

Ha resultado bastante estables y no tienen holgura.

Tengo pendientes de probar los motores 28BJY, igual de baratos, pero se supone que tienen una reductora 1:64, y un total de 512 semipasos por revolucion, lo que deberia acelerar x8 el movimiento, el inconveniente, son mas grandes y complican los diseños.

Mas o menos tardan en dar una vuelta 4 segundos, es un poco justo, pero para un cessna o algo así, no hay problema. (subiendo a toda leche, e.d. 2000 f/min, una revolución serian 30 segundos asi que va sobrado).

Los engranajes son rectos, modulo 1.2, creo que es el modulo mas pequeño que se puede imprimir en una impresora 3D actual y obtener una calidad adecuada, a diferencia de las otras agujas, no son helicoidales, creo que no era necesario, no he visto ninguna holgura una vez montado y dan menos problemas al imprimir.

La parte del encoder no tiene mucha gracia, al mover el encoder movemos el disco, cada vez que lo movemos enviamos al FS X el comando como si hubiesemos echo click sobre el mando de la pantalla, por ahora envia 4 click por cada click del encoder, en el futuro cambiare esto, por que en realidad no leo el valor en la ventana desde el puesto de piloto.

En el siguiente vídeo se ve como arranca, busca el cero y luego recibe una orden y empieza a moverse.


FS2Link es un sofware que lleva mucho tiempo disponible, se supone que sustituye a SIOC + my script en python, y parece que la gente lo usa bastante. no me voy a parar mucho en el por que tengo previsto dedicarle otra entrada. (link: http://www.jimspage.co.nz/intro.htm )

Funciona, punto, hace exactamente lo que tiene que hacer, es facil de configurar, y la unica pega es que no fui capaz de sacar via simconect (el sistema nativo de FSX) el valor de la altitud en pies corregidos, asi que tube que tirar de offset de fsiupc, creo que el fallo es de localizacion del programa (no se si fs2link o el propio FS X) y fallan los valores con decimales.


Por ultimo hace falta un software para el arduino, he tomado la decision de colgar todo el codigo que voy haciendo en github, con la esperanza de que no se pierda.

No tiene nada que merezca especial comentario, únicamente tras meditar un poco me di cuenta que en los anteriores me complicaba un montón la vida, en especial para recibir datos.

Como podemos asegurar que las transmision va a ser correcta y completa en un muy breve periodo de tiempo (esto habria que discutirlo mucho, pero bueno), puedo simplemente esperar a recibir todo el dato, y parar el arduino mientras tanto, como transmitimos unos poco bytes de cada vez, la parada sera de microsegundos y nadie lo notara, y me ahorro todo aquel programa de estados y transiciones.

Podeis ver el codigo aqui:
https://github.com/alvaroalea/flightsimulator/tree/master/altimetro_v0.2

Que en realidad es una carpeta de:
https://github.com/alvaroalea/flightsimulator
repositorio de codigo donde voy a intentar colgar todo aquello que desarrolle para el simulador de vuelo, tenga utilidad o no.