Hola comunidad! necesito ayuda con el ODR ( Velocidad de datos de salida digital) de este sensor "L3g4200d", el cual soporta 100/200/400/800 hz, ya que no he podido notar una diferencia en la cantidad de datos al cambiar el registro CTRL_REG1 que es usado para esto.
He probado muchas librerías además de ver la documentación de este sensor pero sin lograr una solución así que yo me imagino que habrá que relacionar otros elementos como por ejemplo el tiempo de ejecución del arduino y la velocidad de transmisión de datos que en mi caso lo realizo con SPI pero no estoy seguro.
Nefarius, cuanto tiempo ahorrarías si publicaras enlaces a sitios donde este este sensor, la hoja de datos, el programa que estas usando, como lo tienes conectado, etc, etc.
debes usar los tags para insertar links. El nro 9 Insert a link es el que corresponde a este caso.
Cuando puedas edita los enlaces anteriores.
Y cual es el problema? Intenta la mayor velicidad si consideras que te estas perdiendo información.
El problema es que si configuro el ODR a 400 hz por ejemplo no obtengo 400 muestras por segundo sino mas bien 200 aproximadamente, además siempre tengo las 200 muestras por segundo si vario el ODR a 100/200/400/800 hz. Esto me ha complicado por un buen tiempo y en todas las librerías y ejemplos que he visto nadie lo ha cambiado sin notar una diferencia.
Mi configuración con el SPI es la siguiente:
SPI.begin();
SPI.setDataMode(SPI_MODE3);
SPI.setClockDivider(SPI_CLOCK_DIV8); // cambiando este valor tampoco noto una diferencia.
Pienso que tal vez debería relacionar la velocidad del arduino que es de 16 MHz, la de la comunicación SPI que seria 8 MHz y el odr que en mi ejemplo seria 400 hz pero no estoy seguro de como hacerlo.
el i2c y spi de arduino estan fijados a una velocidad, deberias cambiar registros para modificar la velocidad.
Por otro lado la cantidad de muestras por segundo no es que las vas a tener a las 400mps en el puerto spi. Imagina que entre muestra y muestra tendrias 400us para procesar la informacion, cosa que ni tendrias tiempo de leer el spi.
Ese sampleo lo que hace es, que el dispositivo, (y lo llamo asi porque sirve para ADC, acelerometros o cualquier cosa) toma 400 muestras las calcula para darte un valor mas, o menos preciso. A mayor muestreo mayor resolucion Recuerda que hay tiempos que se deben cumplir, y tiempos que debes tener tu para poder hacer uso de esos datos.
Si quieres mas precision no interesa cuantas veces lo leas sino que pongas el dispositivo a maxima resolucion en tu caso a 2000
Three selectable scales: 250/500/2000 degrees/sec (dps)
Pero esto hara que ante el mas minimo roce haga que varie la info, y sin un buen filtro por software será un completo desastre.
Entonces la velocidad de muestreo solo dependerá de la velocidad del SPI ya que esto es mucho mas rápido que lo que pasa en el sensor. Corregirme si me equivoco por favor.
El otro punto sobre la precisión, ¿no debería ser al revés? ya que con 250 dps la sensibilidad es de 8.75 mDPS/dígito en comparación con los 2000 dps que tiene 70 mili DPS/dígito. Por lo tanto para mayor precisión debería configurar el sensor a 250 dps.
Entonces la velocidad de muestreo solo dependerá de la velocidad del SPI ya que esto es mucho mas rápido que lo que pasa en el sensor. Corregirme si me equivoco por favor.
NO, no leiste bien lo que expliqué.
La velocidad del puerto SPI es distinta al muestreo del dispositivo. Que el dispositivo pueda ser configurado a 800hz quiere decir que puedes leer la informacion mas rapido.
El otro punto sobre la precisión, ¿no debería ser al revés? ya que con 250 dps la sensibilidad es de 8.75 mDPS/dígito en comparación con los 2000 dps que tiene 70 mili DPS/dígito. Por lo tanto para mayor precisión debería configurar el sensor a 250 dps.
La escala hará que al moverlo te entregue un valor mas estable o mas instable.
250dps son grados por segundo, osea que lee 250 veces por segundo o 2000 veces por segundo.
Haz la prueba de configurarlo en 250 y apoyalo sobre la mesa.
Despues configuralo a 2000 y tambien apoyalo. Veráz que a 2000 te va a entregar cambios porque va a detectar hasta las vibraciones de la mesa.
Y ademas estas errando unidades.
lee la hoja numero 10 de esta hoja de datos
Por fin pude cambiar el ODR. Ahora debo encontrar una buena sincronización entre la velocidad del spi y el ODR para que la gráfica se vea mas fluida como en la prueba que realicé con odr 100 y 200 y SPI con clock divider 16 si no me equivoco, en este caso logré obtener 100 muestras por segundo y 200 muestras por segundo en promedio respectivamente.
Voy a probar lo del cambio de velocidad. Gracias!.