Autor Tema: Deteccion de impactos con el acelerómetro MMA8451Q de freescale  (Leído 1377 veces)

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

Desconectado Salty

  • PIC10
  • *
  • Mensajes: 15
Deteccion de impactos con el acelerómetro MMA8451Q de freescale
« en: 23 de Febrero de 2015, 13:24:44 »
Buenas,

Estoy utilizando el acelerómetro MMA8451Q de freescale para detectar impactosl. Me detecta impactos de distintos g, el problema viene cuando le doy un golpe fuerte y seco, que no me avisa de que ha recibido un impacto. Es como si no lo viese. Estoy utilizando las interrupciones del acelerometro y el pic (18f46k22) en vez de preguntarle al acelerómetro cada cierto tiempo.

Se me ha ocurrido que se pase de los 8g y entonces no ocurra nada (creo que para lo que lo uso es facil que los supere). ¿Alquien sabe que pasa cuando supera los 8g? ¿y si no hace nada como hacer que me avise?

Gracias de antemano

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Deteccion de impactos con el acelerómetro MMA8451Q de freescale
« Respuesta #1 en: 23 de Febrero de 2015, 14:36:16 »
Es demasiado grande el datasheet para alguien que no toco nunca un acelerometro, pero creo que tu solucion viene por aca:

6.5 Transient (HPF) Acceleration Detection
http://cache.freescale.com/files/sensors/doc/data_sheet/MMA8451Q.pdf

Y su AN
http://cache.freescale.com/files/sensors/doc/app_note/AN4071.pdf

Desconectado Salty

  • PIC10
  • *
  • Mensajes: 15
Re: Deteccion de impactos con el acelerómetro MMA8451Q de freescale
« Respuesta #2 en: 24 de Febrero de 2015, 08:52:06 »
Ya he estado siguiendo el datasheet y el aplication notes. he configurado el acelerómetro de esta manera:

CTRL_REG1
IIC_RegWrite(0x2A, 0x10)

XYZ_DATA_CFG:
IIC_RegWrite(0x0E, 0x02)

PL_CFG
IIC_RegWrite(0x11, 0x00)

TRANSIENT_CFG
IIC_RegWrite(0x1D, 0x16);

TRANSIENT_THS
IIC_RegWrite(0x1F, 0x05)

TRANSIENT COUNT
IIC_RegWrite(0x20, 0x01)

CTRL_REG3
IIC_RegWrite(0x2C, 0x40)

CTRL_REG4
IIC_RegWrite(0x2D, 0x20)

CTRL_REG5
IIC_RegWrite(0x2E, 0x20)

CTRL_REG1
IIC_RegWrite(0x2A, 0x11)

Con eso consigo que me den impactos de distintos grados, pero como ya dije, si el golpe es muuy seco no me activa la interrupcion. No se si puede ser porque se satura al pasar de 8g y en ese caso no envía nada.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Deteccion de impactos con el acelerómetro MMA8451Q de freescale
« Respuesta #3 en: 24 de Febrero de 2015, 14:59:19 »
no se que decirte.. parece estar todo bien.

por ahi cambiaria este valor:

TRANSIENT COUNT
IIC_RegWrite(0x20, 0x01)

a un 0x0B

tomando como referencia los 60ms de latch (que se mantenga en 1 el latch, imagino que al tenerlo muy chico se borra rapido para detectar otro ) a 200hz ODR

y agrandar un poco el

TRANSIENT_THS
IIC_RegWrite(0x1F, 0x05)

Asi llega a unos 6g ... 6g/0.063= 96 lo cual escribirias 0x60 ( el valor de threshold)

No se que mas decirte, para configurar esto solo se necesita 4 registros + interrupciones por lo que veo de los AN y del datasheet. Y como dije no tengo experiencia en esto y solo podria decirte eso.