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

Déterminer la loi entrée-sortie de ce mécanisme, \(c=f(\theta)\) :

Correction

On commence par écrire la relation de fermeture géométrique :

\(\overrightarrow{AB}+\overrightarrow{BC}=\overrightarrow{AC}\)

Et on projette selon \(\vec x\) :

\(c(t)=a\cos\theta\)

Mécanisme à coulisse

Déterminer la loi entrée-sortie de ce mécanisme,  \(\lambda=f(\phi)\) :

Correction

On commence par écrire la relation de fermeture géométrique :

\(\overrightarrow{OM}+\overrightarrow{MP}+\overrightarrow{PO}=\overrightarrow{0}\)

Et on projette dans la base \(\left(\vec x, \vec y\right)\) :

 

Mécanisme à plateau incliné

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

Correction

On commence par écrire la relation de fermeture géométrique :

Et on projette dans la base \(\left(\vec x, \vec y\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, …

Pour le mécanisme suivant, déterminer la loi entrée-sortie sous la forme \(F(\varphi, \theta)=0\).

Correction

On commence par écrire la relation de fermeture géométrique :

\(\overrightarrow{OM}+\overrightarrow{MN}+\overrightarrow{NP}+\overrightarrow{PO}=\vec0\)

Et on projette dans la base \(\left(\vec x, \vec y\right)\) :

\(\left\{
\begin{aligned}
a\cos\phi+b\cos\beta+c\cos(\theta)&=u \\
a \sin\phi+b\sin\beta+c\sin(\theta)&=v
\end{aligned}\right.\)

On fait « disparaître » \(\beta\) :

\(\left(u-a\cos\phi-c\cos(\theta)\right)\)^2+\left(v-a\sin\phi-c\sin(\theta)\right)\)^2+b^2=0\)

Impossible d’obtenir \(\theta\) en fonction de \(\varphi\) analytiquement ! 

 

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()

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *