Page 1 sur 1
self en tore
Publié : mar. 05/mai/2009 16:52
par chercheacomprendre
bonsoir à tous, j'aimerai sur mon petit code de calcul pouvoir soit entrer une valeur du nombre de spires et avoir la valeur de L calculée, oubien l'inverse, c'est à dire mettre la valeur de L et calculer la valeur de N du nombre de spires. ici dans le cas présent : si je mets nombre de spires 12 j'ai valeur théorique de la self 0.82 µH
mais comment faut-il procédé ?...
merci de me répondre.
yves.
mon code:
Code : Tout sélectionner
;calcul de la valeur de l'inductance L en µH sur tore amidon type T68-2
;code du 05 mai 2009 purebasic 4.30
Global L.F, AL, N.D
Procedure Open_Window()
OpenWindow(21, 0, 0, 255, 70, "tore Amidon type T68-2", $CF0001) ; fenetre principale
TextGadget(11, 0, 10, 200, 30, " nombre de spires bobinées ") ;N
TextGadget(12, 0, 40, 200, 30, " valeur théorique de la self en µH : ") ;L
StringGadget(1, 200, 5, 50, 30, "") ;position N
StringGadget(2, 200, 35, 50, 30, "") ;position L
EndProcedure
Procedure calcul()
N.D = ValD(GetGadgetText(1) )
L.f = ValD(GetGadgetText(2) )
AL= 57 ; valeur AL pour un tore de T68-2
L = AL*N*N/10000
N = 100*Sqr(L/AL)
SetGadgetText(2, StrF(L,2) )
EndProcedure
Open_Window()
Repeat
Event = WaitWindowEvent()
GadgetID = EventGadget()
EventType = EventType()
If EventType = #PB_EventType_Change
calcul()
EndIf
Until Event = 16
Publié : mar. 05/mai/2009 16:59
par kerkael
On dirait de l'électronique.
Ça ne m'a pas tout de suite sauté aux yeux avec le titre du sujet
Que de bons souvenirs

Re: self en tore
Publié : mar. 05/mai/2009 17:02
par Backup
chercheacomprendre a écrit :bonsoir à tous, j'aimerai sur mon petit code de calcul pouvoir soit entrer une valeur du nombre de spires et avoir la valeur de L calculée, oubien l'inverse, c'est à dire mettre la valeur de L et calculer la valeur de N du nombre de spires. ici dans le cas présent : si je mets nombre de spires 12 j'ai valeur théorique de la self 0.82 µH
mais comment faut-il procédé ?...
merci de me répondre.
yves.
heu on l'a pas déjà fait ça ? ou bien je suis entré dans une boucle temporel
qui me fait revivre les mêmes événements indéfiniment
de plus tu répond a ta question la :
ou alors j'ai pas compris

Re: self en tore
Publié : mar. 05/mai/2009 17:07
par chercheacomprendre
Bonsoir Dobro et Kerkael, oui de l'électronique, oui j'ai la formule mais ça ne fonctionne que dans un sens j'aimerais que celà fonctionne dans les deux sens : de L vers N et de N vers L et là sais pas faire ...
yves
Publié : mar. 05/mai/2009 17:10
par kerkael
Salut,
Ayant donc toutes les formules à ta dispo, tu cherches comment faire interagir l'utilisateur qui pourra d'après un gadget entrer au choix L ou N et obtenir le résultat, au lieu d'imposer des constantes dans ton code ?
C'est ça ?

Publié : mar. 05/mai/2009 17:12
par chercheacomprendre
yes c'est ça
Publié : mar. 05/mai/2009 17:15
par kerkael
Les Gadgets, c'est beau !
Le StringGadget permet de demander à l'utilisateur d'entrer du texte.
Le TextGadget d'en afficher.
Mais tu le sais déjà.
Il faudrait donner une option, avec un Optiongadget selon ce que l'utilisateur veut entrer.
Publié : mar. 05/mai/2009 17:20
par chercheacomprendre
ah ok, mais cela va me compliqué le code j'en ai bien peur, tant pis merci quand meme ami Kerkael.
bonne soirée et encore merci.
Yves.
Publié : mar. 05/mai/2009 17:44
par kerkael
Remplace les TextGadget par des OptionGadget.
Décide du sens de calcul selon l'option cochée.
L'inconvénient est que l'eventgadget réagit à toute action, dont celle d'écrire dans le stringgadget ... Chaque caractère frappé entraîne un calcul. A toi de voir si c'est ce que tu veux.
J'associerais les OptionGadget à un bouton Calcul qui lance la procédure.
Sinon, pas d'OptionGadget, mais tester quel champ est modifié.
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 T68-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, "valeur théorique de la self en µH" )
optiongadget ( #OptionN , 10, 40, 200, 30, "nombre de spires bobinées" )
EndProcedure
Procedure calcul(sens.s)
AL= 57 ; valeur AL pour un tore de T68-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) )
Case "N2L"
L = AL*N*N/10000
setgadgettext ( #StringL , strf (L,2) )
EndSelect
EndProcedure
Open_Window()
Repeat
EventID = waitwindowevent ()
If EventID = #PB_Event_Gadget
Select eventgadget ()
Case #OptionL
MonSens= "N2L"
Case #OptionN
MonSens= "L2N"
Default
calcul(MonSens)
EndSelect
EndIf
Until EventID = 16
Publié : mar. 05/mai/2009 17:50
par chercheacomprendre
[quote="kerkael"]
ok oui je vais voir , je te remercie c'est sympa.
yves
Publié : mar. 05/mai/2009 17:58
par kerkael
Oops, le calcul est l'affichage est correct, mais j'ai inversé 2 fois le nom des variables.
Dans les options, j'ai indiqué OptionL en face de StringN (et réciproquement)
Et dans le select case, le choix est inversé N2L au lieu de L2N.
stringgadget ( #StringN , 220, 5, 50, 30, "" ) ;position N
stringgadget ( #StringL , 220, 35, 50, 30, "" ) ;position L
optiongadget ( #OptionL , 10, 40, 200, 30, "valeur théorique de la self en µH" )
optiongadget ( #OptionN , 10, 10, 200, 30, "nombre de spires bobinées" )
Case #OptionL
MonSens= "L2N"
Case #OptionN
MonSens= "N2L"
Publié : mar. 05/mai/2009 18:07
par kerkael
Pour imposer de modifier le String en face de l'option choisie, voici comment modifier la fin du code.
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
Publié : mar. 05/mai/2009 18:17
par chercheacomprendre
[quote="kerkael"]
oui j'ai vu , c'est pas grave, cela fonctionne bien y'a pas de souci.
c'est impec encore merci pour l'aide.
Yves;