Calcul de self
Publié : sam. 03/janv./2015 12:27
bonjour et bonne année à tous.
Code : Tout sélectionner
;programme de calcul d'inductance avec la formule de Nagaoka
Global L.F, A.D, B.D, C.D, n.D, K.D, rap.D
Procedure Open_Window()
OpenWindow(21, 0, 0, 255, 200, "Calcul de self à air", $CF0001) ; fenetre principale
TextGadget(11, 0, 10, 200, 30, " Diamètre du mandrin en mm") ;a
TextGadget(12, 0, 40, 200, 30, " Longueur de la self en mm") ;b
TextGadget(13, 0, 70, 200, 30, " Diamètre du fil en mm") ;c
TextGadget(14, 0, 100, 200, 30, " Nombre de spires") ;n
TextGadget(15, 0, 130, 200, 30, " Inductance en µH") ;L
StringGadget(1, 200, 5, 50, 30, "") ;position a
StringGadget(2, 200, 35, 50, 30, "") ;position b
StringGadget(3, 200, 65, 50, 30, "") ;position c
StringGadget(4, 200, 95, 50, 30, "") ;position n
StringGadget(5, 200, 125, 50, 30, "") ;position L
;==== ecriture en fond gras et au centre =====
FontID1 = LoadFont(1, "Arial Narrow", 12, #PB_Font_Bold)
TextGadget(20,20,170,200,100,"",#PB_Text_Center)
SetGadgetFont(20, FontID1)
EndProcedure
Procedure calcul()
A.D = ValD(GetGadgetText(1) )
B.D = ValD(GetGadgetText(2) )
C.D = ValD(GetGadgetText(3) )
n.D = ValD(GetGadgetText(4) )
K.D = 5.2
;=== rayon théorique suivant formule Nagaoka ===
A=(A+C)/2
; === message d'erreur si le rapport est pupérieur a 400 ===
If A*B*C*n <>0
rap.D = (2*(A/B))
If rap > 400
MessageRequester("Erreur","Le programme n'est pas prévu pour un tel rapport")
;=== suivant le tableau de Nagaoka correspondance des rapports 2*(a/b) et coefficient K ===
ElseIf rap >200 : K = 0.011
ElseIf rap >100 : K = 0.019
ElseIf rap > 75 : K = 0.035
ElseIf rap > 50 : K = 0.043
ElseIf rap > 25 : K = 0.061
ElseIf rap > 10 : K = 0.105
ElseIf rap > 9 : K = 0.203
ElseIf rap > 8 : K = 0.219
ElseIf rap > 7 : K = 0.237
ElseIf rap > 6 : K = 0.258
ElseIf rap > 5 : K = 0.283
ElseIf rap > 4 : K = 0.32
ElseIf rap > 3.5 : K = 0.365
ElseIf rap > 3 : K = 0.394
ElseIf rap > 2.5 : K = 0.429
ElseIf rap > 2 : K = 0.472
ElseIf rap > 1.75 : K = 0.526
ElseIf rap > 1.5 : K = 0.558
ElseIf rap > 1.25 : K = 0.595
ElseIf rap > 1 : K = 0.638
ElseIf rap > 0.9 : K = 0.688
ElseIf rap > 0.8 : K = 0.711
ElseIf rap > 0.7 : K = 0.735
ElseIf rap > 0.6 : K = 0.761
ElseIf rap > 0.5 : K = 0.789
ElseIf rap > 0.4 : K = 0.818
ElseIf rap > 0.3 : K = 0.85
ElseIf rap > 0.25 : K = 0.884
ElseIf rap > 0.2 : K = 0.902
ElseIf rap > 0.15 : K = 0.92
ElseIf rap > 0.10 : K = 0.939
ElseIf rap > 0.05 : K = 0.959
ElseIf rap > 0.02 : K = 0.97
ElseIf rap = 0 : K = 1
EndIf
;=== formule du calcul de l'inductance Nagaoka ===
L = (0.0395 * Pow(A*n,2) * K) / B ; valeurs en cm pour memoire.
L=L/10 ; résultat avec des valeurs entrées en mm
; position 5 du résultat avec deux chiffres apres la virgule ===
SetGadgetText(5, StrF(L,2) )
; ===conditions du message en gras ===
If n*C = B : Mess.s="Spires Jointives"
ElseIf n*C>B :Mess.s="Réalisation Impossible "
ElseIf n*C<B : Mess.s="Spires Non Jointives"
EndIf
SetGadgetText(20,Mess)
EndIf
EndProcedure
Open_Window()
Repeat
Event = WaitWindowEvent()
GadgetID = EventGadget()
EventType = EventType()
If EventType = #PB_EventType_Change
calcul()
EndIf
Until Event =16
; IDE Options = PureBasic 5.31 (Windows - x86)
; CursorPosition = 1
; Folding = -
; EnableXP