Open latest posts
motion simulator DIY community 

ayuda con arduino uno y xsim-solucionado-mini simulador

Aufbau, Betrieb, Reparatur und der Entwicklung von Kontrollern oder sonstiger externer Hardware - Assembly, handling, repair and construction of controllers or external hardware.
on 19.06.2012, 21:05

ayuda con arduino uno y xsim-solucionado-mini simulador

Postby nicko_esx on 19.06.2012, 21:05

hola gente.
gracias por entrar.
escribo aqui por desesperacion al no poder lograr nada entre arduino uno r3 y x.sim
he intentado distintos proyectos compartidos por usuarios en este foro
por ejemplo este:
mini simulador usando 2 servos
2dof-arduino-miniature-motion-platform-w-2-servos-t3469.html?hilit=arduino
tambien he probado otros proyectos como ser marcar rpm con servos o la velocidad con servos.
en todos los casos los servos no reaccionan. o en mejor de los casos se mueven un poco pero erradamente.

yo creo que el problema esta en la informacion que envia x.sim a arduino. porque la placa recibe datos. se confirma esto al ver el led rx encender. por ejemplo cuando cambio parametros ya sea de 8 bits a 16 o 32 y tipo de dato binario a decimal o hex. los servos se acomodan en otra posicion pero no funcionan como deberian
otro caso que genera duda es cuando cambio parametros en datapacket axisinformation. por ejemplo L~a01~Ra02~ probando otras alternativas... que voy entontrando en internet.. la verdad no se configurar esto ultimo en la USO
yo utilizo el force sender de xsim2 y el x.sim converter de x.sim 3 ya que este ultimo me detecta a arduino uno como puerto. caso contraro en x.sim 2 profiler. tengo que generar un puerto virtual para enviar los datos por ahi.
ojala este mensaje sea leido por alguien de habla español. la verda que me cuesta mucho las traducciones en otros idiomas con google translator.....
saludos.
Last edited by nicko_esx on 09.07.2012, 16:04, edited 1 time in total.
nicko_esx
full member
 
Posts: 19
Joined: 28.05.2012, 21:14
Local time: 19.06.2013, 11:06
Obtained thanks: 2


on 21.06.2012, 06:29
Re: ayuda con arduino uno y xsim

Postby astro on 21.06.2012, 06:29

Hola, yo soy de Argentina y estoy arrancando también con un simulador. Cuesta un poco juntar toda la información, hay mucha ayuda por aca, pero es complicado unir todo. Yo probé con esto y el código está funcionando pero para un solo motor, hay que modificarlo un poco. post38409.html#p38409
Y aca tenes como configurar el Profiler para formatear los datos de salida:
2dof-arduino-controller-with-integrated-h-bridge-t3810-10.html
A mi tampoco me lo detecta automáticamente al Arduino Uno R3, pero no importa porque se lo agregas a mano, por ejemplo, si el Arduino lo tenes en el COM 8, tenes q poner arriba \\.\COM8 y apretas el botón que dice "Add comport to list", entoces te aparece abajo para seleccionarlo.
Espero que te sirva de ayuda.
Saludos.
astro
full member
 
Posts: 16
Joined: 06.06.2012, 05:46
Location:Argentina Argentina
Local time: 19.06.2013, 07:06
Obtained thanks: 3


on 21.06.2012, 06:36
Re: ayuda con arduino uno y xsim

Postby astro on 21.06.2012, 06:36

Recién me doy cuenta que tenes mal el datapacket. NO es L~a01~Ra02~.
Debería ser L~a01~ R~a02~
No sé si lo estas separando con espacio, pero te falta el ~ adelante de a02
segun los ejes que usas, son
~a01~
~a02~
~a03~
astro
full member
 
Posts: 16
Joined: 06.06.2012, 05:46
Location:Argentina Argentina
Local time: 19.06.2013, 07:06
Obtained thanks: 3


on 21.06.2012, 19:34
Re: ayuda con arduino uno y xsim

Postby nicko_esx on 21.06.2012, 19:34

hola astro :D mil gracias por responder.
te cuento el xsim 3 me lo detecta solo al arduino uno, para el xsim 2 tengo que hacer lo que vos dices. o sino desde el windows le cambio el numero de puerto por com1 o com2 que son los que aparecen solos. tambien usando el vspe creo un puerto virtual y lo ligo al del arduino.... osea siempre el arduino recibe info por que el rx se enciende.
con respecto al datapacket sin querer puse mal en el post. dentro de todas las pruebas las que publica originalmente el koreano que hizo el mini simulador es L~a01~R~a02~
... te consulto. por las dudas. vos usas alguna interface de conversion desde el serial al usb? o conectas directo al usb?
con respecto al link que me pasas. ya lo habia visto. pero ese codigo es para usar con un h-bridge no??? yo estoy usando servos de rc para intentar hacer el minisimulador o al menos un tacometro o velocimetro... lo se que sea mientras pueda recibir datos del xsim y pasarlos al servo :S
nicko_esx
full member
 
Posts: 19
Joined: 28.05.2012, 21:14
Local time: 19.06.2013, 11:06
Obtained thanks: 2


on 21.06.2012, 21:44
Re: ayuda con arduino uno y xsim

Postby astro on 21.06.2012, 21:44

Yo lo hice igual al del post que te pasé. Directo al USB, y si es para H-bridge.
Para servo hay otros ejemplos que usan la librería del arduino.
Pero seguramente tu problema está en interpretar los datos, ya que el arduino indica que está recibiendo información.
Probá imprimir el valor de las variables en el arduino para verlas en el monitor serial.
ejemplo:
Serial.print("Left: ");
Serial.println(L);

Pasame tu codigo y vemos en ayudarte a que veas que es lo q
astro
full member
 
Posts: 16
Joined: 06.06.2012, 05:46
Location:Argentina Argentina
Local time: 19.06.2013, 07:06
Obtained thanks: 3


on 21.06.2012, 21:45
Re: ayuda con arduino uno y xsim

Postby astro on 21.06.2012, 21:45

Pasame tu codigo y vemos en ayudarte a que veas que es lo q está recibiendo el arduino.
astro
full member
 
Posts: 16
Joined: 06.06.2012, 05:46
Location:Argentina Argentina
Local time: 19.06.2013, 07:06
Obtained thanks: 3


on 21.06.2012, 23:15
Re: ayuda con arduino uno y xsim

Postby nicko_esx on 21.06.2012, 23:15

astro wrote:Pasame tu codigo y vemos en ayudarte a que veas que es lo q está recibiendo el arduino.


el codigo que estoy usando es publicado por Jamesdio
la configuracion del x.sim es L~01~R~a02~
el video

[youtube]http://www.youtube.com/watch?feature=player_embedded&v=AeprKtcF210[/youtube]

astro a la noche apenas llego a casa pruebo lo del serial print


Code: Select all
    /*
    * 2DOF Motion Platform with 2 Servos
    * -------------------------------------
    * Thanks to herctrap and his source
    * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1280139142
    *
    * and also thanks to juiou and his source
    * http://www.x-simulator.de/forum/arduino-and-x-sim-t2773-30.html
    *
    * I just combined their sources.
    *
    */

    #include <Servo.h>

    Servo myservo1;
    Servo myservo2;

    int Degree;
    int Gforce = 0;
    int Gforce1 = 0;
    int Gforce10 = 0;
    int Gforce100 = 0;

    char kind_of_data;

    void setup() {
     
      //set servo pins
      myservo1.attach(2);
      myservo2.attach(3);
     
      //align servos center postision
      myservo1.write(90);
      myservo2.write(90);
     
      //open serial connection
      Serial.begin(115200);
    }

    void loop() {

      // wait for serial input (min 3 bytes in buffer)
      while(Serial.available() > 0) {
       
        kind_of_data = Serial.read(); //string from USO --> L~a01~ R~a02~ 8bit resolution\decimal output
        if(kind_of_data == 'L') {
          Read_Pos(kind_of_data);
        }
        if(kind_of_data == 'R') {
          Read_Pos(kind_of_data);
        }
      }
    }
       
    void Read_Pos(char which_servo){
      delay(2);
      int Gforce100 = Serial.read()- '0';
      delay(2);
      int Gforce10 = Serial.read()- '0';
      delay(2);
      int Gforce1 = Serial.read()- '0';
     
      //Verifica se e centena dezena ou decimal... =]
      if (Gforce1 < 0) { Gforce = Gforce10 + 10*Gforce100; }
      if (Gforce1 < 0 && Gforce10 < 0) { Gforce = Gforce100; }
      if (Gforce100 < 0) { Gforce = 127; }
      if (Gforce1 >=0 && Gforce10 >= 0 && Gforce100 >= 0) { Gforce = 100 * Gforce100 + 10 * Gforce10 + Gforce1; }

      if (which_servo == 'L') {
        Degree = map(Gforce, 0, 255, 180, 0);   
      }
      if (which_servo == 'R') {
        Degree = map(Gforce, 0, 255, 0, 180);
      }

      if (which_servo == 'L') {
        myservo1.write(Degree);
      }
      if (which_servo == 'R' ){
        myservo2.write(Degree);
      }
    }

nicko_esx
full member
 
Posts: 19
Joined: 28.05.2012, 21:14
Local time: 19.06.2013, 11:06
Obtained thanks: 2


on 22.06.2012, 04:00
Re: ayuda con arduino uno y xsim

Postby astro on 22.06.2012, 04:00

Probá con esto y asegurate que en el VSPE el puerto virtual esté configurado a la misma velocidad 115200

Code: Select all
/*
    * 2DOF Motion Platform with 2 Servos
    * -------------------------------------
    * Thanks to herctrap and his source
    * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1280139142
    *
    * and also thanks to juiou and his source
    * http://www.x-simulator.de/forum/arduino-and-x-sim-t2773-30.html
    *
    * I just combined their sources.
    *
    */

    #include <Servo.h>

    Servo myservo1;
    Servo myservo2;

    int Degree;
    int Gforce = 0;
    int Gforce1 = 0;
    int Gforce10 = 0;
    int Gforce100 = 0;

    char kind_of_data;

    void setup() {
     
      //set servo pins
      myservo1.attach(2);
      myservo2.attach(3);
     
      //align servos center postision
      myservo1.write(90);
      myservo2.write(90);
     
      //open serial connection
      Serial.begin(115200);
    }

    void loop() {

      // wait for serial input (min 3 bytes in buffer)
      while(Serial.available() > 0) {
       
        kind_of_data = Serial.read(); //string from USO --> L~a01~ R~a02~ 8bit resolution\decimal output
        if(kind_of_data == 'L') {
          Read_Pos(kind_of_data);
        }
        if(kind_of_data == 'R') {
          Read_Pos(kind_of_data);
        }
      }
    }
       
    void Read_Pos(char which_servo){
      delay(2);
      int Gforce100 = Serial.read()- '0';
      delay(2);
      int Gforce10 = Serial.read()- '0';
      delay(2);
      int Gforce1 = Serial.read()- '0';
     
      //Verifica se e centena dezena ou decimal... =]
      if (Gforce1 < 0) { Gforce = Gforce10 + 10*Gforce100; }
      if (Gforce1 < 0 && Gforce10 < 0) { Gforce = Gforce100; }
      if (Gforce100 < 0) { Gforce = 127; }
      if (Gforce1 >=0 && Gforce10 >= 0 && Gforce100 >= 0) { Gforce = 100 * Gforce100 + 10 * Gforce10 + Gforce1; }

      if (which_servo == 'L') {
        Degree = map(Gforce, 0, 255, 180, 0);
         Serial.print("GforceL=");
         Serial.println(Gforce);   
      }
      if (which_servo == 'R') {
        Degree = map(Gforce, 0, 255, 0, 180);
         Serial.print("GforceR=");
         Serial.println(Gforce);   
      }

      if (which_servo == 'L') {
        myservo1.write(Degree);
         Serial.print("L=");
         Serial.println(Degree);
      }
      if (which_servo == 'R' ){
        myservo2.write(Degree);
         Serial.print("R=");
         Serial.println(Degree);
      }
    }
astro
full member
 
Posts: 16
Joined: 06.06.2012, 05:46
Location:Argentina Argentina
Local time: 19.06.2013, 07:06
Obtained thanks: 3
The following user would like to thank astro for this post
nicko_esx


on 22.06.2012, 15:56
Re: ayuda con arduino uno y xsim

Postby nicko_esx on 22.06.2012, 15:56

astro wrote:Probá con esto y asegurate que en el VSPE el puerto virtual esté configurado a la misma velocidad 115200


hola astro. te cuento jeje
con el codigo que me mandaste no pude observar en el monitor serial del programa arduino que es lo que escribe. ya que no me dejaba usar dos aplicaciones en un mismo puerto. es decir junto a x.sim. he intentado usar el vspe para clonar o para espiar el puerto sin conseguir resultados. asi que me instale un programa que se llama HHD free serial port monitor. te muestro lo que aparece. en las tablas de lecturas. aunque con la modificacion del serial print no hay diferencia con el codigo original. seguramente no estaba bien configurado para ver respuestas.
con el x-sim configurado L~a01~R~a02~
se puede observar que los datos estan en columnas, separadas por comas
la primera es numero, Funcion, direccion, Compl., status(0x0) , Datos, Datos (sibolos).
estos ultimos dos serian:4C 31 32 35 52 31 32 35 ,L125R125,
viendo esto se observa que L y R estan presentes antes de un numero que varia. pero esto cambia si cambiamos algo en el datapacket axis. por ejemplo si pongo solamente ~a01~ aparece solo los numeros...
Code: Select all

51,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 35 52 31 32 35 ,L125R125,
52,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 34 52 31 32 34 ,L124R124,
53,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 34 52 31 32 34 ,L124R124,
54,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 34 52 31 32 34 ,L124R124,

*****se repite esto hasta que cambia la barra del plug in de prueba del force sender.

132,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
133,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
134,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
135,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
136,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
137,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
138,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 33 52 31 32 33 ,L123R123,
*********
184,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 33 52 31 32 34 ,L123R124,
185,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 33 52 31 32 34 ,L123R124,
186,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 33 52 31 32 34 ,L123R124,
******
262,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 35 52 31 32 35 ,L125R125,
263,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 35 52 31 32 35 ,L125R125,
264,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 35 52 31 32 35 ,L125R125,
265,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 35 52 31 32 35 ,L125R125,
*****
332,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 35 52 31 32 36 ,L125R126,
333,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 35 52 31 32 36 ,L125R126,
334,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 35 52 31 32 36 ,L125R126,
335,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 35 52 31 32 36 ,L125R126,
336,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 35 52 31 32 36 ,L125R126,
****
412,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 37 52 31 32 37 ,L127R127,
413,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 37 52 31 32 37 ,L127R127,
414,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 37 52 31 32 37 ,L127R127,
***
490,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 38 52 31 32 38 ,L128R128,
491,IRP_MJ_WRITE,UP,TRUE,0x0,4C 31 32 38 52 31 32 38 ,L128R128,
492,IRP_MJ_WRITE,DOWN,TRUE,0x0,4C 31 32 38 52 31 32 38 ,L128R128,
******
va repitiendo con cambios para L y R dependiendo el deslizamiento de las barras.....

no se si sirve de algo este monitoreo....
por cierto el servo parece intentar moverse haciendo un ruido.... cuando desplaza la barra de prueba por algunos sectores...
nicko_esx
full member
 
Posts: 19
Joined: 28.05.2012, 21:14
Local time: 19.06.2013, 11:06
Obtained thanks: 2


on 22.06.2012, 21:20
Re: ayuda con arduino uno y xsim

Postby astro on 22.06.2012, 21:20

Creo que ya sé cual es el problema. Tenes que separar los datos con un espacio.
Entre ~a01~ y la R, poné un espacio:
L~a01~ R~a02~

¿Que versión tenes del x-sim? Porque estoy buscando una versión vieja que NO se tenga q conectar a internet. Tengo la versión 2.1.0.3, pero cada 13 segundos se corta, supongo que trata de conectarse al sistema de chat y en esa computadora no tengo internet. La 2.1.0.3 es "community edition" y necesito la Workshop edition. Vi que a otros usuario les pasaba y usaban la Workshop edition para no tener ese problema, pero no la encuentro en ningún lado para desccargar. Y la versión 3 dice que para usarlo sin internet, va a ser una versión paga :(

Yo había instalado la versión 3 pero no podía encontrar donde estaba el TestPlugin.

Para poder abrir el puerto, en VSPE tenes que crear un puerto "Splitter".
astro
full member
 
Posts: 16
Joined: 06.06.2012, 05:46
Location:Argentina Argentina
Local time: 19.06.2013, 07:06
Obtained thanks: 3



Next

Similar topics

Return to X-Simulator compatible hardware


Add this Thread to:
Add this page to Mr. Wong Add this page to Del.icio.us Add this page to Webnews Add this page to Icio Add this page to Oneview Add this page to Linkarena Add this page to Newskick Add this page to Folkd Add this page to Yigg Add this page to Digg Add this page to Reddit Add this page to Simpy Add this page to StumbleUpon Add this page to Slashdot Add this page to Netscape Add this page to Furl Add this page to Yahoo Add this page to Spurl Add this page to Google Add this page to Blinklist Add this page to Blogmarks Add this page to Diigo Add this page to Technorati Add this page to Newsvine Add this page to Blinkbits Add this page to Ma.Gnolia Add this page to Smarking Add this page to Netvouz

Who is online

Users browsing this forum: No registered users and 0 guests