Autor Tema: Ayuda de Como Interpretar Acelerómetro.  (Leído 29042 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PCCM

  • PIC16
  • ***
  • Mensajes: 109
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #15 en: 26 de Noviembre de 2013, 01:31:21 »
Claro, se tiene que escribir a algunos registros para activar el DMP, el problema es que el llenado de esos registros es grande, se tiene que llenar con una matriz de 8*16*16 para la memoria del DMP, y una matriz de 29*9 para la configuración del DMP.

Para activarlo utilizé el dspic33fj32mc204(ROM:32KB, RAM:2KB), y consumió 65% de la ROM y 43% de la RAM, solo para obtener los cuaterniones. y otro problema que encontré, es que al leerlo por el fifo(lo cual es obligatorio en el DMP), solo puedo leer los cuaterniones, pero si quiero leer la aceleración en un eje ya no se puede, pero no te puedo asegurar 100% esto, ya que no se si en arduino con las funciones hechas para el DMP se podrá.

Por no tener un control de la variable aceleración involucrada en el filtro, opte por no usarlo, ya que tenia que corregir la aceleración debido a periodos largos de aceleraciones.

Para un cuadroptero, creo que no involucra este inconveniente, ya que sus movimientos son más suaves. Para la aplicación que estoy realizando es para una aeronave que alcanza los 3 Match y aceleraciones de hasta 8 gravedades durante 10 segundos o menos.

La parte del sensado inercial, para el caso del calculo de la actitud, compré un sensor de presión diferencial(tubo de pitot), para corregir la aceleración:

http://www.digikey.com/product-detail/en/HSCDRRT001PD2A3/480-3335-ND/2601662

Pero aún no lo pruebo, ya que estoy buscando un giroscopo que me entregue de forma precisa la velocidad angular o de frente el angulo. lo malo que para comprar los giroscopos ópticos son demasiado caros, me pregunte unos cuantos y variaban entre 6000 y 16000 dolares.

Estoy comprando estos giroscopos MENS:

http://www.digikey.com/product-search/en?wt.z_cid=ref_hearst_0211_buynow&site=us&mpart=ADIS16266/PCBZ&v=505

Según su datasheet dice que son más precisos que los típicos de tecnología MENS.Los voy a probar ya que solo necesito máximo un minuto de precisión.

El filtro que implemente fue el Complementario, Kalman, DMP(filtro Mahony) y Madgwick, pero como dije todas tienen el error de aceleraciones grandes en tiempos grandes.

Por lo pronto no he más hecho pruebas con el sistema inercial,ya que si no encuentro un giroscopo más preciso tendré que resignarme a realizar correcciones  con filtros.

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #16 en: 26 de Noviembre de 2013, 20:54:17 »
Claro, se tiene que escribir a algunos registros para activar el DMP, el problema es que el llenado de esos registros es grande, se tiene que llenar con una matriz de 8*16*16 para la memoria del DMP, y una matriz de 29*9 para la configuración del DMP.

y dichas matrices son valores constantes o son resultados de cálculos? digo, porque se podría usar una memoria externa para almacenar esos datos... no?

Saludos!
-
Leonardo Garberoglio

Desconectado PCCM

  • PIC16
  • ***
  • Mensajes: 109
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #17 en: 27 de Noviembre de 2013, 10:17:49 »
Si son valores constantes y claro se puede almacenar en una memoria externa.
En la cuarta respuesta cuelgo el código.

Desconectado Vtronic

  • PIC16
  • ***
  • Mensajes: 121
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #18 en: 29 de Noviembre de 2013, 21:29:05 »
PCCM te dijo casi todo, son muchos los datos que hay que cargar para activar el DMP pero los valores de aceleración y giroscopio si se pueden leer de la FIFO cuando esta dando la salida en cuaterniones, es una de las razones por la cual la libreria de arduino solo la use de apoyo, tambien me di cuenta que en arduino no leen los 42 bytes de la FIFO de forma continua por lo cual se da un problema de muestreo, según el datasheet, el cual es que lees los primeros valores en un tiempo = 0 y los segundos en un tiempo = 1 para datectar el error o corregirlo se debee de hacer por medio de software, cosa que no pasa si se lee toda la FIFO en una sola lectura, bien aqui ya me desvie y aqui estan los datos que obtuve

PIC24FJ256DA210                          Ocupados
RAM Bytes                       98,304           3556
Program Memory (KB)   256           27.36

Pero en mi programa manejo dos MPU6050 uno con DMP y en el otro normal, UART a 115k


La estructura de la FIFO cuando se leen los cuaterniones es la siguiente


/* ================================================================================================ *
| Default MotionApps v2.0 42-byte FIFO packet structure:

| | | | [QUAT W][ ]   [QUAT X][ ]  [QUAT Y][ ]  [QUAT Z][ ]     [GYRO X][ ]   [GYRO Y][ ]
     | | 0 1 2 3           4 5 6 7         8 9 10 11     12  13 14 15   16  17 18 19   20  21 22 23

 | | | | [GYRO Z][ ]  [ACC X ][ ]    [ACC Y ][ ]      [ACC Z ][ ][ ]
      | | 24 25 26 27  28 29 30 31   32 33 34 35     36 37 38 39 40 41 |
* ================================================================================================ */

Si no me equivoco esa es la salida que se puede leer en la FIFO, siempre buscala anda por la red, Yo probé leer los paquetes y si contenían la información





Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #19 en: 11 de Diciembre de 2013, 23:10:24 »
Aprovecho el post para hacerles una consulta.
Esperando la MPU6050 y la 9150 para probarlas empece a jugar con el ADXL345, el L3G42000 y el HMC5883.
De momento va todo bastante bien, exepto por una cosa, cuando quiero medir los angulos de pitch y roll con el acelerometro funciona bien excepto cerca de los 90°. Es decir si hago solo pitch me convierte bien a grados, pero cuando me acerco a los 90° de pitch me empieza a aparecer mediciones de Roll bastantes raras....
Dejo parte de mi código (para la LPCXpresso 1769):

Código: [Seleccionar]
while ( 1 ){

ADXL345_read_data();

x1=((float)accel_X - biasAccelX) * 0.0037;
y1=((float)accel_Y - biasAccelY) * 0.0038;
z1=((float)accel_Z - biasAccelZ) * 0.0038;
R=sqrtf(x1*x1+y1*y1+z1*z1);
x1/=R;
y1/=R;
z1/=R;
//Calculate the pitch in degrees as measured by the accelerometers.
pitchAccel = atan2(y1, z1) * 360.0 / (2*PI);
rollAccel = atan2(x1, z1) * 360.0 / (2*PI);

uart2_printDouble(x1, 3);
UART2_Sendchar('\t');
uart2_printDouble(y1, 3);
UART2_Sendchar('\t');
uart2_printDouble(z1, 3);
UART2_Sendchar('\t');
uart2_printDouble(pitchAccel, 3);
UART2_Sendchar('\t');
uart2_printDouble(rollAccel, 3);
UART2_Sendchar('\r');
UART2_Sendchar('\n');
delay_ms(300);
}

Y adjunto un conjunto de muestras para que vean el efecto....
Alguna idea?
he probado cargar esos datos en excel y usar la funcion atan2 del excel. Me da resultados parecidos, solo que rotados 90°....

Saludos y gracias
-
Leonardo Garberoglio

Desconectado PCCM

  • PIC16
  • ***
  • Mensajes: 109
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #20 en: 13 de Diciembre de 2013, 00:35:47 »
Parece que en tu algoritmo cada angulo esta dependiendo de una variable de más.
generalmente es:

angulox=atan(X/sqrt(Y^2 + Z^2));
anguloy=atan(Y/sqrt(X^2 + Z^2));

Desconectado JANDAL

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #21 en: 27 de Junio de 2015, 16:52:43 »
elgarbe buen dia,

Leyendo el mensaje anterio tuyo, tengo el mismo problema con este sensor. Exactamente igual me pasa. como lo solucionaste?

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #22 en: 27 de Junio de 2015, 17:13:43 »
El problema es que las ecuaciones están pensadas para valores lejanos a 90°. En valores cercanos a los 90° las funciones divergen.

Saludos!
-
Leonardo Garberoglio

Desconectado yair_xiox

  • PIC16
  • ***
  • Mensajes: 210
Re: Ayuda de Como Interpretar Acelerómetro.
« Respuesta #23 en: 17 de Septiembre de 2015, 17:33:17 »
hola elgarbe me puedes contestar la pregunta que te hice en el otro subforo http://www.todopic.com.ar/foros/index.php?topic=45073.20
« Última modificación: 17 de Septiembre de 2015, 18:55:03 por yair_xiox »


 

anything