Calcul de self

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Calcul de self

Message par klystron »

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   
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Calcul de self

Message par falsam »

Mais c'est qu'il s'éclate klystron :)

Ne connaissant pas ce domaine je ne me prononcerais pas sur le résultat. En tout cas bravo pour ce code.

■ Quelques observations à la première lecture :

:arrow: Plutôt que d'essayer de cadrer les textes avec des espaces, utilise le flag #PB_Text_Right

Cette portion de code

Code : Tout sélectionner

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 
devient

Code : Tout sélectionner

  TextGadget(11, 0, 10,   190, 30, "Diamètre du mandrin en mm", #PB_Text_Right) ;a 
  TextGadget(12, 0, 40,  190, 30, "Longueur de la self en mm", #PB_Text_Right) ;b 
  TextGadget(13, 0, 70,  190, 30, "Diamètre du fil en mm", #PB_Text_Right) ;c 
  TextGadget(14, 0, 100,  190, 30, "Nombre de spires", #PB_Text_Right) ;n 
  TextGadget(15, 0, 130, 190, 30, "Inductance en µH", #PB_Text_Right) ;L 
  
:arrow: On ne peut pas fermer ton application (àmoins de la crasher) parce que tu ne testes pas l’événement #PB_Event_CloseWindow

Remplaces

Code : Tout sélectionner

Until Event =16
par

Code : Tout sélectionner

Until Event = #PB_Event_CloseWindow
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Calcul de self

Message par falsam »

@klystron: Alors là je suis fâché !! Je croyais que c'était toi qui avait élaboré ce code !!!

ça n'a pas d’intérêt de le publier si tu n'apportes rien de nouveau. De plus tu ne cites pas l'auteur et tu as retiré la date de publication qui figuré en commentaire.

Bref ....

:arrow: Ce sujet est traité sur ce lien : http://forums.purebasic.com/french/view ... w=previous
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Calcul de self

Message par G-Rom »

Toujours utile pour les bidouilleurs comme moi a faire des conneries en electronique ^^
merci.
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: Calcul de self

Message par klystron »

Bonjour Falsam,
j'ai trouvé ce code sur le web, et comme il ressemble à mes futurs projets, c'est pour cela que je l'ai mis ici, il ressemble au code du triangle rectangle.
bonne journée.
A+

j'ai trouvé aussi ( sur le web ) , un code pour le calcul des selfs sur tore amidon, pour ceux qui bricolent en radio ...

Code : Tout sélectionner



Global L.F, AL, N.D, MonSens.s 
Enumeration 
   #StringL 
   #StringN 
   #OptionL 
   #OptionN 
EndEnumeration 
Procedure Open_Window() 
   OpenWindow (21, 0, 0, 280, 70, "tore Amidon type T94-2" , $CF0001) ; fenetre principale 
   
   StringGadget ( #StringN , 220, 5, 50, 30, "" ) ;position N 
   StringGadget ( #StringL , 220, 35, 50, 30, "" ) ;position L 
   OptionGadget ( #OptionL , 10, 10, 200, 30, "Nombre de spires bobinées " ) 
   OptionGadget ( #OptionN , 10, 40, 200, 30, "Valeur théorique de la self en µH" ) 
  
EndProcedure 
Procedure calcul(sens.s) 

  AL= 84 ; valeur AL pour un tore de T94-2 
  
  L.f = ValD ( GetGadgetText ( #StringL ) ) 
  N.D = ValD ( GetGadgetText ( #StringN ) ) 
   Select sens 
     Case "L2N" 
      N = 100* Sqr (L/AL) 
       SetGadgetText ( #StringN , StrF (N,2) ) ;resultat avec 2 chiffres apres la virgule
     Case "N2L" 
      L = AL*N*N/10000 
       SetGadgetText ( #StringL , StrF (L,2) ) ;resultat avec 2 chiffres apres la virgule
   EndSelect 
   
EndProcedure 

Open_Window() 
Repeat 
   EventID = WaitWindowEvent () 
      If EventID = #PB_Event_Gadget 
        Select EventGadget () 
          Case #OptionL 
          MonSens= "L2N" 
           SetGadgetState ( #StringL , 1) 
           SetGadgetState ( #StringN , 0) 
          Case #OptionN 
          MonSens= "N2L" 
           SetGadgetState ( #StringL , 0) 
           SetGadgetState ( #StringN , 1) 
          Default 
          calcul(MonSens) 
        EndSelect 
      EndIf 
Until EventID = 16 

lebedo
Messages : 6
Inscription : mar. 06/janv./2015 13:48

Re: Calcul de self

Message par lebedo »

bonjour,
le code de calcul de self pour tore amidon, il bloque par moment ?
il doit y avoir un truc qui doit pas aller ?...
Alain.
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: Calcul de self

Message par klystron »

Salut lebedo,
chez moi il fonctionne .
A+
lebedo
Messages : 6
Inscription : mar. 06/janv./2015 13:48

Re: Calcul de self

Message par lebedo »

Le programme de calcul des selfs sur tore amidon , impossible de pouvoir sortir ,une fois avoir fait les calculs...
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Calcul de self

Message par falsam »

Bonjour Lebedo et bienvenue sur ce forum

Remplace

Code : Tout sélectionner

Until EventID = 16
par

Code : Tout sélectionner

Until EventID = #PB_Event_CloseWindow
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
lebedo
Messages : 6
Inscription : mar. 06/janv./2015 13:48

Re: Calcul de self

Message par lebedo »

Bonsoir FALSAM, et merci.
je vais voir si ça marche.
je suis nouveau ici sur le forum.
quand j'étais jeune je bricolais sur GW-basic.
mais avec Pure Basic, pas si simple pour moi...
je vais essayé de comprendre .
bonne soirée à vous.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Calcul de self

Message par Ollivier »

Klyztron il a réussi à faire un calcul avec interface etc... avec AL considéré comme un entier. Ça c'est fort. C'est le genre de truc que je me gamelle à tous les coups qui me pousse toujours à utiliser le même type de variable.
(float ou double)
lebedo
Messages : 6
Inscription : mar. 06/janv./2015 13:48

Re: Calcul de self

Message par lebedo »

d'après le programme AL c'est une valeur de la tore en ferrite , utilisée pour les calculs je crois.
j'ai essayé de mettre à la fin du programme until event = #pb_event_closewindow , mais si je clique sur la croix rouge de la fenetre , la fenetre ne part pas ...
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Calcul de self

Message par falsam »

lebedo a écrit :j'ai essayé de mettre à la fin du programme until event = #pb_event_closewindow , mais si je clique sur la croix rouge de la fenetre , la fenetre ne part pas ...
Normal !! Lis bien ma réponse à ce sujet.

Ce n'est pas la variable Event mais bien EventID que j'ai cité
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
lebedo
Messages : 6
Inscription : mar. 06/janv./2015 13:48

Re: Calcul de self

Message par lebedo »

FALSAM,
:oops: oui je me suis trompé ...
je recommence , merci bien.
lebedo
Messages : 6
Inscription : mar. 06/janv./2015 13:48

Re: Calcul de self

Message par lebedo »

Oui c'est bon, ouff. :lol:
merci bien FALSAM.
Répondre