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