leer correctamente un ITG3205

Tema en 'Electrónica General Multirrotor' iniciado por D@rio, 8 Feb 2012.

  1. D@rio Nuevo Miembro

    D@rio
    Registrado:
    23 Ene 2012
    Mensajes:
    3
    Me Gusta recibidos:
    0
    hola amigos, soy nuevo por aqui :biggrin2: les cuento que llegue a este foro, buscando informacion del integrado ITG3205 ya que no se encuentra otra cosa con google... solo sale el datasheet y los foros de aeromodelismo con los tricopters y cuadrocopters que pueden hacerse utilizando el wiimotion y el nunchuk, asi que decidi plantear mi duda aqui ya que uds tienen mucha experiencia con ese gyro y talvez puedan ayudarme. bueno, les cuento mi problema. resulta que estoy tratando de hacer que el itg mueva un servomotor segun sea el movimiento del giroscopo. hasta ahi la idea parece facil. he hecho un pequeño programa en pic basic de microcode para leer solo la salida alta del eje X del itg. al compilar y cargar el codigo en un pic16f628, funciona, pero con el sensor en reposo, el servomotor se va a su posicion maxima como si le estuviese llegando un pulso de 2ms. cuando yo muevo el giroscopo, el servo se mueve hacia su posision minima y si lo dejo quieto en ese lugar, el servo vuelve a su posision maxima sin que yo haya movido el gyro. ¿sera que debo configurar tambien los otros registros del ITG para que esto no ocurra? ¿podra ser que esto se deba a que solo estoy leyendo la parte alta del eje?podrian talvez decirme ¿como puedo hacer para que con el gyro en reposo el servo se mantenga en posision central y si muevo el gyro por ejemplo hacia la izquierda, el servo lo haga tambien sin volverse si yo no muevo el gyro? aca dejo el codigo que escribi en pbp para que vean lo que esoy tratando de hacer.
    saludos y espero puedan ayudarme... :redface2:

    Insertar CODE, HTML o PHP:
    @ DEVICE MCLR_OFF, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
     DEFINE   OSC   4              ' Para trabajar con un cristal de 4MHz
     DEFINE I2C_HOLD 1
     trisa=%000000
     trisb=%00000000
     porta=%000000
     portb=%00000000
    SDA VAR PORTB.1
     SCL VAR PORTB.2 
     
    a1 var byte
    
    clear
    
    leer:
    I2CREAD sda,scl,%11010000,31,[a1]  
    PAUSE 10
    pulsout portb.0,a1
    pause10
    goto leer
     
  2. jorge saeta Miembro

    jorge saeta
    Registrado:
    31 Mar 2011
    Mensajes:
    534
    Me Gusta recibidos:
    0
    Hola, bienvenido.
    Si quieres mantener un angulo determinado necesitarás añadir un acelerómetro. El giro únicamente te va ha dar la velocidad angular.
    Puedes usar el Nunchuck y el WMP conectado al bus i2c y el código de multiwiicopter en modo gimbal, con el que moverás dos ejes.
    Que estás usando? arduino?

    Saludos
     
  3. D@rio Nuevo Miembro

    D@rio
    Registrado:
    23 Ene 2012
    Mensajes:
    3
    Me Gusta recibidos:
    0
    hola jorge.
    no, no uso arduino, estoy usando un microcontrolador pic16f628A y estoy utilizando microcode para programarlo. yo tengo entendido que el gyro no solo me da la velocidad angular, sino tambien el angulo al que el gyro se movio, es lo que hacen los gyros no? gracias por responder :biggrin2:
     
  4. D@rio Nuevo Miembro

    D@rio
    Registrado:
    23 Ene 2012
    Mensajes:
    3
    Me Gusta recibidos:
    0
    hola amigos.
    les cuento que estuve experimentando un poco y pude leer los datos del gyro en la pc mediante una herramienta de la que dispone el microcode. ahi pude ver que me faltaba configurar el registro 22 – DLPF, Full Scale, lo configure y asi pude leer la parte baja del eje X que me da una lectura como la que yo necesito pero es muy inestable ¿alguien tendra alguna idea hacerca de la configuracion de registros? talvez tenga que configurar otro registro para lograr que la lectura sea estable.
    saludos
     

Compartir esta página