Cara Mengitung Percepatan Gravitasi Dengan Arduino



Pada kesempatan kali ini saya akan membagikan project yang baru saja selesai saya kerjakan yaitu menghitung percepatan gravitasi dengan menggunakan arduino. Sebernarnya ini merupakan tugas fisika saya, percobaan percepatan gravitasi bumi.


Menghitung Percepatan Gravitasi Bumi

Pada dasarnya ada banyak cara yang bisa dilakukan untuk mengukur percepatan gravitasi bumi. Bisa dengan metode osilasi bandul, bisa dengan pegas, dan juga bisa dengan metode gerak jatuh bebas benda yaitu metode yang saya gunakan disini.

Gerak Jatuh Bebas

Bagaimana cara menghitung percepatan gravitasi bumi dengan gerak jatuh bebas?

Sebenarnya prinsip yang digunakan sangat sederhana, yaitu kita menjatuhkan sebuah benda dengan ketinggian tertentu dan menghitung waktu yang diperlukan benda untuk jatuh dari ketinggian tersebut. Coba kita ingat kembali materi fisika SMA tentang kinematika, persamaan ketinggian benda yang bergerah jatuh bebas yaitu:

Jika kita lihat pada persamaan tersebut untuk menghitung grvitasi kita hanya perlu tau nilai ketinggian h dan juga waktu t. Nilai ketinggian bisa kita ukur tingginya bnda saat kita akan menjatuhkan bendanya, tidak terlalu sulit. Nah untuk menghitung waktu inilah kita akan menggunakan arduino agar waktu yang didapat lebih akurat. Karena waktu disini akan sangat cepat yaitu hitungannya milisecond dimana akan sangat susah mendapatkan waktu yang presisi jika hanya dengan menggunakan stopwatch. Beberapa milisecond saja ketidaktepatan waktunya, makan akan sangat jauh nilai gravitasi yang akan didapatkan.

Cara Kerja

Berikut adalah gambaran alat untuk enghitung percepatan gravitasi dengan menggunakan arduino:

alat penghitung gravitasi dengan arduino

Jadi prinsip kerja alat ini adalah menghitung waktu benda dari tempat dijatuhkan hingga ia mencapai tinggi yang telah ditentukan. Bagaimana cara menghitung waktunya? Mudah saja, kita deteksi kapan benda dijatuhkan kemudian mulai hitung waktu, dan berhenti ketika benda dideteksi mencapai titik yang ditentukan.


Ada beberapa cara yang bisa dilakukan untuk mendeteksi benda tersebut, bisa dengan menggunakan modul IR sensor, bisa dengan menggunakan sensor ultrasonik, dan bisa juga dengan menggunakan tombol. Kali ini saya menggunakan tombol karena menurut saya dengan menggunakan tombol akan lebih akurat dibanding 2 cara lainya yang saya sebutkan sebelumnya.


Tombol digunakan untuk mendeteksi ketika benda dilepaskan, dan ketikan benda telah jatuh. Jadi disini dibutukan 2 buah tombol. Saya menyolder tombol ke PCB dengan resistor 10k ohm agar mudah di pasang nantinya. Buat 2 buah rangkaian tombol tersebut untuk tombol yang di atas saat benda dijatuhkan dan 1 lagi untuk tombol yang dibawah ketika benda sudah jatuh.

Rangkaian

Untuk rangkaian tombolnya seperti biasa, yaitu satu ke ground dan yang satunya lagi ke pin digital arduino. Silahkan perhatikan gambar di bawah ini

Rangkaian penghitung gravitasi arduino

Source Code

Setelah mempersiapkan rangkaian di atas kita akan membahas source codenya.

Source codenya lumayan simple, mirip seperti stopwatch dimana ketika tombol di tekan maka waktu akan berjalan, dan ketikan tombol 2 ditekan waktu akan berhenti. Waktu yang kita dapat akan kita gunakan untuk perhitungan gravitasi dengan persamaan yang sudah dijelaskan di atas.


Saya juga mengadaptasi source code ini dari source code stopwatch arduino. Disini saya menggunakan serial monitor saja untuk menampilkan data, karena saya tidak punyak LCD display. jadi kita tidak butuh library apapun pada source code ini. Berikut adalah source code nya


int start_button = 2;
int stop_button = 3;
const float h = 49;    //Ketinggian dalam cm
double start_time = millis();
double count_time ;
double g = 0;
double t = 0;

void setup(){
  Serial.begin(9600);
  pinMode(start_button, INPUT);
  pinMode(stop_button, INPUT);
  digitalWrite(start_button, HIGH);
  digitalWrite(stop_button, HIGH);
  Serial.print("== Menghitung Percepatan Gravitasi ==");
}

void loop(){
  if(digitalRead(start_button) == HIGH){
    start_time = millis();
    while(digitalRead(stop_button) == HIGH){
      count_time = millis();
      t = (count_time - start_time);
      g = 2*h*10000/(t*t);
      Serial.print("waktu = ");
      Serial.print(t);
      Serial.print("\t");
      Serial.print("gravitasi = ");
      Serial.print(g);
      Serial.println("");
    }
 
    if(digitalRead(stop_button) == LOW){
      while(digitalRead(start_button) == HIGH){
        Serial.println("======================");
        Serial.println("======================");
        Serial.print("waktu = "); Serial.print(t);
        Serial.print("\t");
        Serial.print("gravitasi = "); Serial.print(g);
        Serial.println("");
        Serial.println("======================");
        Serial.println("======================");
        delay(10000000);
      }
    }
  }
}


Mari kita bahas source code tersebut, pada bagian ini


int start_button = 2;
int stop_button = 3;
const float h = 49;    //Ketinggian dalam cm
double start_time = millis();
double count_time ;
double g = 0;
double t = 0;

Kita mendefinisikan variabel yang nanti akan dipakai terlebih dahulu, bisa dilihat disana ada variabel h yang nilainya harus disesuaikan dengan ketinggian benda yang akan dijatuhkan nanti. Saya menggunakan milis() disini sebagai counting time nya. Mungkin bagi yang belum pernah menggunakan fungsi milis() bisa dipelajari dulu fungsinya agar bisa mengikuti source code ini.


Selanjutnya yaitu void setup seperti biasa

void setup(){
  Serial.begin(9600);
  pinMode(start_button, INPUT);
  pinMode(stop_button, INPUT);
  digitalWrite(start_button, HIGH);
  digitalWrite(stop_button, HIGH);
  Serial.print("== Menghitung Percepatan Gravitasi ==");
}

Di void setup ini kita setting kedua button defaultnya bernilai HIGH dan juga set kedua tombol sebagai input.


Selanjutnya kita masuk ke bagian utama source code ini yaitu void loop.


  if(digitalRead(start_button) == HIGH){
    start_time = millis();

Jadi disini kita lihat, ketika tombol start bernilai HIGH, maka milis() akan dimasukkan ke variabel start_time. Iya benar, tombol star memang saya setting disini defaultnya dibuat LOW yang artinya tombol tertekan. jadi ketika tombol tidak tertekan, maka waktu akan dimulai. Mengapa seperti itu? Karena nantinya bola akan di jepit dengan menggunakan tombol sehingga tombol tertekan, ketika bola dilepaskan/dijatuhkan, maka tombol akan lepas tidak akan tertekan, di saat itulah kita akan menghitung waktunya mulainya. Dengan cara seperti ini akan membuat waktu yang di dapat lebih akurat.



    while(digitalRead(stop_button) == HIGH){
      count_time = millis();
      t = (count_time - start_time);
      g = 2*h*10000/(t*t);
      Serial.print("waktu = ");
      Serial.print(t);
      Serial.print("\t");
      Serial.print("gravitasi = ");
      Serial.print(g);
      Serial.println("");

Lanjutan yang di atas tadi, saya menggunakan looping while() , jadi ketika tombol start tadi tidak tertekan lagi dan selama tombol stop bernilai bernilai HIGH yang artinya tidak tertekan, maka variabel count_time akan terus mencatat waktu milis(). Kemudian untuk mendapatkan waktu sudah berapa lama bola jatuh, kita kurangi waktu saat ini(count_time) dengan waktu ketika bola dijatuhkan(start_time) dan kita simpan di variabel t. Waktu ini akan kita gunakan untuk menghitung gravitasi g. Karena satuan waktu disini dalam milisecond atau seperseribu second, dan satuan ketinggian dalam centimeter, maka dikalikan 10000. Dan selama kondisi while terpenuhi, kita cetak nilai t dan g di serial monitor.



    if(digitalRead(stop_button) == LOW){
      while(digitalRead(start_button) == HIGH){
        Serial.println("======================");
        Serial.println("======================");
        Serial.print("waktu = "); Serial.print(t);
        Serial.print("\t");
        Serial.print("gravitasi = "); Serial.print(g);
        Serial.println("");
        Serial.println("======================");
        Serial.println("======================");
        delay(10000000);
      }

dan pada bagian akhir, jika stop_button HIGH yang artinya benda sudah jatuh mengenai tombol stop dan tombol stop tertekan, maka kita akan cetak nilai akhir waktu dan juga gravitasi ke serial monitor.


serial monitor arduino

Seperti itulah tampilan serial monitornya.

Tips

Sedikit tips untuk teman-teman yang mau mencoba, karena tombol itu sangat kecil sekali, berdasarkan pengalaman saya akan sangat sulit menjatuhkan benda tepat mengenai tombol yang berada dibawah. Agar lebih mudah teman-teman bisa menggunakan papan atau kayu yang sedikit lebar di atas tombolnya. 

tombol gravitasi arduino


Jadi seperti itulah cara menghitung gravitasi dengan menggunakan arduino, semoga bisa bermanfaat dan jika ada pertanyaan silahkan tulis di komentar.


LihatTutupKomentar