Artículo WII HT Libre - Headtrackin con inclinometro

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

  1. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    yapahoe,

    Antes de utilizar a emisora, utiliza o Winoscillo para ver a trama ppm.

    Verifica que cuando la wiimp se movimiento la largura de los pulsos se modifican.

    Después, e só después deberás ligar lo arduino ao Futaba.

    Pelo que escribiste, parece que las aligaciones están correctas.

    Mira, que para que o programa de Nono/Cacer funcione es necesario que a emisora permita seleccionar os canales do "radio entrenador" , por ejemplo lo 6 e 7 (ou otros) da trama que entra no pin de input (pin 3 da futaba)

    Ja lo código de fbforos\cacer recibe los pulsos da emisora (pin 2 de futaba para pin 2 de arduino), adiciona los pulsos da wiimp/arduino e vuelta a introducir la trama na emisora para ser emitida (pin 4 do arduino para pin 3 da futaba), mas fbforos podrá explicar mejor la idea.
     
  2. fbforos Miembro

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

    que emisora tienes? tal y como esta ahora el programa, la emisora tiene que permitir programar que canales van actuar como maestro alumno.

    Cuando me comentes la emisora que tienes, seguimos.
     
  3. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Jalves, por ahora la version 3.01 no permite usar emisoras en las que no se pueda seleccionar que canales seran usados por el alumno.

    La razón son las interferencia que provoca el modulo de RF en 35, 40 y 72MHz. Adjunto encontraras los oscilogramas sin el modulo de RF y con el módulo colocado. Las pruebas las he realizado en las 3 bandas anteriores
    La línea azul es la salida de la emisora y la roja la que entrega el arduino
    Mañana probaré con la emisora que tengo en 2,4Ghz.

    La emisora o el receptor es de x canales. Lo que hace el programa es leer los pulsos que genera la emisora por el pin 2 (redondo) y copiarlos en la salida pin 3 (redondo). Después del pulso X-2 sustituye los 2 últimos por los generados por el HT. Por ejemplo, si tenemos una emisora de 8 canales copiará los 6 primeros y sustituirá los 2 últimos.

    Si no entiendes algo por favor me lo comentas y buscamos como explicarlo mejor.
     

    Attached Files:

  4. yapahoe Miembro

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

    Tengo una futaba FF8, la cual me deja elegir los canales maestro y alumno sin ningún problema.

    Y de alumno me deja poner NORM y FUNC que no se que es el FUNC pero vamos me deja esas 2 opciones.

    Es decir yo cuando pulso el trainer puedo hacer que la emisora "esclava" solo tenga acceso a los canales 7 y 8 que es lo que yo entiendo que hace falta poder usar el arduino con el wiim+.
     
  5. CT1ECE Nuevo Miembro

    CT1ECE
    Joined:
    Jan 1, 2009
    Messages:
    56
    Likes Received:
    0
    Yapahoe los valores que ves en el serial monitor á sido a 115200 baudios e en el programa Serial.begin(115200) o continuas a tener el Serial.begin(57600) para poder ver algo?

    saludos

    João Carrola
     
  6. yapahoe Miembro

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

    Para poder ver los valores a 115200 tengo que tener el serial begin a 57600 sino solo veo símbolos raros. Pero ahora haciendo eso veo los valores etc sin problema.
     
  7. CT1ECE Nuevo Miembro

    CT1ECE
    Joined:
    Jan 1, 2009
    Messages:
    56
    Likes Received:
    0
    Entonses creio que el problema lo tienes en la configuracio del programa arduino
    deves configurar en tools Board como Arduino Duemilanove or Nano w/ ATmega328 or Arduino Diecimila, Duemilanove, or Nano w/ ATmega168.
    Dependendo de processador que tengas en tu placa.
     

    Attached Files:

  8. CT1ECE Nuevo Miembro

    CT1ECE
    Joined:
    Jan 1, 2009
    Messages:
    56
    Likes Received:
    0


    Depois de aceres la configuracion vuelve a experimentar el programa de teste

    Utiliza lo código (software) de aquí : http://randomhacksofboredom.blogspot...1_archive.html

    e verifica no serial monitor (115200) los valores producidos pela wiimp.

    Agora sem acer ninguna alteração ao codigo tienes que ler los valores correctamente.

    Se tudo está bien carrega el programa version 3.01 de fbforos.

    Con las ligaciones que tienes feito a tu radio tiene que trabajar en el canal 7 e 8 del trainer sem problemas

    Saludos

    João carrola
     
  9. fbforos Miembro

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

    es una emisora perfecta. Tienes que utilizar el modo FUNC, la diferencia es que en modo FUNC aplica las mezclas que tienes definidas en la emisora, por ejemplo si tienes limitados los recorridos, esta selección permanece. Si seleccionas el modo NORM el servo se movera según tengas programada la emisora alumno, en el caso del HTWm+ sera un recorrido completo del servo.

    Me imagino que el receptor que estas usando es de 8 canales , entonces selecciona el canal 7 y 8 como alumno en posición FUNC. En esta emisora tendrás que buscar algún sistema para mantener pulsado el trainer ya que es un pulsador y se desactiva solo
     
  10. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    FBforos , el sistema que he buscado es una autentica maravilla!!! jejeje una goma que lo mantiene pulsado siempre :tongue2::tongue2::tongue2::tongue2: es rudimentario pero funciona.

    Voy a hacer mas pruebas a ver si consigo que se mueva algo.

    No he puesto ni interruptor ni entrada de radio a arduino es decir que solo tengo el pin 4 del arduino que va a la radio, no tengo mas, bueno si , masa y raw.
     
  11. fbforos Miembro

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

    la resistencia de centrado al VCC si es necesaria, aunque no pongas el pulsador. y tiene que ir del pin 5 al VCC. Si no la pones podrías tener inestabilidad. Una prueba coje el receptro, le pones 2 servos uno en el 7 y otro en el 8 y mira a ver si se mueve.

    Adicionalmente a ver si me puedes hacer una captura de pantalla con las lineas de control descomentadas. Te tienen que dar lo siguiente:

    El primer valor es YAW y tiene que se 0 cuando no mueves el sensor, puesto si pones el sensor en la mesa y lo giras a IZD y Dcha tiene que dar valores positivos y negativos y cuando dejes el sensor quiero 0

    El segundo es el YAW acumulado. Cuando giras en una direccion va subiendo, cuando paras se mantiene y cuando giras en la otra va bajando. Tiene que estar a 0 siempre en el punto del centro.

    El tercero y el cuarto son valores parciales y

    El 5 y último valor que te encuentras es el tamaño del pulso de YAW, varia entre 1000 y 2000, tiene que valer 1500 en el centro.
    Cuentame si te funciona así

    *****************
    Edición

    Me he dado un viajecito por la hoja de datos del atmel y como me imaginaba tiene posibilidad de pull-up de las entradas. Luego colgaré la versión 3.02 que ya no necesitara la resistencia del pin 5 al positivo. :tongue2:
     
    #411 fbforos, Dec 20, 2009
    Last edited: Dec 20, 2009
  12. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Muy buenas a todos por decir algo.

    Os cuento el problema de ahora.

    Pongo la programacion 3.01 , descomento para ver en el monitor y me da valores perfectamente los cuales cambian si yo muevo el wiim y son similares a los que me comentas fbforos.

    Descomento esos valores y vuelvo a meter la programacion en el arduino.

    En el receptor siempre que quiero hacer pruebas tengo 2 miniservos conectados en los canales 7 y 8, pero es que no hace absolutamente nada, me explico.

    Si yo dejo el canal 7 a la izquierda del todo, al pulsar el trainer deberia de ponerse en la posicion que le este dando el wiim+, no?.
    Pues nada , sigue mandando la radio , vamos como si no le entrara info desde al arduino
     
  13. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Vamos esto si que es raro, no puede ser que tengas tan mala suerte:laugh:, por lo que hay algo raro.

    aqui tienes el manual de tu futaba.

    http://manuals.hobbico.com/fut/8uafs-8uaps-manual.pdf

    bajatelo y en la pág 35 tienes la configuración supongo que el trainer esta activo y los canales 7 y 8 como esclavos en modo FUNC.

    Tambien supongo que tienes asignados los canales 7 y 8 a sendos potenciometros y que cuando mueves el potenciometro en la radio se mueven los servos siempre que no este activado el modo trainer
     

    Attached Files:

  14. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Pues si chico esto es muy muy raro.

    YO muevo en la emisora los potenciometros y los servos se mueven perfectamente, cuando puslo el trainer se supone que no se deberian de mover los servos, verdad? PUES SE SIGUEN MOVIENDO pero con los potenciometros.

    Con el head track v2 que me dejo hace un tiempo javiroarak me paso algo parecido, y no se si es que necesita algun otro cable puenteando o que, por que es que no le llega señal a la radio y si no le llega por mucho que le de al trainer no hace nada.

    El trainer esta activado, y los canales 7 y 8 en modo slv y con FUNC.

    Voy a cambiar en el arduino el pin 4 por otro , el 7 o asi, no se por seguir probando cosasss... yo que se... ya...:frown::frown::frown::frown::frown::frown::frown:
     
  15. CT1ECE Nuevo Miembro

    CT1ECE
    Joined:
    Jan 1, 2009
    Messages:
    56
    Likes Received:
    0
    yapahoe,

    You tenia los mesmos problemas que tu até ver que tenia el programa mal configurado quando acia la compilacion. Enquanto esto não te funcionar a 115200 con el serial begin a 115200 no adianta tentares passar para la etapa seguinte.

    saludos

    João Carrola
     
  16. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Creo que los tiros no van por ese camino. Has utilizado alguna vez el modo maestro alumno con esa emisora, es para ir descartando cosas.

    Otro punto, desconectas el programador FTDI cuando haces las pruebas ¿no?
     
  17. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Si si ,esta emisora la he usado como maestro alumno muchas veces , en mis inicios para aprender y ahora para enseñar.

    Si si el programador FTDI lo desconecto siempre, es decir me quedo solo con el arduino y el wiim+ conectado a la emisora.

    Dudo que sea un problema de velocidad como dice CT1EC ya que hice la prueba del blink y funciono perfectamente.
     
  18. CT1ECE Nuevo Miembro

    CT1ECE
    Joined:
    Jan 1, 2009
    Messages:
    56
    Likes Received:
    0
    La preba del blink também you la tinha etxo e me funcionaba. Agora te digo que la configuracion del programa es muito importante porque las placas de arduino mini pro no son todas iguales no clock (Clock Speed 8 MHz (3.3V model) or 16 MHz (5V model))

    For the 3.3V versions of the Arduino Pro Mini, select Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328 or Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 from the Tools > Board menu (depending on the microcontroller on your board). For the 5V versions of the Arduino Pro Mini, select Arduino Duemilanove or Nano w/ ATmega328 or Arduino Diecimila, Duemilanove, or Nano w/ ATmega168.

    saludos

    João Carrola
     
  19. El_Nono Miembro Activo

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

    Yo haria la siguinte prueba: Pondria todos los canalaes en modo FUNC y luego iria probando canal por canal en el receptor (mientras se mueve el HT) a ver si no esta saliendo el movimiento por otro canal.

    Haciendo pruebas a mi me ha pasado de que yo pensaba que los canales del HT estarian saliendo por determinado canal y no me funcionaba, luego me di cuenta que estaban saliendo por otro canal que no tenia configurado la función "FUNC" asi que no se movían los servos, Al activar la FUNC de todos los canales pude comprobar perfectamente por donde estaba enviando la señal el HT y corregirlo.

    Saludos.

    El Nono
     
  20. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Ya se que es desesperante el que no nos funcione algo. Pero hay que ir descartando problemas.

    que modelo de arduino estas utilizando? puedes poner una foto
     
  21. funfly Gurú FPV

    funfly
    Joined:
    Jan 10, 2009
    Messages:
    6,392
    Likes Received:
    0
    una novedad :
    [​IMG]

    Hilo

    video

    lo que me gusta del invento, que esta integrado en las mismas gafas, y que en las fatshark hay espacio para integrar el vuestro.

    slu2
     
  22. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Haberlo hailo:biggrin: pero no me gusta la idea. Las gafas son un elemento delicado que se puede quemar por efecto del sol en un momento. El coste de la avería sería mucho más elevado. Además no es multiprogramable como el nuestro :ansioso:. Ni creo que valga 35/40€:party:.

    Aunque para aquellos que no les guste trastear con la electronica :frown: puede ser una opción
     
  23. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Esquema para Versiones del soft 3.02 en adelante

    Este esquema es valido para las versiones de software 3.02 en adelante. Como podeis comprobar la resistencia externa conectada entre la salida 5 y el VCC ya no es necesaria. Aquellos que la tengais ya soldada la podeis dejar.

    Cuando hagais las conexiones siempre fiaros de la leyenda que hay en ellas, si decimos VCC hay que conectarlas a VCC. Si es posible comprobar con el polímetro que estan conectados los 2 VCC de la placa. Si no lo estuviesen como le pasa a Nono conectarlo al VCC indicado por la linea de puntos.
     

    Attached Files:

  24. funfly Gurú FPV

    funfly
    Joined:
    Jan 10, 2009
    Messages:
    6,392
    Likes Received:
    0
    :laugh::laugh::laugh::laugh::laugh::laugh::laugh::laugh::laugh::laugh::laugh::laugh::laugh:
     
  25. yapahoe Miembro

    yapahoe
    Joined:
    Aug 18, 2009
    Messages:
    578
    Likes Received:
    0
    Y el software?:tongue2::tongue2::tongue2::tongue2::tongue2:
     
  26. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Bueno, a continuación la versión 3.02. El esquema es el anterior

    Code:
    /*#####################################################################################
    ## Wii HeadTracker    Version:  beta 3.02                          Diciembre 2009    ##
    ##                                                                                   ##
    ## 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 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 estandar
    // Modificando los valores podemos ajustar el recorrido del servo
    // no utilizar valores por encima de +-2500 puede no funcionar
    
    #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 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 (data[4]&&2){
          pitch=((data[5]>>2)<<8)+data[2]-pitch0; 
          if (abs(pitch) <30) pitch=0;     
      } 
      else
      {
          pitch=(((data[5]>>2)<<8)+data[2]-pitch0)*5;
      }  
      if (data[3]&&2){
          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_gan),pitch_min,pitch_max);
         pulseWidthP = (pitch_bak3/4)+minPulseP;
        
        // ************* yaw **********************************    
         yaw_bak2=(yaw_bak1+=yaw)/yaw_gan  ;
         yaw_bak3 = constrain(yaw_bak2,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 
    {
         // >>>> 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);
    
        // >>>> 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);
    }
    
    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);
    }
    
    void loop()
    {
        receiveData(); 
        updateServo();
        if (millis() - lastPulse1 >= refreshTime1){   // Genera la trama PPM
            updatePPM(); 
            lastPulse1 = millis();
           } 
       if (digitalRead(SwitchPin) == 0) {
        pulseWidthP = 1500;
        pitch_bak1 = 0;
        pitch_bak2=0;
        pulseWidthY = 1500;
        yaw_bak1 = 0;
        yaw_bak2 =0;
      }
    }
    Esperaba poder ponerme con la modificación para las radios sin selección de canales pero un duende me ha escondido :eek: mi HTWm+ y he perdido más de 2 horas buscandolo
     
  27. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Leñe que no le dejais a uno no terminar de escribir :ansioso:

    Quizas debi de ponerlo en el mismo post ¿No?
     
  28. fbforos Miembro

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

    Es una novedad que por ahora funciona peor que las nuestras. Fijaros como centra el sistema activando el pulsador de centrado que hay al lado de la antena:icon_twisted:
     
  29. funfly Gurú FPV

    funfly
    Joined:
    Jan 10, 2009
    Messages:
    6,392
    Likes Received:
    0
    es posible. otro video.
     
  30. Nacho Nuevo Miembro

    Nacho
    Joined:
    Nov 19, 2008
    Messages:
    69
    Likes Received:
    0
    hola gente , que buen proyecto! es una maravilla! ,,, ya estoy por comprar todas las cosas y me surgió una duda , alguien uso el motionplus "generico" , no el genuino ? dado que en dealextreme tienen uno por solo 16u$s pero no creo que sea el genuino, tal vez funcione bien, solo que las carcasas son de menor calidad y no trae la funda de silicona .
    les dejo el link del producto y agradeceria si alguien uso este producto me avise.

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

    saludos ...
     
  31. fbforos Miembro

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

    inicialmente debería funcionar ya que es compatible con los comandos de la WII para que funcione, la wii le tiene que pasar los mismos códigos al original y al clon y este tiene que devolver lo mismo .No creo que tengas ningún problema, pero inicialmente es una creencia
     
  32. javiroarak Miembro

    javiroarak
    Joined:
    Nov 19, 2007
    Messages:
    392
    Likes Received:
    0
    Bueno FBFOROS, que tal vas con la versión para radios sin selección de canales...:ansioso: Yo estoy pendiente de tus resultados para terminar de escribir la carta a los retes magos y si a caso pedir una futaba de 2º mano...:locos:

    Pues eso, mucho ánimo y felices fiestas a todos!

    JR
     
  33. eb7dln Gurú FPV

    eb7dln
    Joined:
    Feb 18, 2008
    Messages:
    3,018
    Likes Received:
    0
    Perdonad pero ... por no leerme el hilo entero .... pregunto...
    Es posible utilizarlo sin la configuración maestro/alumno, por ejemplo en una ff9, conectarlo a la salida ppm y que el arduino genere los 8 canales de la futaba + 2 más para el pan & til

    Así en total podría tener 10 canales
     
  34. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    Ebelin,

    Si, es posible!

    Tu tienes que interromper la trama ppm entre la placa madre da emisora (se existir una) , desviar a trama para o arduino/wii e colocar a salida do arduino na entrada da placa emisora FM da emisora.

    No tu caso, seleccionar ppmOUT na emisora, conectar a trama ppm ao arduino con wiimp e conectar la salida do arduino a entrada do Tx LRS.

    Puedes incluso colocar mas dos interruptores ou potenciómetros e aumentar para 12 canales no total.
     
  35. eb7dln Gurú FPV

    eb7dln
    Joined:
    Feb 18, 2008
    Messages:
    3,018
    Likes Received:
    0
    Gracias Jalves

    Pues seria estupendo para implementarlo con el Sistemas de Tomas en 433, el es capaz de manejar una Trama con 12 Canales PPM

    Me podrías indicar como implementar los 12 canales?
    2 seria por ejemplo para el pan & Til y otros dos por ejemplo con dos interruptores o dos potenciometros
     
  36. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    Ebelin,

    10 canales es muy fácil, utiliza lo código de fbforos, versión 2.

    los dos canales extra tienen que ser adicionados ao código, primero para hacer la lectura, después para hacer la escrita.

    Cacer he subido algunas aportaciones con respecto a lectura de potenciómetros:

    http://www.aeromodelismovirtual.com/showpost.php?p=65648&postcount=32

    Experimenta los códigos e después me dirás como corre la integración de los dos.
     
  37. eb7dln Gurú FPV

    eb7dln
    Joined:
    Feb 18, 2008
    Messages:
    3,018
    Likes Received:
    0
    Pues sí ya con 10 Canales voy sobrado bueno pues a empezar a recopilar materiales.
    Gracias
     
  38. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Jalves, no es tan fácil como parece y te voy a explicar la razón.

    La trama de salida de la emisora se actualiza 50 veces por segundo.
    El ancho de pulso varía entre 1 y 2 ms. Podemos tener el caso en que todos los canales se encuentre con pulso de 2ms por lo que:

    2ms*12 canales *50 =1200ms y esto no es posible ya que necesitamos 1,2sg cuando solo tenemos uno.

    Existen otras opciones para tener 12 canales y puede que abra un hilo sobre una que tengo en mente y que podría funcionar muy bien. Pero para ello tengo que terminar el HTWMplus
     
  39. eb7dln Gurú FPV

    eb7dln
    Joined:
    Feb 18, 2008
    Messages:
    3,018
    Likes Received:
    0
    Pues sería interesante que lo implementaras a mi personalmente me vendría estupendo
     
  40. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    y creo que a todos

    Cuando vea que funciona el HTWMplus tengo 2 ideas posibles,

    1.- con los canales 7y8 de la emisora sacar 8 canales proporcionales
    o
    2.- Aumentar a 12 el nº de canales

    pero ya os digo, esto depende de que funcione el HTWMplus :baba:
     
  41. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    fbforos,

    Mi graupner es capaz de emitir 9 ou 12 canales.

    para o hacer, aumenta lo periodo para uns respetables 29.57ms cuando los 12 canales están con 100%

    pelo que yo sei (saber) Mpx consigue los mesmos 12 canales con un periodo constante., Futaba non lo sei como lo hace mas pienso que lo hace de manera similar.

    Resulta de aquí que nos otros podremos también hace-lo, estoy convencido que tu programa V2 (con la wiimp) mas dos interruptores caben en los 30ms de mi graupner.

    Abelin, tienes que medir lo periodo de tu futaba con los canales a 0% e a 100%, so assim sabrás se los dos canales extra caben ou non na trama ppm de tu radio. Tudo depende da duración do pulso de sincronismo.
     
  42. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Por un lado ya estoy de nuevo con el HT para aquellas emisoras que no tengan control de canales en el trainer.

    Jalves, tu graupner utiliza receptores de 12 canales que estan preparados para el soft de la emisora. Para meter 12 canales en la futaba tendremos que desarrollar un soft para el transmisor y otro para el receptor.
     
  43. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    fbforos,

    Es posible acrecentar canales a nuestras emisoras!

    Cuantos?

    Depende do pulso de sincronismo da emisora, por ejemplo, se o pulso tiver 7ms, podrá ser disminuido para 3 ms, e en los restantes 4ms colocar un canal completo ou dos incompletos.

    Claro que se o pulso de sync for mas grado, más podremos hacer con ele.

    E isto sin alterar o receptor.

    Es este o truque de Multiplex para aumentar o numero de canales en su emisoras.


    Acho que vale a pena tentar, só para confirmar (ou non...) mis ideas.

    Un saludo
     
  44. eb7dln Gurú FPV

    eb7dln
    Joined:
    Feb 18, 2008
    Messages:
    3,018
    Likes Received:
    0
    Pues con dos canales más a mi me es suficiente, pero mientras más mejor
     
  45. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    Hola Ebelin,

    Has medido los pulsos ppm de tu emisora?
     
  46. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Jalves en futaba el pulso total tiene que tener entre 1000 y 2000us por canal.
    El pulso de sincronismo viene a ser de entre 300 y 500us pero no importa el tamaño ya que esta incluido dentro del tiempo total.

    te adjunto el esquema que hizo cacer en su dia.

    ****
    Voy a abrir otro hilo ya que estamos desvirtuando este del HT
     

    Attached Files:

  47. jalves Miembro

    jalves
    Joined:
    Dec 30, 2007
    Messages:
    895
    Likes Received:
    0
    Ok, abre entonces novo hilo.

    Só para aclarar ,Yo chamo pulso de sincronismo ao pulso que separa dos tramas ppm consecutivas e que permite ao receptor detectar novo conjunto de pulsos.

    Voy procurar a designación correcta.

    EDIT.

    Ok, es la designación correcta, pulse sync ou reset pulse

    Es en este sync pulse que podremos colocar los canales extra
     

    Attached Files:

  48. fbforos Miembro

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

    esto va marchando. He solucionado un pequeño bug:icon_redface: en el soft que hacia que en el movimiento de tilt se fuese hacia abajo casi directamente tal y como comentasteis algunos en el foro.
    Estoy acabando el circuito para subir la señal que sale de la emisora de 3 a 5V para que la detecte perfectamente el Ardu y espero si me da tiempo a ponerlo esta tarde.

    El circuito será un LM393 con un pequeño filtro. No os puedo garantizar que funcione en todas las frecuencias y/o emisoras. Mi prueba será con una futaba en las siguientes frecuencias 35 -72 y 2,4. Aquellos que lo monteis podeis darnos mas info de como funciona con vuestros sistemas y emisoras.
     
  49. carlosdma Miembro

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

    Que bien encontraste el problema,, yo de programacion casi nada,,,
    pero de adaptar la señal si no te funciona tu circuito , puedo ayudar con la adaptacion de señales TTL,,, aca a espera,,,
     
  50. fbforos Miembro

    fbforos
    Joined:
    Nov 1, 2008
    Messages:
    986
    Likes Received:
    0
    Bueno vamos a finalizar el HTWMPlus :party: Esperamos sea de vuestro agrado y os deleite con muchas horas de vuelo. Para aquellos estudiosos del arduino y de la ampliación de canales pasaros a ver las pruebas por el link oportuno que seguro que os gustan.

    El software tiene dos posibilidades TRAINER y NOTRAINER.

    TRAINER se refiere a que la emisora tiene la posibilidad de seleccionar que canales se utilizaran en el trainer y
    NOTRAINER la emisora no permite seleccionar canales por lo que tenemos que copiar la trama y pasarla.

    Estas pruebas en modo NOTRAINER estan realizadas con una FF7 uaf Super del año la tanana en 35 y en 72mhz

    En 72 he utilizado un receptor Corona de 8 Canales modificado para que me saque la trama PPM.
    En 35 un receptor futaba FP-R115F de 5 canales al que le he sacado la trama PPM (llego a sacarle 12 canales:locos:

    En los oscilogramas en ROJO la entrada de la trama PPM a la emisora. En Azul la trama PPM en el receptor como veis con un retraso de unos useg .

    Las tramas en el receptor y en la emisora estan invertidas. Si en 35 las veis iguales es debido a que active la inversión del canal.

    Como podeis comprobar cuando la emisora no tiene activado boton del trainer aunque introduzcamos 8 canales solo salen 7 y cuando se activa el boton de trainer salen 8
     

    Attached Files:

Share This Page