Autor Tema: creando un simulador de auto para la pc  (Leído 7418 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
creando un simulador de auto para la pc
« en: 25 de Marzo de 2010, 18:38:17 »
hola comunidad otra vez, como estan ??... bueno lo que me trae aquí es que estoy haciendo un hardware para jugar juegos de carrera, bueno les pongo un enlace para que vean lo que intento de hacer:


esto lo voy a hacer con motores en vez de actuadores

por otro lado comento lo que tengo ya echo, y lo que me falta. pero para empezar a describir esto tengo que dejar en claro que todo lo estoy adaptando a un manubrio que ya tengo, que es el genius twin wheel f1 ya que a este ya le tengo los drive.
bueno como verán este manubrio trae 2 pedales (acelerador + freno) + el manubrio en cuestión que trae Vibration Feedback . pero como se darán cuenta les falta el pedal de embrague y la palanca de cambio además del freno de mano, además de la caja para simular todo los movimientos que se tienen en consideración a la hora de conducir. ahora bien lo que yo ya tengo echo es la palanca de cambio (les dejo unos videos de esta mas unas fotos), la cual la hice por medio de una palanca de las que se usa para jugar juegos de aviones. donde esta la desarme como verán en las fotos y solo deje la parte de adentro la que trae los potenciómetros. esta la monte en un nuevo gabinete el cual les hice las correderas que trae la palanca de cambio que es una H + otra línea paralela a la H, algo así H-I , este ya lo adapte al manubrio usando solo 2 teclas de este mismo, me explico.
mi manubrio trae 2 botones posteriores con unas palanquitas el cual servían para incrementar y bajar las marchas, ahora yo use esos 2 botones para adaptarlo a mi palanca de cambio, donde a este le puse un PIC al cual le grave una rutina, en donde este me detectaba en que cambio esta y me mandaba los pulsos necesarios a los 2 botones correspondientes de mi manubrio, ejemplo si yo quiero pasar a segunda, tengo que apretar uno de los botones para subir la marcha de parte de mi manubrio 2 beses para llegar a la segunda y para bajar a primera tengo que apretar el otro botón para bajar marcha. ahora bien lo que yo hice con el programa de mi pic es que si tengo la palanca de cambio en segunda el pic manda 2 pulsos al boton de subir marcha y si tengo que bajar la marcha por ejemplo a primera el pic nuevamente le manda una un pulso al boton de bajar marcha estos pulsos son tantos como en el cambio que esta con el cambio que quiere estar. pero bueno mejor vean el video que les dejo para que entiendan.


ahora bien el freno de mano lo voy a hacer también simulando uno real, esto lo ago por medio de un boton mas del manubrio, nada difícil, por otra parte el embrague como el drive de mi manubrio no lo tiene considerado, lo que voy a hacer es que mi pic detecte que cada ves que se pase un cambio de mi palanca de cambio se tiene que tener el embrague ya presionado, y si esto no fuere así mi pic le da un pulso al manubrio asiendo que se presione el freno deteniendo el auto de forma inmediata y desactivando el acelerador. (me e dado cuenta que los buenos juegos de auto traen la opcion de poner un boton al ambrague, es por ello que solo le voy a adaptar 1 boton a este mismo, los botones de mi manubrio me di cuenta que hacen un juego como de potenciometro a mayor presion sobre él menor es la resistencia que imponen al circuito, esto es que , cuando el boton esta sin precionar marca 10K y cuando lo preciono a full marca 100 ohm aveces asta 0 ohm, es por esto que este boton lo saco y lo cambio por un potenciometro de 10K que va situado en el ambrague.)

ahora bien la caja que va a simular los movimientos reales del auto que se conduce tengo ideas de esto pero quiero ver si ustedes saben algo que yo no, me explico mejor con mi idea:
los movimientos que se ejerce por la fuerza de inercia cuando dobla el auto en el piloto es contraria al movimiento que esta teniendo el auto, debido a que el conductor intenta seguir la trayectoria de forma recta. es por esto que cuando se dobla a la izquierda en un auto el piloto va hacia la derecha, bueno este efecto es fácil de hacer para que los actuadores o motor o lo que sea realice el movimiento contrario al manubrio, me explico el manubrio en cuestión tiene un potenciómetro, donde este revisa periódicamente en el ángulo que se encuentra el manubrio, este sensor por llamarlo de algún modo lo conecto también a mi pic el cual detecta que si el manubrio esta inclinado a la izquierda los actuadotes tienes que ir a la derecha, haciendo el movimiento contrario en la silla, pero lo que no se y ni se me ocurre es como puedo detectar los baches que están en el camino del juego para que los actuadotes repliquen este efecto en la silla. es por esto que estaba pensando que alo mejor seria mejor hacer otro software para el manubrio que pueda controlar todas sus partes, y que este se pueda conectar con los distintos juegos de auto o lo que sea que se quiera hacer con esto. es por ello que les pido ayuda para poder solucionar este embroyo ó alguna idea al respecto.

bueno por otro lado e estado diseñando la pedalera para hacerla, les dejo otro video para que opinen de como me esta quedando.


por otro lado estava pensando que hay programas que detectan el Force Feedback de los juegos, y si sera posible sacar de ahy el comando de los actuadores ó motores que controlan la "caja" ????

uf espero averme explicado bien, y bueno sino aquí estamos para aclarar las cosas, y quien sabe haber si alguien de ustedes se anima a esto y al final salimos varios con este proyectito ya echo, por que como veran es un poco engorroso lo que quiero hacer.


ademas aqui les dejo el codigo que asta el momento tiene el pic, que es solo para el control de la palanca de cambio, y ademas ya probado, y les coment oque funciona de lo mas bien.

Código: [Seleccionar]
#include <16F876a.h>
#device adc=10        
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=20000000)         //clock=4Mhz
#define use_portb_lcd TRUE         //definir portb lcd
#include<lcd.c>                  //libreria manejo lcd

float const resolucion= 5.0/1024.0;      // Conversión con 10 bits  
float rango1, rango2;
int16 V1,V2;//variables para las señales analogas
int cambios=0,estado=0,contador=0;

void main()
{
  lcd_init();         //inicializa, o activa lcd
  setup_port_A( ALL_ANALOG );
  setup_adc( ADC_CLOCK_INTERNAL );
  
while(TRUE){
//avilita la entrada analoga N0
   set_adc_channel( 0 );//numero del puerto analogo N0
   delay_us(20);
   V1 = read_adc();//guarda el dato optenido de la entrada analoga
//avilita la entrada analoga N1
   set_adc_channel( 1 );//numero del puerto analogo N1
   delay_us(20);
   V2 = read_adc();//guarda el dato optenido de la entrada analoga
  
  
rango1=V1 * resolucion;
rango2=V2 * resolucion;

  lcd_gotoxy( 1, 2);
  printf(lcd_putc,"r2 %1.2f-R1%1.2f", rango2, rango1 );
  
if((rango1>=2.50 && rango1<=2.96) && (rango2>=2.50 && rango2<=2.96)){
delay_ms(500);
contador++;
}else{
contador=0;
}
if(contador==3){
  cambios=0;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Neutro");
}
else if((rango1>=4.03 && rango1<=4.26) && (rango2>=4.65 && rango2<=4.78)){
  cambios=1;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Primera ");
}
else if((rango1>=1.25 && rango1<=1.66) && (rango2>=4.65 && rango2<=4.78)){
  cambios=2;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Segunda ");
}
else if((rango1>=4.50 && rango1<=4.99) && (rango2>=2.79 && rango2<=2.88)){
  cambios=3;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Tercera ");
}
else if((rango1>=0.50 && rango1<=0.90) && (rango2>=2.79 && rango2<=2.88)){
  cambios=4;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Cuarta  ");
}
else if((rango1>=4.20 && rango1<=4.49) && (rango2>=0.90 && rango2<=1.02)){
  cambios=5;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Quinta  ");
}
else if((rango1>=1.09 && rango1<=1.40) && (rango2>=0.87 && rango2<=1.00)){
  cambios=6;
  lcd_gotoxy( 1, 1);
  printf(lcd_putc,"Secta   ");
}
if(estado<cambios){
estado++;
output_high(PIN_C0);
delay_ms(150);
output_low(PIN_C0);
delay_ms(150);
}
if(cambios<estado){
estado--;
output_high(PIN_C1);
delay_ms(150);
output_low(PIN_C1);
delay_ms(150);
}
 // lcd_gotoxy( 1, 2);
  //printf(lcd_putc,"%i",estado);
}}

y aquí unas fotos de la palanca de cambio:











« Última modificación: 25 de Marzo de 2010, 19:28:53 por japifer_22 »


Desconectado anfegori91

  • PIC12
  • **
  • Mensajes: 71
Re: creando un simulador de auto para la pc
« Respuesta #2 en: 25 de Marzo de 2010, 22:17:09 »
Qué ingenioso¡¡
Tal vez se pueda reemplazar los relés por transistores, así se reduce consumo. (Por lo que tengo entendido estás mandando los pulsos por un cable rs232, utilizando los relés como switches).
Además, a propósito de rs232 podrías aplicar comunicación serial a cada periférico o control del manubrio y mandar los datos de los estados de los distintos sensores a un micro principal en el propio manubrio; de este modo te ahorras espacio por los cables y varios componentes.

De nuevo te felicito, me parece muy ingeniosa esta idea!!!

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: creando un simulador de auto para la pc
« Respuesta #3 en: 25 de Marzo de 2010, 22:42:55 »
.


¡Qué gran proyecto! Esa palanca de cambios está espectacular  :laugh:
Como yo lo veo, la única forma de logar "detactar" los baches es comunicándote con el software del juego. Al parecer existen volantes con función de vibrador, así que de alguna forma u otra, estos volantes reciben la información del juego para activar el vibrador en el momento adecuado. Es decir, debería ser posible recibir esta información directamente del juego, sin necesidad de software adicional.
Al ver el primer video me surge la pregunta.. ¿Cómo vas a recrear ese movimiento con motores?  :huh:
Seguiré interesado este tema. Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: creando un simulador de auto para la pc
« Respuesta #4 en: 26 de Marzo de 2010, 01:58:18 »
hola

anfegori91
Citar
Tal vez se pueda reemplazar los relés por transistores, así se reduce consumo. (Por lo que tengo entendido estás mandando los pulsos por un cable rs232, utilizando los relés como switches).
Además, a propósito de rs232 podrías aplicar comunicación serial a cada periférico o control del manubrio y mandar los datos de los estados de los distintos sensores a un micro principal en el propio manubrio; de este modo te ahorras espacio por los cables y varios componentes.
bueno con respecto a lo primero que mensionas, te coment oque no lo hice así por el motivo que no se me avia ocurrido  :mrgreen: y ya que tenia disponible los reles le di con eso nomas  :mrgreen: :-/. pero de seguro que lo cambio mejor en algun momento a la forma que dices ya que tienes razón.
en cuanto a la comunicacion de los dispocitivos, es correcto lo que mencionas que los reles actuan solo como switch y que esto lo envio por medio de un cable RS-232, por otro lado es factible lo que dices de hacer todo por comunicacion, y que esta se conecte a un pic master y que todos los dipocitivos (palanca de cambio, pedalera y manubrio, ademas de la caja de simulacion)se conecten a él, pero el problema que tendia que agrandar el circuito en cuanto a componentes ademas de ponerle un pic a cada dispocitivo, y la idea es solo ocupar 1 de ellos para hacer tolo, ya que en caso contrario aumenta el cach $$.
aver si ago un esquematico de lo que ya tengo funcionando y lo subo aca para que lo vean.

mtristan
Citar
Como yo lo veo, la única forma de logar "detactar" los baches es comunicándote con el software del juego. Al parecer existen volantes con función de vibrador, así que de alguna forma u otra, estos volantes reciben la información del juego para activar el vibrador en el momento adecuado. Es decir, debería ser posible recibir esta información directamente del juego, sin necesidad de software adicional.
Al ver el primer video me surge la pregunta.. ¿Cómo vas a recrear ese movimiento con motores?  huh

como bien dices tú si existen estos volantes que detectan estos baches y son los que traen la funcion de Force Feedback ó son los vibration Feedback, bueno uno de los dos hace lo que mencionas, bueno ahora más tarea pa la casa tengo, con ésta intrigante  :mrgreen:. pero tambien se que existen software adicionales que detectan estas cosas, esto lo ley en un foro que encontre hoy que tiene relacion directa con lo que quiero hacer, el cual es el siguiente:

http://www.x-simulator.de/forum/step-by-step-approaching-to-thanos-work-t1218-40.html

por otro lado con lo que consiere tu pregunta, los baches lo voy a simular segun yo haciendo que el motor de pequeños pasos hacia adelante y hacia atras de forma rapida así simulando una especie de vibracion. o lo otro que se me viene a la caveza es hacer un gran vibrador que este sujeta a toda la estructura  :mrgreen: como el que trae los joystick.

en cuanto a los motores que voy a usar para hacer mover la estructura va a hacer de limpia parabrisa de automoviles´ya que lo vi en el foro que puse masarriva ademas que ya tengo uno  :lol:  :-/
« Última modificación: 26 de Marzo de 2010, 19:05:03 por japifer_22 »

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: creando un simulador de auto para la pc
« Respuesta #5 en: 26 de Marzo de 2010, 02:15:00 »
aqui encontre el video  para que veas tu mtristan, de como va a quedar este gavinete con motores en vez de actuadores:


ademas dejo el enlase de youtube paraque bean mas videos de estos :

feature=related.

bueno si les interesa este cuento podriamos ir devatiendo algunas cosas. que dicen ????? se animan a hacer este jugetito ^^


 

anything