Projet Informatique
CALCUL de RESSORTS
ACCESS
VISUAL BASIC
LE GOFF Pascal
MORIEUX David
POMMIER Roland
Page 1 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
SOMMAIRE
1. INTRODUCTION__________________________________________________________3
2. DEFINITION______________________________________________________________4
3. CARACTERISTIQUES_____________________________________________________5
3.1 Données___________________________________________________________________5
3.2 Proposition de D (Ø du fil)_____________________________________________________5
3.3 Caractéristiques du matériau___________________________________________________5
3.4 Contrainte de cisaillement_____________________________________________________6
3.5 Flèche_____________________________________________________________________6
3.6 Nombre de spires utiles_______________________________________________________6
3.7 Flèche par spire_____________________________________________________________7
3.8 Pas libre___________________________________________________________________7
3.9 LO: Longueur ressort libre_____________________________________________________7
3.10 LJ : Longueur à spires jointives_________________________________________________7
3.11 L1 : Longueur sous pré charge__________________________________________________7
3.12 Vérification des conditions de flambage__________________________________________7
3.13 diametre moyen à spires jointives_______________________________________________7
4. PROGRAMME____________________________________________________________9
4.1 Table tblCoef_______________________________________________________________9
4.2 Table tblXC80_____________________________________________________________10
4.3 Table tblZ12CN18-10_______________________________________________________11
4.4 Formulaire frminit__________________________________________________________12
4.5 Formulaire frmNiveau_______________________________________________________14
4.6 Formulaire frmPente_________________________________________________________16
4.7 Formulaire frmResultatsNiveauCompression_____________________________________18
4.8 Formulaire frmResultatsNiveauTraction_________________________________________20
4.9 Formulaire frmResultatsPenteCompression_______________________________________22
4.10 Formulaire frmResultatsPenteTraction__________________________________________24
5. CONCLUSION____________________________________________________________34
6. ANNEXE_________________________________________________________________35
Page 2 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
1. INTRODUCTION
Dans le cadre de notre formation d’ingénieur au sein de l’ISTN, il nous a été
demandé un projet informatique.
Dans ce contexte, nous avons jugé utile de trouver un sujet qui puisse être
utilisable dans notre entreprise. Ce programme pourra être destiné aux
bureaux d’études afin de déterminer la longueur, le diamètre et la référence
des ressorts et d’établir les dessins correspondants.
Nous avons jugé opportun d'associer à notre réflexion et à notre travail une
personne extérieure à la Société et de culture différente (électrotechnicien de
maintenance) qui nous a apporté un regard plus général sur le sujet.
A partir du standard DASSAULT BREGUET 18600, traitant des ressorts
hélicoïdaux à fil de section circulaire, nous avons défini un cadre restreint
correspondant aux besoins courants utilisés chez DASSAULT AVIATION.
Pour la réalisation de ce programme nous avons utilisé Visual Basic à travers
Access.
Page 3 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
2. DEFINITION
Les ressorts utilisés en mécanique peuvent être classés dans les catégories
suivantes :
Ressorts en hélice ( traction, compression, flexion)
Ressorts spiraux
Ressorts à lames
Barres de torsion.
Dans le programme nous n’avons traité que les ressorts en hélice, qui sont
les seuls utilisés chez DASSAULT AVIATION .
Ces ressorts en hélice sont divisés en deux catégories suivant leur mode de
travail :
Les ressorts hélicoïdaux travaillant à la compression :
Ils agissent par poussée, généralement sur des pièces planes ayant des
assises de ressorts planes.
Les ressorts hélicoïdaux travaillant à la traction :
Ils sont destinés à agir par tirage par conséquent les extrémités doivent
être façonnées pour accrocher les pièces à rapprocher, au repos les
spires du ressort sont jointives.
Dans chacune de ces deux catégories les ressorts sont répartis en deux
types :
Ressort de niveau :
Il s’agit de ressorts dont un seul des points de la plage d’utilisation est
défini par une charge tolérancée.
Ressort de pente :
Il s’agit de ressorts dont deux points de la plage d’utilisation sont définis
par une charge minimale et une variation de charge tolérancées.
Page 4 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
3. CARACTERISTIQUES
Toutes les informations suivantes sont indispensables au bon déroulement
du programme elles sont issues du standard 18600 de DASSAULT-
AVIATION (voir annexe).
3.1 Données
Matériaux
P1 : pré charge (daN)
∆P : variation de charge (daN) ressort de pente
∆L : variation maxi de longueur en utilisation (mm)
DM : Ø moyen désiré (mm)
3.2 Proposition de D (Ø du fil)
D mini = DM/10
D maxi = DM/6
demander choix
3.3 Caractéristiques du matériau
Rechercher R mini (Mpa) en fonction du Ø du fil D
Rechercher G (Mpa)
Rechercher K en fonction de DM/D
D = f (DM)
D donne R et DM/D donne K
R et K donnent T (contrainte limite admissible)
T, D et DM donnent P, la charge, à comparer avec les besoins
Si P ne correspond pas aux besoins et pour un DM identique, il faudra
modifier D.
Page 5 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
Si D augmente R décroît et K croit T décroît
Donc, dans le programme Indiquer les Ø fils extrêmes tels que
6<= DM/D<=10
Pour les deux valeurs extrêmes de D, calculer la charge P
Si la charge souhaitée est en dehors de la fourchette, demander un autre
DM.
Si charge souhaité < Pmini DM decroit
Si charge souhaité > Pmaxi DM croit
Retourner en a)
Si la charge souhaitée est comprise dans la fourchette, ajuster D tel que P
souhaité = P
Il faut noter La variation de D sera de 0.1 en 0.1 entre 0.6 et 2.1 puis de 0.2
en 0.2 voir page 16
3.4 Contrainte de cisaillement
T = 0.8 x (R/2)x (1/K)
3.5 Flèche
F = ¾ ∆L compression
F = 8/7 ∆L traction
(F = ∆L + F/4) voir page 17 du standard)
3.6 Nombre de spires utiles
N = (F x G x D)/(π x DM² x T)
Tiré de l’équation de la flèche F page 12.
Page 6 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
3.7 Flèche par spire
f = F/N
3.8 Pas libre
p = (f x 1.25) + D
3.9 LO: Longueur ressort libre
LO = (p x N) + 1.5 x D
3.10 LJ : Longueur à spires jointives
LJ = (D x N) + 1.5 x D
3.11 L1 : Longueur sous pré charge
L1 = LJ + ∆L + F/4
3.12 Vérification des conditions de flambage
Suivant LO, DM et FL
FL flèche limite en utilisation sans risque de flambage.
3.13 diametre moyen à spires jointives
DM’ = DM + (P² - D²)/6 x DM
Avec p pas du ressort à l’état libre ( voir page 8)
Page 7 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
Nota : Formule de Reuleaux
Flèche par spire sous P
Petit f(mm) = (80 x P x DM^3) / (G x D^4)
N =((P1+ ∆P) x ∆L) / (f x ∆P) pente
Ressort de compression
N =(P1 x ∆L) / (0.75 xP1 x f) niveau
N =((P1+ ∆P) x ∆L) / (f x ∆P) pente
Ressort de traction
N =(P1 x ∆L) / (0.875 xP1 x f) niveau
Page 8 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
4. PROGRAMME
Dans ce chapitre sont traité les tables, les formulaires et les modules qui
nous ont permis de réaliser ce programme.
4.1 Table tblCoef
Dans cette table K est un coefficient de majoration dépendant du rapport
DM/D , avec DM le diamètre moyen en millimètre et D le diamètre du fil en
millimètre.
Page 9 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
4.2 Table tblXC80
Dans cette table D représente le diamètre du fil du ressort en millimètre et R
la valeur de sa résistance à la traction en Mpa pour un ressort en acier dur
au carbone étiré (XC80).
Page 10 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
4.3 Table tblZ12CN18-10
Dans cette table D représente le diamètre du fil du ressort en millimètre et R
la valeur de sa résistance à la traction en Mpa pour un ressort en acier
inoxydable (Z12CN18-10).
Page 11 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
4.4 Formulaire frminit
Page 12 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
Option Compare Database
Option Explicit
Private Sub btAnnuler_Click()
'fermeture du formulaire
[Link] acForm, "frmInit"
'fermeture d'access
'Quit
End Sub
Private Sub BtOK_Click()
'récuperer les choix
intMatériaux = ChoixMaté[Link]
intGenre = [Link]
intType = [Link]
'pour vérifier la valeur des variables dans la fenetre de deboguage
'[Link] intMatériaux
'[Link] intGenre
'[Link] intType
'Module d'élasticité
If intMatériaux = 1 Then
G = 85000
Else
G = 74000
End If
[Link] acForm, "frmInit"
'ouverture du formulaire niveau ou pente
If intType = 1 Then
[Link] "frmPente"
Else
[Link] "frmniveau"
End If
End Sub
Page 13 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
4.5 Formulaire frmNiveau
Page 14 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
Option Compare Database
Option Explicit
Private Sub btAnnuler_Click()
'fermer le formulaire actif
[Link] acForm, "frmNiveau"
'ouvrir le formulaire d'accueil
[Link] "frmInit"
End Sub
Private Sub BtOK_Click()
If IsNull([Link]) Or IsNull([Link]) _
Or IsNull([Link]) Then
Beep
MsgBox "Veuillez remplir tous les champs", , "ERREUR"
Else
'charge
P = Val(VirgulePoint([Link]))
'variation de charge est nulle puisque ressort de niveau
deltaP = 0
DeltaL = Val(VirgulePoint([Link]))
DM = Val(VirgulePoint([Link]))
If DM < 3.5 Or DM > 25 Then
Beep
MsgBox "Choisissez un diamètre moyen compris entre 3.5 et 25 mm"
Else
Form_frmNiveau.Visible = False
Call AffinerDonnées
If CalculOK = False Then
Form_frmNiveau.Visible = True
Else
[Link] acForm, "frmNiveau"
End If
End If
End If
End Sub
Page 15 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
4.6 Formulaire frmPente
Page 16 sur 35
LE GOFF Pascal
MORIEUX David
POMMIER Roland
Option Compare Database
Option Explicit
Private Sub btAnnuler_Click()
'fermer le formulaire actif
[Link] acForm, "frmPente"
'ouvrir le formulaire d'accueil
[Link] "frmInit"
End Sub
Private Sub BtOK_Click()
If IsNull([Link]) Or IsNull([Link]) _
Or IsNull([Link]) Or IsNull([Link]) Then
Beep
MsgBox "Veuillez remplir tous les champs", , "ERREUR"
Else
'precharge
P = Val(VirgulePoint([Link]))
'variation de charge
deltaP = Val(VirgulePoint([Link]))
DeltaL = Val(VirgulePoint([Link]))
DM = Val(VirgulePoint([Link]))
If DM < 3.5 Or DM > 25 Then
Beep
MsgBox "Choisissez un diamètre moyen compris entre 3.5 et 25 mm"
Else
Form_frmPente.Visible = False
Call AffinerDonnées
If CalculOK = False Then
Form_frmPente.Visible = True
Else
[Link] acForm, "frmPente"
End If
End If
End If
End Sub
Page 17 sur 35
4.7 Formulaire frmResultatsNiveauCompression
Option Compare Database
Option Explicit
Private Sub BtOK_Click()
[Link] acForm, "frmResultatsNiveauCompression"
[Link] "frmInit"
End Sub
Private Sub Dmoins_Click()
If D - 0.1 >= Dmini - 0.01 Then
D = D - 0.1
Call SuiteCalculs
End If
End Sub
Private Sub Dplus_Click()
If D + 0.1 <= Dmaxi + 0.01 Then
D = D + 0.1
Call SuiteCalculs
End If
End Sub
4.8 Formulaire frmResultatsNiveauTraction
Option Compare Database
Option Explicit
Private Sub BtOK_Click()
[Link] acForm, "frmResultatsNiveauTraction"
[Link] "frmInit"
End Sub
Private Sub Dmoins_Click()
If D - 0.1 >= Dmini - 0.01 Then
D = D - 0.1
Call SuiteCalculs
End If
End Sub
Private Sub Dplus_Click()
If D + 0.1 <= Dmaxi + 0.01 Then
D = D + 0.1
Call SuiteCalculs
End If
End Sub
4.9 Formulaire frmResultatsPenteCompression
Option Compare Database
Option Explicit
Private Sub BtOK_Click()
[Link] acForm, "frmResultatsPenteCompression"
[Link] "frmInit"
End Sub
Private Sub Dmoins_Click()
If D - 0.1 >= Dmini - 0.01 Then
D = D - 0.1
Call SuiteCalculs
End If
End Sub
Private Sub Dplus_Click()
If D + 0.1 <= Dmaxi + 0.01 Then
D = D + 0.1
Call SuiteCalculs
End If
End Sub
4.10 Formulaire frmResultatsPenteTraction
Option Compare Database
Option Explicit
Private Sub BtOK_Click()
[Link] acForm, "frmResultatsPenteTraction"
[Link] "frmInit"
End Sub
Private Sub Dmoins_Click()
If D - 0.1 >= Dmini - 0.01 Then
D = D - 0.1
Call SuiteCalculs
End If
End Sub
Private Sub Dplus_Click()
If D + 0.1 <= Dmaxi + 0.01 Then
D = D + 0.1
Call SuiteCalculs
End If
End Sub
Module : Déclarations publiques
Option Compare Database
Option Explicit
Public intMatériaux As Integer
Public intGenre As Integer
Public intType As Integer
'charge ou précharge
Public P As Double
'variation de charge
Public deltaP As Double
'variation de longueur
Public DeltaL As Double
'diamètre moyen
Public DM As Double
'diamètres du fil
Public D As Double
Public Dmini As Double
Public Dmaxi As Double
'résistance à la traction
Public R As Double
'module d'élasticité
Public G As Double
'coéfficient
Public K As Double
'contrainte limite admissible
Public T As Double
'flèche totale
Public Ftotale As Double
'flèche par spire
Public Fspire As Double
'nombre de spires utiles
Public Nspire As Double
'pi
Public Const Pi = 3.14159
'pas libre
Public PL As Double
'longueur libre
Public LO As Double
'longueur à spires jointives
Public LJ As Double
'longueur sous précharge
Public L1 As Double
'pour savoir si calculs OK
Public CalculOK As Boolean
Module : Utilitaires
Option Compare Database
Option Explicit
Private Sub test()
'pour tester la fontion virgulepoint
[Link] VirgulePoint("kjkjgkjgjkgkjgjgjkgkjhgjkgkjgk3,5kjh5252555")
[Link] VirgulePoint("7.5")
End Sub
Public Function VirgulePoint(strValeur As String) As String
'pour remplacer une virgule par un point
Dim strDebut As String
Dim strFin As String
Dim intPosition As Integer
intPosition = InStr(1, strValeur, ",")
If intPosition > 0 Then
'on découpe la chaine
strDebut = Left(strValeur, intPosition - 1)
strFin = Right(strValeur, Len(strValeur) - intPosition)
VirgulePoint = strDebut & "." & strFin
Else
'on renvoi la valeur d'origine'
VirgulePoint = strValeur
End If
End Function
Module Calculs
Option Compare Database
Option Explicit
Public Sub AffinerDonnées()
Dim KpourDmini As Double
Dim KpourDmaxi As Double
Dim RpourDmini As Double
Dim RpourDmaxi As Double
Dim tpourDmini As Double
Dim tpourDmaxi As Double
Dim PpourDmini As Double
Dim PpourDmaxi As Double
Dim db As Database
Dim rst As Recordset
'ouverture de la table
Set db = CurrentDb
Set rst = [Link]("tblCoef")
'diam fil mini maxi
Dmini = (Int((DM / 10) * 10)) / 10
Dmaxi = (Int((DM / 6) * 10)) / 10
'recherche de k pour Dmini et Dmaxi
[Link]
KpourDmaxi = rst!K
[Link]
KpourDmini = rst!K
[Link]
'recherche de R pour Dmini et Dmaxi
If intMatériaux = 1 Then
Set rst = [Link]("SELECT tblXC80.D, tblXC80.R FROM tblXC80 ORDER
BY tblXC80.D;")
Else
Set rst = [Link]("SELECT [tblZ12CN18-10].D, [tblZ12CN18-10].R FROM
[tblZ12CN18-10] ORDER BY [tblZ12CN18-10].D;")
End If
'curseur sur 1er enreg
[Link]
'visualiser les diam dans la table
'grace aux requetes ci-dessus ils sont ordonés par ordre croissant
'Do While Not [Link]
'[Link] rst!D
'[Link]
'Loop
'Exit Sub
'curseur sur valeur imédiatement supérieur à Dmini
Do While Dmini > rst!D
[Link]
Loop
'remonter curseur d'un enregistrement
[Link]
RpourDmini = rst!R
'curseur sur 1er enreg
[Link]
'curseur sur valeur imédiatement supérieur à Dmaxi
Do While Dmaxi > rst!D
[Link]
Loop
'remonter curseur d'un enregistrement
[Link]
RpourDmaxi = rst!R
'curseur sur 1er enreg
[Link]
'valeur moyenne pour diamètre de fil
D = (Int((DM / 8) * 10)) / 10
'curseur sur valeur imédiatement supérieur à Dmaxi
Do While D > rst!D
[Link]
Loop
'remonter curseur d'un enregistrement
[Link]
R = rst!R
'calcul des contraintes limites admissibles
tpourDmini = (0.8 * RpourDmini) / (2 * KpourDmini)
tpourDmaxi = (0.8 * RpourDmaxi) / (2 * KpourDmaxi)
T = (0.8 * R) / (2 * 1.169)
'calcul des charges pour dia fil extremes
PpourDmini = (Pi * Dmini ^ 3 * tpourDmini) / (80 * DM)
PpourDmaxi = (Pi * Dmaxi ^ 3 * tpourDmaxi) / (80 * DM)
If P + deltaP >= PpourDmini And P + deltaP <= PpourDmaxi Then
CalculOK = True
Call SuiteCalculs
End If
If P + deltaP < PpourDmini Then
Beep
MsgBox "Le diamètre moyen et la charge sont incompatibles." & vbCrLf _
& "charge mini : " & Format(PpourDmini, "0.00") & " daN" & vbCrLf _
& "charge maxi : " & Format(PpourDmaxi, "0.00") & " daN" & vbCrLf & vbCrLf _
& "Veuillez soit augmenter la charge soit diminuer le diamètre moyen.", , "DONNEES
INCOMPATIBLES"
CalculOK = False
End If
If P + deltaP > PpourDmaxi Then
Beep
MsgBox "Le diamètre moyen et la charge sont incompatibles." & vbCrLf _
& "charge mini : " & Format(PpourDmini, "0.00") & " daN" & vbCrLf _
& "charge maxi : " & Format(PpourDmaxi, "0.00") & " daN" & vbCrLf & vbCrLf _
& "Veuillez soit diminuer la charge soit augmenter le diamètre moyen.", , "DONNEES
INCOMPATIBLES"
CalculOK = False
End If
End Sub
Public Sub SuiteCalculs()
'calcul flèche par spire
'Fspire = (80 * (P + deltaP) * DM ^ 3) / (G * D ^ 4)
Fspire = (Pi * DM ^ 2 * T) / (G * D)
'calcul du pas libre
PL = (Fspire * 1.25) + D
'calcul de la flèche et du nombre de spires
If intGenre = 1 Then 'compression
Ftotale = (4 * DeltaL) / 3
If intType = 1 Then 'pente
Nspire = ((P + deltaP) * DeltaL) / (Fspire * deltaP)
Else 'niveau
Nspire = (P * DeltaL) / (0.75 * P * Fspire)
End If
Else 'traction
Ftotale = (8 * DeltaL) / 7
If intType = 1 Then 'pente
Nspire = ((P + deltaP) * DeltaL) / (Fspire * deltaP)
Else 'niveau
Nspire = (P * DeltaL) / (0.875 * P * Fspire)
End If
End If
'calcul de la longeur du ressort libre
LO = (PL * Nspire) + (1.5 * D)
'calcul de la longueur à spires jointives
LJ = (D * Nspire) + (1.5 * D)
'ouverture du formulaire de résultats
If intType = 1 Then 'pente
If intGenre = 1 Then 'compression
[Link] "frmResultatsPenteCompression"
With Form_frmResultatsPenteCompression
.DiamMoyen = DM
.Précharge = P
.VariationCharge = deltaP
.DiamFilMini = Format(Dmini, "0.0")
.DiamFil = Format(D, "0.0")
.DiamFilMaxi = Format(Dmaxi, "0.0")
.LongLibre = Format(LO, "0.0")
.LongSpiresJointives = Format(LJ, "0.0")
.LongPrécharge = Format(LJ + DeltaL + (Ftotale / 4), "0.0")
.LongCharge = Format(LO - Ftotale, "0.0")
.NbSpires = Format(Nspire, "0.00")
If intMatériaux = 1 Then
.Matériau = "XC80"
Else
.Matériau = "Z12CN18-10"
End If
End With
Else 'traction
[Link] "frmResultatsPenteTraction"
With Form_frmResultatsPenteTraction
.DiamMoyen = DM
.Précharge = P
.VariationCharge = deltaP
.DiamFilMini = Format(Dmini, "0.0")
.DiamFil = Format(D, "0.0")
.DiamFilMaxi = Format(Dmaxi, "0.0")
.LongSpiresJointives = Format(LJ, "0.0")
.LongPrécharge = Format(LJ + DeltaL + (Ftotale / 8), "0.0")
.LongCharge = Format(LJ + Ftotale, "0.0")
.NbSpires = Format(Nspire, "0.00")
If intMatériaux = 1 Then
.Matériau = "XC80"
Else
.Matériau = "Z12CN18-10"
End If
End With
End If
Else 'niveau
If intGenre = 1 Then 'compression
[Link] "frmResultatsNiveauCompression"
With Form_frmResultatsNiveauCompression
.DiamMoyen = DM
.Précharge = P
.DiamFilMini = Format(Dmini, "0.0")
.DiamFil = Format(D, "0.0")
.DiamFilMaxi = Format(Dmaxi, "0.0")
.LongLibre = Format(LO, "0.0")
.LongSpiresJointives = Format(LJ, "0.0")
.LongPrécharge = Format(LJ + DeltaL + (Ftotale / 4), "0.0")
.NbSpires = Format(Nspire, "0.00")
If intMatériaux = 1 Then
.Matériau = "XC80"
Else
.Matériau = "Z12CN18-10"
End If
End With
Else 'traction
[Link] "frmResultatsNiveauTraction"
With Form_frmResultatsNiveauTraction
.DiamMoyen = DM
.Précharge = P
.DiamFilMini = Format(Dmini, "0.0")
.DiamFil = Format(D, "0.0")
.DiamFilMaxi = Format(Dmaxi, "0.0")
.LongSpiresJointives = Format(LJ, "0.0")
.LongPrécharge = Format(LJ + DeltaL + (Ftotale / 8), "0.0")
.NbSpires = Format(Nspire, "0.00")
If intMatériaux = 1 Then
.Matériau = "XC80"
Else
.Matériau = "Z12CN18-10"
End If
End With
End If
End If
End Sub
5. CONCLUSION
Ce programme, nous a permis une approche pratique du logiciel Visual Basic
par une application concrète.
Tout au long de l'élaboration de cette application, nous avons été conseillés
par des développeurs qui nous ont orienté sur la bonne procédure à suivre
pour arriver à ce résultat.
Nous avons présenté ce développement aux responsables des standards
DASSAULT qui se proposent de généraliser cette méthode informatique de
choix de ressorts, qui jusqu'à aujourd'hui est toujours effectuée avec les
standards papier.
6. ANNEXE
Dans cette rubrique figure le standard 18600 de DASSAULT-AVIATION dont
nous avons tiré toutes les informations utiles pour l'élaboration du
programme.