Fermeture géométrique
Objectif : détermination de la loi entrée-sortie d’un mécanisme dans le cas d’une chaîne cinématique fermée.
Mécanisme bielle-manivelle
Dans le cas d’un mécanisme bielle manivelle, on souhaite obtenir la loi \(c(t)=f\left(\theta(t)\right)\) :

Fermeture géométrique :
\(\overrightarrow{AB}+\overrightarrow{BC}+\overrightarrow{CA}=\overrightarrow{0}\)
En projection sur les axes de la base \(\left(\vec x, \vec y\right)\) :
\(\left\{
\begin{aligned}
a\;\cos \theta+b\;\cos \alpha-c&=0 & \color{grey}{/\vec x} \\
a\;\sin\theta+b\;\sin\alpha&=0 & \color{grey}{/\vec y}
\end{aligned}
\right.\)
On isole l’inconnue \(\alpha\) (que l’on ne souhaite pas déterminer !) :
\(\begin{aligned}
c(t)-a\;\cos \theta&=b\;\cos \alpha \\
-a\;\sin\theta&=b\;\sin\alpha
\end{aligned}\)
Et on élève ces deux expressions au carré puis on les additionne pour faire apparaitre \(\cos^2 \alpha+\sin^2 \alpha\) (car on sait que cela va faire « disparaitre » \(\alpha\) !)
\(\begin{aligned}
\left(c(t)-a\;\cos \theta\right)^2&=b^2\;\cos^2 \alpha \\
\left(a\;\sin\theta\right)^2&=b^2\;\sin^2\alpha
\end{aligned}\)
En additionnant :
\(\left(c(t)-a\;\cos \theta\right)^2+\left(a\;\sin\theta\right)^2=b^2\)
Soit :
\(\bbox[lightgrey,2px,border:2px solid black]{\large{c(t)=a\;\cos\theta+\sqrt{b^2-a^2\;\sin^2\theta}}}\)
Autres mécanismes
Mécanisme manivelle et coulisse

Mécanisme à coulisse

Mécanisme à plateau incliné
Déterminer la loi entrée-sortie de ce mécanisme \(s=f\left(\theta\right)\) :

Résolution numérique
Parfois, la résolution analytique est tout bonnement impossible !
Dans ce cas, la fermeture géométrique doit être complétée par une méthode numérique de résolution.
Mécanisme à 4 barres
Exemples : mécanisme de Watt, mécanisme d’essuie-glace, suspension de véhicules, …

Afin de terminer la résolution, on utilise un script Python pour déterminer la loi \(\varphi \rightarrow \theta\) :
Exemple (pour un angle \(varphi\) variant de 0 à 20°) :
import numpy as np
from scipy.optimize import fsolve
import matplotlib.pyplot as plt
from matplotlib import rc
rc('text', usetex=True)
# Dimensions du mécanisme
a = 50.0 # mm
b = 50.0
c = 40.0
u = 25.0
v = 15.0
# Equation de fermeture géométrique
def fermeture(theta, phi):
return (u - c*np.cos(theta) - a*np.cos(phi))**2 \
+ (v - c*np.sin(theta) - a*np.sin(phi))**2 \
- b**2
# Valeurs d'entrée : phi(t)
phi = np.linspace(0, 20*np.pi/180, 200)
# Valeurs de sortie : theta(t)
theta = np.zeros_like(phi)
# Valeur initiale pour la résolution
theta_0 = 0.0
for i in range(len(phi)):
sol = fsolve(fermeture, theta_0, args=(phi[i]))
theta[i] = sol[0]
theta_0 = theta[i]
# Régression lineaire
a, b = np.polyfit(phi, theta, 1)
poly1d_fn = np.poly1d((a, b))
# Affichage des résultats
#plt.plot(phi, theta)
plt.plot(phi, theta, 'b', phi, poly1d_fn(phi), '--k')
plt.text(min(phi), max(theta), r"$\theta="+"{:3.2f}".format(a)+r"\varphi+"+"{:3.2f}".format(b)+r"$")
plt.xlabel(r"$\varphi$ (rad)")
plt.ylabel(r"$\theta$ (rad)")
plt.title("Loi entrée-sortie du mécanisme '4 barres'")
plt.grid()
plt.show()

