Menu

STorM32 BGC controladora de gimbal

16 agosto, 2017 - ajustes

El STorM32 BGC es una controladora de código abierto para gimbals de tres ejes con motores brushless. La página del proyecto está en:

STorM32 BGC: 3-Achsen STM32 Brushless Gimbal Controller

Todos los manuales en:

http://www.olliw.eu/storm32bgc-wiki/Manuals_and_Tutorials

Se puede encontrar un buen tutorial de iniciación es:

http://www.olliw.eu/storm32bgc-wiki/Getting_Started

Existen tres componentes que hacen funcionar una STorM32:

Para poner en funcionamiento una STorM32, podemos distinguir varias fases. Que trataremos a continuación.

Instalación del módulo STorM32 y conexionado.

Normalmente el STorM32 se monta en un soporte detrás del motor de Roll o bien en la parte superior del gimbal, aunque podría ir en cualquier otro sitio del chásis del drone.

1452491431856256

800px-Storm32-wiki-2nd-imu-configurations-01

Esta controladora incorpora detectores inerciales en un chip denominado IMU (Inertial Measurement Unit). Al STorM32 se le conecta otro módulo IMU el cual debe ser montado en el soporte de la cámara. Es decir, de esta forma el procesador del STorM32 tiene información del movimiento del drone con respecto a la cámara, permitiendo hacer las correcciones oportunas a través de los motores del gimbal. Es posible conectar también un segundo IMU para obtener mayor precisión.

El modulo puede ir protegido en un carcasa específica y normalmente irá atornillado mediante separadores y tornillos de plásticos. No se usan tornillos ni separadores de metal para evitar cortocircuitos e interferencias.

Existen varias versiones de la controladora STorM32. Aquí haremos referencia a la versión de hardware V.1.3, pero actualmente la última es la V4.2.

596px-Joepaisley-storm32-bgc-v13-board-wiki

Conexionado

El STorM32 proporciona multitud de puertos que permiten varias formas de uso y programación. El esquema general es el siguiente:

770px-Storm32-bgc-v13-ports-and-connections

Normalmente no se usan unos pocos. De hecho es habitual comprar el modulo sin conectores instalados y soldar nosotros mismos los que necesitemos.

En mi caso sólo utilizaré dos ejes del gimbal y conectaré los motores del Pitch y el Roll, no utilizo motor para Yaw.

Además de los dos motores, conectaré el STorM32 a la Pixhawk para ser comandada desde ella. Esto se puede hacer con los puertos telem1, telem2  o Serial 4/5 usando protocolo MAVLink. Como ya tenemos los puertos telem1 y telem2 ocupados, utilizaremos el puerto Serial.

En este último caso, se conectará un cable desde el puerto UART del STorM32 (tres hilos), al puerto Serial 4/5 de la Pixhawk.

pixhawk-storm32_uart

A diferencia de lo que aparece en este último esquema, se conecta el TX de un lado al RX del otro y viceversa. Esto puede depender de algunas versiones de Storm32.

El puerto Serial 4/5 de la Pixhawk aglutina dos puertos serie en un mismo conector. Son los puertos serie internos llamados SERIAL4 y SERIAL5. Recordemos la asignación de puertos serie en la Pixhawk:

Telem1 –> SERIAL1
Telem2 –> SERIAL2
GPS –> SERIAL3
Serial 4/5 –> SERIAL 4 y 5

Por otro lado el pinout del puerto Serial 4/5 es el siguiente:

Pin Signal Volt
1 (red) VCC +5V
2 (blk) TX (#4) +3.3V
3 (blk) RX (#4) +3.3V
4 (blk) TX (#5) +3.3V
5 (blk) RX (#5) +3.3V
6 (blk) GND GND

Así pues como vemos en el esquema de conexionado, estamos usando el puerto interno SERIAL4 de la Pixhawk.

Por último, conectaremos nuestro IMU situado en la base donde va atornillada la cámara al puerto I2C de la STorM32. Esta conexión se hace a través de cuatro hilos: GND, Tx (SCL), Rx (SDA) y Vcc.

480px-NT_Pinout

Resumiendo:

Es posible hacer una conexión alternativa entre la Pixhawk y el STorM32 para el control desde la emisora de ángulo pitch de la cámara sin utilizar la conexión serie ni MAVLink. Para ello asignaremos un canal del receptor, habitualmente el 6, de los conectados a la Pixhawk a través del módulo PPM. Se utilizaría una salida auxiliar AUX PORT de las disponibles en la Pixhawk, por ejemplo la 2. Dicha salida la conectaríamos al STorM32 a uno de los puertos RC-2, por ejemplo el RC2-1. Utilizaríamos sólo dos hilos, el de masa y el de control.

control_pitch_storm32

Nosotros no utilizaremos este último tipo de conexión pues como hemos visto gestionaremos el pitch a través de la conexión UART y tulizaremos MAVLink.

Instalación del GUI de Windows o323BGCTool y carga del firmware

El  o323BGCTool es el software gratuito que sirve para configurar el STorM32. Se puede descargar de:

https://github.com/olliw42/storm32bgc

Cuando compramos un módulo STorM32 nuevo, puede suceder que venga con alguna versión de firmware instalado. Si es así simplemente al conectarlo por el puerto USB  al ordenador automáticamente se reconocerá y aparecerá un nuevo puerto COM. Podremos trabajar directamente con el STorM32 utilizando la versión de o323BGCTool compatible con dicho firmware.

Por ejemplo en mi caso viene con la versión V.82e y al conectarlo al PC se levanta un nuevo puerto serie COM5. Empecé a gestionar el módulo con el o323BGCTool V.0.8.2. Si intento acceder al módulo con una versión superior a la V.82 aparece un indicativo de error. Es decir, debe haber concordancia entre la versión del firmware de la placa y el o323BGCTool utilizado.

En el caso de que la STorM32 venga sin firmware, habrá que instalarle una inicial. Esto se hace mediante el puerto serie RC2 y se necesita un adaptador USB-TTL. Este procedimiento se describe detalladamente en:

http://www.olliw.eu/storm32bgc-wiki/How_to_flash_firmware

 

Configuración del STorM32

A partir de aquí, podemos realizar la configuración básica del gimbal. Si todo lo anterior se ha hecho bien tendremos el o323BGCTool conectado al STorM32 mostrando la siguiente pantalla:

o323bgptool

 

El STorM32 es un controlador de 3 ejes. En nuestro caso sólo utilizaremos dos. Esta situación requiere alguna configuración especial. Por un lado un segundo IMU no se puede utilizar. Hay que asegurarse de que esté desactivado en:

Setup –> IMU2 configuration = off

El motor del eje sin usar, yaw en nuestro caso, debe estar desactivado:

Setup –> Yaw Motor Usage = disabled

gimbal_yaw_off

Para la configuración básica del gimbal existe un protocolo o wizard.

1. Gimbal Configuration –> Configure Gimbal Tool

La cámara debe estar montada en el gimbal y posicionada los más equilibradamente posible. Yo utilizo un nivel de burbuja adosada a la cámara para realizar el ajuste.

2. Desactivamos Yaw Motor Position en nuestro caso la no usar motor para le eje yaw.

3. Pulsamos Continue y seguimos las instruciones siguinente.

Este wizard lo que se configuran las posiciones de los IMU, el sentido de corrección de los motores, la posición de quilibrio del gimbar y el número de polos de los motores.

4. Calibrar acelerómetros.

Tenemos que fijar el IMU de la cámara en una posición fija, por ejemplo apoyado sobre la mesa y pulsar

Calibrate Acc –> Seleccionar IMU Camera –> Run 1-Point Calibration

Esperar a que apacezcan los valores de ajuste y pulsar Store Calibration.

5. Ajuste del PID.

El ajuste de los PIDs de cada eje es vital para el correcto funcionamiento del gimbal y evitar vibraciones y movimientos extraños. Se configura cada motor por separado, desestabilizando los otros.

Podemos encontra una guía de configuracion en:

http://www.olliw.eu/storm32bgc-wiki/Tuning_Recipe

Lo primero es poner los PID a cero. En este estado no  hay corrección alguna.

El valor Motor Vmax define la fuerza máxima con que van a actuar los motores. Debe ser lo suficientemente alta para poder mover la cámara con holgura pero evitando el sobrecalentamiento de los motores. El ajuste es por pura estimación, cogiendo la cámara con la mano y moviéndola podemos ajustar un valor ostentativo.

El parámetro D es una corrección del alta frecuencia mirando hacia adelante para amortiguar lo que se pueden convertir en oscilaciones.

Manteniendo P y I a cero, debemos aumentar D hasta que encontremos un punto en el que empieza a ser audible un ruido de alta frecuencia producido en el motor. El valor de D debería ser lo más alto posible sin oír ruido. Luego movemos el gimbal y verificamos que el ruido tampoco aparece para ninguna otra posición.

El parámetro P es una constante que se multiplica por el error de posición para obtener la cantidad de corrección aplicada. Antes de ajustar P hay que dar a I un valor bajo distinto de cero, por ejemplo 5. Cuanto más grande el P mayor será la corrección calculada. Pero si es demasiado grande tenderá a “resbalar” de la posición de equilibrio y si es aún más alta tenderá a producir movimientos erráticos. Debemos subir P hasta el valor más alto posible para obtener un movimiento suave en todas las direcciones.

El parámetro I hay que ajustarlo de manera similar. Básicamente hay que aumentarlo todo lo posible

 

Configuración de la Pixhawk para STorM32 (uso de MAVLink)

Utilizamos como referencia la información de Ardupilot:

http://ardupilot.org/copter/docs/common-storm32-gimbal.html

Lo primero es la conexión de la controladora StorM32 a la Pixhawk, como ya se visto más arriba. En nuestro caso hemos utilizado el puerto serie.

A continuación hay que configurar en la StorM32 los heartbeats MAVlink. Esto lo hacemos entrando en el o323BGCTool y seleccionando

Experts Only –> Experts Tool –> Mavlink Configuration = emit heartbeat

 

SToRM32_enableMavlink

Guardar la configuración en la Storm32.

A continuación se configura la Pixhawk. Para ello nos conectamos a la misma a través de Mission Planer y entramos en

Configuring –> Full Paramters tree.

Tenemos que configurar los parámetros relativos al serial4 en nuestro caso:

(No debemos confundir el uso del puerto serial 4/5 con el uso del protocolo serie, ya que utilizamos MAVLink y no protocolo serie, cuyo uso alternativo a Mavlink también se describe en la wiki de Ardupilot).

También configuramos lo siguiente:

MNT_TYPE = 4 (habilita el driver del gimbal Storm32)

MNT_RC_IN_TILT = 8 (asignar canal 8 para ajustar el ángulo del pitch. Salida PPM cable gris al AUX3 del AR9020 en nuestro caso)

Además de esto, los parámetros  MNT_ANG_MIN_TIL y MNT_ANG_MAX_TIL controlan el máximo recorrido angular del pitch

Por ejemplo

MNT_ANG_MIN_TIL = -9000 (el pitch puede apuntar 90º hacia abajo, cámara apuntando justo en dirección al suelo)

MNT_ANG_MAX_TIL = +9000 (el pitch puede apuntar 90º hacia arriba,  cámara apuntando justo hacia el cielo)

Estos parámetros también se pueden configurar desde la opción Inital Setup –> Optional Hardware –> Camera Gimbal:

pixhawk_gimbal_configuration

En principio no necesitamos nada más. Ahora configuramos nuestra emisora Spektrum DX9 para usar el canal 8 con el Knob.

Systrem Setup –> Channel Assign –> Next (Channel Input Config) –> 8 AUX3: RKnb

A partir de aquí podremos mover el pitch de la cámara con Knob de la emisora.