SL.pro
Blog · · 9 minutos de lectura

Cómo funcionan las aplicaciones de nivel: acelerómetros explicados

Tu teléfono sabe hacia dónde está el suelo porque lleva un sensor diminuto llamado acelerómetro MEMS. Ese sensor mide cómo la gravedad tira del teléfono en tres direcciones a la vez. Una aplicación de nivel lee esos tres números, hace un poco de trigonometría y te muestra un ángulo. Lo hace cientos de veces por segundo, dentro de un chip que a simple vista casi no verías. Este artículo explica lo que ocurre en realidad.

Puntos clave
  • El acelerómetro mide cómo se reparte la gravedad entre tres ejes. No mide movimiento cuando el teléfono está quieto.
  • La inclinación y el alabeo salen de fórmulas de arcotangente aplicadas a esas tres lecturas de gravedad.
  • Spirit Level Pro pasa las lecturas brutas por un promedio móvil exponencial (alpha=0.15) para que la burbuja no vibre.
  • Los sensores MEMS se desvían con la temperatura, así que calibra en el mismo lugar donde trabajas.
  • Con el teléfono quieto contra una superficie, el acelerómetro hace todo el trabajo. No necesitas el giroscopio.
Close-up macro photo of a Kionix MEMS tri-axis accelerometer chip from a mobile device
El chip acelerómetro MEMS dentro de tu teléfono es más pequeño que un grano de arroz pero mide gravedad con precisión.

¿Qué es un acelerómetro MEMS?

MEMS quiere decir Sistemas Microelectromecánicos. El elemento que mide dentro del acelerómetro de un teléfono es diminuto, unos pocos cientos de micrones de ancho, más pequeño que un grano de sal. Está sobre el mismo silicio que la electrónica común del chip y se fabrica de la misma manera. Por eso estos sensores son baratos y acaban en casi todos los teléfonos.

El mecanismo es sencillo una vez que lo imaginas. Una masa diminuta cuelga de resortes de silicio grabados en el chip. Cuando inclinas el chip, la gravedad desvía un poco la masa de su centro. Ese movimiento cambia la separación entre unos dedos metálicos con forma de peine, y al cambiar la separación cambia la capacitancia entre ellos. El chip lee ese cambio y lo convierte en un número de aceleración, medido en g.

Esta es la parte que hace posible un nivel. Cuando el teléfono está quieto, el acelerómetro no lee movimiento. Lee cuánta gravedad tira a lo largo de cada uno de sus tres ejes. La gravedad es una fuerza fija y conocida. Una vez que sabes cómo se reparte entre los tres ejes, puedes calcular con exactitud cómo está inclinado el teléfono.

¿Cómo mide la inclinación un acelerómetro de 3 ejes?

Un acelerómetro de tres ejes le da al teléfono su propio juego de direcciones: X va de izquierda a derecha, Y va de arriba a abajo y Z va de delante a atrás. Apoya el teléfono plano en una mesa y la gravedad tira casi por completo a lo largo de Z, así que Z marca unos 9.81 m/s² y X e Y marcan casi cero. Inclina el teléfono y la gravedad se desplaza: menos en Z, más en X e Y, en proporción al ángulo.

Convertir esas tres lecturas en ángulos es trigonometría básica. La inclinación es el ladeo de delante a atrás, el alabeo es el ladeo de izquierda a derecha, y ambos salen de una tangente inversa:

Inclinación = arctan( Y / sqrt(X² + Z²) ) Alabeo = arctan( X / sqrt(Y² + Z²) )

Esas dos líneas son todo el núcleo matemático de una aplicación de nivel. Metes los tres valores brutos, haces el cálculo y obtienes inclinación y alabeo en radianes. Multiplica por 180/π para pasarlos a grados. Ese es el número que ves en la pantalla.

Quizá te preguntes por qué el denominador usa la raíz cuadrada de los otros dos ejes y no solo uno. Es para mantener la lectura estable durante un giro completo. Si divides entre un solo eje, el cálculo falla cerca de la vertical, porque ese eje cae a cero y acabas dividiendo entre casi nada. Usar la magnitud combinada de los otros dos ejes evita ese problema.

Freescale Semiconductor 3-axis MEMS accelerometer breakout board on white background
Un acelerómetro de 3 ejes mide la tracción gravitatoria en los ejes X, Y y Z simultáneamente.
Ve la física funcionando en tiempo real

Spirit Level Pro muestra ángulos de inclinación y alabeo en vivo con suavizado EMA, cinco presets de tolerancia, y calibración de un toque. Sin descarga necesaria.

Prueba Spirit Level Pro gratis

¿Por qué son tan ruidosos los datos brutos del sensor?

La salida bruta del acelerómetro salta más de lo que esperarías. Incluso un teléfono totalmente quieto muestra pequeños temblores en sus lecturas. Parte es ruido eléctrico del propio sensor, parte es vibración que llega por la superficie, y parte es error de redondeo cuando la señal analógica se convierte en números. Muestra ese flujo bruto en la pantalla y la burbuja tiembla sin parar, lo cual no sirve para un trabajo cuidadoso.

El ruido viene de unas cuantas fuentes. El ruido térmico es una fluctuación eléctrica aleatoria por el calor. No lo puedes quitar, y marca el límite de lo silencioso que puede llegar a ser el sensor. El ruido de vibración viene de lo que te rodea: el compresor de un refrigerador, pasos, el tráfico de la calle. Y el punto cero del sensor se desvía poco a poco por su cuenta con el tiempo. Cada uno pide una solución distinta.

La solución habitual por software es un filtro paso bajo. Deja pasar los cambios lentos, como una inclinación real, y frena los rápidos, como la vibración. La forma común de hacerlo es un promedio móvil exponencial, o EMA. Cada lectura nueva cuenta por una fracción, alpha, y el resto se arrastra del último valor filtrado:

filtrado = alpha × lectura_nueva + (1 - alpha) × filtrado_anterior

Spirit Level Pro usa un EMA con alpha=0.15. Llegamos a ese número tras probar a mano un rango de valores. Con alpha=0.05 la lectura era suavísima pero lenta, y la burbuja se quedaba atrás del teléfono al moverlo. Con alpha=0.3 seguía bien el movimiento pero temblaba lo suficiente como para que costara atrapar una lectura precisa. Alpha=0.15 queda en medio. La burbuja se siente viva sin ponerse nerviosa.

El compromiso: un alpha más alto hace que la pantalla siga más rápido la inclinación real, pero también deja pasar más vibración. Un alpha más bajo suaviza más pero añade retraso. Alpha=0.15 equilibra las dos cosas y se estabiliza en unos 150ms.

¿Qué papel juega el giroscopio?

El giroscopio mide qué tan rápido gira el teléfono, en grados por segundo. No mide hacia dónde apunta el teléfono. Esa diferencia importa. Por sí solo, el giroscopio no puede decirte si el teléfono está nivelado. Solo sabe si está girando y a qué velocidad. Para una lectura de nivel con el teléfono quieto, el acelerómetro ya tiene lo que necesitas.

El giroscopio se gana su lugar cuando el teléfono se mueve, mediante la fusión de sensores. Los acelerómetros leen bien la inclinación estática, pero se vuelven lentos y ruidosos con el movimiento rápido. Los giroscopios siguen bien la rotación rápida, pero se desvían, porque sus pequeños errores se acumulan con el tiempo. Un filtro complementario o de Kalman mezcla los dos: el giroscopio se encarga del movimiento rápido y el acelerómetro devuelve la lectura de largo plazo a lo correcto.

La mayoría de las aplicaciones de nivel, Spirit Level Pro incluida, se saltan la fusión de sensores porque el trabajo es estático. Apoyas el teléfono, se estabiliza y lees el ángulo. El acelerómetro se basta solo para eso. La fusión de sensores importa más cuando algo va en movimiento, como un dron que sigue su propio desplazamiento, que cuando revisas una repisa.

¿Por qué importa tanto la calibración?

Cada sensor MEMS sale de fábrica con un pequeño desplazamiento de origen. Es un sesgo que se fija durante la fabricación, y es igual en cada lectura: una cantidad fija, en una dirección fija. Por eso el chip puede leer un grado o dos de más aunque el teléfono esté de verdad plano. Esta es la mayor razón por la que una aplicación de nivel se ve mal recién sacada de la caja.

La calibración lo corrige midiendo ese desplazamiento en una superficie que sabes que es plana, y luego lo guarda. Spirit Level Pro almacena los valores en localStorage bajo calibrationPitch y calibrationRoll. A partir de ahí, cada lectura resta esos números guardados antes de llegar a la pantalla. El desplazamiento desaparece.

La diferencia es grande. Sin calibrar, un teléfono con un sesgo de 1.5° lee 1.5° de más en todo. Puede mostrar 0.0° mientras está sobre una pendiente real de 1.5°. Calibra ese mismo teléfono y baja a un par de décimas de grado. Es la mayor ganancia de precisión que puedes conseguir de una sola vez, y solo cuesta unos segundos.

¿Cómo afecta la temperatura a la precisión?

Los sensores MEMS reaccionan a la temperatura. Los resortes de silicio que sostienen la masa se dilatan y se contraen a medida que el chip se calienta y se enfría, lo que desplaza el punto cero. Así que si llevas un teléfono de un auto caliente a un garaje frío, la lectura se desvía un poco antes de que el sensor se estabilice a la nueva temperatura. No es un cambio enorme, pero es real.

La conclusión práctica es sencilla: calibra a la temperatura a la que vas a trabajar. Una calibración hecha en una oficina cálida no aguantará del todo en un garaje frío. No hace falta obsesionarse con esto en cada tarea. Para colgar cuadros o revisar una repisa, la desviación es demasiado pequeña para notarse. Para trabajo fino dentro de un par de décimas de grado, dale al teléfono un minuto o dos para estabilizarse tras un cambio grande de temperatura, y luego calibra.

Spirit level mounted on a camera showing how angular measurement works
Múltiples sensores trabajan juntos para determinar la orientación precisa de un dispositivo en tres dimensiones.

iPhone vs Android: ¿es distinto el hardware del sensor?

Lo es, y se nota en cómo se siente la aplicación. Apple arma su propia parte de movimiento. Los iPhone del 6s en adelante llevan un coprocesador de movimiento de Apple que gestiona los datos del sensor aparte de la CPU principal. Los Galaxy insignia de Samsung se apoyan en piezas de STMicroelectronics que juntan un acelerómetro de 3 ejes y un giroscopio de 3 ejes en un solo dado. Los Google Pixel han usado sensores de Bosch y de TDK InvenSense, según el año.

Tras la calibración, un iPhone insignia y un Android insignia quedan más o menos igual. La diferencia que de verdad importa es entre un insignia y un Android económico. Los teléfonos económicos usan MEMS más baratos, de menor resolución, y su salida bruta es más ruidosa. La calibración también los acerca bastante, y para casi todo el trabajo de bricolaje el resultado está bien.

Lo que distingue al iPhone en una aplicación de nivel es menos el acelerómetro y más ese coprocesador de movimiento. Sigue recogiendo datos del sensor a un ritmo alto incluso cuando la aplicación no está delante, así que el filtro de suavizado tiene más muestras con las que trabajar. Buena parte de por qué los iPhone se sienten tan fluidos aquí viene de ahí, incluso frente a teléfonos Android con sensores igual de buenos sobre el papel.

Preguntas frecuentes

¿Cómo funcionan las aplicaciones de nivel en un teléfono?

Leen el acelerómetro MEMS del teléfono, que mide cómo tira la gravedad a lo largo de tres ejes (X, Y, Z). Inclina el teléfono y la gravedad se desplaza entre esos ejes. La aplicación aplica fórmulas de arcotangente para obtener inclinación y alabeo, suaviza el resultado para calmar el ruido del sensor y lo muestra como una burbuja de nivel o como un número. Todo esto corre cientos de veces por segundo.

¿Qué tan preciso es el acelerómetro de un teléfono para usarlo como nivel?

Un teléfono insignia calibrado lee con un par de décimas de grado de margen. Los teléfonos Android económicos leen peor sin calibrar, porque sus sensores son más baratos y varían más entre unidades. El factor más importante es la calibración: quita el desplazamiento de fábrica y acerca casi cualquier teléfono. Para la mayoría del trabajo de bricolaje y de oficio, un teléfono de gama media calibrado es bastante preciso.

¿Una aplicación de nivel usa el giroscopio?

Con el teléfono quieto, no. El acelerómetro te da el ángulo de inclinación por sí solo. El giroscopio mide la velocidad de giro, no la posición, así que no puede decirte si el teléfono está nivelado, solo a qué velocidad gira. Algunas aplicaciones mezclan los dos sensores para lecturas más suaves en movimiento, pero para apoyar el teléfono contra una pared y leer el ángulo, el acelerómetro hace todo el trabajo.

¿Por qué mi aplicación de nivel lee un poco mal incluso en una superficie plana?

Suele ser el desplazamiento de fábrica. Cada chip MEMS trae un pequeño sesgo de origen que lo hace leer un valor distinto de cero aunque el teléfono esté plano. Calibrar sobre una superficie de confianza lo elimina. Otras causas son la desviación por temperatura, una funda que levanta un borde sobre la superficie, o polvo debajo del teléfono. Calibrar sobre una mesa de vidrio limpia tras cualquier cambio grande de temperatura resuelve casi todo.

El panorama completo

Las aplicaciones de nivel funcionan porque la física detrás es fiable. La gravedad es constante, el acelerómetro la mide todo el tiempo y la trigonometría convierte tres números en un ángulo. El camino del elemento sensor a la burbuja es matemática fija de principio a fin. Ahí no hay conjeturas.

Lo que hace que una aplicación de nivel sea mejor que otra no es el hardware. Todo teléfono insignia ya trae sensores más que suficientes. La diferencia es el software: qué tan bien se filtra el flujo bruto, cómo se guarda y se aplica la calibración, qué tan bien encajan los presets de tolerancia con el trabajo real. Acierta en eso y un chip MEMS barato aguanta la comparación con herramientas dedicadas que cuestan mucho más.

Saber cómo funciona el sensor también te hace usarlo mejor. Calibra a la temperatura de trabajo. Quita la funda para lecturas precisas. Deja que el número se estabilice un segundo antes de fiarte de él. Cada uno de esos hábitos sale directo de entender qué está haciendo el hardware.

Prueba Spirit Level Pro gratis

Funciona en cualquier teléfono o tablet. Sin descarga requerida. Características Pro desde $10 de pago único.

Abre Spirit Level Pro

Sin cuenta necesaria · Funciona sin conexión · 20 idiomas