fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Proyecto: Controlador de posición

75 Respuestas
10 Usuarios
0 Reactions
35.5 K Visitas
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Hola a todos,

Estoy realizando un controlador de posición para un cuadróptero (es mi PFC), quiero que sea Open-Hardware así que iré publicando por aquí y en el blog los avances que vaya haciendo. Se que ya existen alternativas comerciales y abiertas (el openPilot, el KK o el multiWii por ejemplo), pero mi idea es que al final sea totalmente autónomo.

Por otra parte quiero hacer el sistema lo más general posible para que pueda aplicarse a todo tipo de drones (áereos, terrestre, acuaticos, submarinos o espaciales).

He partido el proyecto en varios trozos:
- Piloto --> controlador de posición (mi PFC) evita que el cuadróptero se vaya al traste, controlará los sensores y enviará las señales a los drivers para controlar la estabilidad del conjunto.
- Navegador --> Es el que toma las decisiones para que sea autónomo. Por falta de tiempo no voy a realizarlo dentro del PFC, pero iré avanzando en él cuando tenga la parte del piloto hecha.
- Maquinista --> Mi idea es desarrollar unos drivers para motores brushless (los famosos ESC) que se controlen por bus SPI que den una mayor velocidad de respuesta al sistema (los 20ms del PWM me parecen mucho en una situación crítica).
- Controlador --> Servicio de telemetría en tierra para la recepción de la telemetría y el control (indicaciones) del equipo.

Las sugerencias serán bienvenidas.

S2

Ranganok Schahzaman

Responder
74 respuestas
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Sensores con salida analógica? Ui que del siglo pasado, mejor sensores con salida por SPI... 😛

No, en serio, pasame lo que tengas que me servirá para aclarar algunas dudas o como mínimo aprender (que ya es mucho) ...

S2

Ranganok Schahzaman

Responder
ranganok
Respuestas: 3875
Topic starter
(@ranganok)
Ardero
Registrado: hace 19 años

Protocolo:

Siguiendo con el protocolo, para los IDs he elegido:
Identificador Descripción
0x00 'Hear Beat'
0x01 Telecontrol
0x02-0x0F reservado
0x10 Velocidad motores / Posición de los servos
0x11 Consumo
0x12 Temperatura
0x13 Giroscopio
0x14 Accelerómetro
0x15 Barómetro-altímetro
0x16 Magnetrómetro
0x17 GPS
0x20 Imagen JPG
0x21 Vídeo MPEG
0x22-0x2E reservado
0x2F Continuación del paquete multimedia
0x30-0xEF reservado
0xF0 ACK
0xF1 NACK
0xF2-0xFE reservado
0xFF Múltiples paquetes

Detalles de los paquetes:
Canales mando (hasta 128 canales con una precisión de 16 bits):

  • Canal 1 / Aleiron (2 bytes)

  • Canal 2 / Elevator (2 bytes)

  • Canal 3 / Throttle (2 bytes)

  • Canal 4 / Rudder (2 bytes)

  • Canal 5 (2 bytes)

  • ...
  • Velocidad Motores / Posición de los servos

  • Velocidad del Motor / Posición del Servo 1 (2 bytes)

  • Velocidad del Motor / Posición del Servo 2 (2 bytes)

  • Velocidad del Motor / Posición del Servo 3 (2 bytes)

  • Velocidad del Motor / Posición del Servo 4 (2 bytes)


  • Consumo
  • Consumo de Corriente Batería 1 (2 bytes)

  • Tensión Batería 1 Celda 1 (2 bytes)

  • Tensión Batería 1 Celda 2 (2 bytes)

  • Tensión Batería 1 Celda 3 (2 bytes)

  • ...

  • Tensión Batería 1 Celda x (2 bytes)

  • Separador (2 bytes): 0xFF 0xFF

  • Consumo Corriente Batería 2 (2 bytes)

  • Tensión Batería 2 Celda 1 (2 bytes)

  • Tensión Batería 2 Celda 2 (2 bytes)

  • Tensión Batería 2 Celda 3 (2 bytes)

  • ...

  • Tensión Batería 2 Celda x (2 bytes)

  • Separador (2 bytes): 0xFF 0xFF

  • ...

  • Temperaturas
  • Temperatura externa (2 bytes)

  • Temperatura interna 1 (2 bytes)

  • Temperatura interna 2 (2 bytes)

  • ...

  • Giroscopio
  • Eje X (2 bytes)

  • Eje Y (2 bytes)

  • Eje Z (2 bytes)

  • Acelerómetro
  • Eje X (2 bytes)

  • Eje Y (2 bytes)

  • Eje Z (2 bytes)

  • Barómetro / Altímetro
  • Presión (2 bytes)

  • Temperatura (2 bytes)

  • Magnetrómetro
  • Eje X (2 bytes)

  • Eje Y (2 bytes)

  • Eje Z (2 bytes)

  • GPS
  • Latitud (8 bytes)

  • Longitud (8 bytes)

  • Altura (8 bytes)

  • Tiempo (8 bytes)

  • Precisión (8 bytes)

  • Sonar
  • Sensor 1 (2 bytes)

  • Sensor 2 (2 bytes)

  • Sensor 3 (2 bytes)

  • Sensor 4 (2 bytes)
  • S2

    Ranganok Schahzaman

    Responder
    beamspot
    Respuestas: 1132
    (@beamspot)
    Noble Member
    Registrado: hace 17 años

    Te preparo un zip con la info y te lo mando por PM.

    Respecto de los sensores, los magnetómetros son I2C, y de giróscopos interesantes no encontré ninguno con interfaz digital. El acelerómetro era el único triaxial en un sólo encapsulado, así que los motivos que me empujaron a escoger analógicos son básicamente de oferta. También era necesario que fuesen fáciles de obtener, por ejemplo, por Sparkfun.

    El mercado, mientras, ha cambiado muy mucho, y los años no perdonan (estoy hablando del 2008, y ahora todos los gadgets que se precien, llevan acelerómetros). Así que se impone una nueva búsqueda.

    Ten en cuenta que la potencia de cálculo también puede ser un factor a tener en cuenta. Por eso, ahora estoy trabajando con micros para ingenieros, no juguetes (los PIC32 no tienen mala pinta para esto, ojo). 32 bits recomendable de saque, y si es posible (como es mi caso), con FPU.

    Aún así, el responsable de este proyecto que llevas me inspira confianza. 😉

    Responder
    ranganok
    Respuestas: 3875
    Topic starter
    (@ranganok)
    Ardero
    Registrado: hace 19 años

    Hola,

    Gracias, si puedes envíamelo al correo que allí tengo más espacio.

    El giro y el acc los compré en Mouser el año pasado (llevo un año sin hacer nada 😕 ), hicimos un pedido grande y nos salieron los portes gratis.

    Son:
    - Giroscopo 3 ejes - L3G4200D
    - Accelerometro 3 ejes - MMA7455L
    - Barometro - MPL115A2

    El magnetrometro no lo he elegido ya que salía increiblemente caro, y ya he visto ya sensores que llevan integrado el giro y el accelerometro.

    Respecto al micro, yo estoy utilizando un PIC24F porque me da una pereza impresionante cambiar de micro (trabajo en el curro con estos), que no tiene unidad de coma flotante pero sí fija, sin embargo se puede saltar bastante fácil a un PIC24H, un dsPIC, un PIC24E (70Mips) o un PIC32 (mismos pines fijos, 'peripheral pin select', etc.)

    Por ahora tampoco pienso hacer mucha fusión de sensores, mi profe se conforma con que levante el vuelo y se quede estable, y eso lo puedo hacer sólo con el giro.

    Así que cuando termine el PFC me pondré o con fusión de sensores o con navegación autónoma (hay que elegir).

    S2

    Ranganok Schahzman

    PD: No se lo digas a nadie, pero el responsable del proyecto es un vago que se pasa más rato con su niña que haciendo el proyecto... Pero me cae bien 😉

    Responder
    beamspot
    Respuestas: 1132
    (@beamspot)
    Noble Member
    Registrado: hace 17 años

    Vaya, pues me siento identificado: estoy más rato en el parque con la peque (dos y medio ya, cómo pasa el tiempo) que haciendo otras cosas.

    Respecto de sensores analógicos, creo que la gente subestima los modernos ADC's con DMA y secuenciación. Te dejan los datos ya listos donde quieras de tu memoria interna sin necesidad de montar ningún protocolo ni compartir ningún periférico de comunicaciones con nadie.

    Tengo magnetómetros I2C de sobras en casa. Te paso uno si quieres, y si consigues soldarlo (QFP 16s pines en 3x3 mm... fácil fácil).

    Responder
    Página 3 / 15
    Compartir: