Artículo WII HT Libre - Headtrackin con inclinometro

Discussion in 'R/C ELECTRÓNICA' started by cacer, Oct 28, 2009.

  1. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    El Esquema Electrónico

    Tenemos dos esquemas distintos, uno para aquello que tengais la emisora con control de canales en el trainer y otro para los que no lo tengan.

    Aquellos que tengais la emisora con control de trainer podeis hacer cualquiera de los 2 esquemas.

    El potenciometro de 1K puede sustituirse por 2 resistencias de 1K. Si teneis cualquier duda por favor no dudeis en consultar.

    El conector del WIIMotion+ Esta numerado usar esa numeracion.

    La numeración de los conectores cuadrado y redondo se encuentran en los ficheros adjuntos.

    Tener cuidado ya que una conexión erronea puede acabar con la emisora en el servicio técnico
     

    Attached Files:

  2. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    El código

    Bueno pues por último os coloco el código que sirve para los dos esquemas.

    Solo teneis que comentar o descomentar NOTRAINER.

    El código creo que esta bastante comentado

    Code:
    /*#####################################################################################
    ## Wii HeadTracker    Version:  beta 3.20                         Enero 2010         ##
    ##                                                                                   ##
    ## Autor: El Nono, Cacer, Fbforos y el foro                                          ##
    ## Colaboracion:  www.aeromodelismovirtual.com                                       ##
    ##                www.fpv-bsas.com.ar                                                ##
    ## Documentacion:                                                                    ##
    ##                                                                                   ##
    ## http://www.aeromodelismovirtual.com/showthread.php?t=4300                         ##
    ## http://randomhacksofboredom.blogspot.com/2009/06/wii-motion-plus-arduino-love.html##
    ## http://www.windmeadow.com/node/42                                                 ##
    ## http://ingenegros.com.ar/Microcontroladores/leer-un-wii-nunchuck-con-arduino.html ##
    ## http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus             ##
    #####################################################################################*/
    
    //see http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
    //for info on what each byte represents
    
    /* Yaw data[]    3 y 0 
       Pitch data[]  4 y 1
       Roll data[]   5 y 2
       Estos Pich y Roll pueden intercambiarse según se monte el sensor para hacerlo 
       Buscais las lineas donde aparece data[4]   data[1] y las sustituis por 
       data[5] y data[2] o viceversa
    */
    /*  define NOTRAINER
        Si en nuestra emisora no podemos seleccior que canales serán controlados por
        el sistema de trainner dejaremos descomentada la línea NOTRAINER si por el contrario
        en nuestra emisora podemos controlar que canales seran manejados por el trainner
        comentraremos esta linea 
    */
    
    //#define NOTRAINER  
    
    /* define FB 
        Esto sirve para poder jugar con los parámetros que hay dentro de esta definición
        en el programa. Cuando lo comentais se cogen los parámetros estandar.,
    */
    
    //#define FB    //Coge mis parámetros del servo, comentar si quereis que los servos
                 // tengan recorrido estandar.
    
    #include <Wire.h>
    
    // ************** OPCIONES DE CONFIGURACION ****************************
    int pitch_reverse = 0;  // Invierte servo TILT   0 = normal  1 = Reverse
    int yaw_reverse = 1;    // Invierte servo PAN    0 = Normal  1 = Reverse
    int pitch_gan = 200;     // Relación entre angulo girado por la cabeza y el girado por
    int yaw_gan = 200;       // el servo a mayor x_gan menor es en angulo girado
    int SwitchPin = 5;      // Ubicacion del interrupter de centrado
                            // conectar un pulsador NA a masa
                            
    int ppmOutPin = 4 ;    // Salida de datos al trainner port
    int ppmInPin = 2 ;     // Entrada de datros del trainner port futura actualizacion
                           //   otras frec. distintas de 35 y 72
    int canales = 6;       // Canal a partir del cual añadiremos el HT  / Canales que se generan                       
    
    // Variables actualización
    
    int refreshTime1= 8;    // Intervalo de generar trama 
    long lastPulse1 = 0;
    
    /*    Recorrido maximos de los servos - -2000, 2000 corresponde a un pulso de 1000 a 2000ms
          y es el estandarModificando los valores podemos ajustar el recorrido del servo no utilizar
          valores por encima de +-2500 puede no funcionar
          Si probais los valores FB vereis que el recorrido del servo esta recortado en el pitch
    */
    #if defined FB
      int pitch_min = -2200; // TILT Minimo
      int pitch_max = 900;  //      maximo
      int yaw_min = -2300;   // PAN  Minimo
      int yaw_max = 2400;    //      Maximo
    #else
      int pitch_min = -2000; // TILT Minimo
      int pitch_max = 2000;  //      maximo
      int yaw_min = -2000;   // PAN  Minimo
      int yaw_max = 2000;    //      Maximo
    #endif
    
    //**********************************************************************
    
    volatile int estado = 1 ;
    volatile int numPulsos= 0;
    volatile int reposo=0;
    volatile unsigned long time=0;
    
    byte data[6]; //six data bytes
    int yaw, pitch;
    int yaw0, pitch0; //calibration zeroes
    long pitch_bak1, yaw_bak1; //acumula el movimiento
    int pitch_bak2, pitch_bak3; // variables auxiliares
    int yaw_bak2, yaw_bak3 ;
    int ledPin = 13;
    
    int pulseWidthP = 0, pulseWidthY = 0;
    int minPulseP = 1500;
    int minPulseY = 1500;
    //int dtime = 10;
    //int t = 0;
    int servoPin=7, servoPin2=6; //Salida de pruebas para servos
    
    void wmpOn()  // Inicializa el Wii Motionplus
    {
      Wire.beginTransmission(0x53); //WM+ starts out deactivated at address 0x53
      Wire.send(0xfe); //send 0x04 to address 0xFE to activate WM+
      Wire.send(0x04);
      Wire.endTransmission(); //WM+ jumps to address 0x52 and is now active
    }
    
    void wmpSendZero()
    {
      Wire.beginTransmission(0x52); //now at address 0x52
      Wire.send(0x00); //send zero to signal we want info
      Wire.endTransmission();
    }
    
    void calibrateZeroes(){  // Proceso de calibracion del motionplus al inicio
    
      for (int i=0;i<300;i++)       //Vacía el buffer del WM+ de basura
      {                             // antes de calibrar el dispositivo
        wmpSendZero();
        Wire.requestFrom(0x52,6);
        for (int i=0;i<6;i++){
          data[i]=Wire.receive();
        } 
      }
      for (int i=0;i<10;i++)
      {
        wmpSendZero();
        Wire.requestFrom(0x52,6);
        for (int i=0;i<6;i++){
          data[i]=Wire.receive();
        }
        yaw0+=(((data[3]>>2)<<8)+data[0])/10; //average 10 readings
        pitch0+=(((data[5]>>2)<<8)+data[2])/10;
    
      }
    }
    
    void siguePPM ()         // Se encarga de seguir la trama de entrada
    {
        if (millis() - time < 4 )
          {
            if (numPulsos <= (canales*2))
            {
                digitalWrite(ppmOutPin, estado);
                numPulsos = numPulsos + 1;
                estado= !estado ;
                time = millis();
            }
            else
            {
              updatePPM();
              time = 0;
              estado= HIGH; 
            }
          } 
          else 
          {
           digitalWrite(ppmOutPin, estado);
           estado= !estado ;
           numPulsos = 1;
           time = millis();
          }  
    }
    
    void receiveData()  // Recibe y procesa los datos del motionplus
    {
      digitalWrite(ledPin, HIGH);  
      wmpSendZero(); //send zero before each request (same as nunchuck)
      Wire.requestFrom(0x52,6); //request the six bytes from the WM+
      for (int i=0;i<6;i++){
        data[i]=Wire.receive();
      }
      digitalWrite(ledPin, LOW);
      
      if (bitRead(data[4],1)==1){
          pitch=((data[5]>>2)<<8)+data[2]-pitch0; 
          if (abs(pitch) <50) pitch=0;     
      } 
      else
      {
          pitch=(((data[5]>>2)<<8)+data[2]-pitch0)*5;
      }  
      if (bitRead(data[3],1)==1){
          yaw=((data[3]>>2)<<8)+data[0]-yaw0;
          if (abs(yaw )<30) yaw=0;
      }
      else
      {
          yaw=(((data[3]>>2)<<8)+data[0]-yaw0)*5;      
      }
      if (pitch_reverse == 1) pitch*=-1;
      if (yaw_reverse == 1) yaw*=-1;
    }
    
    void updateServo()  // Calcula el ancho del pulsos para cada servo
    {
          // ************** pitch *******************************
         //pitch_bak2= (pitch_bak1 += pitch)/pitch_gan;
         pitch_bak3 = constrain(((pitch_bak1 += pitch)/pitch_gan),pitch_min,pitch_max);
         pulseWidthP = (pitch_bak3/4)+minPulseP;
        // ************ Control para pruebas pitch*********************
        // ** Quitar el comentario a las 2 lineas siguiente para monitorizar con el arduino *******
        // ** Recordar que hay que comentar de nuevo antes del uso definitivo
        
        //Serial.print("\t pulse: ");   Serial.print(pitch); Serial.print("\t ");Serial.print(pitch_bak1); 
        //Serial.print("\t ");  Serial.print(pitch_bak2); Serial.print("\t ");Serial.print(pitch_bak3); Serial.print("\t "); Serial.println(pulseWidthP);
        
        // ************* yaw **********************************    
         //yaw_bak2=(yaw_bak1 += yaw)/yaw_gan  ;
         yaw_bak3 = constrain(((yaw_bak1 += yaw)/yaw_gan),yaw_min,yaw_max);  
         pulseWidthY = (yaw_bak3/4)+minPulseY;
    
        // ************ Control para pruebas *********************
        // ** Quitar el comentario a las 2 lineas siguiente para monitorizar con el arduino *******
        // ** Recordar que hay que comentar de nuevo antes del uso definitivo
        
        //Serial.print("\t pulse: ");   Serial.print(yaw); Serial.print("\t ");Serial.print(yaw_bak1); 
        //Serial.print("\t ");  Serial.print(yaw_bak2); Serial.print("\t ");Serial.print(yaw_bak3); Serial.print("\t "); Serial.println(pulseWidthY);  
    }
    
    void updatePPM()  // Añade los canales del HT 
    {
      
      #ifndef NOTRAINER
         // >>>> Genera los primeros canales ficticios <<<<<<<<<
        for (int i=0; i < canales; i++)   // Envia el pulso ficticio de nº canales
        {
          digitalWrite(ppmOutPin,LOW);
          delayMicroseconds(400);
          digitalWrite(ppmOutPin, HIGH);
          delayMicroseconds(650);
        }
        digitalWrite(ppmOutPin,LOW);
        delayMicroseconds(400);
      #endif  
    
        // >>>> Canal "pan" (Canales+1)  <<<<<<<<<
        digitalWrite(ppmOutPin,HIGH);
        digitalWrite(servoPin2, HIGH);    
        delayMicroseconds(pulseWidthY-400);
      
        // Pulso de separacion de canales 
        digitalWrite(ppmOutPin,LOW);
        delayMicroseconds(400);
       digitalWrite(servoPin2, LOW);
       digitalWrite(servoPin, HIGH);
        
        // >>>> Canal "tilt" (Canales+2) <<<<<<<<<
        digitalWrite(ppmOutPin,HIGH);
        delayMicroseconds(pulseWidthP-400);
    
       // Pulso de separacion de canales 
        digitalWrite(ppmOutPin,LOW);
        delayMicroseconds(400);
        digitalWrite(ppmOutPin,HIGH);
        digitalWrite(servoPin, LOW);
      #if defined NOTRAINER   
        delayMicroseconds(500);
      #endif    
    }
    
    void setup()
    {
      Serial.begin(115200);
      pinMode(ppmOutPin, OUTPUT);  
      pinMode(ppmInPin, INPUT);   
      pinMode(ledPin, OUTPUT);  
      pinMode(servoPin, OUTPUT);   
      pinMode(servoPin2, OUTPUT);  
      pinMode(SwitchPin, INPUT);
      digitalWrite(SwitchPin,HIGH); //Pull_up entrada switch centrado
      digitalWrite(ppmOutPin,HIGH);
      Wire.begin();
      wmpOn(); //turn WM+ on
      digitalWrite(ledPin, HIGH);
      calibrateZeroes(); //calibrate zeroes
      digitalWrite(ledPin, LOW);
    #if defined NOTRAINER
      attachInterrupt(0,siguePPM, CHANGE);
    #endif
    }
    
    void loop()
    {
       
        receiveData(); 
        updateServo();
    #ifndef NOTRAINER    
        if (millis() - lastPulse1 >= refreshTime1){   // Genera la trama PPM
            updatePPM(); 
            lastPulse1 = millis();
           } 
     #endif     
     
       if (digitalRead(SwitchPin) == 0) {
        pulseWidthP = 1500;
        pitch_bak1 = 0;
        pulseWidthY = 1500;
        yaw_bak1 = 0;
      }
    }
     
  3. luico Moderator

    luico
    Joined:
    Mar 9, 2007
    Messages:
    3,189
    Likes Received:
    0
    Muy bueno fbforos y compañia.
    Podrías comentar el objeto del CI LM393 para las emisoras no-trainer y los pulsadores S1 (si no me equivoco es un reset) y S2.
    ¿El potenciometro que es lo que ajusta?


    ¿Se puede utilizar directamente en la emisora Wfly09? o no lo tenéis probado aún.

    Y por ultimo y perdona la bateria de preguntas, se puede probar con el Arduino a 3,3v (es el que tengo :frown:)
     
  4. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    La salida de la emisora es de 3V y el LM393 sirve para ajustarla a 5 V para que el ardu no tenga problemas en reconocer la señal debido a las interferencias que se producen con el modulo de RF. Va realimentado para evitar las oscilaciones tal y como dice la hoja de datos del mismo. Como tiene 2 modulos comparadores uno de ellos no se usa y hay que poner sus entradas a masa.

    S2 es el centrado del sistema cuando se nos descentre :)redface2: contareis si hay que hacerlo frecuentemente) Os poneis en la posición de centrado y apretais el boton.

    El potenciometro variable ajusta la referencia del comparador, tiene que tener 2,5V (marcado en el circuito). Me funcione bien en una gama de 2 a 3V, por lo que puede sustituirse por 2 resistencias de 1k

    El sistema funcionaba sin él hasta que le puse el módulo a la emisora.

    Code:
    ¿Se puede utilizar directamente en la emisora Wfly09? o no lo tenéis probado aún
    El problema es que no dispongo de esa emisora y no se si funciona. Sialguien de madrid me deja una hago la prueba y se la devuelvo. Yo estoy de vacas hasta el 20 de enero.

    Pues no se que decirte. Para empezar corre la mitad que el de 5 y no se si es suficiente 8MHZ frente a 16 MHZ. Nunca lo he probado.

    En el Esquema ARDUINO_SHIELD es la placa del arduino con sus conexiones
     
  5. El_Nono Miembro Activo

    El_Nono
    Joined:
    Jun 22, 2007
    Messages:
    1,124
    Likes Received:
    0
    Hola Fbforos

    Huy!! que bueno!!! creo que esto es muy importante ya que con ese error hacia muy incomodo el uso del HT. :party::party::party:

    cual era el bug que revisando el código no logro encontrar la corrección????

    Saludos y buen trabajo! :plane:
     
  6. acristóbal Gurú FPV

    acristóbal
    Joined:
    Oct 9, 2006
    Messages:
    3,636
    Likes Received:
    1
    Hola Felix, Enhorabuena.

    Ahora tengo la contestación que te hice en el otro hilo ayer por la tarde.

    Como tengo todos los componentes aquí la semana que viene intentaré hacerlo funcionar.

    Gracias
     
  7. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    OK
    Code:
         //pitch_bak2= (pitch_bak1 += pitch)/pitch_gan;
         pitch_bak3 = constrain(((pitch_bak1 += pitch)/pitch_gan),pitch_min,pitch_max);
         pulseWidthP = (pitch_bak3/4)+minPulseP;
    
    Error
    Code:
       pitch_bak2= (pitch_bak1 += pitch)/pitch_gan;
         pitch_bak3 = constrain((pitch_bak1/ pitch_gan),pitch_min,pitch_max);
         pulseWidthP = (pitch_bak3/4)+minPulseP;
    Te pongo todo, aunque el código esta modificado en el ok, en el de error, en la linea de pitch_bak3 puedes ver en el constrain uso pitch_bak1 en vez del pitch_bak2 y además lo vuelvo a dividir por la ganancia:redface:
    Es difícil de ver ya que en este código me ahorro una variable
     
  8. eb7dln Gurú FPV

    eb7dln
    Joined:
    Feb 18, 2008
    Messages:
    3,018
    Likes Received:
    0
    Ya tengo el material pedido :)
     
  9. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Bueno NONO,

    Y esa IMU utilizando el WMplus y el Nunchuch, creo que utilizarla para estabilizar el avión con el Ardupilot podría estar bien:plane::plane::plane:
     
  10. carlosdma Miembro

    carlosdma
    Joined:
    Mar 2, 2007
    Messages:
    404
    Likes Received:
    0
    Hola FBforos,,,

    ya tengo instalada la nueva version y te digo funciona bien, sacudo para que se descentre y nada todo bien, eso si solo un detalle, cuando esta en posision de vuelo normal tengo muy pequeños movimientos en los servos ,, quizás son mis servos hextronik 9g,, talvez podría poner algún amortiguador o no se como se llame,,,

    Igual esta perfecto asi y hoy me voy a volar y probarlo en el aire,,

    MIS FELISITACIONES A TODOS;;;;;
     
  11. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Carlos, inicialmente no debería de hacerlo, probarlo y me contais, el programa elimina todos los movimientos y deja una zona muerta cuando los movimientos de la cabeza son mínimos.

    Si lo probais y se os mueve ligeramente buscaremos alguna solución.:biggrin:
     
  12. Nosepo Miembro Activo

    Nosepo
    Joined:
    Jul 12, 2009
    Messages:
    1,625
    Likes Received:
    1

    Añando un pcb que he hecho del circuito adaptador para las emisoras sin menu trainer. Se aceptan criticas....

    [​IMG]
     

    Attached Files:

  13. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Nosepo,
    no es una crítica, pero ya que estas puesto podría hacer tambien una con potenciometro multivuelta.:biggrin: en algunos casos puede venir mejor que las 2 resistencias ya que puedes ajustar el Voltaje del comparador
     
  14. Nosepo Miembro Activo

    Nosepo
    Joined:
    Jul 12, 2009
    Messages:
    1,625
    Likes Received:
    1
    Esta misma tarde lo pongo, ya lo tenia hecho ;)
     
  15. Nosepo Miembro Activo

    Nosepo
    Joined:
    Jul 12, 2009
    Messages:
    1,625
    Likes Received:
    1
    Ya lo tengo listo, ahi van los dos esquemas hechos por mi, del circuito de fbforos para adaptar el Ht para emisoras sin menú trainer.

    [​IMG]



    Prodriais hacer un recopilatorio de lo que se necesitaría comprar para montar uno?. Gracias.
     

    Attached Files:

  16. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Buenas noches a todos
    Que son S1 y S2 que marco en el esquema en rojo?:redface2::redface2::redface2:
     

    Attached Files:

    • s1s2.jpg
      s1s2.jpg
      File size:
      38.9 KB
      Views:
      832
  17. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    dos(2) interruptores
     
  18. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Pero de que tipo?
    Alguna especificación mas? Lo digo para pedir lo que me digais mañana en la tienda de electrónica.
     
  19. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    o tipo depende de como vas montar los interruptores.

    Normalmente yo utilizo interruptores de pcb e coloco pasta térmica (cola) para prender lo interruptor a la caja (cajón?), utilizo hilos para hacer las aligaciones.
     
  20. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Pero son tipo pulsador o como? Alguna foto tiene alguien?:redface2::redface2::redface2:
     
  21. zotfidjy Miembro

    zotfidjy
    Joined:
    Nov 19, 2007
    Messages:
    363
    Likes Received:
    0
    Hola, yo tengo puestos 2 pulsadores, del tipo normal abierto. Es decir, cuando pulsas, se produce el contacto, cuando sueltas se interrumpe el circuito.
    Saludos
     
  22. funfly Gurú FPV

    funfly
    Joined:
    Jan 10, 2009
    Messages:
    6,392
    Likes Received:
    0
    alguien lo tiene montado y funccionando. me gustaria tener uno.

    slu2
     
  23. merss Miembro Activo

    merss
    Joined:
    Dec 26, 2006
    Messages:
    1,308
    Likes Received:
    1
    cacer, podrías actualizar el primer post del hilo y colocar ahí el esquema y el código más actualizado.

    Saludos
     
  24. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Sus deseos son ordenes.... :rolleyes2:

    Revisar y me comentais que quereis que incluya..

    No sé si se puede cambiar el usuario para pasarselo a felix.. Si algún administrador lo puede hacer que me lo comente..
     
  25. merss Miembro Activo

    merss
    Joined:
    Dec 26, 2006
    Messages:
    1,308
    Likes Received:
    1
    Hoy he tenido un rato para probar los códigos que hice del Nunchuk, y la verdad es que funciona bien. Pero no solo no voy a colgarlos sino que voy a abandonar el proyecto (que queda refinar el código), ya que me he llevado una sorpresita... Y es que el Nunchuk solo detecta movimiento en "Tilt" y en "Roll", el pan no lo detecta... así que para quedarme con la mitad de funciones... me compro el WiiM+

    Saludos
     
  26. Ariel Miembro Activo

    Ariel
    Joined:
    May 29, 2009
    Messages:
    1,848
    Likes Received:
    2
    Me podéis confirmar si se puede hace con el ardupilot? en ves de utilizar el arduino.

    lo digo por hacer pruebas hasta que me compre el arduino , ya que tengo un ardupilot ahi parado.

    un saludo y una pasada de proyecto , muchas gracias a los que lo hacéis posible!
     
  27. monchitosi Miembro

    monchitosi
    Joined:
    Oct 14, 2006
    Messages:
    265
    Likes Received:
    0
    Bueno , yo sigo este proyecto desde el principio, las pruebas las estoy haciendo co una hitec focus 4 , como ya sabeis no dispone de menu trainer tambien uso el Osciloscopio de pc winoscillo.

    De entrada os digo que no entiendo lenguaje arduino asi que por favor si me poneis un pequeño fragmento de como tienen que quedar esas lineas de programa que afectan para una emisora sin menu trainer , es porque he provadode varias formas y nohe notado cambios.

    He conseguido ( en el osciloscopio )ver como los canales 7 y 8 varian su ancho de pulso de acuerdo con los movimientos del pan y tilt del WM+ . Sin embargo cuando activo el trainer ninguno de los servos conectados al receptor se mueven ni con los movimientos delWM+ ni de la emisora.Ya he comprobado el sistema de trainer y cable maestro con el tren procedente de otra emisora y funciona bien.

    En mi caso situando el pote variable en su centro midiendo 2.6 v con voltimetro no se nota diferencias en los trenes de pulsos de entrada y salida de este adaptador , tal vez sea porque esta emisora tenga el out ppm a un nivel bastante alto y no le haga falta este circuito y al mover 4 o 6 vueltas a un lado y otro este pote tampoco veo diferencias .

    Donde si se ven diferencias de la mitad es entre la entrada y salida de arduino.Decidme si os pasa lo mismo.Aunque esto no tiene que ver puesto que este tren de salida se genera aun sin conectar nada a la entrada del arduino.
     

    Attached Files:

  28. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Hola Monchitosi..

    Algunas radios, requieren un puente en el cable trainer, para que la entrada de trainer entre al modulo de radio. Mira con un polimetro, si el cable, tiene algun puente entre sus pines..

    Otra cuestión, es que el pulso de salida, no sea sufiente, para activar el receptor y si el problema de servos que comentas se dan en los canales que añades o tambien en los primeros 4 canales..

    Acuerdate, que en la última versión del código de fbforos, tienes que descomentar
    #def NOTRAINER

    Por si acaso, comentarte, que es eliminar el caracter //.

    De esta forma, no te genera los canales iniciales y saca los que tiene la radio, añadiendo los nuevos.
     
    #478 cacer, Feb 3, 2010
    Last edited: Feb 5, 2010
  29. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Buenas a todos.

    Pues he montado el ultimo esquema , conectado a mi futaba ff8 , menu trainer en on con el modo FUNC en todos los canales conectados servos a todos los canales.

    Y mi gozo en un pozo, cuando pulso el trainer no hace absolutamente nada por mucho que yo mueva el wiim+.

    Me he mosqueado he cojido otra radio la he conectado y mi emisora ha funcionado perfectamente en modo trainer tal cual estaba.

    He vuelto a conectar el arduino y nada de nada, es como si no llegara la señar a la emisora... chicos no lo entiendo!!!
     
  30. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Por partes, como diria Jack..

    Lo primero, yo no he probado el codigo, el Ardu está ocupado con otra historia de momento, pero por lo que indica fbforos, funciona tal cual en modo trainer.

    Cuando una emisora tiene menu trainer, se tienen que seleccionar los canales que quieres sean escuchados por el puerto, en este caso, entiendo que son el 6 y 7, descartando el resto.

    Lo que haria y es lo que he hecho para ver que mi prolema es el WM+. es meter el código de monitoreo de WM+. Este, saca por terminal serie, los datos del WM+, lo que nos descarta un problema en este punto.

    Segundo: Con el oscilo, aunque sea el de PC, analizaria si la señal de salida del Ardu, presenta una trama PPM correcta.

    Con la emisora conecta al Ardu, pondria un servo en el canal 1 o 2 y prueba si el recibe señal en esos canales al accionar los stick de la radio, lo que nos indica que si saca la trma de los primeros canales de forma correcta desde la radio.

    Si toso está correcto, solo quedan dos cosas que estarian mal:
    1) Receptor no le gusta la trama ampliada, por formato o por nivel de señal.

    2) El software no funciona.

    Si alguien a probado esta ultima version y le funciona, que lo postee, para descartar este ultimo punto.

    Siento no poder ayudar más de momento, pero mi WM+ esta muerto de momento.
     
  31. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Siempre me acuesto tarde por culpa de este foro...

    IMPORTANTE:

    Si el WM+ no presenta datos, no hay salida PPM..

    Revisar bien que el WM+ lee perfectametne.

    En mi oscilo, saca una trama respetable. No he podido hacer mas pruebas, lo siento...:sad:
     
  32. Ariel Miembro Activo

    Ariel
    Joined:
    May 29, 2009
    Messages:
    1,848
    Likes Received:
    2
    Creo que la he liado.
    He comprado un WM+ que no es el mismo que estais usando vosotros, o que no es el original.

    es el de las fotos.

    Alguien lo ha probado con este modelo? o no vale para ello?
     

    Attached Files:

  33. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0

    Buenas, perdonad pero el trabajo y mi nieto:baba: me roban todo el tiempo.

    Son 2 pulsadores normalmente abierto
     
  34. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Yapahoe,

    yo tenia una FF8 y si mal no recuerdo tenia una particularidad en el conector. El pin 6 del conector circular era el negativo, todavía tengo algunos cables de simulador en los que el pin 6 del conector circular lo tenia que conectar a negativo para que funcionase.
    ¿Por que funcionan los cables emisora emisora? comprueba con el polimetro y verás que el 6 esta conectado al 6.

    Prueba con el polímetro el voltaje que tienes entre el pin 6 y el 1. Si sigues teniendo problemas contacta de nuevo
     
  35. monchitosi Miembro

    monchitosi
    Joined:
    Oct 14, 2006
    Messages:
    265
    Likes Received:
    0
    WM HT con emisora sin menu trainer

    :party::party::party: He conseguido que funcionen las copias de canales y ademas el pan.

    Para empezar creo que el lm393 se debe poner en todoas las emisoras pues nos permite amplificar la señal y en los casos en que lo tengamos montado debemos ajustar la tension de referencia aproximadamente a la de entrada de señal . si con un voltimetro en tension continua medis 3.2 voltios en la entrada del adaptador (out trainer), acto seguido colocar el voltimetro en la Vrefencia y regular el pote hasta conseguir alcanzar en anterior valor . a mi me ha funcionado en una horquilla entre 2.7 y 3.7 voltios.

    En mi post anterior trabajaba con una hitec focus 4 que sacaba por out trainer 8 o 9 voltios y no me funcionaba ni la copia de canales normales ni el WM :mad:. Habria que hacer algun cambio en el adaptador.

    Con la wflw wft09 algo mejor,:rolleyes2: tension out trainer 2 voltios, me funcionaba regular de 0.5 v hasta 3.7v Vreferencia. Regular quiero decir que me copiaba bien los cnales normales pero en los del WM solo se movia el pan , digo mejor TEMBLABA sin control .

    Con la futaba T6XS que saca 3.2 voltios pues aun mejor ,:ansioso::ansioso: tension out trainer 3.2v , horqilla de buen funcionamiento en Vreferencia del lm393 entre 2.7 y 3.7v como he puesto arriba .Me copia a la perfeccion los canales normales . PEeeeeeeero , ya estamos con lo de siempre que nada es tan sencillo como parece quedan sin funcionar algunas cosillas:

    --- No consigo que se mueva el tilt
    --- En el pan tambien me pasa que la posicion de centrado esta bastante alejada de lo razonable .Para cubrir los 180º tengo que poner yaw -2500 y 12000 de ese modo el servo gira hacia la derecha unos 30º y para la izquierda 150º.:redface:

    Por cierto , me entusiasma este proyecto.

    Gracias a los que aportais vuestros conocimientos.

    Ahhhhh se me olvidaba , el tema de los osciloscopios de pc , tengo winoscillo y scope pero la señal solo he conseguido verla bien con la emisora hitec . Con las otras emisoras que sacan menos tension en out trainer solo se ve la señal fugazmente durante una fraccion de segundo y solo algunas veces , ni tampoco despues de pasar por el lm393.
     
    #485 monchitosi, Feb 11, 2010
    Last edited: Feb 11, 2010
  36. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0

    Buenos dias fbforos.

    Estamos hablando de este mismo conector verdad?[​IMG]
    Me estas diciendo que el negativo es decir la masa, lo tengo que conectar al 6 y no al 7?
     
  37. monchitosi Miembro

    monchitosi
    Joined:
    Oct 14, 2006
    Messages:
    265
    Likes Received:
    0
    YAPAHOE
    Esta visto que cada emisora es un mundo

    http://www.clubcierzo.com/Mauales/Conectar una emisora alumno maestro.pdf. Al final estan los diagramas .

    Si estas utilizando los extremos de un cable comercial de hitec y futaba como estoy haciendo yo , revisa si puedes abrirlos que no estes usando el conector de alumno , este tiene los pines 4 y5 puenteados. creo recordar que esto hace que no pueda ser reversible .

    si no puedes abrirlo lo compruebas con un polimetro.

    En el interior de mis emisoras hitec y futaba el negativo va al pin central 6 , y ya es los conectores enganchan tambien al blindaje .

    te aconsejo que saques solo 3 hilos (- out in ) puedes alimentar con un paquete de baterias . Con esto hacemos mas compatibles las emisoras , por ejemplo la wfly no saca el power por trainer. Asi podemos intercambiar equipos.
     
    #487 monchitosi, Feb 11, 2010
    Last edited: Feb 12, 2010
  38. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Ariel,

    Como veo que nadie te contesta, te contesto yo...


    Efectivamente esa placa es distita a la que tenemos alguno,pero no por ello no tiene por que ser valida, puede que sea una copia o simplemente una version diferente.

    No veo en la foto el Giroscopo, pero puede que este en otro encapsulado diferente.

    Mi recomendación, es que lo pruebes con el programa de pruebas del WM+ y veas si responde bien a todos los ejes, sobre todo al Z.


    Suerte campeon!!!
     
  39. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Estas seguro de lo que dices, si van al positivo y luego enganchan a masa corto seguro ¿no?
     
  40. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Si ese es el conector del que hablamos. Yo creo recordar que era en la FF8 en la que la masa iba conectada al 6. para que me sirviesen los adaptadores de simulador para la ff9 y la ff8 unia el 6 y el 7.

    Antes de unir nada te recomiendo que midas con el polímetro que tensión tienes entre el 1 y el 6. Deberia de haber unos 11V.

    Una pregunta. Se te encienden los led del arduino cuando conectas la alimentación entre el 1 y el 7?
     
  41. sinver Miembro Activo

    sinver
    Joined:
    Aug 31, 2006
    Messages:
    1,493
    Likes Received:
    0

    A las wenas !!!

    Acabo de recibir un motion compatible de dealxtreme.com, para enrredar una miaja y eso :party:

    Es este:

    http://www.dealextreme.com/details.dx/sku.32506

    al cual no ponen muy allá q digamos pero por el precio habrá q probarlo !!!

    el caso es q estado mirando los gyros q lleva y son estos:


    http://invensense.com/mems/gyro/isz650.html


    http://invensense.com/mems/gyro/idg650.html


    así q trankilo q por gyros no será !!!

    otra cosa es como funcionen y desde luego si es compatible con el Wii+ original tiene q funcionar como al resto de los foreros les funciona el suyo

    así q ala !!! a probar se ha dicho !!!



    salu2 !!! :wink2:


    PD; Por cierto Cacer, q micro lleva el wii+ original ? en el clon está borrado !!! será para no copiar al copiador , jajajajaja !!! :ansioso::ansioso::ansioso:
     
  42. Ariel Miembro Activo

    Ariel
    Joined:
    May 29, 2009
    Messages:
    1,848
    Likes Received:
    2
    Muchas gracias Cacer, ya lo daba por perdido a que alguien me contestara.

    pues voy a intentarlo con el y lo publico aqui asi queda.

    Ya que te pillo , podrías comentarme si puedo utilizar un ardupilot que tengo sin usar en ves de la placa arduino_shied ?

    Un saludo y gracias por tu respuesta.
    Ariel
     
  43. monchitosi Miembro

    monchitosi
    Joined:
    Oct 14, 2006
    Messages:
    265
    Likes Received:
    0
    Perdon por el error al escribir :icon_redface:, ya esta corregido , es de lo logica que es el negativo el que va soldado al pin central6:
     
  44. sinver Miembro Activo

    sinver
    Joined:
    Aug 31, 2006
    Messages:
    1,493
    Likes Received:
    0
    Wii+ compatible de Dealextreme OK !!!

    Pos eso q la PCB clonada del Motion original funciona a las mil maravillas !!!

    Las conexiones son las mismas de derecha a izquierda y quedando a la izda el 8 pin libre.


    Gracas a todos los q habeis colaborado en este interesante proyecto con esta gran aportación sin animo de lucro al foro.

    Enhorabuena, os lo habeis currao !!!

    salu2 !!!

    PD; Por cierto Cacer, q micro lleva el wii+ original ? en el clon está borrado !!! y tengo curiosidad por saberlo
     
  45. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Hola Ariel,

    Como puedes ver, al amigo Sinver le funciona el clon del WM+. Sobre usar el Ardupilot para esto, por poderse usar, se puede, pero tiene la incomodidad de que tendras que desoldar y soldar para usar los pines.

    Yo no te lo recomiendo.

    Mejor es pedir uno, en el hilo de compras conjuntas, tiene una tienda en porugal que no tiene malos precios http://loja.lusorobotica.com/

    Sinver:

    Jejeje Los clonadores son muy suyos y no quieren que les copien.

    Cuando pueda te miro el micro que usa el mio.
     
  46. Ariel Miembro Activo

    Ariel
    Joined:
    May 29, 2009
    Messages:
    1,848
    Likes Received:
    2
    Muchas Gracias Cacer.

    En realidad ya me funciona , pero lo que hice es montarlo con un PIC, ya que soy un amante de ellos y al arduino aun le miro de reojo jejejej :wink2:.

    Lo que comenta Sinver me viene de perlas , por que ya creia que el clon wm+ era una m... , por que tengo aun algunos problemas , pero creo que es tema de calibracion.

    El código en C18 para el pic lo hice básicamente traduciendo el C del arduino , y no me resulto muy complicado leer los datos ya que estoy familiarizado con el protocolo I2C.

    Lo que no tengo muy claro es el método de calibración del WM+ , ya que al iniciar el servo se me empieza a ir lentamente desde la posicion central hacia un lado, hasta llegar al máximo.
    Viendo los valores que me entrega el WM en pich por ejemplo, veo que en realidad va aumentando.

    Sabéis por que puede ser?

    Un Saludo.
    Ariel

    PD: si a alguien le interesa el código fuente en C18 para microcontroladores PIC18f lo pongo en un post.
     
  47. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0
    Hola Ariel,

    Pues se me ocurren dos cosas que pueden estar pasando para que se incremente el valor:

    1) Interferencias como las mencionadas en post de este hilo

    2) Que este mal el WM+, pero eso se ve si quitando la radio funciona bien la salida I2C.

    Sobre el post del código en PIC, yo creo que si te funciona, pues seria bueno tener la alternativa del PIC, pero te tocará no solo poner el código, deberias poner tb el circuito.

    Otra opción. para no liar las cosas, es poner un hilo directamente con el PIC HT WM+

    Un cordial saludo.
     
  48. sinver Miembro Activo

    sinver
    Joined:
    Aug 31, 2006
    Messages:
    1,493
    Likes Received:
    0
    jejejej !!!

    ok, Cacer, ya me dirás q chip lleva, me da q es un atmel atmega tb, no se por la pinta..... y lo bueno sería meter un fimware a es micro q funcionara directamente sin el arduino ya q sería aun mas pequeño y algo másbarato

    salu2 !!!
     
  49. cacer Miembro Activo

    cacer
    Joined:
    Jan 3, 2008
    Messages:
    1,136
    Likes Received:
    0

    Pinta tiene, pero esta remarcado como RVL-GU 404 0843kmO6y

    Si fuera un ATMEL, se podria integrar el código en el, cambiando la lectura de I2C por la analogica :rolleyes2:, eliminado la necesidad del Arduino.


    Buena aproximación Sinver :tongue2:
     
  50. sinver Miembro Activo

    sinver
    Joined:
    Aug 31, 2006
    Messages:
    1,493
    Likes Received:
    0
    okis muchas thks

    jejejeje !!! YA VEREMOS ....
     

Share This Page