Aceleración en un plano inclinado

1 Introducción

Al deslizar un objeto sin rozamiento por un plano inclinado (Figura 1), este realiza un movimiento acelerado por la fuerza de gravedad: F = m g \sin(\alpha) \tag{1} donde m es la masa del objeto, g es la aceleración de la gravedad, y \alpha es el ángulo de inclinación del plano.

Si solo actua esta fuerza en la dirección del movimiento, la posición x sigue un movimiento rectilineo uniformemente acelerado (MRUV): x(t) = \frac{1}{2} \, a \, t^2 + v_0 \, t + x_0 \tag{2} donde x_0 y v_0 las posiciones y velocidades iniciales, y a = g \sin(\alpha) \tag{3} es la aceleración.

En este experimento, soltaremos un carrito sobre un riel inclinado. Primero, mediremos la posición en función del tiempo para verificar el modelo de MRUV (Ecuación 2). Luego, para distintos ángulos, verificaremos la dependencia de la aceleración con el ángulo (Ecuación 3).

Figura 1: Objeto sobre un plano inclinado en un ángulo \alpha.

2 Mediciones

2.1 Posición en función del tiempo

Para medir la posición del carrito en función del tiempo se utiliza un fotosensor (photogate). Este consiste en un emisor y un receptor de luz infrarroja enfrentados. Este último emite un voltaje distinto según si detecta o no el haz de luz infrarroja y nos permite detectar el paso de obtejos que lo bloqueen.

Sobre el carrito se monta una rejilla: una placa con varias ranuras equiespaciadas que bloquea y libera el haz del fotosensor a medida que el carrito pasa a través de él (Figura 2). De esta manera, el sensor no mide la posición del carrito de forma continua, sino que registra los instantes en que cada ranura de la rejilla bloquea o desbloquea el haz. Conociendo la posición de cada ranura respecto de un punto de referencia de la rejilla, estos tiempos pueden traducirse en una serie de posiciones del carrito en función del tiempo.

Figura 2: Esquema de una rejilla pasando por un fotosensor. La rejilla (gris), con cuatro ranuras (blanco), se desplaza junto con el carrito a través del haz de luz del fotosensor (línea roja), generando la señal de voltaje que se muestra debajo en función del tiempo.

2.1.1 Tiempo de bloqueo del fotosensor

El fotosensor entrega una señal de voltaje que sólo toma dos valores (alto o bajo), saltando de uno a otro cada vez que una ranura de la rejilla bloquea o desbloquea el haz. Para encontrar los tiempos en que ocurren estos saltos, se puede “derivar” la señal y encontrar los picos de esa derivada (Figura 3).

def encontrar_tiempos(df: pd.DataFrame):
    """Encuentra los tiempos de saltos en la señal de voltage."""
    mask = df["(V)"].diff().abs() > 2.5
    tiempos = df["time"][mask]
    return tiempos.to_numpy()
  1. ¿Cuál es el error en estos tiempos? ¿Está relacionado a la frecuencia de muestreo del sensor?
Código para generar esta figura
import numpy as np
import matplotlib.pyplot as plt
import scipy.signal
import pandas as pd

t = np.linspace(0, 1, 1000)
x = 5 * t**2
v = np.where(x % 0.6 < 0.3, 0, 5)

v = pd.Series(v, index=t)

fig, axes = plt.subplots(3, sharex=True)

axes[-1].set(xlabel="Tiempo (s)")

v.plot(ax=axes[0], ylabel="Voltaje (V)")
v.diff().plot(ax=axes[1], ylabel="$V_{t+1} - V_t$")
v.diff().abs().plot(ax=axes[2], ylabel="$|V_{t+1} - V_t|$")
axes[2].axhline(2.5, color="red", linestyle="--")

fig.align_labels()
Figura 3: Procesamiento de la señal del fotosensor. El primer gráfico muestra la señal cruda de voltaje. Debajo, se grafica la diferencia entre dos mediciones consecutivas del voltaje. En el último, se toma el modulo de la señal anterior y se grafica un valor umbral para detectar los cambios de señal.

2.1.2 Posición de bloqueo del fotosensor

Una vez determinados los tiempos en que el carrito bloquea o desbloquea el haz, falta asignarle a cada uno de ellos la posición de la ranura correspondiente. Para ello, se puede medir la posición de cada borde de las ranuras desde el extremo de la rejilla, como se muestra en la Figura 4. En la Sección 3.1, se propone una alternativa más compleja para medir estas posiciones.

Figura 4: Medición de las posiciones de las ranuras desde un extremo de la rejilla.

2.1.3 Corrección por ancho del haz

Hasta ahora, se asumió que el fotosensor detecta el instante en que el borde de una ranura pasa por el haz de luz, como si este fuera infinitamente delgado. En la práctica, el haz tiene un ancho finito y el sensor puede cambiar de estado antes o después del instante “ideal” (Figura 5).

Si la mínima cantidad de luz activa el fotosensor, estaríamos en el caso esquematizado por el primer haz (Figura 5, rojo). En ese caso, el inicio de la ranura se detecta antes y el final después de lo esperado. El último caso (Figura 5, azul) es el opuesto, donde el fotosensor necesitaría ver el haz completo. También podría darse el caso intermedio (Figura 5, verde), donde justo la mitad del haz activa el fotosensor.

  1. Si observa los datos, ¿se observa este patrón en las mediciones?

Como los tiempos de bloqueo y desbloqueo se alternan a medida que la rejilla atraviesa el sensor, este efecto puede incorporarse al modelo de ajuste sumando un término \text{ancho\_haz} únicamente a las posiciones de un mismo tipo de transición. Por ejemplo, a los índices pares, si estos corresponden siempre a bloqueos (o a desbloqueos):

def eq_posicion(t, a, v0, x0, ancho_haz):
    # MRUV
    x = 0.5 * a * t**2 + v0 * t + x0

    # a los indices pares, [0, 2, 4, ...],
    # les sumamos el ancho del haz.
    x[::2] += ancho_haz

    return x
Figura 5: Posiciones del haz en las que el fotosensor puede detectarlo o dejar de detectarlo. Se muestran 3 casos donde cambia la fracción del haz. De arriba a abajo, el fotosensor requeriría una mayor cantidad de luz para detectar el haz.

2.2 Comparando con un valor de referencia de g

A partir de las posiciones y los tiempos medidos, se puede obtener la aceleración para un dado ángulo ajustando el modelo de la Ecuación 2.

  1. ¿Es compatible la aceleración que obtiene con la Ecuación 3?

  2. Si es compatible, obtenga g a partir de la aceleración y el ángulo. ¿Cuál contribuye un mayor error al error de g? ¿Podría mejorar el error de esa variable? ¿Cómo?

  3. Repita la medición para distintos ángulos de inclinación \alpha y determine g a partir de un ajuste por el modelo de la Ecuación 3.

2.3 Ángulo de inclinación

Para medir el ángulo de inclinación, se proponen dos alternativas:

  • utilizar un transportador de péndulo,
  • medir los lados del triángulo que forma el plano inclinado con la mesa.

El transportador de péndulo es un instrumento compuesto por un semicírculo graduado (transportador de ángulos) y un hilo con un peso (péndulo) que sirve para medir ángulos de inclinación de manera directa. Por otro lado, midiendo los lados del triángulo entre la mesa y el plano inclinado, se puede determinar de manera indirecta el ángulo entre estos por trigonometría.

  1. Analicen la precisión de cada método. ¿Cuál es más preciso?
  2. ¿Qué sucede con la exactitud? ¿Miden ambos métodos lo mismo? Si no, ¿podría corregirse alguno de estos métodos agregando un parámetro a la Ecuación 3?

3 Apéndice

3.1 Alternativa para la medición de las posiciones

Asumiendo que todas las ranuras tienen el mismo ancho, alcanza con medir el ancho d de una única ranura (o, para reducir el error, el ancho de varias ranuras consecutivas). Luego, se calcula la posición x_i de la ranura i-ésima, contada desde el extremo de la rejilla, como:

x_i = i \cdot d \tag{4}

A diferencia de la opción anterior, hay que tener cuidado con las correlaciones ya que las posiciones x_i comparten una única medición d. Si no tenemos en cuenta esta correlación, vamos a estar subestimando el error en los parámetros del ajuste.

Sin embargo, no es tan simple tener en cuenta esta correlación. Si tratamos de reusar el código de la guía del resorte, la matriz de covarianza resulta singular (de rango 1) y no puede invertirse. Por lo tanto, el ajuste por cuadrados mínimos (curve_fit) falla.

import numpy as np
import uncertainties

largo_ranura = uncertainties.ufloat(100, 1)
numero_ranura = np.arange(1, 5)

posicion_ranura = numero_ranura * largo_ranura
posicion_ranura_cov = uncertainties.covariance_matrix(posicion_ranura)

np.linalg.inv(posicion_ranura_cov)  # error: no es inversible

El problema es considerar a i, el “número de ranura”, como un número sin error. En la Ecuación 4, este es la posición de la i-ésima ranura en unidades de d, el ancho de una ranura ideal. Entonces, es esperable que esta posición i tenga un error. ¿Cómo podemos estimarlo?

Si reescribimos la Ecuación 2, reemplazando x(t) por la Ecuación 4, y pasamos d al otro lado de la igualdad, obtenemos:

i = \frac{1}{2} \, \frac{a}{d} \, t_i^2 + \frac{v_0}{d} \, t_i + \frac{x_0}{d} \tag{5}

Es decir, esperamos que i, la posición en unidades de d, también siga un MRUV. Si ajustamos este modelo, podemos estimar el error de i a partir de sus residuos (labo1.curve_fit(..., estimate_errors=True)). Si no tuviesemos una estimación del error de la variable del eje y, no podríamos propagar un error para los parámetros del ajuste.

Al ajustar el modelo de la Ecuación 5, no obtenemos a y d por separado, sino su cociente: la aceleración en unidades de d. Luego, de la medición independiente de d podemos obtener un valor de a (en m/s^2). La medición de a tiene entonces dos fuentes de error:

  • la del parámetro del ajuste, a/d, y
  • la de la medición de d.