Proyecto Mando de Enfoque

Tema en 'R/C ELECTRÓNICA' iniciado por jfrauca, 18 Nov 2014.

  1. jfrauca Miembro

    jfrauca
    Registrado:
    13 Sep 2011
    Mensajes:
    328
    Me Gusta recibidos:
    0
    Buenos días compañeros,

    Ha llegado el momento de devolver algo a la comunidad de la que tanto he tomado. Espero os sea de utilidad, aunque solo sea como ejemplo didactico

    Presentación de proyecto
    He desarrollado una solución alternativa para mover un Gimbal del tipo DIY para los que tenemos la economía un poco mas justa y no podemos optar a las soluciones profesionales. En principio me la iba a quedar para mi solo, pero al final, animado por compañero, he decidido ponerla como código libre para que todo el mundo pueda utilizarla.

    Es una solución que se limita de momento a permitir el movimiento del servo de una forma proporcional, dejando la posición actual al centrar el stick. Para centrarlo de una forma rápida solo hay que hacer clic. El circuito actúa inyectando en el CH7 y CH8 las posiciones de X e Y

    Materiales
    Podéis utilizar este Arduino y este Joystick.
    Los interruptores de inversión de canal son opcionales, se han puesto por darle versatilidad al diseño, pero si va a estar en un equipo fijo, se pueden reemplazar por un puente de hilo soldado si es preciso invertir el canal.

    Conexión con la emisora
    Si es una Futaba, tenéis la ventaja de que el conector tiene salida de VCC por lo que no tendréis que alimentar el circuito a parte. Pero ojo, son 12V y el 7805 precisará de un disipador aunque sea mínimo. La salida PPM del circuito se tiene que meter por el PPM del conector Futaba, en la imagen adjunta se indica como "Signal IN"
    [​IMG]

    y la emisora la tendréis que configurar así:

    photo47141174950078568.jpg

    Para que el circuito funcione, tenéis que mantener pulsado la palanca del trainer, yo utilice una goma en la palanca de arriba.

    Si es tipo JR (Turnigy, Taranis, etc), en esa aún no la he testado, pero será preciso modificar el código para que la trama de pulsos que genere sea compatible, en concreto se tiene que cambiar la siguiente linea:
    Insertar CODE, HTML o PHP:
    #define onState 0  //set polarity: 1 is positive, 0 is negative'0 para futaba, 1 para jr
    por
    Insertar CODE, HTML o PHP:
    #define onState 1  //set polarity: 1 is positive, 0 is negative'0 para futaba, 1 para jr
    En breve lo probaré en una Taranis y os contaré

    Recomendación
    Si os lo podéis permitir, os recomiendo las soluciones profesionales del tipo al StickPlus, que son mucho mas completas y testadas que la que os ofrezco con este código.

    Agradecimiento
    Si la utilizáis, os resulta de interés y queréis colaborar en la comunidad, considerad donar algún cacharro o cosa que no utilicéis en el Hilo de regalos a la comunidad. Si no lo hacéis o no tenéis nada que ofrecer, pues no pasa nada, con un gracias también sirve. :biggrin2:

    Esquema de conexionado
    Lo he realizado así para que los menos "puestos" en electrónica no se pierdan en el conexionado
    esquema.jpg

    Funcionamiento
    Vídeo cutre en el que se ve el funcionamiento del primero prototipo. En el vídeo está conectado a través del trainer de una Futaba. No se ve muy bien el servo, está en la esquina inferior derecha, que es muy difícil enfocar con la mobius y mover todo a la vez :locos:.



    Código fuente para el circuito
     

    Adjuntos:

  2. Mikel32 Miembro Activo

    Mikel32
    Registrado:
    18 Jun 2009
    Mensajes:
    1.718
    Me Gusta recibidos:
    4
    :worthy::worthy:Es un gustazo ver que sigue habiendo gente dispuesta a compartir y mostrar sus ideas y proyectos: a ver si recuperamos el antiguo espíritu del foro.
    En este caso, la utilidad del invento, sencillez y poco coste invitan a probarlo.
    Muchas gracias, Jfrauca!!!
     
  3. monzon Maestro FPV

    monzon
    Registrado:
    24 Feb 2011
    Mensajes:
    2.352
    Me Gusta recibidos:
    0
    mola tela , haber si m lo monto que creo que tengo por aki para destripar .
    gracias por el aporte.
     
  4. jfrauca Miembro

    jfrauca
    Registrado:
    13 Sep 2011
    Mensajes:
    328
    Me Gusta recibidos:
    0
    Gracias a vosotros!!

    He recibido mucho de la comunidad, lo justo es aportar algo.

    Y si, a ver si recuperamos el espíritu de hace unos años.

    saludos
     
  5. Ivan_Cillo Miembro

    Ivan_Cillo
    Registrado:
    25 Oct 2013
    Mensajes:
    664
    Me Gusta recibidos:
    0
    Por el precio que tiene el arduino entre esto y el antena tracker de Jalves y compañia me vais a hacer aprender a programar...
    Sois unos fieras!gracias por semejantes trabajos!
     
  6. Hararion Miembro

    Hararion
    Registrado:
    6 May 2010
    Mensajes:
    518
    Me Gusta recibidos:
    0
    interesante el proyecto

    muy interesante el proyecto, es lo que andaba buscando, pero lo quiero modificar para ponérsela a una turnigy 9x, me imagino que no será problema... el archivo dwg no lo puedo convertir, que tipo de extensión de archivo tiene? el arduino es un arduino pro mini? ese arduino es el que necesita el FTDI? (no le veo el puerto usb) gracias por este proyecto!
    muy bueno ! estare pendiente.
     
  7. jfrauca Miembro

    jfrauca
    Registrado:
    13 Sep 2011
    Mensajes:
    328
    Me Gusta recibidos:
    0
    Gracias a vosotros por leerlo.

    El archivo, simplemente hay que renombrarlo de dwg a ino, si no puedes o te da problema, mándame un MP con un correo electrónico y te lo mando por email.

    Para modificarlo para una 9x, en el post inicial te indica que linea de programa tienes que cambiar.

    Sirve cualquier arduino, el proyecto utiliza el Arduino pro Mini (es el que habitualmente compro) , y ese precisa de FTDI para programarlo, si utilizáis el Arduino NANO, el ftdi lo lleva incorporado.

    Saludos
     
  8. Soynatural Nuevo Miembro

    Soynatural
    Registrado:
    29 Abr 2014
    Mensajes:
    22
    Me Gusta recibidos:
    0
    buen proyecto

    Si señor muy buena idea
     
  9. Ivan_Cillo Miembro

    Ivan_Cillo
    Registrado:
    25 Oct 2013
    Mensajes:
    664
    Me Gusta recibidos:
    0
    Hola señores!
    Llevamos casi una semana de niebla y he tenido tiempo para ponerme a hacer el stick.
    Lo he instalado en una flysky 9x para lo cual hay que hacerla una pequeña operación ya que no vale el puerto del trainer.
    También decir que funciona sin tener que tocar la palanca del trainer.
    Funcionar me funciona pero no de manera proporcional, hace todo o nada,los servos se van directamente al tope y ahí se quedan hasta que lo centras con el pulsador.
    Tiene varios modos de uso o algo que no haya visto?porque yo de código no tengo ni pajolera...

    Edito:
    Mirándolo bien he visto que si va de forma proporcional pero el stick tiene muy poco recorrido, de los 45 grados que puede cubrir hacia cada lado con 2 o 3 manda el servo al tope.Esto si habrá forma de ajustarlo en el código no?
    Un saludo
     
    #9 Ivan_Cillo, 10 Ene 2015
    Última edición: 11 Ene 2015
  10. jfrauca Miembro

    jfrauca
    Registrado:
    13 Sep 2011
    Mensajes:
    328
    Me Gusta recibidos:
    0

    Buenos días,
    Perdón por el retraso, pero he andado liado. Así da gusto, que la gente se aventure ha fabricar estos inventillos

    Siquieres reducir esta velocidad, cambia el +/-200 de esta linea
    PotIncY = map(PotIncY,-250000,250000,-200,200);
    y de esta otra
    PotIncX = map(PotIncX,-250000,250000,-200,200);

    Saludos y ya me cuentas si funciona o no

    :ansioso:
     
  11. Ivan_Cillo Miembro

    Ivan_Cillo
    Registrado:
    25 Oct 2013
    Mensajes:
    664
    Me Gusta recibidos:
    0
    Buenas!
    Eso lo probé ayer, el 250000 para que es?porque en el código pone que subirlo para bajar o algo así y no lo acabe de entender jajaja
    Cambie los 250000/200 por 500000/25 y ya se mueve a una velocidad prudencial como para pararlo donde se quiera.
    A ver si tengo un rato y cuelgo la instalación para flysky/turnigy y su configuración
     
  12. jfrauca Miembro

    jfrauca
    Registrado:
    13 Sep 2011
    Mensajes:
    328
    Me Gusta recibidos:
    0
    El 250000 es el resultado de una ecuación del tipo X^2, lo que pasa que por optimizar el código lo he transformado en una constante así da una respuesta exponencial al movimiento del mando, en la parte central funciona mas despacio y en los extremos mas rápido, como los exponenciales de la emisora, pues parecido.

    Me alegro que te funcione :biggrin2:
     
  13. Ivan_Cillo Miembro

    Ivan_Cillo
    Registrado:
    25 Oct 2013
    Mensajes:
    664
    Me Gusta recibidos:
    0
    Pero entonces para que quede claro, que pasa si subimos de valor el 250000?que en los extremos se mueve mas lento? Es que en el código pone "si se quiere un joystick mas lento bajar el 250000 por un numero mas alto", ¿¿¿bajar por mas alto???jajaja
     
  14. jfrauca Miembro

    jfrauca
    Registrado:
    13 Sep 2011
    Mensajes:
    328
    Me Gusta recibidos:
    0
    jijijiji, la verdad que la explicación la he clavao :laugh::laugh::laugh::laugh:

    A ver si con esto se entiende, pego un cacho de codigo:

    PotIncX = map(PotXRead,0,1024,-500,500);
    if (PotIncX<0){
    PotIncX = (PotIncX*PotIncX)*-1;
    }else{
    PotIncX = (PotIncX*PotIncX);
    }
    PotIncX = map(PotIncX,-250000,250000,-200,200);//

    Hago 2 transformaciones, en la primera, leo el valor del Joistick y convierto la medida que me da de 0 a 1024 en +/-500 (el 500 me lo saco de la remanguille, tenia que poner un valor y puse ese), al pasarlo de una lectura de 0 a 1024 a -500-+500, tengo el 0(cero) en la posición central del joistick

    Luego Multiplico el valor por si mismo (lo elevo al cuadrado), y luego hago la segunda transformación, "mapeo" ese valor X^2 en una "variación" del pulso del servo de +/-200 es decir, en cada ciclo, incrementará un valor con el joistick a tope de +200 en el pulso (recuerdo que el centro es 1500 y el tope es 2000)

    Como alterar el sistema para adecuarlo a nosotros:
    Si cambio los valores rojos por unos mas bajos, y los azules por el cuadrado de los mismos, tendré a tope del mando una respuesta menos brusca, un comportamiento mas lineal.
    Si cambio el valor verde por uno mas bajo, tendré una variación menor por cada ciclo y una respuesta mas lenta del mando.

    Es que me explico como un libro cerrado, mira a ver si así lo entiendes.., sino te lo intentaré explicar mejor

    saludos Javier
     
  15. Ivan_Cillo Miembro

    Ivan_Cillo
    Registrado:
    25 Oct 2013
    Mensajes:
    664
    Me Gusta recibidos:
    0
    Así si!así esta explicado perfectamente ya.
    Es que eso de bajar subiendo...que si hay que bajar se baja,pero subir pa na es tontería jajaja
    Lo retocare ya que los 500 los deje igual que estaban.
    Muchas gracias por la explicacion
     

Compartir esta página