• No se han encontrado resultados

MinIMU9AHRS

In document Simulador virtual de movimientos (página 138-140)

Apéndice IV: Descripción de funcionalidades software

IV.II MinIMU9AHRS

Es el programa principal implementado y subido al dispositivo ESP32. Esta función se encarga de recibir los datos de los sensores, procesarlos y enviarlos al servidor para que el cliente, en este caso Unity, pueda descargarlos y usarlos para la simulación.

Las funciones principales de este programa son:

• void init_arrays(): esta función se encarga de inicializar los vectores que usaremos para almacenar los datos recibidos de los sensores, los vectores que usaremos durante el proceso de procesamiento de datos y el vector que envía los datos al servidor. Recorre los vectores iniciándolos a 0.

• void I2C_init(): se encarga de inicializar el bus I2C para la comunicación entre la tarjeta

ESP32 y la IMU. Además inicializa algunos registros de control de la IMU. Estos registros son:

o CTRL4_C: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Este registro se encarga de activar en la IMU la opción de comunicación del bus I2C.

o CTRL3_C: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Este registro tiene varias funciones de propósito general, pero en este caso, las funciones que activa son bloqueo de actualización de datos, Block Data Update y la función de incremento de la dirección del registro de datos cuando se produce un acceso múltiple de bytes a través de la interfaz serie. Para tener una descripción más detallada véase tabla: Características Hardware - Dispositivo LSM6DS33 (LSM6DS33, www) - Descripción de Registros - CTRL3_C .

o TAP_CFG: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Se encarga de activar los registros de reconocimiento de Tap del dispositivo LSM6DS33.

o TAP_THS_6D: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Se encarga de situar el umbral para el reconocimiento de Tap y de la función D6D.

• void Accel_Init(): esta función se encarga de inicializar los registros del acelerómetro de la IMU. Estos registros son:

o CTRL1_XL: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Se encarga de configurar la potencia, escala de selección y el filtro de banda ancha del acelerómetro.

o CTRL8_XL: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Se encarga de configurar los filtros de paso alto y paso bajo del acelerómetro así como el filtro de paso bajo de la función 6D.

• void Compass_Init(): función que se encarga de inicializar los registros del magnetómetro de la IMU. Estos registros son:

o CTRL_REG1: Registro de la IMU del dispositivo empotrado del magnetómetro. Se encarga de seleccionar el modo de operación para los ejes X e Y, y de seleccionar la tasa de datos de salida.

o CTRL_REG2: Registro de la IMU del dispositivo empotrado del magnetómetro. Se encarga de la configuración de la escala del magnetómetro.

o CTRL_REG3: Registro de la IMU del dispositivo empotrado del magnetómetro. Este registro no tiene ninguna función que interese, pero se mantiene para futuras ampliaciones.

o CTRL_REG4: Registro de la IMU del dispositivo empotrado del magnetómetro. Este registro se encarga de seleccionar el modo de operación del eje Z.

• void Gyro_Init(): función que se encarga de inicializar los registros del giroscopio de la IMU. Estos registros son:

o CTRL2_G: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Este registro se encarga de establecer la selección del ratio de datos de salida del giroscopio, la selección de escala del giroscopio y activar/desactivar la escala de 125 grados por segundo.

o CTRL6_C: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Este registro se encarga de activar el gatillo de nivel de sensibilidad de los datos del giroscopio y de activar el cerrojo de nivel de sensibilidad del giroscopio.

o CTRL7_G: Registro de la IMU del dispositivo empotrado del acelerómetro y del giroscopio. Este registro se encarga de activar el modo de operación de alto rendimiento del giroscopio, de activar el filtro de paso alto del giroscopio y de situar la frecuencia de corte del filtro de paso alto del giroscopio.

• bool New_event_gyro_X(): función que se encarga de chequear si se ha producido algún movimiento en el eje X del giroscopio, si es así la función devuelve true, en caso contrario false.

• bool New_event_gyro_Y(): función que se encarga de chequear si se ha producido algún movimiento en eje Y del giroscopio, si es así la función devuelve true, en caso contrario false.

Apéndice IV: Descripción de funcionalidades software

• bool New_event_gyro_Z(): función que se encarga de chequear si se ha producido algún movimiento en el eje Z del giroscopio, si es así la función devuelve true, en caso contrario false.

• bool New_event_accel_X(): función que se encarga de chequear si se ha producido algún movimiento en el eje X del acelerómetro, si es así la función devuelve true, en caso contrario false.

• bool New_event_accel_Y(): función que se encarga de chequear si se ha producido algún movimiento en el eje Y del acelerómetro, si es así la función devuelve true, en caso contrario false.

• bool New_event_accel_Z(): función que se encarga de chequear si se ha producido algún movimiento en el eje Z del acelerómetro, si es así la función devuelve true, en caso contrario false.

• void Read_Gyro(): función que se encarga de leer los datos, tanto de la parte alta como de la parte baja, de los ejes X, Y, Z del giroscopio, almacenarlos en un vector, que posteriormente es tratado para juntar la parte alta y la parte baja con el fin de conseguir el dato asociado al eje correspondiente.

• void Read_Accel(): función que se encarga de leer los datos, tanto de la parte alta como de la parte baja, de los ejes X, Y, Z del acelerómetro. Estos se almacenan en un vector, que posteriormente es tratado para juntar la parte alta y la parte baja con el fin de conseguir el dato asociado a el eje correspondiente.

• void Read_Compass():función que se encarga de leer los datos, tanto de la parte alta como de la parte baja, de los ejes X, Y, Z del magnetómetro, almacenarlos en un vector, que posteriormente es tratado para juntar la parte alta y la parte baja con el fin de conseguir el dato asociado a el eje correspondiente.

• void printdata(void): función que se encarga de representar los datos obtenidos. Tiene tres opciones disponibles de representación, en este caso, la opción es la 1.

In document Simulador virtual de movimientos (página 138-140)

Documento similar