Está en la página 1de 5

En esta simulacin coloqu a ojo las lneas que giran en los lugares que deben ir al inicio de la simulacin, por

lo que falta el cdigo para que el mismo programa las coloque exactamente donde corresponden. Otro detalle es que la rueda que construyeron mis compaeros en la facu era de aluminio dado que se corroe mucho menos que el cobre (y es un tanto ms barato), por ello consider una rueda de aluminio de 15 cm de radio, Al programa se le puede aadir un comboBox para elegir entre diversos metales para la rueda, una caja de texto para ingresar su radio, la constante de proporcionalidad al rozamiento, etc. Un detalle: Intent hacerlo en Borland C++ Builder, pero no hall un control "Line", as que lo dej en Visual Basic. En este caso, Line1 es la lnea vertical y Line2 la horizontal. Las cajas de texto para la corriente y el campo magntico se llaman I0" y "B" respectivamente. El control StripChart se llama "graph":

'programado por Yelinna Pulliti Carrasco :) Option Explicit Dim M, in0 As Double

Dim w(), theta() As Double Dim x11, y11, x21, y21 As Double Dim x12, y12, x22, y22 As Double Dim xm, ym As Single Dim longitud As Single Dim ang As Integer Const pi = 3.1415926535 Const k = 3.01 'constante de proporcionalidad al rozamiento en g*m2/s Private Sub Command1_Click() Dim i As Integer 'densidad del aluminio: 2.6984 g/cm3 'volumen del cilindro: pi*r*r*h 'momento de inercia de la rueda: m*r*r/2 in0 = pi * 0.0225 * 0.002 * 2.6984 * 1000000 in0 = in0 * 0.0225 / 2 'momento de inercia en g*m2 M = 0.5 * 0.0225 * Val(B.Text) * Val(I0.Text) For i = 0 To 30 w(i) = M * (1 - Exp(-k * i / in0)) / k theta(i) = M * (i - (in0 * (1 - Exp(-k * i / in0)) / k)) / k theta(i) = theta(i) * pi / 180 Next graph.ClearAll graph.Redraw graph.TrackDisplayMax = M / k * 1.2 graph.TrackDisplayMin = 0 graph.Redraw graph.TrackDisplayMax = M / k * 1.2 graph.TrackDisplayMin = 0 ang = 0 Timer1.Enabled = True

End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Command3_Click() If Timer1.Enabled = False Then Timer1.Enabled = True End If End Sub Private Sub Form_Load() Form3.Left = Screen.Width / 2 - Form3.Width / 2 Form3.Top = Screen.Height / 2 - Form3.Height / 2 Timer1.Enabled = False graph.TrackDisplayMax = 10 graph.TrackDisplayMin = 0 graph.XSpan = 50 graph.LastX = 50 ReDim w(0 To 30) ReDim theta(0 To 30) ang = 0 'clculo del punto medio xm = (Line2.X1 + Line2.X2) / 2 ym = (Line2.Y1 + Line2.Y2) / 2 'clculo de la longitud de la lnea longitud = Line2.X2 - xm End Sub Private Sub Timer1_Timer()

If ang < 31 Then graph.AddXY 0, ang, w(ang) x21 = xm + longitud * Cos(theta(ang)) y21 = ym + longitud * Sin(theta(ang)) x22 = xm - longitud * Cos(theta(ang)) y22 = ym - longitud * Sin(theta(ang)) x11 = xm + longitud * Cos(theta(ang) + pi / 2) y11 = ym + longitud * Sin(theta(ang) + pi / 2) x12 = xm - longitud * Cos(theta(ang) + pi / 2) y12 = ym - longitud * Sin(theta(ang) + pi / 2) ang = ang + 1 Else theta(30) = theta(30) + (w(30) * pi / 180) If ang <= 50 Then graph.AddXY 0, ang, w(30) ang = ang + 1 End If x21 = xm + longitud * Cos(theta(30)) y21 = ym + longitud * Sin(theta(30)) x22 = xm - longitud * Cos(theta(30)) y22 = ym - longitud * Sin(theta(30)) x11 = xm + longitud * Cos(theta(30) + pi / 2) y11 = ym + longitud * Sin(theta(30) + pi / 2) x12 = xm - longitud * Cos(theta(30) + pi / 2) y12 = ym - longitud * Sin(theta(30) + pi / 2) Form1.Caption = theta(30) End If Line2.X1 = x21 Line2.Y1 = y21 Line2.X2 = x22 Line2.Y2 = y22

'ambas lneas estn desfasadas 90 grados entre s '90=pi/2 rad Line1.X1 = x11 Line1.Y1 = y11 Line1.X2 = x12 Line1.Y2 = y12 End Sub

También podría gustarte