Pendulum adalah sebuah benda dengan massa tertentu yang tergantung pada seuntas tali dengan panjang tertentu. Jika benda ini diankat sehingga membentuk sudut tertentu yang kita sebut sebagai sudut awal, yang dilambangkan dengan θ₀, kemudian dilepaskan, maka akan terjadi ayunan. Dimana perubahan sudut yang terjadi tiap satuan waktu adalah
dimana |
L adalah panjang tali
Dari perubaha sudut maka juga akan didapatkan perubahan koordinat cartesian x dan y. Ini yang akan digunakan pada simulasi VB.
Tapi jika hanya menggunakan rumus ini maka pertgerakan bandul tidak pernah berakhir (Endless). Nah agar bisa menjadi sedikit lebih nyata maka pasti ada faktor yang mempengaruhi yang membuat bandul akan berhenti pada satu waktu, nah fakto ini adalah faktor hambatan atau redaman, faktor ini membuat pergerakan bandul teredam dan lama-kelamaan akan berhenti.
Setelah berkonsultasi dengan bapak Mariano, di sini dan beliau telah memberikan pencerahan pada saya sehingga saya bisa sedikit lebih memahami tentang fisika mengenai pendulum. Dari pak Mariano saya mendapatkan rumus :
dimana
x adalah perubahan nilai pada sumbu x terhadap waktu
e adalah bilangan natural yang nilainya 2.718281828
A adalah amplitudo
π adalah sudut awal
Menurut pak Mariano ini adalah Gerak Harmonis Teredam Lemah (GHT Lemah) dimana syaratnya adalah
Syarat ini nantinya harus terpenuhi untuk mendapatkan GHT lemah. Dimana
k adalah konstanta
m adalah massa
c adalah konstanta gesek
Jika hanya mendapatkan keterangan seperti ini, seorang amatir seperti saya pasti bingung, nah bagi anda yang juga amatir seprti saya dibawah ini saya akan memberikan rumus lengkap untuk mendapatkan nilai-nilai yang dibutuhkan hingga programa untuk membuat aplikasinya di VB.
Pertama anda harus mengetahui nilai apa yang sudah anda dapatkan. Pada kasus ini saya sudah mandapatkan nilai sudut awal, massa, gaya grafitasi dan panjang tali. Dari sini dapat kita cari nilai k dengan rumus
Dimana L adalah panjang tali.
dimana eta adalah nilai viskositas udara yaitu
Kemudian Omega dapat dicari dengan rumus :
Nah, disini kita membutuhkan nilai omega nol, nilai omega nol didapat dengan rumus :
Jadi, sekarang rumus kita sudah lengkap. Tapi sebenarnya ada satu masalah lagi, yaitu bagaimana mencari nilai perubahan pada sumbu y? Jawabannya adalah dengan menggunakan rumus segitiga siku-siku, yaitu :
Kalo ga salah ya rumusnya gitu, nah dari rumus ini jika c adalah panjang tali, a dalah x, dan y adalah b, maka nilai y dapat dihitung. Setelah seian banyak rumus, apakah rumus θ(t) diatas tidak dapat digunakan? jawabannya masih, tapi ditambahkan faktor redaman, yaitu :
Sehingga rumusnya menjadi
Nah, jadi, tingal pilih mau yang mana. Jika ada pertanyaan apakah antara rumus x dan rumus θ diatas berbeda, jawabannya adalah serupa tapi tak sama. Itu akan saya jelaskan di bagian lain halaman ini, sekarang kita buat dahulu animasinya, dari animasi ini anda nanti dapat menyimpulkan.
Pertama, buatlah form seperti pada gambar dibawah ini.
Properties yang digunakan adalah :
12 Label, seperti yang terliahat pada gambar diatas, yang bertuliskan, massa, X, e, dll...
Satu buah mschart untuk menunjukkan sudut(kalau mau lebih juga silahkan)
Satu buah Vscroll untuk marubah panjang tali.
Dua buah Hscroll untuk merubah massa dan sudut awal (π)
Satu buah listbox untuk melihat perbedaan sudut
Tiga buah shape, satu lingkaran besar, dan dua kotak kecil. Lingkaran digunakan untuk melihat secara visual pergerakan ujung pendulum, sedangkan kotak kecil sebagai penanda amplitudo maksimal.
Enam buah Line, dua line untuk simuasi tali, dua buah line untuk simulasi perubahan kecepatan, dan sisanya untuk simulasi perubahan percepatan.
Dan yang terakhir adalah satu buah timer.
Dibawah ini adalah program yang saya buat.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Deklarasi globalDim massa As Integer
Dim L As Double
Dim gamma As Double
Dim k As Double
Dim gamma_kuadrat As Double
Dim omega As Double
Dim omega_nol_kuadrat As Double
Dim c As Double
Dim Amplitudo As Double
Dim pi As Double
Dim theta As Double
Dim waktu As Double
Dim syarat As Double
Const eta As Double = 1.8 * (10 ^ -1)
Const grafitasi As Double = 9.8
Dim X As Double
Dim Y As Double
Dim posisiX As Double
Dim posisi_sek As Double
Dim posisi_sek1 As Double
Dim posisi_seb As Double
Dim posisi_seb1 As Double
Dim kec As Double
Dim kec1 As Double
Dim kec_sek As Double
Dim kec_sek1 As Double
Dim kec_seb As Double
Dim kec_seb1 As Double
Dim perc As Double
Dim perc1 As Double
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Private sub untuk form
Private Sub Form_Load()
VScroll1.Value = 200 'menentukan nilai awal panjang tali
HScroll1.Value = 90 'menentukan nilai awal pi
HScroll2.Value = 1000 'menentukan nilai awal massa (gr)
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Private sub untuk timer
Private Sub Timer1_Timer()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Deklarasi lokalDim t As Double
Dim d As Double
Dim e As Double
Dim sud As Double
Dim sudut As Double
Dim selisih As Double
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
pi = HScroll1.Value - 45 'menentukan nilai pi dari Hscroll1
Label4 = pi 'menampilkan nilai pi pada label 4
L = VScroll1.Value * 20 'menentukan nilai L dari Vscroll1
Label3 = L 'menampilkan nilai L pada label 3
massa = HScroll2.Value / 1000 'menentukan nilai massa dari Hscroll2
Label2 = massa 'menampilkan nilai massa pada label 2
waktu = waktu + 1 'menentukan nilai t
k = massa * grafitasi / L 'menghitung nilai k
c = k * eta 'menghitung nilai c
syarat = (c ^ 2) - (4 * massa * k) 'menghitung syarat
posisi_seb1 = posisi_sek1 'memasukkan nilai posisi_sek1 pada posisi_seb1
If syarat < 0 Then 'memasukkan syarat GHT Lemah
gamma = c / (2 * massa) 'menghitung nilai gamma
omega_nol_kuadrat = k / massa 'menghitung nilai omega nol
gamma_kuadrat = gamma ^ 2 'menghitung nilai gamma kuadrat (mempermudah mengingat)
omega = Sqr(omega_nol_kuadrat - gamma_kuadrat) 'menghitung nilai omega
Amplitudo = L * Sin(pi / 180 * 3.141592654) 'menghitung nilai amplitudo
X = Exp(-gamma * waktu) * Amplitudo * Cos((omega * waktu) - (pi / 180 * 3.141592654))'menghitung x
Y = Sqr((L ^ 2) - (X ^ 2)) 'menghitung Y
theta = Exp(-gamma * waktu) * pi * Cos(Sqr(9.8 / L) * waktu) 'menghitung nilai θ
End If
kec_seb1 = kec_sek1 'memasukkan nilai kec_sek1 pada kec_seb1
posisi_sek1 = X 'memasukkan nilai X pada posisi_sek1
kec1 = posisi_seb1 - posisi_sek1 'menghitung nilai kecepatan1
Label9 = kec1 'memasukkan nilai kec1 pada label 9
kec_sek1 = kec1 'memasukkan nilai kec1 pada kec_sek_1
perc1 = kec_seb1 - kec_sek1 'menghitung nilai percepatan1
Label10 = perc1 'menampilakan nilai perc1 pada label 10
d = Line1.X1 - Line1.X2 'menghitung nilai selisih sumbu X
e = Line1.Y1 - Line1.Y2 'menghitung nilai selisih sumbu Y
If e <> 0 Then 'menghindari nilai pembagi nol
t = d / e ' menghitung nilai t
End If
sud = Atn(t) * 180 / 3.141592654 'mengubah nilai t menjadi nilai sudut
Label1 = theta 'menampilkan nilai sudut theta pada label 1
Line1.X2 = 4340 + (4000 * Sin(theta / 180 * 3.141592654)) 'nilai X dan Y pada animasi line 1
Line1.Y2 = 4000 + (4000 * Cos(theta / 180 * 3.141592654)) ' (θ)
posisi_seb = posisi_sek
posisiX = 4000 * Sin(theta / 180 * 3.141592654) 'menghitung nilai posisi X dari theta
kec_seb = kec_sek
posisi_sek = posisiX
kec = posisi_seb - posisi_sek
Label11 = kec
kec_sek = kec
perc = kec_seb - kec_sek
Label12 = perc
Shape2.Left = 4290 + (4000 * Sin(pi / 180 * 3.141592654)) '
Shape2.Top = 3950 + (4000 * Cos(pi / 180 * 3.141592654)) 'animasi nilai amplitudo
Shape3.Left = 4290 + (4000 * Sin((pi - pi * 2) / 180 * 3.141592654)) ' maksimal
Shape3.Top = 3950 + (4000 * Cos(pi / 180 * 3.141592654)) '
sudut = Atn(X / Y) * 180 / 3.141592654 'menghitung nilai sudut dari X dan Y
List1.AddItem sud 'memasukkan nilia sud pada list1
List1.AddItem sudut 'memasukkan nilai sudut pada list1
Label7 = sudut
selisih = Abs(sud) - Abs(sudut) 'menghitung nilai selisih dari sudut dan sud
Line3.X1 = Line1.X2 '
Line3.X2 = Line3.X1 - (kec * 10) ' Animasi kecepatan
Line3.Y1 = Line1.Y2 '
Line3.Y2 = Line3.Y1 '
Line4.X1 = Line2.X2 '
Line4.X2 = Line4.X1 - (kec1 * 10) ' Animasi kecepatan
Line4.Y1 = Line2.Y2 '
Line4.Y2 = Line4.Y1 '
Line5.X1 = 4340 + (3500 * Sin(theta / 180 * 3.141592654)) '
Line5.X2 = Line5.X1 + (perc * 100) 'Animasi percepatan
Line5.Y1 = 4000 + (3500 * Cos(theta / 180 * 3.141592654)) '
Line5.Y2 = Line5.Y1 '
Line6.X1 = 4340 + (3500 * Sin(sudut / 180 * 3.141592654)) '
Line6.X2 = Line6.X1 + (perc1 * 100) 'Animasi percepatan
Line6.Y1 = 4000 + (3500 * Cos(sudut / 180 * 3.141592654)) '
Line6.Y2 = Line6.Y1 '
Line2.X1 = Line1.X1 '
Line2.X2 = 4300 + X ' Animasi pada line 2 (rumus x)
Line2.Y1 = Line1.Y1 '
Line2.Y2 = 4000 + Y '
Label8 = selisih
Label5 = X
Label6 = Exp(-gamma * waktu)
MSChart1.data = sudut
End Sub
Dibawah ini adalah video hasilnya.
Pada video diatas, pada list box dapat dilihat, nilai paling atas adalah nol, sedangkan nilai kedua adalah 31.6xxx kemudian nilai ketiga adalah 44.929xxx. Dua nilai teratas adalah nilai sudut pada t=0, sedangkan nilai ketiga adalah pada saat t=1. Dari sini terlihat perbedaan kedua rumus ini.
Sekian dulu pembahasan dari saya, jika anda merasa bingung atau program yang saya buat kurang baik, saya dengan senang hati menerima kritik dan saran. Mohon maaf saya tidak menerima kritik yang tidak disertai saran.
Maaf kalau vidoenya berkedip, Komputer saya tidak punya VGA external...
Terima Kasih.
Hebat. Usul :
BalasHapusCoba dibuat grafik x terhadap t, kecepatan terhadap t dan percepatan terhadap t, semua di dalam satu grafik supaya bisa terlihat perubahannya secara bersama-sama dengan ayunan bandul.
Ini hasil update untuk grafiknya pak, tapi saya masih belum bisa menerapkan rumus yang bapak beri kemarin. Masih belum berhasil... Saya belum bisa menerapkan rumusnya...
Hapushehehe...
grafiknya juga masih belum bisa jadi satu... saya belum bisa buatnya... ga tau juga siy, bisa jadi satu apa tidak...
Bisa Bro,. jadi kamu harus nambah timer di VBnya juga,
BalasHapus.
sing untuk multi series dalam satu grafik ta? gmana carane? kan data untuk mschart-nya itu cuama ada satu?
HapusBerhasil juga.. woow, takjub deh...
BalasHapusBukannya mau menyusahkan, tapi kalau dibuat lebih interaktif bagaimana? Jadi pengguna program (user) dapat memasukkan sendiri nilai-nilai awal yang diperlukan, misalnya L, g, eta, dll sehingga user bisa bereksperimen dengan nilai-nilai tersebut dan mendapatkan variasi dari gerak harmonik yang semacam apa tergantung nilai-nilai yang dimasukkan.
ah, bisa pak... cuma saya masih belum dapet hosting untuk menampung program saya ini, jadi kalo misalnya ada yang mau program ini ya harus minta, trus nanti saya kirim ke emailnya... program diatas sudah bisa diatur, L, m, dan pi-nya... cuma masih belum sempurna... nanti saya sempurnakan lagi..
Hapus