Automatic parameters calculation in an inductance coil
Posted: Tue Aug 20, 2013 6:09 pm
Code: Select all
;El programa permite conocer el valor de una induccion de una bobina dados sus parametros fisicos: numero de espiras, longitud de la bobina y diametro interior.
;Asimismo permite conocer cualquiera de esos 4 parametros dados 3 de ellos.
Define .d
#my0=4*#PI*1E-7; permeabilidad magnetica absoluta del vacio
Global myr=1.00000037;permeabilidad magnetica relativa del aire
Global d=0.15;diametro de la bobina en cm
Global l=2.4;longitud de la bobina en cm
Global n=40; numero de espiras
Global ind
Procedure.d CalculoBobina(myr.d,*d.double,*l.double,*n.double,Induccion.d=0)
Protected s.d=#PI**d\d**d\d/4; superficie cubierta por cada espira
Protected my.d=myr*#my0
If *d\d>0 And *l\d>0 And *n\d>0
Induccion=my**n\d**n\d*s/100/*l\d; en Henrios
ProcedureReturn Induccion
ElseIf *d\d<=0 And *l\d>0 And *n\d>0
s=100**l\d*Induccion/my/*n\d/*n\d; en cm^2
*d\d=2*Sqr(s/#PI); en cm
ProcedureReturn *d\d
ElseIf *l\d<=0 And *n\d>0
*l\d=my**n\d**n\d*s/100/Induccion; en cm
ProcedureReturn *l\d; en cm
ElseIf *n\d<=0
*n\d=10*Sqr(*l\d*Induccion/my/s)
ProcedureReturn *n\d; numero de vueltas del hilo conductor
EndIf
ProcedureReturn 0
EndProcedure
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
#Option_induccion
#Option_diametro
#Option_vueltas
#Option_longitud
#String_induccion
#String_diametro
#String_longitud
#String_vueltas
#Text_9
#String_my
#Text_11
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure refresh()
If GetGadgetState(#Option_induccion)
ind=0
ind=CalculoBobina(myr,@d,@l,@n)
SetGadgetText(#String_induccion,StrD(ind*1000)); milihenrios
ElseIf GetGadgetState(#Option_diametro)
d=0
d=CalculoBobina(myr,@d,@l,@n,ind)
SetGadgetText(#String_diametro,StrD(d)); cm
ElseIf GetGadgetState(#Option_longitud)
l=0
l=CalculoBobina(myr,@d,@l,@n,ind)
SetGadgetText(#String_longitud,StrD(l)); cm
ElseIf GetGadgetState(#Option_vueltas)
n=0
n=CalculoBobina(myr,@d,@l,@n,ind)
SetGadgetText(#String_vueltas,StrD(n)); vueltas
EndIf
EndProcedure
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 601, 633, 300, 203, "Calculo de valores de autoinduccion en una bobina",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
OptionGadget(#Option_induccion, 10, 50, 160, 20, "Autoinduccion en milihenrios")
OptionGadget(#Option_diametro, 10, 90, 160, 20, "diametro de la bobina en cm")
OptionGadget(#Option_vueltas, 10, 170, 160, 20, "numero de espiras")
OptionGadget(#Option_longitud, 10, 130, 160, 20, "longitud de la bobina en cm")
StringGadget(#String_induccion, 180, 50, 100, 20,"1", #ES_CENTER|#WS_BORDER)
StringGadget(#String_diametro, 180, 90, 100, 20,StrD(d), #ES_CENTER|#WS_BORDER)
StringGadget(#String_longitud, 180, 130, 100, 20,StrD(l), #ES_CENTER|#WS_BORDER)
StringGadget(#String_vueltas, 180, 170, 100, 20,StrD(n), #ES_CENTER|#WS_BORDER)
TextGadget(#Text_9,40, 8, 135, 20, "permeabilidad magnetica = ", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#String_my, 175, 8, 100, 20,StrD(myr) , #ES_CENTER|#WS_BORDER)
TextGadget(#Text_11, 10, 30, 90, 20, "Calcular:", #SS_CENTERIMAGE)
EndIf
EndProcedure
ind=CalculoBobina(myr,@d,@l,@n)
OpenWindow_Window_0()
SetGadgetState(#Option_induccion,1):DisableGadget(#String_induccion,1)
SetGadgetText(#String_induccion,StrD(ind*1000)); milihenrios
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Option_induccion
DisableGadget(#String_induccion,1);induccion
DisableGadget(#String_diametro,0);diametro
DisableGadget(#String_vueltas,0)
DisableGadget(#String_longitud,0)
ind=0
ind=CalculoBobina(myr,@d,@l,@n)
SetGadgetText(#String_induccion,StrD(ind*1000)); milihenrios
ElseIf EventGadget = #Option_diametro
DisableGadget(#String_induccion,0);induccion
DisableGadget(#String_diametro,1);diametro
DisableGadget(#String_vueltas,0)
DisableGadget(#String_longitud,0)
d=0
d=CalculoBobina(myr,@d,@l,@n,ind)
SetGadgetText(#String_diametro,StrD(d)); cm
ElseIf EventGadget = #Option_vueltas
DisableGadget(#String_induccion,0);induccion
DisableGadget(#String_diametro,0);diametro
DisableGadget(#String_vueltas,1)
DisableGadget(#String_longitud,0)
l=0
l=CalculoBobina(myr,@d,@l,@n,ind)
SetGadgetText(#String_longitud,StrD(l)); cm
ElseIf EventGadget = #Option_longitud
DisableGadget(#String_induccion,0);induccion
DisableGadget(#String_diametro,0);diametro
DisableGadget(#String_vueltas,0)
DisableGadget(#String_longitud,1)
n=0
n=CalculoBobina(myr,@d,@l,@n,ind)
SetGadgetText(#String_vueltas,StrD(n)); vueltas
ElseIf EventGadget = #String_induccion
ind=ValD(GetGadgetText(#String_induccion))/1000
refresh()
ElseIf EventGadget = #String_diametro
d=ValD(GetGadgetText(#String_diametro))
refresh()
ElseIf EventGadget = #String_longitud
l=ValD(GetGadgetText(#String_longitud))
refresh()
ElseIf EventGadget = #String_vueltas
n=ValD(GetGadgetText(#String_vueltas))
refresh()
ElseIf EventGadget = #Text_9
ElseIf EventGadget = #String_my
myr=ValD(GetGadgetText(#String_my))
refresh()
ElseIf EventGadget = #Text_11
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow=EventWindow()
If EventWindow=#Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
;
;}