Mostrando entradas con la etiqueta DIY. Mostrar todas las entradas
Mostrando entradas con la etiqueta DIY. Mostrar todas las entradas

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.


mi茅rcoles, 5 de octubre de 2016

Piloto Automatico Bendix King KFC-225

Como tengo esto muy parado ultimamante, voy a poner un micro-video de lo que estoy haciendo ultimamente:
Podriamos considerarlo una continuacion del post de enero del 2012 donde mostraba un transpondedor utilizando un arduino y un LCD, esto es basicamente lo mismo.

Me rondaba la cabeza que para poder realizar el piloto automatico necesitaba un display mas ancho de 20x2 que es el standar, y ademas queria que fuese Rojo, para que se pareciese lo mas posible al real, tras encontrar uno de 24x2 en aliexpress, me puse a ello.

Tambien queria ir probando que tal quedan los paneles con la impresora 3D y si son una alternativa valida para la opcion de sandwich de metracrilato y hoja impresa.

Tengo pendiente un par de cosas:
Imprimir en 3D unas guias para pintar el serigrafiado del marco.
y por ultimo, intentare dise帽ar una PCB a medida para los pulsadores y probare algun servico de PCB express en asia, para ver que tal sale la cosa, si la cosa sale bien igual hago una peque帽a tirada de 7 u 8 de estos.

Conclusiones:
- Con un display de 20x2 voy sobrado.
- No tengo el rojo sobre negro que queria, es mas bien un rojo oscuro sobre rojo claro.
- El angulo de vision, al menos de este display es nefasto, basicamente solo se lee desde un peque帽o angulo y es justo el contrario al que necesito.
- El resultado de la impresion 3D es muy bueno, mi impresora (una prusa i3) llega justa para imprimir eso, algo un poco mas ancho no entraria ya, el proceso es lento y requiere varias impresiones de prueba-error, en especial por los botones y el hueco, para que deslicen bien, asi como una buena mano de lija.



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.






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



domingo, 26 de febrero de 2012

Indicador de DME: Otro instrumento con Arduino/python/iocp

Tenia por casa un circuito impreso con un panel LCD controlado por un chip Holtek HT1621B, y unos botones.

Me puse a investigar y aqui: http://code.google.com/p/wirejungle/source/browse/trunk/?r=17#trunk%2Flibraries%2FHT1621 que pertenece a http://wirejungle.wordpress.com/about/ encontre cierto codigo que me permitira controlar dicho chip.

Se que en la foto no parece mucho, pero con un poco de imaginacion y la caratula adecuada....

Asi que tras varios cambios para adaptar su codigo a mi placa, un buen rato investigando como estaba cableado el chip al LCD, y aprobechando el sitema explicado en anteriores post de comunicar arduino con X-Plane, me cree un peque帽o pero funcional indicador de DME del NAV1, 2 y ADF1.

No es que tenga mucha utilidad para el resto de la gente, pero si tiene algun LCD con el HT1621B, o tienes la pantalla de un analizador de redes SACI como el que yo desguaze,
he dejado en dropbox un zip con el codigo de arduino y demas.

mi茅rcoles, 25 de enero de 2012

OpenRadioSim & Arduino: Transpondedor para X-Plane

El fruto y objetivo de mi anterior post, comunicar Arduino con SIOC, es entre otras cosas para hacerme un panel de radios, empezando por el Transpondedor, que resulte economico.

Si la jugada me sale bien lo llamare OpenRadioSim, y sera GPL

Pronto pondre los dise帽os de la PCB y el programa de arduino completo, asi como el dise帽o de la caratula y lista de materiales, para todo aquel que quiera copiarlo.

Pero tengo que retocar algunas cosillas que aun no hace, como responder a la tension de la avionica (para que se apage al quitar el interruptor) o que el retroiluminado se apaque en la posicion off.

Pero mientras he colgado un video donde se ve su funcionamiento actual aprobechando unas teclas que tenia por ahi tiradas.

martes, 24 de enero de 2012

Arduino e IOCP, the easyway.

Arduino es un invento, de eso no cabe duda, y al estar tan extendido es ademas una plataforma muy barata y flexible de programar microcontroladores.
Aunque hay bastante gente que ha conectado su arduino al simulador, hasta ahora lo mas flexible que encontre era el link2fs_inout de Jim. y no es precisame muy flexible o portable, pues parece programado en visual basic y para flight simulator.

No me gustaba, yo queria algo que hablase con sioc, para asi poder utilizarlo indistintamente con x-plane o con FsX

Asi que aplique un poco de filosofia unix, el KISS (keep it simple, stupid).

Mi idea es en el futuro que arduino, con una shield ethernet se comunicase directamente con un servidor IOCP, bien el programa sioc, bien el pluging para xplane, etc,etc...

La cuestion esta en como hacia para que mi actual arduino que se conecta por USB, hablase tambien con sioc.

Estaba claro que la solucion pasaba por un programa que hiciese de traductor entre la conexion TCP que espera IOCP, y la conexion serie que da arduino, que es lo mismo que hace la tarjeta LCD de opencockpits.

Empece programando el Arduino, por dos motivos, ya tengo una protocolo de comunicaciones, el SIOC, es sencillo de entender, y si el dia de ma帽ana adquiero la shield ethernet tengo menos que modificar.

Luego tenia que programar la pasarela, como estoy en windows (por el sioc), y no tengo ni idea, la solucion paso por hacer una warreria en python.

Y voila!!! Funciona, puedo enviar y recibir datos entre arduino y SIOC, es bonito y es flexible.

Por hacer:
Hay algunas cosillas que aun no he terminado:
  • El programa no responde a la orden Arn.Vive
  • Tengo una latencia importante en las comunicaciones, sirve para un piloto automatico, un panel de alarmas, pero no para una plataforma movil, o instrumentos de aguja.He reducido la latencia, aunque no lo he probado con indicadores de aguja u otros indicadores "sensibles"
  • Hay que configurar y compilar algunas cosas a pelo, y hay que isntalar python.

Aqui esta la informacion util:

El programa pasarela.

Hay que instalar python, y luego la libreria pyserial, modificar las primeras lineas del programa para que se ajusten a tu configuracion:
 #!/usr/bin/python            # This is client.py file
# Distributed under GPL V3 License
# (C) Alvaro Alea Fdz 2012
import socket,serial,select # Import socket module

# la configuracion lo primero

host = "127.0.0.1" # socket.gethostname() Get local machine name
port = 8092 # Reserve a port for your service.
serialport=2 # com3

# Conectamos al servidor.
ne = socket.socket() # Create a socket object
print ("Conectando a servidor\n")
ne.connect((host, port))
ne.setblocking(0)
print ("Conectado a s. IOCP\n")
# Abrimos el puerto serie N 9 9600 por defecto
se = serial.Serial(serialport)
se.timeout=0
print ("Abierto puerto serie")
# El loop
#ne.send(bytes("Arn.Inicio:999:\r\n",'UTF-8'))
while 1:

d=0
while d==0:
b= se.read(1)
if b :
ne.send(b)
print (">")
else:
d=1

d=0
while d==0:
ready = select.select([ne],[],[],0.1)
if ready[0]:
a = ne.recv(1)
se.write(a)
print ("<")
else:
d=1
# salida normal del programa.
ne.close() # Close the socket when done
se.close()

El programa de arduino
Es solo el esqueleto de la aplicacion, el resto depende de lo que querais hacer, pronto pondre algun ejemplo completo:
// Distributed under GPL V3 License
// (C) Alvaro Alea Fdz 2012
// Algunas definiciones usadas por claridad.
#define XPDR_CODE 999
int dat,valor;
// llama a esta rutina al principio para iniciar el puerto serie y
// para indicar a sioc que variables monitorizar EDITALO
void setupserial(void){
Serial.begin(9600);
Serial.print("Arn.Inicio:");
Serial.print(XPDR_CODE);
Serial.println(":");
}
// funcion interna, ¿el n潞 en ascii es una numero?
int isnum(int n){
if ((n>47) && (n<58)) return 1;
else return 0;
}
// llama a esta funcion cuando quieras cambiar algo en sioc UTILIZALA
void enviapares(int dat, int valor){
Serial.print("Arn.Resp:");
Serial.print(dat);
Serial.print("=");
Serial.print(valor);
Serial.println(":");
}
// En esta funcion se reciben todos los cambios de sioc EDITALA
void procesapares(int dat, int valor){
int t1;
if (dat==XPDR_CODE){
}
}
// el meollo de la cuestion, NO TOCAR, FUNCIONA
void serialstuff(void) {
int c=0,pr;
pr=0;
if (Serial.available()==0) return;
c=Serial.read();
do {
switch (p){
case 0:
if (c=='A'){
p=1;
}
pr=1;
break;
case 1:
if (c=='r') {
p=2; pr=1;
} else { p=0;
}
break;
case 2:
if (c=='n') {
p=3; pr=1;
} else { p=0;
}
break;
case 3:
if (c=='.') {
p=4; pr=1;
} else { p=0;
}
break;
case 4:
switch (c) {
case 'R':
p=5; pr=1;
break;
default:
p=0;
break;
}
break;
case 5:
if (c=='e') {
p=6; pr=1;
} else {p=0;
}
break;
case 6:
if (c=='s') {
p=7; pr=1;
} else { p=0;
}
break;
case 7:
if (c=='p') {
p=8; pr=1;
} else { p=0;
}
break;
case 8:
if (c==':'){
p=9; pr=1; dat=0;
} else { p=0; }
break;
case 9:
switch (c){
case 13:
p=20; pr=1;
break;
case '=':
if (dat==0) {
p=0;
} else {
p=10; pr=1;
}
break;
default:
if (isnum(c)) {
dat = 10*dat + (c-48);
pr=1;
} else { p=0; }
break;
}
break;
case 10:
if (isnum(c)){
valor = (c-48); p=11; pr=1;
} else { p=0; }
break;
case 11:
switch (c) {
case ':':
procesapares(dat,valor);
p=8;
break;
default:
if (isnum(c)){
valor = 10*valor + (c-48); pr=1;
} else { p=0; }
break;
}
break;
case 20:
if (c==10) pr=1;
p=0;
break;
default:
p=0; pr=1;
break;
}
} while (pr==0);
}
// Al comenzar el programa inicializa el puerto serie.
void setup(){
setupserial();
}
// El bucle principal.
void loop(){
// Es necesario llamar a esta funciona cada poco para recibir datos.
serialstuff();
}

2012/01/27 - Corregido BUG: Cambiando un writeln por write en la funcion enviapares

viernes, 13 de enero de 2012

¿Merece la pena comprar el panel de radios Saitek?

Los paneles de Saitek estan muy bien (dejando de lado alguna decision de dise帽o que podriamos discutir.), y son practicamente la unica alternativa comercial, Plug&Play que hay para el simulador de vuelo.
Si tu eres como yo de los que te gusta construirte las cosas, es posible que, como yo, hayas pensado que son carisimos, y que podias hacerte uno por la mitad de precio.
Pues vamos a echar unas cuentas y descubri que, en realidad son regalados de precio, y que hacerte tu algo igual te costaria el doble.
Por supuesto el hacertelo tu tiene la ventaje de poder personalizarlo a gusto o hacerlos mas realistas, o mas comodos de manejar.
Empecemos:
  • 46.25€ incluyendo el descuento de facebook, es lo que te costaria la caratula en policarbonato, cortada en laser, pintada y serigrafiada en hispapanels.
  • 20.00€ Una placa de arduino para controlarlo todo.
  • 42,64€ Dos encoder rotativos de doble eje.
  • 35,18€ Dos mandos concentricos para los encoder
  • 58,95€ Los 4 chips y 20 displays Led de 7 Segmentos rojos de 0.6" de altura
  • 18,67€ En una placa de C.I. botones y algun componente mas.
Total:
  • 221,7€
Es decir justo el doble que en amazon(aunque hay que admitir que no tienen muy claro lo que venden) Y a esto hay que a帽adirle la programacion del arduino y el programa del Ordenador, y que no tienes soportes, tornillos guapos, ni caja trasera y el tiempo que has tardado en hacerlo.

Para estos calculos he utilizado los precios de la tienda de componentes online Mouser, que esta bastante bien de precio. si alguien esta interesado le puedo pasar el "carrito de la compra" donde desgloso los precios de cada cosa.

Si alguien piensa que los calculos estan mal, y que saitek no puede hacerlo tan barato, hay que tener en cuenta que 90€ se van en "plasticos" y eso a saitek le sale por unos centimos.

Asi que en resumen, esta claro que merecen la pena, son una buena inversion, y ya si te salen como a mi, de segunda mano por 65€ no digamos, Je Je.

Ahora bien, si el frontal te lo hace tu a mano, con metracrilato, sierra y una impresora.
Si en lugar de displays de 7 Segmentos Led utilizas una pantalla retroiluminada de 20x2
Y en lugar de los encoder dobles, utilizas encoders sencillos con interruptor
La cosa cambia mucho, y teniendo la misma funcionalidad y un aspecto muy similar, rondariamos los 50€

mi茅rcoles, 11 de enero de 2012

Primer intento de simular el Garmin GNS530

Actualmente las soluciones que hay para incorporar un GPS en la cabina de simulacion, pasan por utilizar un gauge de pago solo para FSX y un peque帽o dispositivo que no es mas que un 2潞 monitor que se conecta a una de las escasas salidas de video del equipo.
Ah!, y cuesta un ojo de la cara y parte del otro.
La alternativa que estoy pensando es mucho mas economica (calculo que no llegue a 100€) y no utiliza salidas de video, de echo se conecta por ethernet. el pero esta en que utiliza mucho micro.
He puesto en youtube un video con las primeras pruebas:

martes, 3 de enero de 2012

La llave de los magnetos.

Uno de mis objetivos es tener el equivalente a todos los controles de saitek, pero solucionando sus deficiencias, y una de ellas es que el mando de los magnetos y el arranque es un mando rotativo, no tiene llave.
Asi que tras algun tiempo pensando como hacerlo, llegue al estado actual, que sin ser perfecto, esta mucho mejor que la opcion de saitek, y aqui describo como lo hice:

Lo que se ve por fuera es una simple cerradura de taquilla, que puedes encontrar en cualquier ferreteria, el primer resultado de google nos muestra varios modelos.

El unico detalle a tener en cuenta es que al final de la llave, tenga un tornillo que sujete la pieza metalica que hace el cierre.

La parte electrica es un simple conmutador rotativo de 1 circuito, 12 posiciones, al que se ha limitado sus movimientos a 5 posiciones.

Si miramos por dentro vemos que he doblado la pieza metalica para que no tropieze con nada, y he cambiado el tornillo que la sujeta por un trozo de varilla roscada con una tuerca, que sujeta igualmente la cerradura, y se prolonga hacia atras.

En un trozo de tubo he roscado cuatro tornillos que sujetan por un lado el palo del conmutador y por otro el trozo de varilla roscada, de manera que cuando giramos la llave, giramos el conmutador. con una borna electrica grande hubiesemos conseguido el mismo resultado, pero no la tenia a mano.

Solo hay que tener cuidado de ajustar para que la posicion en la que la llave se puede meter y sacar coincida con la posicion OFF del conmutador.


Unos trozos de madera y metracrilato se encargan de sujetar el cuerpo del conmutador e impedir que este gire cuando lo hace la llave.

Entre las mejoras posibles esta en idear algo que haga que el conmutador no se mantenga en start y vuelva a la posicion both solo, como en el arranque de los coches, pero hay que mejorar las piezas que soportan el conmutador y hacer ese mas suave, pues las pruebas que hice, estaba demasiado duro y no obtenia un buen resultado.

lunes, 2 de enero de 2012

Video de las Agujas en Funcionamiento

Estaba yo aburrido y me decidi a grabar con el movil un video cutre de como estan funcionandome los instrumentos de vuelo, asi que aqui esta:

domingo, 3 de abril de 2011

DIY pedales (rudder pedals)

Bueno, despues de mucho tiempo, y mucho pensar me lie la manta a la cabeza y finalize los pedales que hace a帽os habia intentado hacer.
No estoy del todo convencido de como han quedado, y hay varias cosas que cambiare con el tiempo, pero por ahora me sirven perfectamente para practicar los taxis y el giro coordinado.
Detalle general de los pedales, su muelle y el potenciometro que manda la se帽al al ordenador. y primeros errores:
Supuse que con los dedos de los pies tendria fuerza suficiente como para llevar el pedal en horizontal, falso, la bisagra que los bascula deberia estar puesta en los primeros 5-10cm del pedal, y ademas el angulo esta mal, esa es la posicion que tendrian que tener pisados a tope, y sin pisar estar como a 60潞 de la horizontal.
Otro error es utilizas DMF y no pretaladar donde van los tornillos, en varios casos se me abrio la "madera" en algunos casos llegando a separarse en 2 como el trozo triangular que sirve de refuerzo en el pedal.
En esta imagen se puede apreciar el mecanismo de centraje, el potenciometro del timon y como hago que cuando un pedal se adelante el otro retroceda, lo del medio es una simple U de aluminio.
Y este es el mecanismo que sujeta el pedal a la U, un tornillo, el sistema es bastante eficaz, aunque un poco ruidoso, y carga demasiado el tornillo central, acabara cediendo.
La cabeza del tornillo era ligeramente mas grande que el hueco de la U, asi que lo puse en el traladro y lo lije hasta que cogio la medida justa para entrar en la U.

Los patines estan sujetos a la base de madera con dos carriles de cajon, esos tornillos sirven de tope y limitan el recorrido de los pedales, en la direccion contraria no hay tope, para eso esta el otro pedal.

Y por ultimo un detalle de la electronica, que de momento es la placa de joystick de Opencockpits, que se puede comprar en su web, aunque espero algun dia ponerme a programar un pic para que no aparezcan los ejes y botones fantasma que ahora no uso.