ACELERÓMETRO y registrador + hacer y uso (4 / 9 paso)

Paso 4: Use-calibración

¿Por qué necesitamos calibrar?

¿No es el sensor ya calibrado de fábrica?
Estas son diez lecturas consecutivas (aceleraciones seguidos de velocidades angulares; x, y, z en ambos casos) con la GY521 en reposo, en posición vertical (eje + X hacia arriba):

  • 17088 208 5-1048-1-216
  • 17028 308-1320 4 3 -250
  • 16988 360-1212 7 3-236
  • 16876 376--1032 13 -218-36
  • 16972 244--1348 13-25-226
  • 17060 316-1156 -2-11 -224
  • 16948 328--1300 31 -224 0
  • 17016 332-1124 1-1-209
  • 17088 348--1088 6-27-238
  • 17072 284--1104 13-24-228

Si el dispositivo es realmente vertical, las lecturas para las aceleraciones deben ser (véase la razón): (16384, 0, 0); y si el aparato era realmente todavía, las lecturas para el giroscopio debe ser: (0,0,0). ¿Así: las lecturas deben todos han sido: [16384, 0, 0, 0, 0, 0]: lo que está mal? ¿O es realmente algo malo?

Probablemente se suceden tres cosas:

  • el dispositivo sigue siendo, por lo menos con ningún movimiento notable, pero es probable que no es perfectamente vertical,
  • hay ruido de la señal, y esto es probablemente la causa de la fluctuación en las lecturas instantáneas,
  • las lecturas son crudas, no calibrado, razón por la cual ellos son "desviados", en promedio.

Por lo tanto, vamos a ir paso a paso.

ADC de la MPU6050

El MPU6050 tiene un integrado ADC (convertidor de analógico a Digital) que cada canal (aceleración y velocidades angulares, cada en x, y, z) en 16 bits. Por lo tanto 2 ^ 16 resultados diferentes son posibles: 0 a 65535, o-32768 a +32767. Esta gama de lecturas está asignada en la configuración estándar de + - 2g en aceleraciones y +-250 deg/s en velocidades angulares. Luego 1 g corresponde a 16384 LSB (menos pedacito de vaciado o digitales raws unidades de lectura), y 1 deg/s corresponde a 131 LSB.

Ambas gamas se pueden cambiar en las opciones de configuración mediante software a través del código de Jeff Rowberg (ver paso anterior). Las posibilidades son:

  • Rangos de aceleración: + - 2g, 4g, 8g, 16g
  • Gamas de giroscopios: +-250, 500, 1000, 2000 deg/s.

Nota que debido a restricción de 16 bits de ADC, ampliando los rangos de medidas disminuye la sensibilidad: el rango de + - 4 g asignado en un rango de lectura de (-32768, +32767) da 8192 LSB/g.

Por lo tanto, las lecturas de la materia prima se pueden convertir en "físico" unidades con sensibilidades conocidas son:

  • 1,042969 0,012695 - 0,063965 0,038168 - 0,007634 - 1,648855
  • 1,039307 0,018799 - 0,030534 0,080566 0,022901 - 1,908397
  • 1,036865 0,021973 - 0,053435 0,073975 0,022901 - 1,801527
  • 1,030029 0,022949 - 0,062988 - 0,099237 - 0,274809 - 1,664122
  • 1,035889 0,014893 - 0,082275 - 0,099237 - 0,190840 - 1,725191
  • 1,041260 0,019287 - 0,070557 - 0,015267 - 0,083969 - 1,709924
  • 1,034424 0,020020 - 0,079346 - 0,236641 0,000000 - 1,709924
  • 1,038574 0,020264 - 0,068604 0,007634 - 0,007634 - 1,595420
  • 1,042969 0,021240 - 0,066406 - 0,045802 - 0,206107 - 1,816794
  • 1,041992 0,017334 - 0,067383 - 0,099237 - 0,183206 - 1,740458
  • Unidades: g y grados/s

Bueno, pero... ¿Cuál es el resultado real? ¿Cuántos decimales pueden utilizarse correctamente? He seleccionado 6 decimales, pero ¿por qué no 10?

Manipulación de números

Lo que podemos decir es que con un nivel de confianza del 95% (basado en todos los registros de la calibración, no sólo los 10 que se muestra a continuación) pueden calcularse los promedios con herramientas estadísticas y consideración de las reglas de cifras significativas. Ver aquí la hoja de cálculo, cuyos resultados son:

  • AX = +-5 17002 LBS <> – 1.038 g + 0.000
  • Ay = 328 +-4 LBS <> – g + 0.000 0.020
  • AZ =-1170 +-6 lb <> –-0.071 + 0.000 g
  • GX = -1,9 +-0.7 libras <> –-0.014 +-0.005 º / s
  • GY = 0,6 +-1.1 LBS <> – 0.004 +-0.008 º / s
  • GZ =-227 + 1 lb <> –-1.730 +-0.007 º / s

Claramente, sólo al mirar los resultados: las lecturas de aceleración parecen "confiable", y no es Gy. Pero incluso estos promedios "estadísticamente corregidos" todavía no son lo que uno esperaría. Aceleración debe ser 1.000; y, además, uno se pregunta por qué es tan alto si el dispositivo no estaba moviendo el promedio de Gz.

Por lo tanto, entrar en calibración - por fin!

Calibración (acelerómetro)

Primera observación: calibración no pretende corregir los resultados de un sensor defectuoso. Si de los resultados anteriores nos parece que el sensor de Gz probablemente roto o miss conectado, no es probablemente ninguna calibración que puede arreglarlo.

Segunda observación: una calibración compara las lecturas, o lecturas con suposiciones. Extrapolación más allá de esas lecturas requiere cuidado.

La MPU6050 muestra una relación lineal teórica entre las medida aceleraciones o velocidades angulares y la salida. (La hoja de datos de especificación de producto menciona una "linealidad" de 0,5% y 0,2%, respectivamente; "sensibilidad del cruz-eje", la cantidad de cambios introducidos en un eje por la aplicación de la aceleración o velocidad angular sobre otro eje, es 2%).

Entonces, sería posible aplicar correcciones a las ecuaciones de conversión. En el caso anterior, para las aceleraciones, la corrección del error de ganancia lleva a:

  • AX(g) = (Ax(LBS)) / (16384 + 618)

Compensación de las desviaciones pueden corregirse también:

  • Ay(g) = (Ay(LBS) - 328) /(16384-328)
  • AZ(g) = (Az(LBS) +1170)/(16384+1170)

Este procedimiento de compensación podría ser correcto IF está seguro de que el acelerómetro es realmente vertical (+ X a) cuando se tomaron las medidas de calibración, de lo contrario no es correcto. Puede ser que el error así introducido es pequeño, pero sin embargo no es correcto. Y, desafortunadamente, es difícil estar seguro de la precisión de la verticalidad con la cual se coloca el MPU6050 durante la calibración.

Procedimiento de calibración alternativa "(prueba seis posiciones") sería leer seis veces la aceleración resulta, con el dispositivo todavía. En cada uno de estos casos el sensor sería dado vuelta para que cada vez que un eje diferente está en la "vertical" (+-x/y/z). Las lecturas en cada posición para todos los ejes proporciona suficiente información para una calibración detallada.

Una descripción simple de este procedimiento se puede encontrar aquí; información más precisa aquí; más grave aquí.

Independientemente de la posición del sensor, si no se mueve, entonces la norma o módulo de la aceleración vectorial debería ser 1 g (o sea la aceleración de la gravedad en su lugar). Esto puede también usarse para propósitos de calibración en cualquier posición del sensor.

Calibración (acelerómetro) que con G

Dos pruebas sencillas de calibración adicional parecen posibles, aunque no les he desarrollado:

  • Caída libre: un acelerómetro en caída libre debe leer (0,0,0), independientemente de su orientación espacial. Probablemente será difícil reunir suficientes datos antes de aplicar un pararrayos (desde mi piso 7 tardará el probador de apenas más de 2 segundos para llegar a la calle).
  • Péndulo: Un péndulo en el que bob es el GY521 medir aceleraciones y velocidades angulares que son relativamente fáciles de calcular.

Calibración (giroscopio)

El procedimiento estándar utilizado para la calibración del acelerómetro puede utilizarse para el desplazamiento control del giróscopo, pero no proporciona ninguna pista acerca del error de ganancia. Si el error de ganancia necesita revisarse, supongo que un péndulo calibrado puede ser necesario.

¿Cuánto tiempo de calentamiento? ¿Y para la calibración?
Se adjunta un gráfico mostrando las lecturas sesión lo antes posible después de haber encendido el Arduino. No hay período de calentamiento es evidente -, o si hay alguna, parece que es muy corto y no tendrá efecto práctico para mis propósitos.

La pregunta de cuánto tiempo se requiere para la lectura de datos de calibración se puede convertir en un problema estadístico: ¿cuántas muestras se requiere de una población general para estimar con precisión el promedio? La respuesta es: como necesario para proporcionar resultados estables. Hay expresiones explícitas para el número de muestras, pero, en general y cuando sea posible, es preferible que hacer tantas suposiciones sobre la población como sea posible. Un gráfico adjunto muestra la evolución de la estimación de Ax con el tamaño de muestreo. Después de 10-15 segundos de lectura los resultados son bastante estables, y mi recomendación sería leer para 20-25 s a una frecuencia de al menos 25 Hz.

Artículos Relacionados

Vidrio con luz de acelerómetro controlado

Vidrio con luz de acelerómetro controlado

He empezado este proyecto como un vidrio de lado de la cama con función de iluminación. Cuando he avanzado exploré diferentes usos en diferentes contextos.Escenario de cristal de lado de cama:Cuando el usuario se despierta y necesita beber agua, él o
Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

versiones17 de octubre de 2013: he publicado una guía sobre el uso de tu teléfono Android para llevar a cabo una tarea similar al aprovechar tu Android dispositivo de construido en GPS y sensores.06 de febrero de 2013: Aparece en GeoAwesomeness http:
Uso de un acelerómetro y un giroscopio con Arduino

Uso de un acelerómetro y un giroscopio con Arduino

he comprado recientemente una combinación de 3 ejes acelerómetro y giroscopio de 2 ejes de Sparkfun y quería publicar parte del código utiliza para conseguirlo ya está en marcha.  Estoy pensando en usarlo en un Arduino basado en controlador MIDI que
Conectar abierto loger y acelerómetro

Conectar abierto loger y acelerómetro

Estoy escribiendo esto por lo que puedo recordar cómo hacer este último. Se trata de un hack tirado unos años atrás y sólo salen del armario para volver a utilizar.ANTECEDENTESEs común que desea guardar los datos de un acelerómetro con un dispositivo
Acelerómetro analógico Control de un Servo

Acelerómetro analógico Control de un Servo

Se trata de un método de usar la salida de pulso cuadrado de un acelerómetro de dos ejes de Memsic para controlar un servo. Sin embargo, a diferencia de otros métodos que utilizan un dispositivo microcontrolador, te voy a mostrar cómo directamente to
Arduino Nano: Sensor acelerómetro giroscopio MPU9250 brújula I2C con Visuino

Arduino Nano: Sensor acelerómetro giroscopio MPU9250 brújula I2C con Visuino

MPU9250es uno de los más avanzados sensores de tamaño pequeño acelerómetro, giroscopio y brújula actualmente disponibles combinados. Tienen muchas características avanzadas, incluyendo filtrado de paso bajo, detección de movimiento e incluso un proce
Acelerómetro y giroscopio Tutorial

Acelerómetro y giroscopio Tutorial

IntroducciónEsta guía está dirigida a todos los interesados en el uso de acelerómetros y giróscopos, así como dispositivos de combinación IMU (Unidad de medición inercial) en sus proyectos de electrónicaCubriremos:¿Qué mide un acelerómetro?¿Qué mide
MPU6050: Acelerómetro de Arduino 6 ejes + Gyro - GY 521 prueba y simulación 3D

MPU6050: Acelerómetro de Arduino 6 ejes + Gyro - GY 521 prueba y simulación 3D

¿Está usted buscando para hacer tu propio quadcopter abejón o RC avión con Arduino pero no sabes cómo conseguir el giro de trabajo? ¿Quizás usted ya compró algunos módulos de 6 eje MPU6050 (en las tablas de desglose de GY-521) sólo para descubrir que
Cómo programar un acelerómetro de Arduino para controles de movimiento

Cómo programar un acelerómetro de Arduino para controles de movimiento

Control de movimiento es siempre algo que ha tocado techo mi interés. Esto es especialmente tan recientemente cuando me enteré de lo fácil Arduino hace al programa. Una vez instalado correctamente esto puede convertirse fácilmente en una impresionant
Guía de giroscopio y acelerómetro con Arduino incluye filtrado de Kalman

Guía de giroscopio y acelerómetro con Arduino incluye filtrado de Kalman

esta guía fue publicada primero en el foro de Arduino y se puede encontrar aquí: http://arduino.cc/forum/index.php/topic, 58048.0.htmlYo apenas había publicado, así que aún más conseguirá un uso. El código se puede encontrar aquí:https://github.com/T
Casco para bicicleta LED controlada por acelerómetro

Casco para bicicleta LED controlada por acelerómetro

si usted ciclo para diversión, ejercicio, ir al trabajo o compulsión, es importante estar bien iluminado y visible en la noche. Manteniendo el casco iluminado es una buena opción porque le da su principal protección extra. Este casco, el siguiente en
Intel Edison IoT - Servo Control utilizando acelerómetro

Intel Edison IoT - Servo Control utilizando acelerómetro

Hola todos, estoy entre los chicos afortunados que recibieron una placa Intel de Edison y el IoT Kit de Grove. Me he pasado mucho tiempo para aprender acerca de esta nueva Junta Directiva de Edison y Arduino impresionante estilo de codificación. Son
Control de cero con un acelerómetro

Control de cero con un acelerómetro

entorno de programación Scratch el es muy popular entre los niños. Usando Arduino, podemos introducir control acelerómetro por lo que sus juegos pueden reaccionar a la inclinación del acelerómetro.Había cubierto los conceptos básicos en el instructiv
Exploración de acelerómetro y magnetómetro de LSM303DLHC

Exploración de acelerómetro y magnetómetro de LSM303DLHC

El LSM303 combina las lecturas del campo electromagnético de la tierra como un magnetómetro con lecturas de la fuerza gravitacional de la tierra como un acelerómetro de tres ejes. Esta información es un sistema de navegación compacto.Como es, el LSM3