Después de una larga búsqueda de sensores, analizando las características y la disponibilidad de estos, se consiguieron los siguientes sensores.
Gyro
ITG-3200
Gyro de 3 ejes.
Este gyro tiene interfaz I2C.
Explicación de los Registros
Addr Hex |
Addr Decimal |
Register Name |
R/W |
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
||
0 |
0 |
WHO_AM_I |
R/W |
- |
ID |
- |
|||||||
15 |
21 |
SMPLRT_DIV |
R/W |
SMPLRT_DIV |
|||||||||
16 |
22 |
DLPF_FS |
R/W |
- |
- |
- |
FS_SEL |
DLPF_CFG |
|||||
17 |
23 |
INT_CFG |
R/W |
ACTL |
OPEN |
LATCH_INT_EN |
INT_ANYRD_2CLEAR |
- |
INT_RDY_EN |
- |
RAW_RDY_EN |
||
1A |
26 |
INT_STATUS |
R |
- |
- |
- |
- |
- |
ITG_RDY |
- |
RAW_DATA_RDY |
||
1B |
27 |
TEMP_OUT_H |
R |
TEMP_OUT_H |
|||||||||
1C |
28 |
TEMP_OUT_L |
R |
TEMP_OUT_L |
|||||||||
1D |
29 |
GYRO_XOUT_H |
R |
GYRO_XOUT_H |
|||||||||
1E |
30 |
GYRO_XOUT_L |
R |
GYRO_XOUT_L |
|||||||||
1F |
31 |
GYRO_YOUT_H |
R |
GYRO_YOUT_H |
|||||||||
20 |
32 |
GYRO_YOUT_L |
R |
GYRO_YOUT_L |
|||||||||
21 |
33 |
GYRO_ZOUT_H |
R |
GYRO_ZOUT_H |
|||||||||
22 |
34 |
GYRO_ZOUT_L |
R |
GYRO_ZOUT_L |
|||||||||
3E |
62 |
PWR_MGM |
R/W |
H_RESET |
SLEEP |
STBY_XG |
STBY_YG |
STBY_ZG |
CLK_SEL |
Configuración para nuestra aplicación
- WHO, 0x00, No usado
- SMPL, 0x15, Sample rate register, valor = 0
- DLPF, 0x16, DLPF-Full Scale, valor = 00011000b
- FS_SEL = 3 , (+-)2000 [º/s], Full scale selection for gyro sensor data
DLPF_CFG = 0 , LPF = 256Hz y SampleRate = 8KHz, Digital low pass filter configuration and internal sampling rate configuration
- INT_C, 0x17, Control de Interrupción, valor = 0
- PWR_M, 0x3E, Power management, valor = 00000001b
- H_RESET = 0, dispositivo no reseteado
- SLEEP = 0, desactivar modo de bajo consumo
- STBY_XG = 0, gyro eje x en modo normal ( no standby )
- STBY_YG = 0, gyro eje y en modo normal ( no standby )
- STBY_ZG = 0, gyro eje z en modo normal ( no standby )
- CLK_SEL = 001b, clock de referencia eje x ( ver que en código de ejemplo pone 000b )
Los siguientes son de sólo lectura.
- INT_S, 0x1A, Estado de la Interrupción
- TMP_H, 0x1B, Temperatura bit alto
- TMP_L, 0x1C, Temperatura bit bajo
- GX_H, 0x1D, Gyro eje x bit alto
- GX_L, 0x1E, Gyro eje x bit bajo
- GY_H, 0x1F, Gyro eje y bit alto
- GY_L, 0x20, Gyro eje y bit bajo
- GZ_H, 0x21, Gyro eje z bit alto
- GZ_L, 0x22, Gyro eje z bit bajo
Acelerómetro
ADXL345
Acelerómetro de 3 ejes.
ADXL202
Acelerómetro de 2 ejes.
Cálculo del ancho de banda
Donde C se expresa en uF y F en Hz.
Para un ancho de banda de 300Hz, el valor de C es de aproximadamente 16.7uF.
Cálculo del período del DCM
Elegiremos como frecuencia del DCM una frecuencia 10 veces más grande que el ancho de banda, o sea unos 3kHz. Para esta frecuencia la R es igual a 42k.
Filtros para combinar las mediciones del acelerómetro y el giroscopio
Filtro Complementario
Filtro de Kalman