Ejemplo 2.9: Suspensión de bicicleta#
El mecanismo de la foto (cotas en centímetros) muestra la suspensión trasera de una bicicleta (adaptado del examen de enero de 2023). Se pide:
Determinar los grados de libertad.
Determinar la velocidad del punto \(A\) por el método analítico.
Determinar las aceleraciones angulares de todos los eslabones y la aceleración del centro de la rueda trasera, \(C\).


Datos: \(\omega_4= 1~rad/s\) antihorario; \(\alpha_4= 2~rad/s^2\) horario. Si se necesita cualquier otra medida, se puede obtener de la figura.
Solución
1. Grados de libertad
El conjunto resorte-amortiguador \(O_5\)-\(D\) no añade ni resta grados de libertad, por lo que puede contarse o no. Si no se cuenta:
\(N=4\) cuerpos (contando la tierra como cuerpo).
\(p_I=4\) pares de rotación (\(O_2\): 1-2, \(O_4\): 1-4, \(A\): 2-3 y \(B\): 3-4).
\(p_{II}=0\), al no haber pares de dos grados de libertad.
Aplicando la fórmula de Grübler: \(G=3(N-1)-2 p_I - p_{II} = 3 \cdot 3 - 2 \cdot 4 = 1\) GDL.
Si se cuenta el conjunto resorte-amortiguador, este consta de dos cuerpos que deslizan uno sobre otro: el 5 (mitad inferior) y el 6 (mitad superior, la que se une al cuerpo 2). Entonces:
\(N=6\) cuerpos.
\(p_I=7\): seis pares de rotación (1-2, 1-4, 2-3, 3-4, 2-6 y 1-5) y uno prismático (5-6).
\(p_{II}=0\).
Con lo que \(G = 3 \cdot 5 - 2 \cdot 7 = 1\) GDL, coincidiendo con el resultado anterior, como era de esperar.
2. Velocidad del punto \(A\)
Al tratarse de un mecanismo de un GDL, con un único dato de velocidad (y de aceleración) podemos resolver el resto. La estrategia consiste en buscar un lazo que recorra todos los cuerpos de la cadena cinemática a analizar, plantear las ecuaciones de movimiento relativo de los puntos a lo largo de dicho lazo y resolver el sistema resultante. El lazo a analizar será \(O_4\)-\(B\)-\(A\)-\(O_2\), con los siguientes vectores de posición (en cm, medidos de la figura):
Las ecuaciones de velocidad a lo largo del lazo son:
La primera se calcula directamente: \(\vec{v}_B = (1\,\hat{k}) \times (22.246\,\hat{i} - 2.259\,\hat{j}) = 2.259\,\hat{i} + 22.246\,\hat{j}~(cm/s)\). Sustituyendo las otras dos en la tercera:
que es un sistema de dos ecuaciones con dos incógnitas, cuya solución es:
La velocidad pedida es, por tanto:
3. Aceleraciones
Se plantea el sistema equivalente con las ecuaciones de aceleración de sólido rígido a lo largo del mismo lazo:
donde \(\vec{a}_B = -26.76\,\hat{i} - 42.23\,\hat{j}~(cm/s^2)\) es conocida y las incógnitas son \(\alpha_2\) y \(\alpha_3\). Resolviendo:
El punto \(C\) no forma parte del lazo usado para plantear el sistema, pero una vez conocidos \(\omega_3\) y \(\alpha_3\) su aceleración se obtiene directamente con la ecuación del sólido rígido 3:
El siguiente código MATLAB resuelve el problema con la toolbox de cálculo simbólico (descargar):
% Ejemplo 2.9: suspensión de bicicleta. Unidades: cm, rad/s, rad/s^2.
% Requiere la Symbolic Math Toolbox.
clear, clc, close all
% Datos geométricos (cm):
rO2A=[5.529 2.499 0];
rO4B=[22.246 -2.259 0];
rAB=[20.609 -17.248 0];
rBC=[4.6 0.6 0];
% Datos conocidos de entrada:
w4=[0 0 1];
af4=[0 0 -2];
% Velocidades, con incógnitas simbólicas:
syms w2M w3M real
w2=[0 0 w2M];
w3=[0 0 w3M];
vA=cross(w2,rO2A);
vB=cross(w4,rO4B);
eq1= vB==vA+cross(w3,rAB);
sol1=solve(eq1,[w2M,w3M]);
% Sustituir las incógnitas por sus valores:
w2=[0 0 double(sol1.w2M)];
w3=[0 0 double(sol1.w3M)];
vA=cross(w2,rO2A);
fprintf('\nResultados velocidades:\n')
fprintf('v_A='); disp(vA);
fprintf('v_B='); disp(vB);
fprintf('w_2='); disp(w2(3));
fprintf('w_3='); disp(w3(3));
% Aceleraciones, con incógnitas simbólicas:
syms af2M af3M real
af2=[0 0 af2M];
af3=[0 0 af3M];
aA=cross(af2,rO2A) + cross(w2,cross(w2,rO2A));
aB=cross(af4,rO4B) + cross(w4,cross(w4,rO4B));
aBA=cross(af3,rAB) + cross(w3,cross(w3,rAB));
eq2= aB == aA + aBA;
sol2=solve(eq2,[af2M,af3M]);
af2=[0 0 double(sol2.af2M)];
af3=[0 0 double(sol2.af3M)];
aA=cross(af2,rO2A) + cross(w2,cross(w2,rO2A));
% Aceleración de C:
aC = aB + cross(af3, rBC) + cross(w3, cross(w3, rBC));
fprintf('\nResultados aceleraciones:\n')
fprintf('alpha_2='); disp(af2(3));
fprintf('alpha_3='); disp(af3(3));
fprintf('a_A='); disp(aA);
fprintf('a_B='); disp(aB);
fprintf('a_C='); disp(aC);